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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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(always)]
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 (indexed)"]
9820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_laneq_s32)"]
9821#[inline(always)]
9822#[cfg(target_endian = "little")]
9823#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9824#[target_feature(enable = "neon,dotprod")]
9825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot, LANE = 0))]
9826#[cfg_attr(
9827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9828 assert_instr(sdot, LANE = 0)
9829)]
9830#[rustc_legacy_const_generics(3)]
9831#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
9832pub fn vdot_laneq_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: int8x16_t) -> int32x2_t {
9833 static_assert_uimm_bits!(LANE, 2);
9834 unsafe {
9835 let c: int32x4_t = transmute(c);
9836 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9837 vdot_s32(a, b, transmute(c))
9838 }
9839}
9840#[doc = "Dot product arithmetic (indexed)"]
9841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_laneq_s32)"]
9842#[inline(always)]
9843#[cfg(target_endian = "big")]
9844#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9845#[target_feature(enable = "neon,dotprod")]
9846#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot, LANE = 0))]
9847#[cfg_attr(
9848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9849 assert_instr(sdot, LANE = 0)
9850)]
9851#[rustc_legacy_const_generics(3)]
9852#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
9853pub fn vdot_laneq_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: int8x16_t) -> int32x2_t {
9854 static_assert_uimm_bits!(LANE, 2);
9855 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
9856 let b: int8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
9857 let c: int8x16_t =
9858 unsafe { simd_shuffle!(c, c, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
9859 unsafe {
9860 let c: int32x4_t = transmute(c);
9861 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9862 let ret_val: int32x2_t = vdot_s32(a, b, transmute(c));
9863 simd_shuffle!(ret_val, ret_val, [1, 0])
9864 }
9865}
9866#[doc = "Dot product arithmetic (indexed)"]
9867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_laneq_s32)"]
9868#[inline(always)]
9869#[cfg(target_endian = "little")]
9870#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9871#[target_feature(enable = "neon,dotprod")]
9872#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot, LANE = 0))]
9873#[cfg_attr(
9874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9875 assert_instr(sdot, LANE = 0)
9876)]
9877#[rustc_legacy_const_generics(3)]
9878#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
9879pub fn vdotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t {
9880 static_assert_uimm_bits!(LANE, 2);
9881 unsafe {
9882 let c: int32x4_t = transmute(c);
9883 let c: int32x4_t =
9884 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9885 vdotq_s32(a, b, transmute(c))
9886 }
9887}
9888#[doc = "Dot product arithmetic (indexed)"]
9889#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_laneq_s32)"]
9890#[inline(always)]
9891#[cfg(target_endian = "big")]
9892#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9893#[target_feature(enable = "neon,dotprod")]
9894#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot, LANE = 0))]
9895#[cfg_attr(
9896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9897 assert_instr(sdot, LANE = 0)
9898)]
9899#[rustc_legacy_const_generics(3)]
9900#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
9901pub fn vdotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t {
9902 static_assert_uimm_bits!(LANE, 2);
9903 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
9904 let b: int8x16_t =
9905 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
9906 let c: int8x16_t =
9907 unsafe { simd_shuffle!(c, c, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
9908 unsafe {
9909 let c: int32x4_t = transmute(c);
9910 let c: int32x4_t =
9911 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9912 let ret_val: int32x4_t = vdotq_s32(a, b, transmute(c));
9913 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
9914 }
9915}
9916#[doc = "Dot product arithmetic (indexed)"]
9917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_laneq_u32)"]
9918#[inline(always)]
9919#[cfg(target_endian = "little")]
9920#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9921#[target_feature(enable = "neon,dotprod")]
9922#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot, LANE = 0))]
9923#[cfg_attr(
9924 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9925 assert_instr(udot, LANE = 0)
9926)]
9927#[rustc_legacy_const_generics(3)]
9928#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
9929pub fn vdot_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint8x8_t, c: uint8x16_t) -> uint32x2_t {
9930 static_assert_uimm_bits!(LANE, 2);
9931 unsafe {
9932 let c: uint32x4_t = transmute(c);
9933 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9934 vdot_u32(a, b, transmute(c))
9935 }
9936}
9937#[doc = "Dot product arithmetic (indexed)"]
9938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_laneq_u32)"]
9939#[inline(always)]
9940#[cfg(target_endian = "big")]
9941#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9942#[target_feature(enable = "neon,dotprod")]
9943#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot, LANE = 0))]
9944#[cfg_attr(
9945 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9946 assert_instr(udot, LANE = 0)
9947)]
9948#[rustc_legacy_const_generics(3)]
9949#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
9950pub fn vdot_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint8x8_t, c: uint8x16_t) -> uint32x2_t {
9951 static_assert_uimm_bits!(LANE, 2);
9952 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
9953 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
9954 let c: uint8x16_t =
9955 unsafe { simd_shuffle!(c, c, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
9956 unsafe {
9957 let c: uint32x4_t = transmute(c);
9958 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
9959 let ret_val: uint32x2_t = vdot_u32(a, b, transmute(c));
9960 simd_shuffle!(ret_val, ret_val, [1, 0])
9961 }
9962}
9963#[doc = "Dot product arithmetic (indexed)"]
9964#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_laneq_u32)"]
9965#[inline(always)]
9966#[cfg(target_endian = "little")]
9967#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9968#[target_feature(enable = "neon,dotprod")]
9969#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot, LANE = 0))]
9970#[cfg_attr(
9971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9972 assert_instr(udot, LANE = 0)
9973)]
9974#[rustc_legacy_const_generics(3)]
9975#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
9976pub fn vdotq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t {
9977 static_assert_uimm_bits!(LANE, 2);
9978 unsafe {
9979 let c: uint32x4_t = transmute(c);
9980 let c: uint32x4_t =
9981 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
9982 vdotq_u32(a, b, transmute(c))
9983 }
9984}
9985#[doc = "Dot product arithmetic (indexed)"]
9986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_laneq_u32)"]
9987#[inline(always)]
9988#[cfg(target_endian = "big")]
9989#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
9990#[target_feature(enable = "neon,dotprod")]
9991#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot, LANE = 0))]
9992#[cfg_attr(
9993 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
9994 assert_instr(udot, LANE = 0)
9995)]
9996#[rustc_legacy_const_generics(3)]
9997#[unstable(feature = "stdarch_neon_dotprod", issue = "117224")]
9998pub fn vdotq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t {
9999 static_assert_uimm_bits!(LANE, 2);
10000 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
10001 let b: uint8x16_t =
10002 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
10003 let c: uint8x16_t =
10004 unsafe { simd_shuffle!(c, c, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
10005 unsafe {
10006 let c: uint32x4_t = transmute(c);
10007 let c: uint32x4_t =
10008 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
10009 let ret_val: uint32x4_t = vdotq_u32(a, b, transmute(c));
10010 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
10011 }
10012}
10013#[doc = "Dot product arithmetic (vector)"]
10014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_s32)"]
10015#[inline(always)]
10016#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
10017#[target_feature(enable = "neon,dotprod")]
10018#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot))]
10019#[cfg_attr(
10020 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10021 assert_instr(sdot)
10022)]
10023#[cfg_attr(
10024 not(target_arch = "arm"),
10025 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
10026)]
10027#[cfg_attr(
10028 target_arch = "arm",
10029 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10030)]
10031pub fn vdot_s32(a: int32x2_t, b: int8x8_t, c: int8x8_t) -> int32x2_t {
10032 unsafe extern "unadjusted" {
10033 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sdot.v2i32.v8i8")]
10034 #[cfg_attr(
10035 any(target_arch = "aarch64", target_arch = "arm64ec"),
10036 link_name = "llvm.aarch64.neon.sdot.v2i32.v8i8"
10037 )]
10038 fn _vdot_s32(a: int32x2_t, b: int8x8_t, c: int8x8_t) -> int32x2_t;
10039 }
10040 unsafe { _vdot_s32(a, b, c) }
10041}
10042#[doc = "Dot product arithmetic (vector)"]
10043#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_s32)"]
10044#[inline(always)]
10045#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
10046#[target_feature(enable = "neon,dotprod")]
10047#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsdot))]
10048#[cfg_attr(
10049 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10050 assert_instr(sdot)
10051)]
10052#[cfg_attr(
10053 not(target_arch = "arm"),
10054 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
10055)]
10056#[cfg_attr(
10057 target_arch = "arm",
10058 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10059)]
10060pub fn vdotq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t {
10061 unsafe extern "unadjusted" {
10062 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sdot.v4i32.v16i8")]
10063 #[cfg_attr(
10064 any(target_arch = "aarch64", target_arch = "arm64ec"),
10065 link_name = "llvm.aarch64.neon.sdot.v4i32.v16i8"
10066 )]
10067 fn _vdotq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t;
10068 }
10069 unsafe { _vdotq_s32(a, b, c) }
10070}
10071#[doc = "Dot product arithmetic (vector)"]
10072#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdot_u32)"]
10073#[inline(always)]
10074#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
10075#[target_feature(enable = "neon,dotprod")]
10076#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot))]
10077#[cfg_attr(
10078 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10079 assert_instr(udot)
10080)]
10081#[cfg_attr(
10082 not(target_arch = "arm"),
10083 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
10084)]
10085#[cfg_attr(
10086 target_arch = "arm",
10087 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10088)]
10089pub fn vdot_u32(a: uint32x2_t, b: uint8x8_t, c: uint8x8_t) -> uint32x2_t {
10090 unsafe extern "unadjusted" {
10091 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.udot.v2i32.v8i8")]
10092 #[cfg_attr(
10093 any(target_arch = "aarch64", target_arch = "arm64ec"),
10094 link_name = "llvm.aarch64.neon.udot.v2i32.v8i8"
10095 )]
10096 fn _vdot_u32(a: uint32x2_t, b: uint8x8_t, c: uint8x8_t) -> uint32x2_t;
10097 }
10098 unsafe { _vdot_u32(a, b, c) }
10099}
10100#[doc = "Dot product arithmetic (vector)"]
10101#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdotq_u32)"]
10102#[inline(always)]
10103#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
10104#[target_feature(enable = "neon,dotprod")]
10105#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vudot))]
10106#[cfg_attr(
10107 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10108 assert_instr(udot)
10109)]
10110#[cfg_attr(
10111 not(target_arch = "arm"),
10112 unstable(feature = "stdarch_neon_dotprod", issue = "117224")
10113)]
10114#[cfg_attr(
10115 target_arch = "arm",
10116 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10117)]
10118pub fn vdotq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t {
10119 unsafe extern "unadjusted" {
10120 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.udot.v4i32.v16i8")]
10121 #[cfg_attr(
10122 any(target_arch = "aarch64", target_arch = "arm64ec"),
10123 link_name = "llvm.aarch64.neon.udot.v4i32.v16i8"
10124 )]
10125 fn _vdotq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t;
10126 }
10127 unsafe { _vdotq_u32(a, b, c) }
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_f16)"]
10131#[inline(always)]
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(target_arch = "arm", target_feature(enable = "fp16"))]
10141#[cfg_attr(
10142 not(target_arch = "arm"),
10143 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
10144)]
10145#[cfg_attr(
10146 target_arch = "arm",
10147 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10148)]
10149#[cfg(not(target_arch = "arm64ec"))]
10150pub fn vdup_lane_f16<const N: i32>(a: float16x4_t) -> float16x4_t {
10151 static_assert_uimm_bits!(N, 2);
10152 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10153}
10154#[doc = "Set all vector lanes to the same value"]
10155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_f16)"]
10156#[inline(always)]
10157#[target_feature(enable = "neon")]
10158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10159#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10160#[cfg_attr(
10161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10162 assert_instr(dup, N = 2)
10163)]
10164#[rustc_legacy_const_generics(1)]
10165#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
10166#[cfg_attr(
10167 not(target_arch = "arm"),
10168 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
10169)]
10170#[cfg_attr(
10171 target_arch = "arm",
10172 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10173)]
10174#[cfg(not(target_arch = "arm64ec"))]
10175pub fn vdupq_lane_f16<const N: i32>(a: float16x4_t) -> float16x8_t {
10176 static_assert_uimm_bits!(N, 2);
10177 unsafe {
10178 simd_shuffle!(
10179 a,
10180 a,
10181 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10182 )
10183 }
10184}
10185#[doc = "Set all vector lanes to the same value"]
10186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_f32)"]
10187#[inline(always)]
10188#[target_feature(enable = "neon")]
10189#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10190#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10191#[cfg_attr(
10192 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10193 assert_instr(dup, N = 1)
10194)]
10195#[rustc_legacy_const_generics(1)]
10196#[cfg_attr(
10197 not(target_arch = "arm"),
10198 stable(feature = "neon_intrinsics", since = "1.59.0")
10199)]
10200#[cfg_attr(
10201 target_arch = "arm",
10202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10203)]
10204pub fn vdup_lane_f32<const N: i32>(a: float32x2_t) -> float32x2_t {
10205 static_assert_uimm_bits!(N, 1);
10206 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10207}
10208#[doc = "Set all vector lanes to the same value"]
10209#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s32)"]
10210#[inline(always)]
10211#[target_feature(enable = "neon")]
10212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10213#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10214#[cfg_attr(
10215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10216 assert_instr(dup, N = 1)
10217)]
10218#[rustc_legacy_const_generics(1)]
10219#[cfg_attr(
10220 not(target_arch = "arm"),
10221 stable(feature = "neon_intrinsics", since = "1.59.0")
10222)]
10223#[cfg_attr(
10224 target_arch = "arm",
10225 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10226)]
10227pub fn vdup_lane_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
10228 static_assert_uimm_bits!(N, 1);
10229 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10230}
10231#[doc = "Set all vector lanes to the same value"]
10232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u32)"]
10233#[inline(always)]
10234#[target_feature(enable = "neon")]
10235#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10236#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10237#[cfg_attr(
10238 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10239 assert_instr(dup, N = 1)
10240)]
10241#[rustc_legacy_const_generics(1)]
10242#[cfg_attr(
10243 not(target_arch = "arm"),
10244 stable(feature = "neon_intrinsics", since = "1.59.0")
10245)]
10246#[cfg_attr(
10247 target_arch = "arm",
10248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10249)]
10250pub fn vdup_lane_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
10251 static_assert_uimm_bits!(N, 1);
10252 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10253}
10254#[doc = "Set all vector lanes to the same value"]
10255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_f32)"]
10256#[inline(always)]
10257#[target_feature(enable = "neon")]
10258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10259#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10260#[cfg_attr(
10261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10262 assert_instr(dup, N = 1)
10263)]
10264#[rustc_legacy_const_generics(1)]
10265#[cfg_attr(
10266 not(target_arch = "arm"),
10267 stable(feature = "neon_intrinsics", since = "1.59.0")
10268)]
10269#[cfg_attr(
10270 target_arch = "arm",
10271 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10272)]
10273pub fn vdupq_lane_f32<const N: i32>(a: float32x2_t) -> float32x4_t {
10274 static_assert_uimm_bits!(N, 1);
10275 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10276}
10277#[doc = "Set all vector lanes to the same value"]
10278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s32)"]
10279#[inline(always)]
10280#[target_feature(enable = "neon")]
10281#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10282#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10283#[cfg_attr(
10284 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10285 assert_instr(dup, N = 1)
10286)]
10287#[rustc_legacy_const_generics(1)]
10288#[cfg_attr(
10289 not(target_arch = "arm"),
10290 stable(feature = "neon_intrinsics", since = "1.59.0")
10291)]
10292#[cfg_attr(
10293 target_arch = "arm",
10294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10295)]
10296pub fn vdupq_lane_s32<const N: i32>(a: int32x2_t) -> int32x4_t {
10297 static_assert_uimm_bits!(N, 1);
10298 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10299}
10300#[doc = "Set all vector lanes to the same value"]
10301#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u32)"]
10302#[inline(always)]
10303#[target_feature(enable = "neon")]
10304#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10305#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10306#[cfg_attr(
10307 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10308 assert_instr(dup, N = 1)
10309)]
10310#[rustc_legacy_const_generics(1)]
10311#[cfg_attr(
10312 not(target_arch = "arm"),
10313 stable(feature = "neon_intrinsics", since = "1.59.0")
10314)]
10315#[cfg_attr(
10316 target_arch = "arm",
10317 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10318)]
10319pub fn vdupq_lane_u32<const N: i32>(a: uint32x2_t) -> uint32x4_t {
10320 static_assert_uimm_bits!(N, 1);
10321 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10322}
10323#[doc = "Set all vector lanes to the same value"]
10324#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_p16)"]
10325#[inline(always)]
10326#[target_feature(enable = "neon")]
10327#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10328#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10329#[cfg_attr(
10330 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10331 assert_instr(dup, N = 2)
10332)]
10333#[rustc_legacy_const_generics(1)]
10334#[cfg_attr(
10335 not(target_arch = "arm"),
10336 stable(feature = "neon_intrinsics", since = "1.59.0")
10337)]
10338#[cfg_attr(
10339 target_arch = "arm",
10340 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10341)]
10342pub fn vdup_lane_p16<const N: i32>(a: poly16x4_t) -> poly16x4_t {
10343 static_assert_uimm_bits!(N, 2);
10344 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10345}
10346#[doc = "Set all vector lanes to the same value"]
10347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s16)"]
10348#[inline(always)]
10349#[target_feature(enable = "neon")]
10350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10351#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10352#[cfg_attr(
10353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10354 assert_instr(dup, N = 2)
10355)]
10356#[rustc_legacy_const_generics(1)]
10357#[cfg_attr(
10358 not(target_arch = "arm"),
10359 stable(feature = "neon_intrinsics", since = "1.59.0")
10360)]
10361#[cfg_attr(
10362 target_arch = "arm",
10363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10364)]
10365pub fn vdup_lane_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
10366 static_assert_uimm_bits!(N, 2);
10367 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10368}
10369#[doc = "Set all vector lanes to the same value"]
10370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u16)"]
10371#[inline(always)]
10372#[target_feature(enable = "neon")]
10373#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10374#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10375#[cfg_attr(
10376 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10377 assert_instr(dup, N = 2)
10378)]
10379#[rustc_legacy_const_generics(1)]
10380#[cfg_attr(
10381 not(target_arch = "arm"),
10382 stable(feature = "neon_intrinsics", since = "1.59.0")
10383)]
10384#[cfg_attr(
10385 target_arch = "arm",
10386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10387)]
10388pub fn vdup_lane_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
10389 static_assert_uimm_bits!(N, 2);
10390 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10391}
10392#[doc = "Set all vector lanes to the same value"]
10393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_p16)"]
10394#[inline(always)]
10395#[target_feature(enable = "neon")]
10396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10397#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10398#[cfg_attr(
10399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10400 assert_instr(dup, N = 2)
10401)]
10402#[rustc_legacy_const_generics(1)]
10403#[cfg_attr(
10404 not(target_arch = "arm"),
10405 stable(feature = "neon_intrinsics", since = "1.59.0")
10406)]
10407#[cfg_attr(
10408 target_arch = "arm",
10409 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10410)]
10411pub fn vdupq_lane_p16<const N: i32>(a: poly16x4_t) -> poly16x8_t {
10412 static_assert_uimm_bits!(N, 2);
10413 unsafe {
10414 simd_shuffle!(
10415 a,
10416 a,
10417 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10418 )
10419 }
10420}
10421#[doc = "Set all vector lanes to the same value"]
10422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s16)"]
10423#[inline(always)]
10424#[target_feature(enable = "neon")]
10425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10426#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10427#[cfg_attr(
10428 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10429 assert_instr(dup, N = 2)
10430)]
10431#[rustc_legacy_const_generics(1)]
10432#[cfg_attr(
10433 not(target_arch = "arm"),
10434 stable(feature = "neon_intrinsics", since = "1.59.0")
10435)]
10436#[cfg_attr(
10437 target_arch = "arm",
10438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10439)]
10440pub fn vdupq_lane_s16<const N: i32>(a: int16x4_t) -> int16x8_t {
10441 static_assert_uimm_bits!(N, 2);
10442 unsafe {
10443 simd_shuffle!(
10444 a,
10445 a,
10446 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10447 )
10448 }
10449}
10450#[doc = "Set all vector lanes to the same value"]
10451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u16)"]
10452#[inline(always)]
10453#[target_feature(enable = "neon")]
10454#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10455#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10456#[cfg_attr(
10457 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10458 assert_instr(dup, N = 2)
10459)]
10460#[rustc_legacy_const_generics(1)]
10461#[cfg_attr(
10462 not(target_arch = "arm"),
10463 stable(feature = "neon_intrinsics", since = "1.59.0")
10464)]
10465#[cfg_attr(
10466 target_arch = "arm",
10467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10468)]
10469pub fn vdupq_lane_u16<const N: i32>(a: uint16x4_t) -> uint16x8_t {
10470 static_assert_uimm_bits!(N, 2);
10471 unsafe {
10472 simd_shuffle!(
10473 a,
10474 a,
10475 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10476 )
10477 }
10478}
10479#[doc = "Set all vector lanes to the same value"]
10480#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_p8)"]
10481#[inline(always)]
10482#[target_feature(enable = "neon")]
10483#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10484#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10485#[cfg_attr(
10486 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10487 assert_instr(dup, N = 4)
10488)]
10489#[rustc_legacy_const_generics(1)]
10490#[cfg_attr(
10491 not(target_arch = "arm"),
10492 stable(feature = "neon_intrinsics", since = "1.59.0")
10493)]
10494#[cfg_attr(
10495 target_arch = "arm",
10496 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10497)]
10498pub fn vdup_lane_p8<const N: i32>(a: poly8x8_t) -> poly8x8_t {
10499 static_assert_uimm_bits!(N, 3);
10500 unsafe {
10501 simd_shuffle!(
10502 a,
10503 a,
10504 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10505 )
10506 }
10507}
10508#[doc = "Set all vector lanes to the same value"]
10509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s8)"]
10510#[inline(always)]
10511#[target_feature(enable = "neon")]
10512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10513#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10514#[cfg_attr(
10515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10516 assert_instr(dup, N = 4)
10517)]
10518#[rustc_legacy_const_generics(1)]
10519#[cfg_attr(
10520 not(target_arch = "arm"),
10521 stable(feature = "neon_intrinsics", since = "1.59.0")
10522)]
10523#[cfg_attr(
10524 target_arch = "arm",
10525 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10526)]
10527pub fn vdup_lane_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
10528 static_assert_uimm_bits!(N, 3);
10529 unsafe {
10530 simd_shuffle!(
10531 a,
10532 a,
10533 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10534 )
10535 }
10536}
10537#[doc = "Set all vector lanes to the same value"]
10538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u8)"]
10539#[inline(always)]
10540#[target_feature(enable = "neon")]
10541#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10542#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10543#[cfg_attr(
10544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10545 assert_instr(dup, N = 4)
10546)]
10547#[rustc_legacy_const_generics(1)]
10548#[cfg_attr(
10549 not(target_arch = "arm"),
10550 stable(feature = "neon_intrinsics", since = "1.59.0")
10551)]
10552#[cfg_attr(
10553 target_arch = "arm",
10554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10555)]
10556pub fn vdup_lane_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
10557 static_assert_uimm_bits!(N, 3);
10558 unsafe {
10559 simd_shuffle!(
10560 a,
10561 a,
10562 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10563 )
10564 }
10565}
10566#[doc = "Set all vector lanes to the same value"]
10567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_p8)"]
10568#[inline(always)]
10569#[target_feature(enable = "neon")]
10570#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10571#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10572#[cfg_attr(
10573 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10574 assert_instr(dup, N = 4)
10575)]
10576#[rustc_legacy_const_generics(1)]
10577#[cfg_attr(
10578 not(target_arch = "arm"),
10579 stable(feature = "neon_intrinsics", since = "1.59.0")
10580)]
10581#[cfg_attr(
10582 target_arch = "arm",
10583 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10584)]
10585pub fn vdupq_lane_p8<const N: i32>(a: poly8x8_t) -> poly8x16_t {
10586 static_assert_uimm_bits!(N, 3);
10587 unsafe {
10588 simd_shuffle!(
10589 a,
10590 a,
10591 [
10592 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
10593 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
10594 ]
10595 )
10596 }
10597}
10598#[doc = "Set all vector lanes to the same value"]
10599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s8)"]
10600#[inline(always)]
10601#[target_feature(enable = "neon")]
10602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10603#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10604#[cfg_attr(
10605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10606 assert_instr(dup, N = 4)
10607)]
10608#[rustc_legacy_const_generics(1)]
10609#[cfg_attr(
10610 not(target_arch = "arm"),
10611 stable(feature = "neon_intrinsics", since = "1.59.0")
10612)]
10613#[cfg_attr(
10614 target_arch = "arm",
10615 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10616)]
10617pub fn vdupq_lane_s8<const N: i32>(a: int8x8_t) -> int8x16_t {
10618 static_assert_uimm_bits!(N, 3);
10619 unsafe {
10620 simd_shuffle!(
10621 a,
10622 a,
10623 [
10624 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
10625 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
10626 ]
10627 )
10628 }
10629}
10630#[doc = "Set all vector lanes to the same value"]
10631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u8)"]
10632#[inline(always)]
10633#[target_feature(enable = "neon")]
10634#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10635#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10636#[cfg_attr(
10637 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10638 assert_instr(dup, N = 4)
10639)]
10640#[rustc_legacy_const_generics(1)]
10641#[cfg_attr(
10642 not(target_arch = "arm"),
10643 stable(feature = "neon_intrinsics", since = "1.59.0")
10644)]
10645#[cfg_attr(
10646 target_arch = "arm",
10647 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10648)]
10649pub fn vdupq_lane_u8<const N: i32>(a: uint8x8_t) -> uint8x16_t {
10650 static_assert_uimm_bits!(N, 3);
10651 unsafe {
10652 simd_shuffle!(
10653 a,
10654 a,
10655 [
10656 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
10657 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
10658 ]
10659 )
10660 }
10661}
10662#[doc = "Set all vector lanes to the same value"]
10663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s64)"]
10664#[inline(always)]
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(nop, N = 0))]
10668#[cfg_attr(
10669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10670 assert_instr(nop, N = 0)
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 vdup_lane_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
10682 static_assert!(N == 0);
10683 a
10684}
10685#[doc = "Set all vector lanes to the same value"]
10686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u64)"]
10687#[inline(always)]
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(nop, N = 0))]
10691#[cfg_attr(
10692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10693 assert_instr(nop, N = 0)
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 vdup_lane_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
10705 static_assert!(N == 0);
10706 a
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_f16)"]
10710#[inline(always)]
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(target_arch = "arm", target_feature(enable = "fp16"))]
10720#[cfg_attr(
10721 not(target_arch = "arm"),
10722 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
10723)]
10724#[cfg_attr(
10725 target_arch = "arm",
10726 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10727)]
10728#[cfg(not(target_arch = "arm64ec"))]
10729pub fn vdup_laneq_f16<const N: i32>(a: float16x8_t) -> float16x4_t {
10730 static_assert_uimm_bits!(N, 3);
10731 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10732}
10733#[doc = "Set all vector lanes to the same value"]
10734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_f16)"]
10735#[inline(always)]
10736#[target_feature(enable = "neon")]
10737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10738#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10739#[cfg_attr(
10740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10741 assert_instr(dup, N = 4)
10742)]
10743#[rustc_legacy_const_generics(1)]
10744#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
10745#[cfg_attr(
10746 not(target_arch = "arm"),
10747 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
10748)]
10749#[cfg_attr(
10750 target_arch = "arm",
10751 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10752)]
10753#[cfg(not(target_arch = "arm64ec"))]
10754pub fn vdupq_laneq_f16<const N: i32>(a: float16x8_t) -> float16x8_t {
10755 static_assert_uimm_bits!(N, 3);
10756 unsafe {
10757 simd_shuffle!(
10758 a,
10759 a,
10760 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10761 )
10762 }
10763}
10764#[doc = "Set all vector lanes to the same value"]
10765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_f32)"]
10766#[inline(always)]
10767#[target_feature(enable = "neon")]
10768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10769#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10770#[cfg_attr(
10771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10772 assert_instr(dup, N = 2)
10773)]
10774#[rustc_legacy_const_generics(1)]
10775#[cfg_attr(
10776 not(target_arch = "arm"),
10777 stable(feature = "neon_intrinsics", since = "1.59.0")
10778)]
10779#[cfg_attr(
10780 target_arch = "arm",
10781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10782)]
10783pub fn vdup_laneq_f32<const N: i32>(a: float32x4_t) -> float32x2_t {
10784 static_assert_uimm_bits!(N, 2);
10785 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10786}
10787#[doc = "Set all vector lanes to the same value"]
10788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s32)"]
10789#[inline(always)]
10790#[target_feature(enable = "neon")]
10791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10792#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10793#[cfg_attr(
10794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10795 assert_instr(dup, N = 2)
10796)]
10797#[rustc_legacy_const_generics(1)]
10798#[cfg_attr(
10799 not(target_arch = "arm"),
10800 stable(feature = "neon_intrinsics", since = "1.59.0")
10801)]
10802#[cfg_attr(
10803 target_arch = "arm",
10804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10805)]
10806pub fn vdup_laneq_s32<const N: i32>(a: int32x4_t) -> int32x2_t {
10807 static_assert_uimm_bits!(N, 2);
10808 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10809}
10810#[doc = "Set all vector lanes to the same value"]
10811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u32)"]
10812#[inline(always)]
10813#[target_feature(enable = "neon")]
10814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10815#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10816#[cfg_attr(
10817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10818 assert_instr(dup, N = 2)
10819)]
10820#[rustc_legacy_const_generics(1)]
10821#[cfg_attr(
10822 not(target_arch = "arm"),
10823 stable(feature = "neon_intrinsics", since = "1.59.0")
10824)]
10825#[cfg_attr(
10826 target_arch = "arm",
10827 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10828)]
10829pub fn vdup_laneq_u32<const N: i32>(a: uint32x4_t) -> uint32x2_t {
10830 static_assert_uimm_bits!(N, 2);
10831 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10832}
10833#[doc = "Set all vector lanes to the same value"]
10834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_f32)"]
10835#[inline(always)]
10836#[target_feature(enable = "neon")]
10837#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10838#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10839#[cfg_attr(
10840 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10841 assert_instr(dup, N = 2)
10842)]
10843#[rustc_legacy_const_generics(1)]
10844#[cfg_attr(
10845 not(target_arch = "arm"),
10846 stable(feature = "neon_intrinsics", since = "1.59.0")
10847)]
10848#[cfg_attr(
10849 target_arch = "arm",
10850 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10851)]
10852pub fn vdupq_laneq_f32<const N: i32>(a: float32x4_t) -> float32x4_t {
10853 static_assert_uimm_bits!(N, 2);
10854 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10855}
10856#[doc = "Set all vector lanes to the same value"]
10857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s32)"]
10858#[inline(always)]
10859#[target_feature(enable = "neon")]
10860#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10861#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10862#[cfg_attr(
10863 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10864 assert_instr(dup, N = 2)
10865)]
10866#[rustc_legacy_const_generics(1)]
10867#[cfg_attr(
10868 not(target_arch = "arm"),
10869 stable(feature = "neon_intrinsics", since = "1.59.0")
10870)]
10871#[cfg_attr(
10872 target_arch = "arm",
10873 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10874)]
10875pub fn vdupq_laneq_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
10876 static_assert_uimm_bits!(N, 2);
10877 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10878}
10879#[doc = "Set all vector lanes to the same value"]
10880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u32)"]
10881#[inline(always)]
10882#[target_feature(enable = "neon")]
10883#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10884#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10885#[cfg_attr(
10886 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10887 assert_instr(dup, N = 2)
10888)]
10889#[rustc_legacy_const_generics(1)]
10890#[cfg_attr(
10891 not(target_arch = "arm"),
10892 stable(feature = "neon_intrinsics", since = "1.59.0")
10893)]
10894#[cfg_attr(
10895 target_arch = "arm",
10896 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10897)]
10898pub fn vdupq_laneq_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
10899 static_assert_uimm_bits!(N, 2);
10900 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10901}
10902#[doc = "Set all vector lanes to the same value"]
10903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_p16)"]
10904#[inline(always)]
10905#[target_feature(enable = "neon")]
10906#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10907#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10908#[cfg_attr(
10909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10910 assert_instr(dup, N = 4)
10911)]
10912#[rustc_legacy_const_generics(1)]
10913#[cfg_attr(
10914 not(target_arch = "arm"),
10915 stable(feature = "neon_intrinsics", since = "1.59.0")
10916)]
10917#[cfg_attr(
10918 target_arch = "arm",
10919 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10920)]
10921pub fn vdup_laneq_p16<const N: i32>(a: poly16x8_t) -> poly16x4_t {
10922 static_assert_uimm_bits!(N, 3);
10923 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10924}
10925#[doc = "Set all vector lanes to the same value"]
10926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s16)"]
10927#[inline(always)]
10928#[target_feature(enable = "neon")]
10929#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10930#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10931#[cfg_attr(
10932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10933 assert_instr(dup, N = 4)
10934)]
10935#[rustc_legacy_const_generics(1)]
10936#[cfg_attr(
10937 not(target_arch = "arm"),
10938 stable(feature = "neon_intrinsics", since = "1.59.0")
10939)]
10940#[cfg_attr(
10941 target_arch = "arm",
10942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10943)]
10944pub fn vdup_laneq_s16<const N: i32>(a: int16x8_t) -> int16x4_t {
10945 static_assert_uimm_bits!(N, 3);
10946 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10947}
10948#[doc = "Set all vector lanes to the same value"]
10949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u16)"]
10950#[inline(always)]
10951#[target_feature(enable = "neon")]
10952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10953#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10954#[cfg_attr(
10955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10956 assert_instr(dup, N = 4)
10957)]
10958#[rustc_legacy_const_generics(1)]
10959#[cfg_attr(
10960 not(target_arch = "arm"),
10961 stable(feature = "neon_intrinsics", since = "1.59.0")
10962)]
10963#[cfg_attr(
10964 target_arch = "arm",
10965 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10966)]
10967pub fn vdup_laneq_u16<const N: i32>(a: uint16x8_t) -> uint16x4_t {
10968 static_assert_uimm_bits!(N, 3);
10969 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10970}
10971#[doc = "Set all vector lanes to the same value"]
10972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_p16)"]
10973#[inline(always)]
10974#[target_feature(enable = "neon")]
10975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10976#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10977#[cfg_attr(
10978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10979 assert_instr(dup, N = 4)
10980)]
10981#[rustc_legacy_const_generics(1)]
10982#[cfg_attr(
10983 not(target_arch = "arm"),
10984 stable(feature = "neon_intrinsics", since = "1.59.0")
10985)]
10986#[cfg_attr(
10987 target_arch = "arm",
10988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10989)]
10990pub fn vdupq_laneq_p16<const N: i32>(a: poly16x8_t) -> poly16x8_t {
10991 static_assert_uimm_bits!(N, 3);
10992 unsafe {
10993 simd_shuffle!(
10994 a,
10995 a,
10996 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
10997 )
10998 }
10999}
11000#[doc = "Set all vector lanes to the same value"]
11001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s16)"]
11002#[inline(always)]
11003#[target_feature(enable = "neon")]
11004#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11005#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
11006#[cfg_attr(
11007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11008 assert_instr(dup, N = 4)
11009)]
11010#[rustc_legacy_const_generics(1)]
11011#[cfg_attr(
11012 not(target_arch = "arm"),
11013 stable(feature = "neon_intrinsics", since = "1.59.0")
11014)]
11015#[cfg_attr(
11016 target_arch = "arm",
11017 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11018)]
11019pub fn vdupq_laneq_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
11020 static_assert_uimm_bits!(N, 3);
11021 unsafe {
11022 simd_shuffle!(
11023 a,
11024 a,
11025 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
11026 )
11027 }
11028}
11029#[doc = "Set all vector lanes to the same value"]
11030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u16)"]
11031#[inline(always)]
11032#[target_feature(enable = "neon")]
11033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11034#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
11035#[cfg_attr(
11036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11037 assert_instr(dup, N = 4)
11038)]
11039#[rustc_legacy_const_generics(1)]
11040#[cfg_attr(
11041 not(target_arch = "arm"),
11042 stable(feature = "neon_intrinsics", since = "1.59.0")
11043)]
11044#[cfg_attr(
11045 target_arch = "arm",
11046 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11047)]
11048pub fn vdupq_laneq_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
11049 static_assert_uimm_bits!(N, 3);
11050 unsafe {
11051 simd_shuffle!(
11052 a,
11053 a,
11054 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
11055 )
11056 }
11057}
11058#[doc = "Set all vector lanes to the same value"]
11059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_p8)"]
11060#[inline(always)]
11061#[target_feature(enable = "neon")]
11062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11063#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
11064#[cfg_attr(
11065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11066 assert_instr(dup, N = 8)
11067)]
11068#[rustc_legacy_const_generics(1)]
11069#[cfg_attr(
11070 not(target_arch = "arm"),
11071 stable(feature = "neon_intrinsics", since = "1.59.0")
11072)]
11073#[cfg_attr(
11074 target_arch = "arm",
11075 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11076)]
11077pub fn vdup_laneq_p8<const N: i32>(a: poly8x16_t) -> poly8x8_t {
11078 static_assert_uimm_bits!(N, 4);
11079 unsafe {
11080 simd_shuffle!(
11081 a,
11082 a,
11083 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
11084 )
11085 }
11086}
11087#[doc = "Set all vector lanes to the same value"]
11088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s8)"]
11089#[inline(always)]
11090#[target_feature(enable = "neon")]
11091#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11092#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
11093#[cfg_attr(
11094 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11095 assert_instr(dup, N = 8)
11096)]
11097#[rustc_legacy_const_generics(1)]
11098#[cfg_attr(
11099 not(target_arch = "arm"),
11100 stable(feature = "neon_intrinsics", since = "1.59.0")
11101)]
11102#[cfg_attr(
11103 target_arch = "arm",
11104 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11105)]
11106pub fn vdup_laneq_s8<const N: i32>(a: int8x16_t) -> int8x8_t {
11107 static_assert_uimm_bits!(N, 4);
11108 unsafe {
11109 simd_shuffle!(
11110 a,
11111 a,
11112 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
11113 )
11114 }
11115}
11116#[doc = "Set all vector lanes to the same value"]
11117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u8)"]
11118#[inline(always)]
11119#[target_feature(enable = "neon")]
11120#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11121#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
11122#[cfg_attr(
11123 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11124 assert_instr(dup, N = 8)
11125)]
11126#[rustc_legacy_const_generics(1)]
11127#[cfg_attr(
11128 not(target_arch = "arm"),
11129 stable(feature = "neon_intrinsics", since = "1.59.0")
11130)]
11131#[cfg_attr(
11132 target_arch = "arm",
11133 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11134)]
11135pub fn vdup_laneq_u8<const N: i32>(a: uint8x16_t) -> uint8x8_t {
11136 static_assert_uimm_bits!(N, 4);
11137 unsafe {
11138 simd_shuffle!(
11139 a,
11140 a,
11141 [N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32]
11142 )
11143 }
11144}
11145#[doc = "Set all vector lanes to the same value"]
11146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_p8)"]
11147#[inline(always)]
11148#[target_feature(enable = "neon")]
11149#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11150#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
11151#[cfg_attr(
11152 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11153 assert_instr(dup, N = 8)
11154)]
11155#[rustc_legacy_const_generics(1)]
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 vdupq_laneq_p8<const N: i32>(a: poly8x16_t) -> poly8x16_t {
11165 static_assert_uimm_bits!(N, 4);
11166 unsafe {
11167 simd_shuffle!(
11168 a,
11169 a,
11170 [
11171 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
11172 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
11173 ]
11174 )
11175 }
11176}
11177#[doc = "Set all vector lanes to the same value"]
11178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s8)"]
11179#[inline(always)]
11180#[target_feature(enable = "neon")]
11181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11182#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
11183#[cfg_attr(
11184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11185 assert_instr(dup, N = 8)
11186)]
11187#[rustc_legacy_const_generics(1)]
11188#[cfg_attr(
11189 not(target_arch = "arm"),
11190 stable(feature = "neon_intrinsics", since = "1.59.0")
11191)]
11192#[cfg_attr(
11193 target_arch = "arm",
11194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11195)]
11196pub fn vdupq_laneq_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
11197 static_assert_uimm_bits!(N, 4);
11198 unsafe {
11199 simd_shuffle!(
11200 a,
11201 a,
11202 [
11203 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
11204 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
11205 ]
11206 )
11207 }
11208}
11209#[doc = "Set all vector lanes to the same value"]
11210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u8)"]
11211#[inline(always)]
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.8", N = 8))]
11215#[cfg_attr(
11216 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11217 assert_instr(dup, N = 8)
11218)]
11219#[rustc_legacy_const_generics(1)]
11220#[cfg_attr(
11221 not(target_arch = "arm"),
11222 stable(feature = "neon_intrinsics", since = "1.59.0")
11223)]
11224#[cfg_attr(
11225 target_arch = "arm",
11226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11227)]
11228pub fn vdupq_laneq_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
11229 static_assert_uimm_bits!(N, 4);
11230 unsafe {
11231 simd_shuffle!(
11232 a,
11233 a,
11234 [
11235 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32,
11236 N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32, N as u32
11237 ]
11238 )
11239 }
11240}
11241#[doc = "Set all vector lanes to the same value"]
11242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s64)"]
11243#[inline(always)]
11244#[target_feature(enable = "neon")]
11245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11247#[cfg_attr(
11248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11249 assert_instr(nop, N = 1)
11250)]
11251#[rustc_legacy_const_generics(1)]
11252#[cfg_attr(
11253 not(target_arch = "arm"),
11254 stable(feature = "neon_intrinsics", since = "1.59.0")
11255)]
11256#[cfg_attr(
11257 target_arch = "arm",
11258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11259)]
11260pub fn vdup_laneq_s64<const N: i32>(a: int64x2_t) -> int64x1_t {
11261 static_assert_uimm_bits!(N, 1);
11262 unsafe { transmute::<i64, _>(simd_extract!(a, N as u32)) }
11263}
11264#[doc = "Set all vector lanes to the same value"]
11265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u64)"]
11266#[inline(always)]
11267#[target_feature(enable = "neon")]
11268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11269#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11270#[cfg_attr(
11271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11272 assert_instr(nop, N = 1)
11273)]
11274#[rustc_legacy_const_generics(1)]
11275#[cfg_attr(
11276 not(target_arch = "arm"),
11277 stable(feature = "neon_intrinsics", since = "1.59.0")
11278)]
11279#[cfg_attr(
11280 target_arch = "arm",
11281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11282)]
11283pub fn vdup_laneq_u64<const N: i32>(a: uint64x2_t) -> uint64x1_t {
11284 static_assert_uimm_bits!(N, 1);
11285 unsafe { transmute::<u64, _>(simd_extract!(a, N as u32)) }
11286}
11287#[doc = "Create a new vector with all lanes set to a value"]
11288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f16)"]
11289#[inline(always)]
11290#[target_feature(enable = "neon")]
11291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11292#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11293#[cfg_attr(
11294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11295 assert_instr(dup)
11296)]
11297#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
11298#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
11299#[cfg(not(target_arch = "arm64ec"))]
11300pub fn vdup_n_f16(a: f16) -> float16x4_t {
11301 float16x4_t::splat(a)
11302}
11303#[doc = "Create a new vector with all lanes set to a value"]
11304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f16)"]
11305#[inline(always)]
11306#[target_feature(enable = "neon")]
11307#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11308#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11309#[cfg_attr(
11310 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11311 assert_instr(dup)
11312)]
11313#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
11314#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
11315#[cfg(not(target_arch = "arm64ec"))]
11316pub fn vdupq_n_f16(a: f16) -> float16x8_t {
11317 float16x8_t::splat(a)
11318}
11319#[doc = "Duplicate vector element to vector or scalar"]
11320#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f32)"]
11321#[inline(always)]
11322#[target_feature(enable = "neon")]
11323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11324#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11325#[cfg_attr(
11326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11327 assert_instr(dup)
11328)]
11329#[cfg_attr(
11330 not(target_arch = "arm"),
11331 stable(feature = "neon_intrinsics", since = "1.59.0")
11332)]
11333#[cfg_attr(
11334 target_arch = "arm",
11335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11336)]
11337pub fn vdup_n_f32(value: f32) -> float32x2_t {
11338 float32x2_t::splat(value)
11339}
11340#[doc = "Duplicate vector element to vector or scalar"]
11341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_p16)"]
11342#[inline(always)]
11343#[target_feature(enable = "neon")]
11344#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11345#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11346#[cfg_attr(
11347 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11348 assert_instr(dup)
11349)]
11350#[cfg_attr(
11351 not(target_arch = "arm"),
11352 stable(feature = "neon_intrinsics", since = "1.59.0")
11353)]
11354#[cfg_attr(
11355 target_arch = "arm",
11356 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11357)]
11358pub fn vdup_n_p16(value: p16) -> poly16x4_t {
11359 poly16x4_t::splat(value)
11360}
11361#[doc = "Duplicate vector element to vector or scalar"]
11362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_p8)"]
11363#[inline(always)]
11364#[target_feature(enable = "neon")]
11365#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11366#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11367#[cfg_attr(
11368 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11369 assert_instr(dup)
11370)]
11371#[cfg_attr(
11372 not(target_arch = "arm"),
11373 stable(feature = "neon_intrinsics", since = "1.59.0")
11374)]
11375#[cfg_attr(
11376 target_arch = "arm",
11377 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11378)]
11379pub fn vdup_n_p8(value: p8) -> poly8x8_t {
11380 poly8x8_t::splat(value)
11381}
11382#[doc = "Duplicate vector element to vector or scalar"]
11383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s16)"]
11384#[inline(always)]
11385#[target_feature(enable = "neon")]
11386#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11387#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11388#[cfg_attr(
11389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11390 assert_instr(dup)
11391)]
11392#[cfg_attr(
11393 not(target_arch = "arm"),
11394 stable(feature = "neon_intrinsics", since = "1.59.0")
11395)]
11396#[cfg_attr(
11397 target_arch = "arm",
11398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11399)]
11400pub fn vdup_n_s16(value: i16) -> int16x4_t {
11401 int16x4_t::splat(value)
11402}
11403#[doc = "Duplicate vector element to vector or scalar"]
11404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s32)"]
11405#[inline(always)]
11406#[target_feature(enable = "neon")]
11407#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11408#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11409#[cfg_attr(
11410 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11411 assert_instr(dup)
11412)]
11413#[cfg_attr(
11414 not(target_arch = "arm"),
11415 stable(feature = "neon_intrinsics", since = "1.59.0")
11416)]
11417#[cfg_attr(
11418 target_arch = "arm",
11419 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11420)]
11421pub fn vdup_n_s32(value: i32) -> int32x2_t {
11422 int32x2_t::splat(value)
11423}
11424#[doc = "Duplicate vector element to vector or scalar"]
11425#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s64)"]
11426#[inline(always)]
11427#[target_feature(enable = "neon")]
11428#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11429#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11430#[cfg_attr(
11431 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11432 assert_instr(fmov)
11433)]
11434#[cfg_attr(
11435 not(target_arch = "arm"),
11436 stable(feature = "neon_intrinsics", since = "1.59.0")
11437)]
11438#[cfg_attr(
11439 target_arch = "arm",
11440 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11441)]
11442pub fn vdup_n_s64(value: i64) -> int64x1_t {
11443 int64x1_t::splat(value)
11444}
11445#[doc = "Duplicate vector element to vector or scalar"]
11446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s8)"]
11447#[inline(always)]
11448#[target_feature(enable = "neon")]
11449#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11450#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11451#[cfg_attr(
11452 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11453 assert_instr(dup)
11454)]
11455#[cfg_attr(
11456 not(target_arch = "arm"),
11457 stable(feature = "neon_intrinsics", since = "1.59.0")
11458)]
11459#[cfg_attr(
11460 target_arch = "arm",
11461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11462)]
11463pub fn vdup_n_s8(value: i8) -> int8x8_t {
11464 int8x8_t::splat(value)
11465}
11466#[doc = "Duplicate vector element to vector or scalar"]
11467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u16)"]
11468#[inline(always)]
11469#[target_feature(enable = "neon")]
11470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11471#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11472#[cfg_attr(
11473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11474 assert_instr(dup)
11475)]
11476#[cfg_attr(
11477 not(target_arch = "arm"),
11478 stable(feature = "neon_intrinsics", since = "1.59.0")
11479)]
11480#[cfg_attr(
11481 target_arch = "arm",
11482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11483)]
11484pub fn vdup_n_u16(value: u16) -> uint16x4_t {
11485 uint16x4_t::splat(value)
11486}
11487#[doc = "Duplicate vector element to vector or scalar"]
11488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u32)"]
11489#[inline(always)]
11490#[target_feature(enable = "neon")]
11491#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11492#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11493#[cfg_attr(
11494 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11495 assert_instr(dup)
11496)]
11497#[cfg_attr(
11498 not(target_arch = "arm"),
11499 stable(feature = "neon_intrinsics", since = "1.59.0")
11500)]
11501#[cfg_attr(
11502 target_arch = "arm",
11503 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11504)]
11505pub fn vdup_n_u32(value: u32) -> uint32x2_t {
11506 uint32x2_t::splat(value)
11507}
11508#[doc = "Duplicate vector element to vector or scalar"]
11509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u64)"]
11510#[inline(always)]
11511#[target_feature(enable = "neon")]
11512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11513#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11514#[cfg_attr(
11515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11516 assert_instr(fmov)
11517)]
11518#[cfg_attr(
11519 not(target_arch = "arm"),
11520 stable(feature = "neon_intrinsics", since = "1.59.0")
11521)]
11522#[cfg_attr(
11523 target_arch = "arm",
11524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11525)]
11526pub fn vdup_n_u64(value: u64) -> uint64x1_t {
11527 uint64x1_t::splat(value)
11528}
11529#[doc = "Duplicate vector element to vector or scalar"]
11530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u8)"]
11531#[inline(always)]
11532#[target_feature(enable = "neon")]
11533#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11534#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11535#[cfg_attr(
11536 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11537 assert_instr(dup)
11538)]
11539#[cfg_attr(
11540 not(target_arch = "arm"),
11541 stable(feature = "neon_intrinsics", since = "1.59.0")
11542)]
11543#[cfg_attr(
11544 target_arch = "arm",
11545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11546)]
11547pub fn vdup_n_u8(value: u8) -> uint8x8_t {
11548 uint8x8_t::splat(value)
11549}
11550#[doc = "Duplicate vector element to vector or scalar"]
11551#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f32)"]
11552#[inline(always)]
11553#[target_feature(enable = "neon")]
11554#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11555#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11556#[cfg_attr(
11557 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11558 assert_instr(dup)
11559)]
11560#[cfg_attr(
11561 not(target_arch = "arm"),
11562 stable(feature = "neon_intrinsics", since = "1.59.0")
11563)]
11564#[cfg_attr(
11565 target_arch = "arm",
11566 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11567)]
11568pub fn vdupq_n_f32(value: f32) -> float32x4_t {
11569 float32x4_t::splat(value)
11570}
11571#[doc = "Duplicate vector element to vector or scalar"]
11572#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_p16)"]
11573#[inline(always)]
11574#[target_feature(enable = "neon")]
11575#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11576#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11577#[cfg_attr(
11578 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11579 assert_instr(dup)
11580)]
11581#[cfg_attr(
11582 not(target_arch = "arm"),
11583 stable(feature = "neon_intrinsics", since = "1.59.0")
11584)]
11585#[cfg_attr(
11586 target_arch = "arm",
11587 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11588)]
11589pub fn vdupq_n_p16(value: p16) -> poly16x8_t {
11590 poly16x8_t::splat(value)
11591}
11592#[doc = "Duplicate vector element to vector or scalar"]
11593#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_p8)"]
11594#[inline(always)]
11595#[target_feature(enable = "neon")]
11596#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11597#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11598#[cfg_attr(
11599 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11600 assert_instr(dup)
11601)]
11602#[cfg_attr(
11603 not(target_arch = "arm"),
11604 stable(feature = "neon_intrinsics", since = "1.59.0")
11605)]
11606#[cfg_attr(
11607 target_arch = "arm",
11608 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11609)]
11610pub fn vdupq_n_p8(value: p8) -> poly8x16_t {
11611 poly8x16_t::splat(value)
11612}
11613#[doc = "Duplicate vector element to vector or scalar"]
11614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s16)"]
11615#[inline(always)]
11616#[target_feature(enable = "neon")]
11617#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11618#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11619#[cfg_attr(
11620 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11621 assert_instr(dup)
11622)]
11623#[cfg_attr(
11624 not(target_arch = "arm"),
11625 stable(feature = "neon_intrinsics", since = "1.59.0")
11626)]
11627#[cfg_attr(
11628 target_arch = "arm",
11629 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11630)]
11631pub fn vdupq_n_s16(value: i16) -> int16x8_t {
11632 int16x8_t::splat(value)
11633}
11634#[doc = "Duplicate vector element to vector or scalar"]
11635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s32)"]
11636#[inline(always)]
11637#[target_feature(enable = "neon")]
11638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11639#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11640#[cfg_attr(
11641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11642 assert_instr(dup)
11643)]
11644#[cfg_attr(
11645 not(target_arch = "arm"),
11646 stable(feature = "neon_intrinsics", since = "1.59.0")
11647)]
11648#[cfg_attr(
11649 target_arch = "arm",
11650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11651)]
11652pub fn vdupq_n_s32(value: i32) -> int32x4_t {
11653 int32x4_t::splat(value)
11654}
11655#[doc = "Duplicate vector element to vector or scalar"]
11656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s64)"]
11657#[inline(always)]
11658#[target_feature(enable = "neon")]
11659#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11660#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11661#[cfg_attr(
11662 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11663 assert_instr(dup)
11664)]
11665#[cfg_attr(
11666 not(target_arch = "arm"),
11667 stable(feature = "neon_intrinsics", since = "1.59.0")
11668)]
11669#[cfg_attr(
11670 target_arch = "arm",
11671 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11672)]
11673pub fn vdupq_n_s64(value: i64) -> int64x2_t {
11674 int64x2_t::splat(value)
11675}
11676#[doc = "Duplicate vector element to vector or scalar"]
11677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s8)"]
11678#[inline(always)]
11679#[target_feature(enable = "neon")]
11680#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11681#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11682#[cfg_attr(
11683 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11684 assert_instr(dup)
11685)]
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_n_s8(value: i8) -> int8x16_t {
11695 int8x16_t::splat(value)
11696}
11697#[doc = "Duplicate vector element to vector or scalar"]
11698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u16)"]
11699#[inline(always)]
11700#[target_feature(enable = "neon")]
11701#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11702#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11703#[cfg_attr(
11704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11705 assert_instr(dup)
11706)]
11707#[cfg_attr(
11708 not(target_arch = "arm"),
11709 stable(feature = "neon_intrinsics", since = "1.59.0")
11710)]
11711#[cfg_attr(
11712 target_arch = "arm",
11713 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11714)]
11715pub fn vdupq_n_u16(value: u16) -> uint16x8_t {
11716 uint16x8_t::splat(value)
11717}
11718#[doc = "Duplicate vector element to vector or scalar"]
11719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u32)"]
11720#[inline(always)]
11721#[target_feature(enable = "neon")]
11722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11723#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11724#[cfg_attr(
11725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11726 assert_instr(dup)
11727)]
11728#[cfg_attr(
11729 not(target_arch = "arm"),
11730 stable(feature = "neon_intrinsics", since = "1.59.0")
11731)]
11732#[cfg_attr(
11733 target_arch = "arm",
11734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11735)]
11736pub fn vdupq_n_u32(value: u32) -> uint32x4_t {
11737 uint32x4_t::splat(value)
11738}
11739#[doc = "Duplicate vector element to vector or scalar"]
11740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u64)"]
11741#[inline(always)]
11742#[target_feature(enable = "neon")]
11743#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11744#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11745#[cfg_attr(
11746 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11747 assert_instr(dup)
11748)]
11749#[cfg_attr(
11750 not(target_arch = "arm"),
11751 stable(feature = "neon_intrinsics", since = "1.59.0")
11752)]
11753#[cfg_attr(
11754 target_arch = "arm",
11755 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11756)]
11757pub fn vdupq_n_u64(value: u64) -> uint64x2_t {
11758 uint64x2_t::splat(value)
11759}
11760#[doc = "Duplicate vector element to vector or scalar"]
11761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u8)"]
11762#[inline(always)]
11763#[target_feature(enable = "neon")]
11764#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11765#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11766#[cfg_attr(
11767 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11768 assert_instr(dup)
11769)]
11770#[cfg_attr(
11771 not(target_arch = "arm"),
11772 stable(feature = "neon_intrinsics", since = "1.59.0")
11773)]
11774#[cfg_attr(
11775 target_arch = "arm",
11776 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11777)]
11778pub fn vdupq_n_u8(value: u8) -> uint8x16_t {
11779 uint8x16_t::splat(value)
11780}
11781#[doc = "Duplicate vector element to vector or scalar"]
11782#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f32_vfp4)"]
11783#[inline(always)]
11784#[target_feature(enable = "neon")]
11785#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
11786#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11787#[cfg_attr(
11788 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11789 assert_instr(dup)
11790)]
11791#[cfg_attr(
11792 not(target_arch = "arm"),
11793 stable(feature = "neon_intrinsics", since = "1.59.0")
11794)]
11795#[cfg_attr(
11796 target_arch = "arm",
11797 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11798)]
11799fn vdup_n_f32_vfp4(value: f32) -> float32x2_t {
11800 float32x2_t::splat(value)
11801}
11802#[doc = "Duplicate vector element to vector or scalar"]
11803#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f32_vfp4)"]
11804#[inline(always)]
11805#[target_feature(enable = "neon")]
11806#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
11807#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11808#[cfg_attr(
11809 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11810 assert_instr(dup)
11811)]
11812#[cfg_attr(
11813 not(target_arch = "arm"),
11814 stable(feature = "neon_intrinsics", since = "1.59.0")
11815)]
11816#[cfg_attr(
11817 target_arch = "arm",
11818 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11819)]
11820fn vdupq_n_f32_vfp4(value: f32) -> float32x4_t {
11821 float32x4_t::splat(value)
11822}
11823#[doc = "Set all vector lanes to the same value"]
11824#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s64)"]
11825#[inline(always)]
11826#[target_feature(enable = "neon")]
11827#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11828#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 0))]
11829#[cfg_attr(
11830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11831 assert_instr(dup, N = 0)
11832)]
11833#[rustc_legacy_const_generics(1)]
11834#[cfg_attr(
11835 not(target_arch = "arm"),
11836 stable(feature = "neon_intrinsics", since = "1.59.0")
11837)]
11838#[cfg_attr(
11839 target_arch = "arm",
11840 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11841)]
11842pub fn vdupq_lane_s64<const N: i32>(a: int64x1_t) -> int64x2_t {
11843 static_assert!(N == 0);
11844 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11845}
11846#[doc = "Set all vector lanes to the same value"]
11847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u64)"]
11848#[inline(always)]
11849#[target_feature(enable = "neon")]
11850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11851#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 0))]
11852#[cfg_attr(
11853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11854 assert_instr(dup, N = 0)
11855)]
11856#[rustc_legacy_const_generics(1)]
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 vdupq_lane_u64<const N: i32>(a: uint64x1_t) -> uint64x2_t {
11866 static_assert!(N == 0);
11867 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11868}
11869#[doc = "Set all vector lanes to the same value"]
11870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s64)"]
11871#[inline(always)]
11872#[target_feature(enable = "neon")]
11873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11874#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11875#[cfg_attr(
11876 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11877 assert_instr(dup, N = 1)
11878)]
11879#[rustc_legacy_const_generics(1)]
11880#[cfg_attr(
11881 not(target_arch = "arm"),
11882 stable(feature = "neon_intrinsics", since = "1.59.0")
11883)]
11884#[cfg_attr(
11885 target_arch = "arm",
11886 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11887)]
11888pub fn vdupq_laneq_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
11889 static_assert_uimm_bits!(N, 1);
11890 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11891}
11892#[doc = "Set all vector lanes to the same value"]
11893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u64)"]
11894#[inline(always)]
11895#[target_feature(enable = "neon")]
11896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11897#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11898#[cfg_attr(
11899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11900 assert_instr(dup, N = 1)
11901)]
11902#[rustc_legacy_const_generics(1)]
11903#[cfg_attr(
11904 not(target_arch = "arm"),
11905 stable(feature = "neon_intrinsics", since = "1.59.0")
11906)]
11907#[cfg_attr(
11908 target_arch = "arm",
11909 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11910)]
11911pub fn vdupq_laneq_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
11912 static_assert_uimm_bits!(N, 1);
11913 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11914}
11915#[doc = "Vector bitwise exclusive or (vector)"]
11916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s8)"]
11917#[inline(always)]
11918#[target_feature(enable = "neon")]
11919#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11921#[cfg_attr(
11922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11923 assert_instr(eor)
11924)]
11925#[cfg_attr(
11926 not(target_arch = "arm"),
11927 stable(feature = "neon_intrinsics", since = "1.59.0")
11928)]
11929#[cfg_attr(
11930 target_arch = "arm",
11931 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11932)]
11933pub fn veor_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
11934 unsafe { simd_xor(a, b) }
11935}
11936#[doc = "Vector bitwise exclusive or (vector)"]
11937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s8)"]
11938#[inline(always)]
11939#[target_feature(enable = "neon")]
11940#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11941#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11942#[cfg_attr(
11943 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11944 assert_instr(eor)
11945)]
11946#[cfg_attr(
11947 not(target_arch = "arm"),
11948 stable(feature = "neon_intrinsics", since = "1.59.0")
11949)]
11950#[cfg_attr(
11951 target_arch = "arm",
11952 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11953)]
11954pub fn veorq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
11955 unsafe { simd_xor(a, b) }
11956}
11957#[doc = "Vector bitwise exclusive or (vector)"]
11958#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s16)"]
11959#[inline(always)]
11960#[target_feature(enable = "neon")]
11961#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11962#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11963#[cfg_attr(
11964 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11965 assert_instr(eor)
11966)]
11967#[cfg_attr(
11968 not(target_arch = "arm"),
11969 stable(feature = "neon_intrinsics", since = "1.59.0")
11970)]
11971#[cfg_attr(
11972 target_arch = "arm",
11973 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11974)]
11975pub fn veor_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
11976 unsafe { simd_xor(a, b) }
11977}
11978#[doc = "Vector bitwise exclusive or (vector)"]
11979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s16)"]
11980#[inline(always)]
11981#[target_feature(enable = "neon")]
11982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11983#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11984#[cfg_attr(
11985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11986 assert_instr(eor)
11987)]
11988#[cfg_attr(
11989 not(target_arch = "arm"),
11990 stable(feature = "neon_intrinsics", since = "1.59.0")
11991)]
11992#[cfg_attr(
11993 target_arch = "arm",
11994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11995)]
11996pub fn veorq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
11997 unsafe { simd_xor(a, b) }
11998}
11999#[doc = "Vector bitwise exclusive or (vector)"]
12000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s32)"]
12001#[inline(always)]
12002#[target_feature(enable = "neon")]
12003#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12004#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12005#[cfg_attr(
12006 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12007 assert_instr(eor)
12008)]
12009#[cfg_attr(
12010 not(target_arch = "arm"),
12011 stable(feature = "neon_intrinsics", since = "1.59.0")
12012)]
12013#[cfg_attr(
12014 target_arch = "arm",
12015 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12016)]
12017pub fn veor_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
12018 unsafe { simd_xor(a, b) }
12019}
12020#[doc = "Vector bitwise exclusive or (vector)"]
12021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s32)"]
12022#[inline(always)]
12023#[target_feature(enable = "neon")]
12024#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12025#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12026#[cfg_attr(
12027 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12028 assert_instr(eor)
12029)]
12030#[cfg_attr(
12031 not(target_arch = "arm"),
12032 stable(feature = "neon_intrinsics", since = "1.59.0")
12033)]
12034#[cfg_attr(
12035 target_arch = "arm",
12036 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12037)]
12038pub fn veorq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
12039 unsafe { simd_xor(a, b) }
12040}
12041#[doc = "Vector bitwise exclusive or (vector)"]
12042#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s64)"]
12043#[inline(always)]
12044#[target_feature(enable = "neon")]
12045#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12046#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12047#[cfg_attr(
12048 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12049 assert_instr(eor)
12050)]
12051#[cfg_attr(
12052 not(target_arch = "arm"),
12053 stable(feature = "neon_intrinsics", since = "1.59.0")
12054)]
12055#[cfg_attr(
12056 target_arch = "arm",
12057 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12058)]
12059pub fn veor_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
12060 unsafe { simd_xor(a, b) }
12061}
12062#[doc = "Vector bitwise exclusive or (vector)"]
12063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s64)"]
12064#[inline(always)]
12065#[target_feature(enable = "neon")]
12066#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12067#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12068#[cfg_attr(
12069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12070 assert_instr(eor)
12071)]
12072#[cfg_attr(
12073 not(target_arch = "arm"),
12074 stable(feature = "neon_intrinsics", since = "1.59.0")
12075)]
12076#[cfg_attr(
12077 target_arch = "arm",
12078 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12079)]
12080pub fn veorq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
12081 unsafe { simd_xor(a, b) }
12082}
12083#[doc = "Vector bitwise exclusive or (vector)"]
12084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u8)"]
12085#[inline(always)]
12086#[target_feature(enable = "neon")]
12087#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12088#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12089#[cfg_attr(
12090 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12091 assert_instr(eor)
12092)]
12093#[cfg_attr(
12094 not(target_arch = "arm"),
12095 stable(feature = "neon_intrinsics", since = "1.59.0")
12096)]
12097#[cfg_attr(
12098 target_arch = "arm",
12099 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12100)]
12101pub fn veor_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
12102 unsafe { simd_xor(a, b) }
12103}
12104#[doc = "Vector bitwise exclusive or (vector)"]
12105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u8)"]
12106#[inline(always)]
12107#[target_feature(enable = "neon")]
12108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12109#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12110#[cfg_attr(
12111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12112 assert_instr(eor)
12113)]
12114#[cfg_attr(
12115 not(target_arch = "arm"),
12116 stable(feature = "neon_intrinsics", since = "1.59.0")
12117)]
12118#[cfg_attr(
12119 target_arch = "arm",
12120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12121)]
12122pub fn veorq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
12123 unsafe { simd_xor(a, b) }
12124}
12125#[doc = "Vector bitwise exclusive or (vector)"]
12126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u16)"]
12127#[inline(always)]
12128#[target_feature(enable = "neon")]
12129#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12130#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12131#[cfg_attr(
12132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12133 assert_instr(eor)
12134)]
12135#[cfg_attr(
12136 not(target_arch = "arm"),
12137 stable(feature = "neon_intrinsics", since = "1.59.0")
12138)]
12139#[cfg_attr(
12140 target_arch = "arm",
12141 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12142)]
12143pub fn veor_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
12144 unsafe { simd_xor(a, b) }
12145}
12146#[doc = "Vector bitwise exclusive or (vector)"]
12147#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u16)"]
12148#[inline(always)]
12149#[target_feature(enable = "neon")]
12150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12151#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12152#[cfg_attr(
12153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12154 assert_instr(eor)
12155)]
12156#[cfg_attr(
12157 not(target_arch = "arm"),
12158 stable(feature = "neon_intrinsics", since = "1.59.0")
12159)]
12160#[cfg_attr(
12161 target_arch = "arm",
12162 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12163)]
12164pub fn veorq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
12165 unsafe { simd_xor(a, b) }
12166}
12167#[doc = "Vector bitwise exclusive or (vector)"]
12168#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u32)"]
12169#[inline(always)]
12170#[target_feature(enable = "neon")]
12171#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12172#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12173#[cfg_attr(
12174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12175 assert_instr(eor)
12176)]
12177#[cfg_attr(
12178 not(target_arch = "arm"),
12179 stable(feature = "neon_intrinsics", since = "1.59.0")
12180)]
12181#[cfg_attr(
12182 target_arch = "arm",
12183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12184)]
12185pub fn veor_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
12186 unsafe { simd_xor(a, b) }
12187}
12188#[doc = "Vector bitwise exclusive or (vector)"]
12189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u32)"]
12190#[inline(always)]
12191#[target_feature(enable = "neon")]
12192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12193#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12194#[cfg_attr(
12195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12196 assert_instr(eor)
12197)]
12198#[cfg_attr(
12199 not(target_arch = "arm"),
12200 stable(feature = "neon_intrinsics", since = "1.59.0")
12201)]
12202#[cfg_attr(
12203 target_arch = "arm",
12204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12205)]
12206pub fn veorq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
12207 unsafe { simd_xor(a, b) }
12208}
12209#[doc = "Vector bitwise exclusive or (vector)"]
12210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u64)"]
12211#[inline(always)]
12212#[target_feature(enable = "neon")]
12213#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12214#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12215#[cfg_attr(
12216 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12217 assert_instr(eor)
12218)]
12219#[cfg_attr(
12220 not(target_arch = "arm"),
12221 stable(feature = "neon_intrinsics", since = "1.59.0")
12222)]
12223#[cfg_attr(
12224 target_arch = "arm",
12225 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12226)]
12227pub fn veor_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
12228 unsafe { simd_xor(a, b) }
12229}
12230#[doc = "Vector bitwise exclusive or (vector)"]
12231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u64)"]
12232#[inline(always)]
12233#[target_feature(enable = "neon")]
12234#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12235#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12236#[cfg_attr(
12237 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12238 assert_instr(eor)
12239)]
12240#[cfg_attr(
12241 not(target_arch = "arm"),
12242 stable(feature = "neon_intrinsics", since = "1.59.0")
12243)]
12244#[cfg_attr(
12245 target_arch = "arm",
12246 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12247)]
12248pub fn veorq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
12249 unsafe { simd_xor(a, b) }
12250}
12251#[doc = "Extract vector from pair of vectors"]
12252#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_f16)"]
12253#[inline(always)]
12254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12255#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12256#[cfg_attr(
12257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12258 assert_instr(ext, N = 3)
12259)]
12260#[rustc_legacy_const_generics(2)]
12261#[target_feature(enable = "neon,fp16")]
12262#[cfg_attr(
12263 not(target_arch = "arm"),
12264 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
12265)]
12266#[cfg_attr(
12267 target_arch = "arm",
12268 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12269)]
12270#[cfg(not(target_arch = "arm64ec"))]
12271pub fn vext_f16<const N: i32>(a: float16x4_t, b: float16x4_t) -> float16x4_t {
12272 static_assert_uimm_bits!(N, 2);
12273 unsafe {
12274 match N & 0b11 {
12275 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12276 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12277 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12278 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12279 _ => unreachable_unchecked(),
12280 }
12281 }
12282}
12283#[doc = "Extract vector from pair of vectors"]
12284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_f32)"]
12285#[inline(always)]
12286#[target_feature(enable = "neon")]
12287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12288#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
12289#[cfg_attr(
12290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12291 assert_instr(ext, N = 1)
12292)]
12293#[rustc_legacy_const_generics(2)]
12294#[cfg_attr(
12295 not(target_arch = "arm"),
12296 stable(feature = "neon_intrinsics", since = "1.59.0")
12297)]
12298#[cfg_attr(
12299 target_arch = "arm",
12300 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12301)]
12302pub fn vext_f32<const N: i32>(a: float32x2_t, b: float32x2_t) -> float32x2_t {
12303 static_assert_uimm_bits!(N, 1);
12304 unsafe {
12305 match N & 0b1 {
12306 0 => simd_shuffle!(a, b, [0, 1]),
12307 1 => simd_shuffle!(a, b, [1, 2]),
12308 _ => unreachable_unchecked(),
12309 }
12310 }
12311}
12312#[doc = "Extract vector from pair of vectors"]
12313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s32)"]
12314#[inline(always)]
12315#[target_feature(enable = "neon")]
12316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12317#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
12318#[cfg_attr(
12319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12320 assert_instr(ext, N = 1)
12321)]
12322#[rustc_legacy_const_generics(2)]
12323#[cfg_attr(
12324 not(target_arch = "arm"),
12325 stable(feature = "neon_intrinsics", since = "1.59.0")
12326)]
12327#[cfg_attr(
12328 target_arch = "arm",
12329 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12330)]
12331pub fn vext_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
12332 static_assert_uimm_bits!(N, 1);
12333 unsafe {
12334 match N & 0b1 {
12335 0 => simd_shuffle!(a, b, [0, 1]),
12336 1 => simd_shuffle!(a, b, [1, 2]),
12337 _ => unreachable_unchecked(),
12338 }
12339 }
12340}
12341#[doc = "Extract vector from pair of vectors"]
12342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u32)"]
12343#[inline(always)]
12344#[target_feature(enable = "neon")]
12345#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12346#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
12347#[cfg_attr(
12348 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12349 assert_instr(ext, N = 1)
12350)]
12351#[rustc_legacy_const_generics(2)]
12352#[cfg_attr(
12353 not(target_arch = "arm"),
12354 stable(feature = "neon_intrinsics", since = "1.59.0")
12355)]
12356#[cfg_attr(
12357 target_arch = "arm",
12358 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12359)]
12360pub fn vext_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
12361 static_assert_uimm_bits!(N, 1);
12362 unsafe {
12363 match N & 0b1 {
12364 0 => simd_shuffle!(a, b, [0, 1]),
12365 1 => simd_shuffle!(a, b, [1, 2]),
12366 _ => unreachable_unchecked(),
12367 }
12368 }
12369}
12370#[doc = "Extract vector from pair of vectors"]
12371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s64)"]
12372#[doc = "## Safety"]
12373#[doc = " * Neon intrinsic unsafe"]
12374#[inline(always)]
12375#[target_feature(enable = "neon")]
12376#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12377#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
12378#[cfg_attr(
12379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12380 assert_instr(nop, N = 0)
12381)]
12382#[rustc_legacy_const_generics(2)]
12383#[cfg_attr(
12384 not(target_arch = "arm"),
12385 stable(feature = "neon_intrinsics", since = "1.59.0")
12386)]
12387#[cfg_attr(
12388 target_arch = "arm",
12389 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12390)]
12391pub unsafe fn vext_s64<const N: i32>(a: int64x1_t, _b: int64x1_t) -> int64x1_t {
12392 static_assert!(N == 0);
12393 a
12394}
12395#[doc = "Extract vector from pair of vectors"]
12396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u64)"]
12397#[doc = "## Safety"]
12398#[doc = " * Neon intrinsic unsafe"]
12399#[inline(always)]
12400#[target_feature(enable = "neon")]
12401#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12402#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
12403#[cfg_attr(
12404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12405 assert_instr(nop, N = 0)
12406)]
12407#[rustc_legacy_const_generics(2)]
12408#[cfg_attr(
12409 not(target_arch = "arm"),
12410 stable(feature = "neon_intrinsics", since = "1.59.0")
12411)]
12412#[cfg_attr(
12413 target_arch = "arm",
12414 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12415)]
12416pub unsafe fn vext_u64<const N: i32>(a: uint64x1_t, _b: uint64x1_t) -> uint64x1_t {
12417 static_assert!(N == 0);
12418 a
12419}
12420#[doc = "Extract vector from pair of vectors"]
12421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s8)"]
12422#[inline(always)]
12423#[target_feature(enable = "neon")]
12424#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12425#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12426#[cfg_attr(
12427 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12428 assert_instr(ext, N = 7)
12429)]
12430#[rustc_legacy_const_generics(2)]
12431#[cfg_attr(
12432 not(target_arch = "arm"),
12433 stable(feature = "neon_intrinsics", since = "1.59.0")
12434)]
12435#[cfg_attr(
12436 target_arch = "arm",
12437 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12438)]
12439pub fn vext_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
12440 static_assert_uimm_bits!(N, 3);
12441 unsafe {
12442 match N & 0b111 {
12443 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12444 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12445 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12446 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12447 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12448 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12449 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12450 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12451 _ => unreachable_unchecked(),
12452 }
12453 }
12454}
12455#[doc = "Extract vector from pair of vectors"]
12456#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s16)"]
12457#[inline(always)]
12458#[target_feature(enable = "neon")]
12459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12460#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12461#[cfg_attr(
12462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12463 assert_instr(ext, N = 7)
12464)]
12465#[rustc_legacy_const_generics(2)]
12466#[cfg_attr(
12467 not(target_arch = "arm"),
12468 stable(feature = "neon_intrinsics", since = "1.59.0")
12469)]
12470#[cfg_attr(
12471 target_arch = "arm",
12472 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12473)]
12474pub fn vextq_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
12475 static_assert_uimm_bits!(N, 3);
12476 unsafe {
12477 match N & 0b111 {
12478 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12479 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12480 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12481 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12482 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12483 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12484 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12485 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12486 _ => unreachable_unchecked(),
12487 }
12488 }
12489}
12490#[doc = "Extract vector from pair of vectors"]
12491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u8)"]
12492#[inline(always)]
12493#[target_feature(enable = "neon")]
12494#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12495#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12496#[cfg_attr(
12497 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12498 assert_instr(ext, N = 7)
12499)]
12500#[rustc_legacy_const_generics(2)]
12501#[cfg_attr(
12502 not(target_arch = "arm"),
12503 stable(feature = "neon_intrinsics", since = "1.59.0")
12504)]
12505#[cfg_attr(
12506 target_arch = "arm",
12507 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12508)]
12509pub fn vext_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
12510 static_assert_uimm_bits!(N, 3);
12511 unsafe {
12512 match N & 0b111 {
12513 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12514 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12515 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12516 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12517 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12518 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12519 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12520 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12521 _ => unreachable_unchecked(),
12522 }
12523 }
12524}
12525#[doc = "Extract vector from pair of vectors"]
12526#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u16)"]
12527#[inline(always)]
12528#[target_feature(enable = "neon")]
12529#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12530#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12531#[cfg_attr(
12532 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12533 assert_instr(ext, N = 7)
12534)]
12535#[rustc_legacy_const_generics(2)]
12536#[cfg_attr(
12537 not(target_arch = "arm"),
12538 stable(feature = "neon_intrinsics", since = "1.59.0")
12539)]
12540#[cfg_attr(
12541 target_arch = "arm",
12542 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12543)]
12544pub fn vextq_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
12545 static_assert_uimm_bits!(N, 3);
12546 unsafe {
12547 match N & 0b111 {
12548 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12549 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12550 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12551 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12552 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12553 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12554 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12555 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12556 _ => unreachable_unchecked(),
12557 }
12558 }
12559}
12560#[doc = "Extract vector from pair of vectors"]
12561#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_p8)"]
12562#[inline(always)]
12563#[target_feature(enable = "neon")]
12564#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12565#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12566#[cfg_attr(
12567 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12568 assert_instr(ext, N = 7)
12569)]
12570#[rustc_legacy_const_generics(2)]
12571#[cfg_attr(
12572 not(target_arch = "arm"),
12573 stable(feature = "neon_intrinsics", since = "1.59.0")
12574)]
12575#[cfg_attr(
12576 target_arch = "arm",
12577 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12578)]
12579pub fn vext_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
12580 static_assert_uimm_bits!(N, 3);
12581 unsafe {
12582 match N & 0b111 {
12583 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12584 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12585 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12586 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12587 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12588 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12589 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12590 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12591 _ => unreachable_unchecked(),
12592 }
12593 }
12594}
12595#[doc = "Extract vector from pair of vectors"]
12596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_p16)"]
12597#[inline(always)]
12598#[target_feature(enable = "neon")]
12599#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12600#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12601#[cfg_attr(
12602 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12603 assert_instr(ext, N = 7)
12604)]
12605#[rustc_legacy_const_generics(2)]
12606#[cfg_attr(
12607 not(target_arch = "arm"),
12608 stable(feature = "neon_intrinsics", since = "1.59.0")
12609)]
12610#[cfg_attr(
12611 target_arch = "arm",
12612 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12613)]
12614pub fn vextq_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
12615 static_assert_uimm_bits!(N, 3);
12616 unsafe {
12617 match N & 0b111 {
12618 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12619 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12620 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12621 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12622 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12623 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12624 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12625 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12626 _ => unreachable_unchecked(),
12627 }
12628 }
12629}
12630#[doc = "Extract vector from pair of vectors"]
12631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_f16)"]
12632#[inline(always)]
12633#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12634#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12635#[cfg_attr(
12636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12637 assert_instr(ext, N = 7)
12638)]
12639#[rustc_legacy_const_generics(2)]
12640#[target_feature(enable = "neon,fp16")]
12641#[cfg_attr(
12642 not(target_arch = "arm"),
12643 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
12644)]
12645#[cfg_attr(
12646 target_arch = "arm",
12647 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12648)]
12649#[cfg(not(target_arch = "arm64ec"))]
12650pub fn vextq_f16<const N: i32>(a: float16x8_t, b: float16x8_t) -> float16x8_t {
12651 static_assert_uimm_bits!(N, 3);
12652 unsafe {
12653 match N & 0b111 {
12654 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12655 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12656 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12657 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12658 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12659 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12660 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12661 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12662 _ => unreachable_unchecked(),
12663 }
12664 }
12665}
12666#[doc = "Extract vector from pair of vectors"]
12667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_f32)"]
12668#[inline(always)]
12669#[target_feature(enable = "neon")]
12670#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12671#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12672#[cfg_attr(
12673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12674 assert_instr(ext, N = 3)
12675)]
12676#[rustc_legacy_const_generics(2)]
12677#[cfg_attr(
12678 not(target_arch = "arm"),
12679 stable(feature = "neon_intrinsics", since = "1.59.0")
12680)]
12681#[cfg_attr(
12682 target_arch = "arm",
12683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12684)]
12685pub fn vextq_f32<const N: i32>(a: float32x4_t, b: float32x4_t) -> float32x4_t {
12686 static_assert_uimm_bits!(N, 2);
12687 unsafe {
12688 match N & 0b11 {
12689 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12690 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12691 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12692 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12693 _ => unreachable_unchecked(),
12694 }
12695 }
12696}
12697#[doc = "Extract vector from pair of vectors"]
12698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s16)"]
12699#[inline(always)]
12700#[target_feature(enable = "neon")]
12701#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12702#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12703#[cfg_attr(
12704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12705 assert_instr(ext, N = 3)
12706)]
12707#[rustc_legacy_const_generics(2)]
12708#[cfg_attr(
12709 not(target_arch = "arm"),
12710 stable(feature = "neon_intrinsics", since = "1.59.0")
12711)]
12712#[cfg_attr(
12713 target_arch = "arm",
12714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12715)]
12716pub fn vext_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
12717 static_assert_uimm_bits!(N, 2);
12718 unsafe {
12719 match N & 0b11 {
12720 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12721 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12722 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12723 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12724 _ => unreachable_unchecked(),
12725 }
12726 }
12727}
12728#[doc = "Extract vector from pair of vectors"]
12729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s32)"]
12730#[inline(always)]
12731#[target_feature(enable = "neon")]
12732#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12733#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12734#[cfg_attr(
12735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12736 assert_instr(ext, N = 3)
12737)]
12738#[rustc_legacy_const_generics(2)]
12739#[cfg_attr(
12740 not(target_arch = "arm"),
12741 stable(feature = "neon_intrinsics", since = "1.59.0")
12742)]
12743#[cfg_attr(
12744 target_arch = "arm",
12745 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12746)]
12747pub fn vextq_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
12748 static_assert_uimm_bits!(N, 2);
12749 unsafe {
12750 match N & 0b11 {
12751 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12752 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12753 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12754 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12755 _ => unreachable_unchecked(),
12756 }
12757 }
12758}
12759#[doc = "Extract vector from pair of vectors"]
12760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u16)"]
12761#[inline(always)]
12762#[target_feature(enable = "neon")]
12763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12764#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12765#[cfg_attr(
12766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12767 assert_instr(ext, N = 3)
12768)]
12769#[rustc_legacy_const_generics(2)]
12770#[cfg_attr(
12771 not(target_arch = "arm"),
12772 stable(feature = "neon_intrinsics", since = "1.59.0")
12773)]
12774#[cfg_attr(
12775 target_arch = "arm",
12776 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12777)]
12778pub fn vext_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
12779 static_assert_uimm_bits!(N, 2);
12780 unsafe {
12781 match N & 0b11 {
12782 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12783 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12784 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12785 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12786 _ => unreachable_unchecked(),
12787 }
12788 }
12789}
12790#[doc = "Extract vector from pair of vectors"]
12791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u32)"]
12792#[inline(always)]
12793#[target_feature(enable = "neon")]
12794#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12795#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12796#[cfg_attr(
12797 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12798 assert_instr(ext, N = 3)
12799)]
12800#[rustc_legacy_const_generics(2)]
12801#[cfg_attr(
12802 not(target_arch = "arm"),
12803 stable(feature = "neon_intrinsics", since = "1.59.0")
12804)]
12805#[cfg_attr(
12806 target_arch = "arm",
12807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12808)]
12809pub fn vextq_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
12810 static_assert_uimm_bits!(N, 2);
12811 unsafe {
12812 match N & 0b11 {
12813 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12814 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12815 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12816 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12817 _ => unreachable_unchecked(),
12818 }
12819 }
12820}
12821#[doc = "Extract vector from pair of vectors"]
12822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_p16)"]
12823#[inline(always)]
12824#[target_feature(enable = "neon")]
12825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12826#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12827#[cfg_attr(
12828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12829 assert_instr(ext, N = 3)
12830)]
12831#[rustc_legacy_const_generics(2)]
12832#[cfg_attr(
12833 not(target_arch = "arm"),
12834 stable(feature = "neon_intrinsics", since = "1.59.0")
12835)]
12836#[cfg_attr(
12837 target_arch = "arm",
12838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12839)]
12840pub fn vext_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
12841 static_assert_uimm_bits!(N, 2);
12842 unsafe {
12843 match N & 0b11 {
12844 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12845 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12846 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12847 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12848 _ => unreachable_unchecked(),
12849 }
12850 }
12851}
12852#[doc = "Extract vector from pair of vectors"]
12853#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s64)"]
12854#[inline(always)]
12855#[target_feature(enable = "neon")]
12856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
12858#[cfg_attr(
12859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12860 assert_instr(ext, N = 1)
12861)]
12862#[rustc_legacy_const_generics(2)]
12863#[cfg_attr(
12864 not(target_arch = "arm"),
12865 stable(feature = "neon_intrinsics", since = "1.59.0")
12866)]
12867#[cfg_attr(
12868 target_arch = "arm",
12869 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12870)]
12871pub fn vextq_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
12872 static_assert_uimm_bits!(N, 1);
12873 unsafe {
12874 match N & 0b1 {
12875 0 => simd_shuffle!(a, b, [0, 1]),
12876 1 => simd_shuffle!(a, b, [1, 2]),
12877 _ => unreachable_unchecked(),
12878 }
12879 }
12880}
12881#[doc = "Extract vector from pair of vectors"]
12882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u64)"]
12883#[inline(always)]
12884#[target_feature(enable = "neon")]
12885#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12886#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
12887#[cfg_attr(
12888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12889 assert_instr(ext, N = 1)
12890)]
12891#[rustc_legacy_const_generics(2)]
12892#[cfg_attr(
12893 not(target_arch = "arm"),
12894 stable(feature = "neon_intrinsics", since = "1.59.0")
12895)]
12896#[cfg_attr(
12897 target_arch = "arm",
12898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12899)]
12900pub fn vextq_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
12901 static_assert_uimm_bits!(N, 1);
12902 unsafe {
12903 match N & 0b1 {
12904 0 => simd_shuffle!(a, b, [0, 1]),
12905 1 => simd_shuffle!(a, b, [1, 2]),
12906 _ => unreachable_unchecked(),
12907 }
12908 }
12909}
12910#[doc = "Extract vector from pair of vectors"]
12911#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s8)"]
12912#[inline(always)]
12913#[target_feature(enable = "neon")]
12914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12915#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
12916#[cfg_attr(
12917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12918 assert_instr(ext, N = 15)
12919)]
12920#[rustc_legacy_const_generics(2)]
12921#[cfg_attr(
12922 not(target_arch = "arm"),
12923 stable(feature = "neon_intrinsics", since = "1.59.0")
12924)]
12925#[cfg_attr(
12926 target_arch = "arm",
12927 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12928)]
12929pub fn vextq_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
12930 static_assert_uimm_bits!(N, 4);
12931 unsafe {
12932 match N & 0b1111 {
12933 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
12934 1 => simd_shuffle!(
12935 a,
12936 b,
12937 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
12938 ),
12939 2 => simd_shuffle!(
12940 a,
12941 b,
12942 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
12943 ),
12944 3 => simd_shuffle!(
12945 a,
12946 b,
12947 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
12948 ),
12949 4 => simd_shuffle!(
12950 a,
12951 b,
12952 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
12953 ),
12954 5 => simd_shuffle!(
12955 a,
12956 b,
12957 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
12958 ),
12959 6 => simd_shuffle!(
12960 a,
12961 b,
12962 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
12963 ),
12964 7 => simd_shuffle!(
12965 a,
12966 b,
12967 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
12968 ),
12969 8 => simd_shuffle!(
12970 a,
12971 b,
12972 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
12973 ),
12974 9 => simd_shuffle!(
12975 a,
12976 b,
12977 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
12978 ),
12979 10 => simd_shuffle!(
12980 a,
12981 b,
12982 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
12983 ),
12984 11 => simd_shuffle!(
12985 a,
12986 b,
12987 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
12988 ),
12989 12 => simd_shuffle!(
12990 a,
12991 b,
12992 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
12993 ),
12994 13 => simd_shuffle!(
12995 a,
12996 b,
12997 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
12998 ),
12999 14 => simd_shuffle!(
13000 a,
13001 b,
13002 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
13003 ),
13004 15 => simd_shuffle!(
13005 a,
13006 b,
13007 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
13008 ),
13009 _ => unreachable_unchecked(),
13010 }
13011 }
13012}
13013#[doc = "Extract vector from pair of vectors"]
13014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u8)"]
13015#[inline(always)]
13016#[target_feature(enable = "neon")]
13017#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13018#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
13019#[cfg_attr(
13020 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13021 assert_instr(ext, N = 15)
13022)]
13023#[rustc_legacy_const_generics(2)]
13024#[cfg_attr(
13025 not(target_arch = "arm"),
13026 stable(feature = "neon_intrinsics", since = "1.59.0")
13027)]
13028#[cfg_attr(
13029 target_arch = "arm",
13030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13031)]
13032pub fn vextq_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
13033 static_assert_uimm_bits!(N, 4);
13034 unsafe {
13035 match N & 0b1111 {
13036 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
13037 1 => simd_shuffle!(
13038 a,
13039 b,
13040 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
13041 ),
13042 2 => simd_shuffle!(
13043 a,
13044 b,
13045 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
13046 ),
13047 3 => simd_shuffle!(
13048 a,
13049 b,
13050 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
13051 ),
13052 4 => simd_shuffle!(
13053 a,
13054 b,
13055 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
13056 ),
13057 5 => simd_shuffle!(
13058 a,
13059 b,
13060 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
13061 ),
13062 6 => simd_shuffle!(
13063 a,
13064 b,
13065 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
13066 ),
13067 7 => simd_shuffle!(
13068 a,
13069 b,
13070 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
13071 ),
13072 8 => simd_shuffle!(
13073 a,
13074 b,
13075 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
13076 ),
13077 9 => simd_shuffle!(
13078 a,
13079 b,
13080 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
13081 ),
13082 10 => simd_shuffle!(
13083 a,
13084 b,
13085 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
13086 ),
13087 11 => simd_shuffle!(
13088 a,
13089 b,
13090 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
13091 ),
13092 12 => simd_shuffle!(
13093 a,
13094 b,
13095 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
13096 ),
13097 13 => simd_shuffle!(
13098 a,
13099 b,
13100 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
13101 ),
13102 14 => simd_shuffle!(
13103 a,
13104 b,
13105 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
13106 ),
13107 15 => simd_shuffle!(
13108 a,
13109 b,
13110 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
13111 ),
13112 _ => unreachable_unchecked(),
13113 }
13114 }
13115}
13116#[doc = "Extract vector from pair of vectors"]
13117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_p8)"]
13118#[inline(always)]
13119#[target_feature(enable = "neon")]
13120#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13121#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
13122#[cfg_attr(
13123 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13124 assert_instr(ext, N = 15)
13125)]
13126#[rustc_legacy_const_generics(2)]
13127#[cfg_attr(
13128 not(target_arch = "arm"),
13129 stable(feature = "neon_intrinsics", since = "1.59.0")
13130)]
13131#[cfg_attr(
13132 target_arch = "arm",
13133 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13134)]
13135pub fn vextq_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
13136 static_assert_uimm_bits!(N, 4);
13137 unsafe {
13138 match N & 0b1111 {
13139 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
13140 1 => simd_shuffle!(
13141 a,
13142 b,
13143 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
13144 ),
13145 2 => simd_shuffle!(
13146 a,
13147 b,
13148 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
13149 ),
13150 3 => simd_shuffle!(
13151 a,
13152 b,
13153 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
13154 ),
13155 4 => simd_shuffle!(
13156 a,
13157 b,
13158 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
13159 ),
13160 5 => simd_shuffle!(
13161 a,
13162 b,
13163 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
13164 ),
13165 6 => simd_shuffle!(
13166 a,
13167 b,
13168 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
13169 ),
13170 7 => simd_shuffle!(
13171 a,
13172 b,
13173 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
13174 ),
13175 8 => simd_shuffle!(
13176 a,
13177 b,
13178 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
13179 ),
13180 9 => simd_shuffle!(
13181 a,
13182 b,
13183 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
13184 ),
13185 10 => simd_shuffle!(
13186 a,
13187 b,
13188 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
13189 ),
13190 11 => simd_shuffle!(
13191 a,
13192 b,
13193 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
13194 ),
13195 12 => simd_shuffle!(
13196 a,
13197 b,
13198 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
13199 ),
13200 13 => simd_shuffle!(
13201 a,
13202 b,
13203 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
13204 ),
13205 14 => simd_shuffle!(
13206 a,
13207 b,
13208 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
13209 ),
13210 15 => simd_shuffle!(
13211 a,
13212 b,
13213 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
13214 ),
13215 _ => unreachable_unchecked(),
13216 }
13217 }
13218}
13219#[doc = "Floating-point fused Multiply-Add to accumulator (vector)"]
13220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_f16)"]
13221#[inline(always)]
13222#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13223#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13224#[cfg_attr(
13225 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13226 assert_instr(fmla)
13227)]
13228#[target_feature(enable = "neon,fp16")]
13229#[cfg_attr(
13230 not(target_arch = "arm"),
13231 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13232)]
13233#[cfg_attr(
13234 target_arch = "arm",
13235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13236)]
13237#[cfg(not(target_arch = "arm64ec"))]
13238pub fn vfma_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t {
13239 unsafe { simd_fma(b, c, a) }
13240}
13241#[doc = "Floating-point fused Multiply-Add to accumulator (vector)"]
13242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_f16)"]
13243#[inline(always)]
13244#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13245#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13246#[cfg_attr(
13247 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13248 assert_instr(fmla)
13249)]
13250#[target_feature(enable = "neon,fp16")]
13251#[cfg_attr(
13252 not(target_arch = "arm"),
13253 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13254)]
13255#[cfg_attr(
13256 target_arch = "arm",
13257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13258)]
13259#[cfg(not(target_arch = "arm64ec"))]
13260pub fn vfmaq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t {
13261 unsafe { simd_fma(b, c, a) }
13262}
13263#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_f32)"]
13265#[inline(always)]
13266#[target_feature(enable = "neon")]
13267#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13268#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13269#[cfg_attr(
13270 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13271 assert_instr(fmla)
13272)]
13273#[cfg_attr(
13274 not(target_arch = "arm"),
13275 stable(feature = "neon_intrinsics", since = "1.59.0")
13276)]
13277#[cfg_attr(
13278 target_arch = "arm",
13279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13280)]
13281pub fn vfma_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
13282 unsafe { simd_fma(b, c, a) }
13283}
13284#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_f32)"]
13286#[inline(always)]
13287#[target_feature(enable = "neon")]
13288#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13289#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13290#[cfg_attr(
13291 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13292 assert_instr(fmla)
13293)]
13294#[cfg_attr(
13295 not(target_arch = "arm"),
13296 stable(feature = "neon_intrinsics", since = "1.59.0")
13297)]
13298#[cfg_attr(
13299 target_arch = "arm",
13300 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13301)]
13302pub fn vfmaq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
13303 unsafe { simd_fma(b, c, a) }
13304}
13305#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13306#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_n_f32)"]
13307#[inline(always)]
13308#[target_feature(enable = "neon")]
13309#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13310#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13311#[cfg_attr(
13312 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13313 assert_instr(fmla)
13314)]
13315#[cfg_attr(
13316 not(target_arch = "arm"),
13317 stable(feature = "neon_intrinsics", since = "1.59.0")
13318)]
13319#[cfg_attr(
13320 target_arch = "arm",
13321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13322)]
13323pub fn vfma_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
13324 vfma_f32(a, b, vdup_n_f32_vfp4(c))
13325}
13326#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_n_f32)"]
13328#[inline(always)]
13329#[target_feature(enable = "neon")]
13330#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13331#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13332#[cfg_attr(
13333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13334 assert_instr(fmla)
13335)]
13336#[cfg_attr(
13337 not(target_arch = "arm"),
13338 stable(feature = "neon_intrinsics", since = "1.59.0")
13339)]
13340#[cfg_attr(
13341 target_arch = "arm",
13342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13343)]
13344pub fn vfmaq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
13345 vfmaq_f32(a, b, vdupq_n_f32_vfp4(c))
13346}
13347#[doc = "Floating-point fused multiply-subtract from accumulator"]
13348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_f16)"]
13349#[inline(always)]
13350#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
13351#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13352#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
13353#[cfg_attr(
13354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13355 assert_instr(fmls)
13356)]
13357#[target_feature(enable = "neon,fp16")]
13358#[cfg_attr(
13359 not(target_arch = "arm"),
13360 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13361)]
13362#[cfg_attr(
13363 target_arch = "arm",
13364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13365)]
13366#[cfg(not(target_arch = "arm64ec"))]
13367pub fn vfms_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t {
13368 unsafe {
13369 let b: float16x4_t = simd_neg(b);
13370 vfma_f16(a, b, c)
13371 }
13372}
13373#[doc = "Floating-point fused multiply-subtract from accumulator"]
13374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_f16)"]
13375#[inline(always)]
13376#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
13377#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13378#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
13379#[cfg_attr(
13380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13381 assert_instr(fmls)
13382)]
13383#[target_feature(enable = "neon,fp16")]
13384#[cfg_attr(
13385 not(target_arch = "arm"),
13386 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13387)]
13388#[cfg_attr(
13389 target_arch = "arm",
13390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13391)]
13392#[cfg(not(target_arch = "arm64ec"))]
13393pub fn vfmsq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t {
13394 unsafe {
13395 let b: float16x8_t = simd_neg(b);
13396 vfmaq_f16(a, b, c)
13397 }
13398}
13399#[doc = "Floating-point fused multiply-subtract from accumulator"]
13400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_f32)"]
13401#[inline(always)]
13402#[target_feature(enable = "neon")]
13403#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13404#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13405#[cfg_attr(
13406 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13407 assert_instr(fmls)
13408)]
13409#[cfg_attr(
13410 not(target_arch = "arm"),
13411 stable(feature = "neon_intrinsics", since = "1.59.0")
13412)]
13413#[cfg_attr(
13414 target_arch = "arm",
13415 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13416)]
13417pub fn vfms_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
13418 unsafe {
13419 let b: float32x2_t = simd_neg(b);
13420 vfma_f32(a, b, c)
13421 }
13422}
13423#[doc = "Floating-point fused multiply-subtract from accumulator"]
13424#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_f32)"]
13425#[inline(always)]
13426#[target_feature(enable = "neon")]
13427#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13428#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13429#[cfg_attr(
13430 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13431 assert_instr(fmls)
13432)]
13433#[cfg_attr(
13434 not(target_arch = "arm"),
13435 stable(feature = "neon_intrinsics", since = "1.59.0")
13436)]
13437#[cfg_attr(
13438 target_arch = "arm",
13439 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13440)]
13441pub fn vfmsq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
13442 unsafe {
13443 let b: float32x4_t = simd_neg(b);
13444 vfmaq_f32(a, b, c)
13445 }
13446}
13447#[doc = "Floating-point fused Multiply-subtract to accumulator(vector)"]
13448#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_n_f32)"]
13449#[inline(always)]
13450#[target_feature(enable = "neon")]
13451#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13452#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13453#[cfg_attr(
13454 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13455 assert_instr(fmls)
13456)]
13457#[cfg_attr(
13458 not(target_arch = "arm"),
13459 stable(feature = "neon_intrinsics", since = "1.59.0")
13460)]
13461#[cfg_attr(
13462 target_arch = "arm",
13463 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13464)]
13465pub fn vfms_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
13466 vfms_f32(a, b, vdup_n_f32_vfp4(c))
13467}
13468#[doc = "Floating-point fused Multiply-subtract to accumulator(vector)"]
13469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_n_f32)"]
13470#[inline(always)]
13471#[target_feature(enable = "neon")]
13472#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13473#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13474#[cfg_attr(
13475 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13476 assert_instr(fmls)
13477)]
13478#[cfg_attr(
13479 not(target_arch = "arm"),
13480 stable(feature = "neon_intrinsics", since = "1.59.0")
13481)]
13482#[cfg_attr(
13483 target_arch = "arm",
13484 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13485)]
13486pub fn vfmsq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
13487 vfmsq_f32(a, b, vdupq_n_f32_vfp4(c))
13488}
13489#[doc = "Duplicate vector element to vector"]
13490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_f16)"]
13491#[inline(always)]
13492#[target_feature(enable = "neon")]
13493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13494#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13495#[cfg_attr(
13496 not(target_arch = "arm"),
13497 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13498)]
13499#[cfg_attr(
13500 target_arch = "arm",
13501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13502)]
13503#[cfg(not(target_arch = "arm64ec"))]
13504#[cfg_attr(test, assert_instr(nop))]
13505pub fn vget_high_f16(a: float16x8_t) -> float16x4_t {
13506 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13507}
13508#[doc = "Duplicate vector element to vector"]
13509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_f16)"]
13510#[inline(always)]
13511#[target_feature(enable = "neon")]
13512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13513#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13514#[cfg_attr(
13515 not(target_arch = "arm"),
13516 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13517)]
13518#[cfg_attr(
13519 target_arch = "arm",
13520 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13521)]
13522#[cfg(not(target_arch = "arm64ec"))]
13523#[cfg_attr(test, assert_instr(nop))]
13524pub fn vget_low_f16(a: float16x8_t) -> float16x4_t {
13525 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
13526}
13527#[doc = "Duplicate vector element to vector or scalar"]
13528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_f32)"]
13529#[inline(always)]
13530#[target_feature(enable = "neon")]
13531#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13532#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13533#[cfg_attr(
13534 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13535 assert_instr(ext)
13536)]
13537#[cfg_attr(
13538 not(target_arch = "arm"),
13539 stable(feature = "neon_intrinsics", since = "1.59.0")
13540)]
13541#[cfg_attr(
13542 target_arch = "arm",
13543 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13544)]
13545pub fn vget_high_f32(a: float32x4_t) -> float32x2_t {
13546 unsafe { simd_shuffle!(a, a, [2, 3]) }
13547}
13548#[doc = "Duplicate vector element to vector or scalar"]
13549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_p16)"]
13550#[inline(always)]
13551#[target_feature(enable = "neon")]
13552#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13553#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13554#[cfg_attr(
13555 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13556 assert_instr(ext)
13557)]
13558#[cfg_attr(
13559 not(target_arch = "arm"),
13560 stable(feature = "neon_intrinsics", since = "1.59.0")
13561)]
13562#[cfg_attr(
13563 target_arch = "arm",
13564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13565)]
13566pub fn vget_high_p16(a: poly16x8_t) -> poly16x4_t {
13567 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13568}
13569#[doc = "Duplicate vector element to vector or scalar"]
13570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_p8)"]
13571#[inline(always)]
13572#[target_feature(enable = "neon")]
13573#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13574#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13575#[cfg_attr(
13576 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13577 assert_instr(ext)
13578)]
13579#[cfg_attr(
13580 not(target_arch = "arm"),
13581 stable(feature = "neon_intrinsics", since = "1.59.0")
13582)]
13583#[cfg_attr(
13584 target_arch = "arm",
13585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13586)]
13587pub fn vget_high_p8(a: poly8x16_t) -> poly8x8_t {
13588 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
13589}
13590#[doc = "Duplicate vector element to vector or scalar"]
13591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s16)"]
13592#[inline(always)]
13593#[target_feature(enable = "neon")]
13594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13595#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13596#[cfg_attr(
13597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13598 assert_instr(ext)
13599)]
13600#[cfg_attr(
13601 not(target_arch = "arm"),
13602 stable(feature = "neon_intrinsics", since = "1.59.0")
13603)]
13604#[cfg_attr(
13605 target_arch = "arm",
13606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13607)]
13608pub fn vget_high_s16(a: int16x8_t) -> int16x4_t {
13609 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13610}
13611#[doc = "Duplicate vector element to vector or scalar"]
13612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s32)"]
13613#[inline(always)]
13614#[target_feature(enable = "neon")]
13615#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13616#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13617#[cfg_attr(
13618 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13619 assert_instr(ext)
13620)]
13621#[cfg_attr(
13622 not(target_arch = "arm"),
13623 stable(feature = "neon_intrinsics", since = "1.59.0")
13624)]
13625#[cfg_attr(
13626 target_arch = "arm",
13627 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13628)]
13629pub fn vget_high_s32(a: int32x4_t) -> int32x2_t {
13630 unsafe { simd_shuffle!(a, a, [2, 3]) }
13631}
13632#[doc = "Duplicate vector element to vector or scalar"]
13633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s8)"]
13634#[inline(always)]
13635#[target_feature(enable = "neon")]
13636#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13637#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13638#[cfg_attr(
13639 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13640 assert_instr(ext)
13641)]
13642#[cfg_attr(
13643 not(target_arch = "arm"),
13644 stable(feature = "neon_intrinsics", since = "1.59.0")
13645)]
13646#[cfg_attr(
13647 target_arch = "arm",
13648 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13649)]
13650pub fn vget_high_s8(a: int8x16_t) -> int8x8_t {
13651 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
13652}
13653#[doc = "Duplicate vector element to vector or scalar"]
13654#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u16)"]
13655#[inline(always)]
13656#[target_feature(enable = "neon")]
13657#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13658#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13659#[cfg_attr(
13660 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13661 assert_instr(ext)
13662)]
13663#[cfg_attr(
13664 not(target_arch = "arm"),
13665 stable(feature = "neon_intrinsics", since = "1.59.0")
13666)]
13667#[cfg_attr(
13668 target_arch = "arm",
13669 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13670)]
13671pub fn vget_high_u16(a: uint16x8_t) -> uint16x4_t {
13672 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13673}
13674#[doc = "Duplicate vector element to vector or scalar"]
13675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u32)"]
13676#[inline(always)]
13677#[target_feature(enable = "neon")]
13678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13679#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13680#[cfg_attr(
13681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13682 assert_instr(ext)
13683)]
13684#[cfg_attr(
13685 not(target_arch = "arm"),
13686 stable(feature = "neon_intrinsics", since = "1.59.0")
13687)]
13688#[cfg_attr(
13689 target_arch = "arm",
13690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13691)]
13692pub fn vget_high_u32(a: uint32x4_t) -> uint32x2_t {
13693 unsafe { simd_shuffle!(a, a, [2, 3]) }
13694}
13695#[doc = "Duplicate vector element to vector or scalar"]
13696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u8)"]
13697#[inline(always)]
13698#[target_feature(enable = "neon")]
13699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13700#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13701#[cfg_attr(
13702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13703 assert_instr(ext)
13704)]
13705#[cfg_attr(
13706 not(target_arch = "arm"),
13707 stable(feature = "neon_intrinsics", since = "1.59.0")
13708)]
13709#[cfg_attr(
13710 target_arch = "arm",
13711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13712)]
13713pub fn vget_high_u8(a: uint8x16_t) -> uint8x8_t {
13714 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
13715}
13716#[doc = "Duplicate vector element to vector or scalar"]
13717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s64)"]
13718#[inline(always)]
13719#[target_feature(enable = "neon")]
13720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13721#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13722#[cfg_attr(
13723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13724 assert_instr(ext)
13725)]
13726#[cfg_attr(
13727 not(target_arch = "arm"),
13728 stable(feature = "neon_intrinsics", since = "1.59.0")
13729)]
13730#[cfg_attr(
13731 target_arch = "arm",
13732 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13733)]
13734pub fn vget_high_s64(a: int64x2_t) -> int64x1_t {
13735 unsafe { int64x1_t([simd_extract!(a, 1)]) }
13736}
13737#[doc = "Duplicate vector element to vector or scalar"]
13738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u64)"]
13739#[inline(always)]
13740#[target_feature(enable = "neon")]
13741#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13742#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13743#[cfg_attr(
13744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13745 assert_instr(ext)
13746)]
13747#[cfg_attr(
13748 not(target_arch = "arm"),
13749 stable(feature = "neon_intrinsics", since = "1.59.0")
13750)]
13751#[cfg_attr(
13752 target_arch = "arm",
13753 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13754)]
13755pub fn vget_high_u64(a: uint64x2_t) -> uint64x1_t {
13756 unsafe { uint64x1_t([simd_extract!(a, 1)]) }
13757}
13758#[doc = "Duplicate vector element to scalar"]
13759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_f16)"]
13760#[inline(always)]
13761#[target_feature(enable = "neon")]
13762#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13763#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
13764#[cfg_attr(
13765 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13766 assert_instr(nop, LANE = 0)
13767)]
13768#[rustc_legacy_const_generics(1)]
13769#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13770#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13771#[cfg(not(target_arch = "arm64ec"))]
13772pub fn vget_lane_f16<const LANE: i32>(a: float16x4_t) -> f16 {
13773 static_assert_uimm_bits!(LANE, 2);
13774 unsafe { simd_extract!(a, LANE as u32) }
13775}
13776#[doc = "Duplicate vector element to scalar"]
13777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_f16)"]
13778#[inline(always)]
13779#[target_feature(enable = "neon")]
13780#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13781#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
13782#[cfg_attr(
13783 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13784 assert_instr(nop, LANE = 0)
13785)]
13786#[rustc_legacy_const_generics(1)]
13787#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13788#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13789#[cfg(not(target_arch = "arm64ec"))]
13790pub fn vgetq_lane_f16<const LANE: i32>(a: float16x8_t) -> f16 {
13791 static_assert_uimm_bits!(LANE, 3);
13792 unsafe { simd_extract!(a, LANE as u32) }
13793}
13794#[doc = "Move vector element to general-purpose register"]
13795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_f32)"]
13796#[inline(always)]
13797#[target_feature(enable = "neon")]
13798#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13799#[rustc_legacy_const_generics(1)]
13800#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13801#[cfg_attr(
13802 not(target_arch = "arm"),
13803 stable(feature = "neon_intrinsics", since = "1.59.0")
13804)]
13805#[cfg_attr(
13806 target_arch = "arm",
13807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13808)]
13809pub fn vget_lane_f32<const IMM5: i32>(v: float32x2_t) -> f32 {
13810 static_assert_uimm_bits!(IMM5, 1);
13811 unsafe { simd_extract!(v, IMM5 as u32) }
13812}
13813#[doc = "Move vector element to general-purpose register"]
13814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p16)"]
13815#[inline(always)]
13816#[target_feature(enable = "neon")]
13817#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13818#[rustc_legacy_const_generics(1)]
13819#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13820#[cfg_attr(
13821 not(target_arch = "arm"),
13822 stable(feature = "neon_intrinsics", since = "1.59.0")
13823)]
13824#[cfg_attr(
13825 target_arch = "arm",
13826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13827)]
13828pub fn vget_lane_p16<const IMM5: i32>(v: poly16x4_t) -> p16 {
13829 static_assert_uimm_bits!(IMM5, 2);
13830 unsafe { simd_extract!(v, IMM5 as u32) }
13831}
13832#[doc = "Move vector element to general-purpose register"]
13833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p8)"]
13834#[inline(always)]
13835#[target_feature(enable = "neon")]
13836#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13837#[rustc_legacy_const_generics(1)]
13838#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13839#[cfg_attr(
13840 not(target_arch = "arm"),
13841 stable(feature = "neon_intrinsics", since = "1.59.0")
13842)]
13843#[cfg_attr(
13844 target_arch = "arm",
13845 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13846)]
13847pub fn vget_lane_p8<const IMM5: i32>(v: poly8x8_t) -> p8 {
13848 static_assert_uimm_bits!(IMM5, 3);
13849 unsafe { simd_extract!(v, IMM5 as u32) }
13850}
13851#[doc = "Move vector element to general-purpose register"]
13852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s16)"]
13853#[inline(always)]
13854#[target_feature(enable = "neon")]
13855#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13856#[rustc_legacy_const_generics(1)]
13857#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13858#[cfg_attr(
13859 not(target_arch = "arm"),
13860 stable(feature = "neon_intrinsics", since = "1.59.0")
13861)]
13862#[cfg_attr(
13863 target_arch = "arm",
13864 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13865)]
13866pub fn vget_lane_s16<const IMM5: i32>(v: int16x4_t) -> i16 {
13867 static_assert_uimm_bits!(IMM5, 2);
13868 unsafe { simd_extract!(v, IMM5 as u32) }
13869}
13870#[doc = "Move vector element to general-purpose register"]
13871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s32)"]
13872#[inline(always)]
13873#[target_feature(enable = "neon")]
13874#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13875#[rustc_legacy_const_generics(1)]
13876#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13877#[cfg_attr(
13878 not(target_arch = "arm"),
13879 stable(feature = "neon_intrinsics", since = "1.59.0")
13880)]
13881#[cfg_attr(
13882 target_arch = "arm",
13883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13884)]
13885pub fn vget_lane_s32<const IMM5: i32>(v: int32x2_t) -> i32 {
13886 static_assert_uimm_bits!(IMM5, 1);
13887 unsafe { simd_extract!(v, IMM5 as u32) }
13888}
13889#[doc = "Move vector element to general-purpose register"]
13890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s8)"]
13891#[inline(always)]
13892#[target_feature(enable = "neon")]
13893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13894#[rustc_legacy_const_generics(1)]
13895#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13896#[cfg_attr(
13897 not(target_arch = "arm"),
13898 stable(feature = "neon_intrinsics", since = "1.59.0")
13899)]
13900#[cfg_attr(
13901 target_arch = "arm",
13902 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13903)]
13904pub fn vget_lane_s8<const IMM5: i32>(v: int8x8_t) -> i8 {
13905 static_assert_uimm_bits!(IMM5, 3);
13906 unsafe { simd_extract!(v, IMM5 as u32) }
13907}
13908#[doc = "Move vector element to general-purpose register"]
13909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u16)"]
13910#[inline(always)]
13911#[target_feature(enable = "neon")]
13912#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13913#[rustc_legacy_const_generics(1)]
13914#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13915#[cfg_attr(
13916 not(target_arch = "arm"),
13917 stable(feature = "neon_intrinsics", since = "1.59.0")
13918)]
13919#[cfg_attr(
13920 target_arch = "arm",
13921 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13922)]
13923pub fn vget_lane_u16<const IMM5: i32>(v: uint16x4_t) -> u16 {
13924 static_assert_uimm_bits!(IMM5, 2);
13925 unsafe { simd_extract!(v, IMM5 as u32) }
13926}
13927#[doc = "Move vector element to general-purpose register"]
13928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u32)"]
13929#[inline(always)]
13930#[target_feature(enable = "neon")]
13931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13932#[rustc_legacy_const_generics(1)]
13933#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13934#[cfg_attr(
13935 not(target_arch = "arm"),
13936 stable(feature = "neon_intrinsics", since = "1.59.0")
13937)]
13938#[cfg_attr(
13939 target_arch = "arm",
13940 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13941)]
13942pub fn vget_lane_u32<const IMM5: i32>(v: uint32x2_t) -> u32 {
13943 static_assert_uimm_bits!(IMM5, 1);
13944 unsafe { simd_extract!(v, IMM5 as u32) }
13945}
13946#[doc = "Move vector element to general-purpose register"]
13947#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u8)"]
13948#[inline(always)]
13949#[target_feature(enable = "neon")]
13950#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13951#[rustc_legacy_const_generics(1)]
13952#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13953#[cfg_attr(
13954 not(target_arch = "arm"),
13955 stable(feature = "neon_intrinsics", since = "1.59.0")
13956)]
13957#[cfg_attr(
13958 target_arch = "arm",
13959 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13960)]
13961pub fn vget_lane_u8<const IMM5: i32>(v: uint8x8_t) -> u8 {
13962 static_assert_uimm_bits!(IMM5, 3);
13963 unsafe { simd_extract!(v, IMM5 as u32) }
13964}
13965#[doc = "Move vector element to general-purpose register"]
13966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_f32)"]
13967#[inline(always)]
13968#[target_feature(enable = "neon")]
13969#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13970#[rustc_legacy_const_generics(1)]
13971#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13972#[cfg_attr(
13973 not(target_arch = "arm"),
13974 stable(feature = "neon_intrinsics", since = "1.59.0")
13975)]
13976#[cfg_attr(
13977 target_arch = "arm",
13978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13979)]
13980pub fn vgetq_lane_f32<const IMM5: i32>(v: float32x4_t) -> f32 {
13981 static_assert_uimm_bits!(IMM5, 2);
13982 unsafe { simd_extract!(v, IMM5 as u32) }
13983}
13984#[doc = "Move vector element to general-purpose register"]
13985#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p16)"]
13986#[inline(always)]
13987#[target_feature(enable = "neon")]
13988#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13989#[rustc_legacy_const_generics(1)]
13990#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13991#[cfg_attr(
13992 not(target_arch = "arm"),
13993 stable(feature = "neon_intrinsics", since = "1.59.0")
13994)]
13995#[cfg_attr(
13996 target_arch = "arm",
13997 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13998)]
13999pub fn vgetq_lane_p16<const IMM5: i32>(v: poly16x8_t) -> p16 {
14000 static_assert_uimm_bits!(IMM5, 3);
14001 unsafe { simd_extract!(v, IMM5 as u32) }
14002}
14003#[doc = "Move vector element to general-purpose register"]
14004#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p64)"]
14005#[inline(always)]
14006#[target_feature(enable = "neon")]
14007#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14008#[rustc_legacy_const_generics(1)]
14009#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
14010#[cfg_attr(
14011 not(target_arch = "arm"),
14012 stable(feature = "neon_intrinsics", since = "1.59.0")
14013)]
14014#[cfg_attr(
14015 target_arch = "arm",
14016 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14017)]
14018pub fn vgetq_lane_p64<const IMM5: i32>(v: poly64x2_t) -> p64 {
14019 static_assert_uimm_bits!(IMM5, 1);
14020 unsafe { simd_extract!(v, IMM5 as u32) }
14021}
14022#[doc = "Move vector element to general-purpose register"]
14023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p8)"]
14024#[inline(always)]
14025#[target_feature(enable = "neon")]
14026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14027#[rustc_legacy_const_generics(1)]
14028#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
14029#[cfg_attr(
14030 not(target_arch = "arm"),
14031 stable(feature = "neon_intrinsics", since = "1.59.0")
14032)]
14033#[cfg_attr(
14034 target_arch = "arm",
14035 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14036)]
14037pub fn vgetq_lane_p8<const IMM5: i32>(v: poly8x16_t) -> p8 {
14038 static_assert_uimm_bits!(IMM5, 4);
14039 unsafe { simd_extract!(v, IMM5 as u32) }
14040}
14041#[doc = "Move vector element to general-purpose register"]
14042#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s16)"]
14043#[inline(always)]
14044#[target_feature(enable = "neon")]
14045#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14046#[rustc_legacy_const_generics(1)]
14047#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
14048#[cfg_attr(
14049 not(target_arch = "arm"),
14050 stable(feature = "neon_intrinsics", since = "1.59.0")
14051)]
14052#[cfg_attr(
14053 target_arch = "arm",
14054 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14055)]
14056pub fn vgetq_lane_s16<const IMM5: i32>(v: int16x8_t) -> i16 {
14057 static_assert_uimm_bits!(IMM5, 3);
14058 unsafe { simd_extract!(v, IMM5 as u32) }
14059}
14060#[doc = "Move vector element to general-purpose register"]
14061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s32)"]
14062#[inline(always)]
14063#[target_feature(enable = "neon")]
14064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14065#[rustc_legacy_const_generics(1)]
14066#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
14067#[cfg_attr(
14068 not(target_arch = "arm"),
14069 stable(feature = "neon_intrinsics", since = "1.59.0")
14070)]
14071#[cfg_attr(
14072 target_arch = "arm",
14073 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14074)]
14075pub fn vgetq_lane_s32<const IMM5: i32>(v: int32x4_t) -> i32 {
14076 static_assert_uimm_bits!(IMM5, 2);
14077 unsafe { simd_extract!(v, IMM5 as u32) }
14078}
14079#[doc = "Move vector element to general-purpose register"]
14080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s64)"]
14081#[inline(always)]
14082#[target_feature(enable = "neon")]
14083#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14084#[rustc_legacy_const_generics(1)]
14085#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
14086#[cfg_attr(
14087 not(target_arch = "arm"),
14088 stable(feature = "neon_intrinsics", since = "1.59.0")
14089)]
14090#[cfg_attr(
14091 target_arch = "arm",
14092 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14093)]
14094pub fn vgetq_lane_s64<const IMM5: i32>(v: int64x2_t) -> i64 {
14095 static_assert_uimm_bits!(IMM5, 1);
14096 unsafe { simd_extract!(v, IMM5 as u32) }
14097}
14098#[doc = "Move vector element to general-purpose register"]
14099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s8)"]
14100#[inline(always)]
14101#[target_feature(enable = "neon")]
14102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14103#[rustc_legacy_const_generics(1)]
14104#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
14105#[cfg_attr(
14106 not(target_arch = "arm"),
14107 stable(feature = "neon_intrinsics", since = "1.59.0")
14108)]
14109#[cfg_attr(
14110 target_arch = "arm",
14111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14112)]
14113pub fn vgetq_lane_s8<const IMM5: i32>(v: int8x16_t) -> i8 {
14114 static_assert_uimm_bits!(IMM5, 4);
14115 unsafe { simd_extract!(v, IMM5 as u32) }
14116}
14117#[doc = "Move vector element to general-purpose register"]
14118#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u16)"]
14119#[inline(always)]
14120#[target_feature(enable = "neon")]
14121#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14122#[rustc_legacy_const_generics(1)]
14123#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
14124#[cfg_attr(
14125 not(target_arch = "arm"),
14126 stable(feature = "neon_intrinsics", since = "1.59.0")
14127)]
14128#[cfg_attr(
14129 target_arch = "arm",
14130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14131)]
14132pub fn vgetq_lane_u16<const IMM5: i32>(v: uint16x8_t) -> u16 {
14133 static_assert_uimm_bits!(IMM5, 3);
14134 unsafe { simd_extract!(v, IMM5 as u32) }
14135}
14136#[doc = "Move vector element to general-purpose register"]
14137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u32)"]
14138#[inline(always)]
14139#[target_feature(enable = "neon")]
14140#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14141#[rustc_legacy_const_generics(1)]
14142#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
14143#[cfg_attr(
14144 not(target_arch = "arm"),
14145 stable(feature = "neon_intrinsics", since = "1.59.0")
14146)]
14147#[cfg_attr(
14148 target_arch = "arm",
14149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14150)]
14151pub fn vgetq_lane_u32<const IMM5: i32>(v: uint32x4_t) -> u32 {
14152 static_assert_uimm_bits!(IMM5, 2);
14153 unsafe { simd_extract!(v, IMM5 as u32) }
14154}
14155#[doc = "Move vector element to general-purpose register"]
14156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u64)"]
14157#[inline(always)]
14158#[target_feature(enable = "neon")]
14159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14160#[rustc_legacy_const_generics(1)]
14161#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
14162#[cfg_attr(
14163 not(target_arch = "arm"),
14164 stable(feature = "neon_intrinsics", since = "1.59.0")
14165)]
14166#[cfg_attr(
14167 target_arch = "arm",
14168 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14169)]
14170pub fn vgetq_lane_u64<const IMM5: i32>(v: uint64x2_t) -> u64 {
14171 static_assert_uimm_bits!(IMM5, 2);
14172 unsafe { simd_extract!(v, IMM5 as u32) }
14173}
14174#[doc = "Move vector element to general-purpose register"]
14175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u8)"]
14176#[inline(always)]
14177#[target_feature(enable = "neon")]
14178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14179#[rustc_legacy_const_generics(1)]
14180#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
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 vgetq_lane_u8<const IMM5: i32>(v: uint8x16_t) -> u8 {
14190 static_assert_uimm_bits!(IMM5, 4);
14191 unsafe { simd_extract!(v, IMM5 as u32) }
14192}
14193#[doc = "Move vector element to general-purpose register"]
14194#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p64)"]
14195#[inline(always)]
14196#[target_feature(enable = "neon")]
14197#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14198#[rustc_legacy_const_generics(1)]
14199#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
14200#[cfg_attr(
14201 not(target_arch = "arm"),
14202 stable(feature = "neon_intrinsics", since = "1.59.0")
14203)]
14204#[cfg_attr(
14205 target_arch = "arm",
14206 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14207)]
14208pub fn vget_lane_p64<const IMM5: i32>(v: poly64x1_t) -> p64 {
14209 static_assert!(IMM5 == 0);
14210 unsafe { simd_extract!(v, IMM5 as u32) }
14211}
14212#[doc = "Move vector element to general-purpose register"]
14213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s64)"]
14214#[inline(always)]
14215#[target_feature(enable = "neon")]
14216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14217#[rustc_legacy_const_generics(1)]
14218#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
14219#[cfg_attr(
14220 not(target_arch = "arm"),
14221 stable(feature = "neon_intrinsics", since = "1.59.0")
14222)]
14223#[cfg_attr(
14224 target_arch = "arm",
14225 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14226)]
14227pub fn vget_lane_s64<const IMM5: i32>(v: int64x1_t) -> i64 {
14228 static_assert!(IMM5 == 0);
14229 unsafe { simd_extract!(v, IMM5 as u32) }
14230}
14231#[doc = "Move vector element to general-purpose register"]
14232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u64)"]
14233#[inline(always)]
14234#[target_feature(enable = "neon")]
14235#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14236#[rustc_legacy_const_generics(1)]
14237#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
14238#[cfg_attr(
14239 not(target_arch = "arm"),
14240 stable(feature = "neon_intrinsics", since = "1.59.0")
14241)]
14242#[cfg_attr(
14243 target_arch = "arm",
14244 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14245)]
14246pub fn vget_lane_u64<const IMM5: i32>(v: uint64x1_t) -> u64 {
14247 static_assert!(IMM5 == 0);
14248 unsafe { simd_extract!(v, 0) }
14249}
14250#[doc = "Duplicate vector element to vector or scalar"]
14251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_f32)"]
14252#[inline(always)]
14253#[target_feature(enable = "neon")]
14254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14255#[cfg_attr(test, assert_instr(nop))]
14256#[cfg_attr(
14257 not(target_arch = "arm"),
14258 stable(feature = "neon_intrinsics", since = "1.59.0")
14259)]
14260#[cfg_attr(
14261 target_arch = "arm",
14262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14263)]
14264pub fn vget_low_f32(a: float32x4_t) -> float32x2_t {
14265 unsafe { simd_shuffle!(a, a, [0, 1]) }
14266}
14267#[doc = "Duplicate vector element to vector or scalar"]
14268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_p16)"]
14269#[inline(always)]
14270#[target_feature(enable = "neon")]
14271#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14272#[cfg_attr(test, assert_instr(nop))]
14273#[cfg_attr(
14274 not(target_arch = "arm"),
14275 stable(feature = "neon_intrinsics", since = "1.59.0")
14276)]
14277#[cfg_attr(
14278 target_arch = "arm",
14279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14280)]
14281pub fn vget_low_p16(a: poly16x8_t) -> poly16x4_t {
14282 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
14283}
14284#[doc = "Duplicate vector element to vector or scalar"]
14285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_p8)"]
14286#[inline(always)]
14287#[target_feature(enable = "neon")]
14288#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14289#[cfg_attr(test, assert_instr(nop))]
14290#[cfg_attr(
14291 not(target_arch = "arm"),
14292 stable(feature = "neon_intrinsics", since = "1.59.0")
14293)]
14294#[cfg_attr(
14295 target_arch = "arm",
14296 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14297)]
14298pub fn vget_low_p8(a: poly8x16_t) -> poly8x8_t {
14299 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
14300}
14301#[doc = "Duplicate vector element to vector or scalar"]
14302#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s16)"]
14303#[inline(always)]
14304#[target_feature(enable = "neon")]
14305#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14306#[cfg_attr(test, assert_instr(nop))]
14307#[cfg_attr(
14308 not(target_arch = "arm"),
14309 stable(feature = "neon_intrinsics", since = "1.59.0")
14310)]
14311#[cfg_attr(
14312 target_arch = "arm",
14313 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14314)]
14315pub fn vget_low_s16(a: int16x8_t) -> int16x4_t {
14316 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
14317}
14318#[doc = "Duplicate vector element to vector or scalar"]
14319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s32)"]
14320#[inline(always)]
14321#[target_feature(enable = "neon")]
14322#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14323#[cfg_attr(test, assert_instr(nop))]
14324#[cfg_attr(
14325 not(target_arch = "arm"),
14326 stable(feature = "neon_intrinsics", since = "1.59.0")
14327)]
14328#[cfg_attr(
14329 target_arch = "arm",
14330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14331)]
14332pub fn vget_low_s32(a: int32x4_t) -> int32x2_t {
14333 unsafe { simd_shuffle!(a, a, [0, 1]) }
14334}
14335#[doc = "Duplicate vector element to vector or scalar"]
14336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s8)"]
14337#[inline(always)]
14338#[target_feature(enable = "neon")]
14339#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14340#[cfg_attr(test, assert_instr(nop))]
14341#[cfg_attr(
14342 not(target_arch = "arm"),
14343 stable(feature = "neon_intrinsics", since = "1.59.0")
14344)]
14345#[cfg_attr(
14346 target_arch = "arm",
14347 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14348)]
14349pub fn vget_low_s8(a: int8x16_t) -> int8x8_t {
14350 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
14351}
14352#[doc = "Duplicate vector element to vector or scalar"]
14353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u16)"]
14354#[inline(always)]
14355#[target_feature(enable = "neon")]
14356#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14357#[cfg_attr(test, assert_instr(nop))]
14358#[cfg_attr(
14359 not(target_arch = "arm"),
14360 stable(feature = "neon_intrinsics", since = "1.59.0")
14361)]
14362#[cfg_attr(
14363 target_arch = "arm",
14364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14365)]
14366pub fn vget_low_u16(a: uint16x8_t) -> uint16x4_t {
14367 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
14368}
14369#[doc = "Duplicate vector element to vector or scalar"]
14370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u32)"]
14371#[inline(always)]
14372#[target_feature(enable = "neon")]
14373#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14374#[cfg_attr(test, assert_instr(nop))]
14375#[cfg_attr(
14376 not(target_arch = "arm"),
14377 stable(feature = "neon_intrinsics", since = "1.59.0")
14378)]
14379#[cfg_attr(
14380 target_arch = "arm",
14381 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14382)]
14383pub fn vget_low_u32(a: uint32x4_t) -> uint32x2_t {
14384 unsafe { simd_shuffle!(a, a, [0, 1]) }
14385}
14386#[doc = "Duplicate vector element to vector or scalar"]
14387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u8)"]
14388#[inline(always)]
14389#[target_feature(enable = "neon")]
14390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14391#[cfg_attr(test, assert_instr(nop))]
14392#[cfg_attr(
14393 not(target_arch = "arm"),
14394 stable(feature = "neon_intrinsics", since = "1.59.0")
14395)]
14396#[cfg_attr(
14397 target_arch = "arm",
14398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14399)]
14400pub fn vget_low_u8(a: uint8x16_t) -> uint8x8_t {
14401 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
14402}
14403#[doc = "Duplicate vector element to vector or scalar"]
14404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s64)"]
14405#[inline(always)]
14406#[target_feature(enable = "neon")]
14407#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14408#[cfg_attr(test, assert_instr(nop))]
14409#[cfg_attr(
14410 not(target_arch = "arm"),
14411 stable(feature = "neon_intrinsics", since = "1.59.0")
14412)]
14413#[cfg_attr(
14414 target_arch = "arm",
14415 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14416)]
14417pub fn vget_low_s64(a: int64x2_t) -> int64x1_t {
14418 unsafe { int64x1_t([simd_extract!(a, 0)]) }
14419}
14420#[doc = "Duplicate vector element to vector or scalar"]
14421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u64)"]
14422#[inline(always)]
14423#[target_feature(enable = "neon")]
14424#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14425#[cfg_attr(test, assert_instr(nop))]
14426#[cfg_attr(
14427 not(target_arch = "arm"),
14428 stable(feature = "neon_intrinsics", since = "1.59.0")
14429)]
14430#[cfg_attr(
14431 target_arch = "arm",
14432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14433)]
14434pub fn vget_low_u64(a: uint64x2_t) -> uint64x1_t {
14435 unsafe { uint64x1_t([simd_extract!(a, 0)]) }
14436}
14437#[doc = "Halving add"]
14438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s8)"]
14439#[inline(always)]
14440#[target_feature(enable = "neon")]
14441#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14442#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s8"))]
14443#[cfg_attr(
14444 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14445 assert_instr(shadd)
14446)]
14447#[cfg_attr(
14448 not(target_arch = "arm"),
14449 stable(feature = "neon_intrinsics", since = "1.59.0")
14450)]
14451#[cfg_attr(
14452 target_arch = "arm",
14453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14454)]
14455pub fn vhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
14456 unsafe extern "unadjusted" {
14457 #[cfg_attr(
14458 any(target_arch = "aarch64", target_arch = "arm64ec"),
14459 link_name = "llvm.aarch64.neon.shadd.v8i8"
14460 )]
14461 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v8i8")]
14462 fn _vhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
14463 }
14464 unsafe { _vhadd_s8(a, b) }
14465}
14466#[doc = "Halving add"]
14467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s8)"]
14468#[inline(always)]
14469#[target_feature(enable = "neon")]
14470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14471#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s8"))]
14472#[cfg_attr(
14473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14474 assert_instr(shadd)
14475)]
14476#[cfg_attr(
14477 not(target_arch = "arm"),
14478 stable(feature = "neon_intrinsics", since = "1.59.0")
14479)]
14480#[cfg_attr(
14481 target_arch = "arm",
14482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14483)]
14484pub fn vhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
14485 unsafe extern "unadjusted" {
14486 #[cfg_attr(
14487 any(target_arch = "aarch64", target_arch = "arm64ec"),
14488 link_name = "llvm.aarch64.neon.shadd.v16i8"
14489 )]
14490 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v16i8")]
14491 fn _vhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
14492 }
14493 unsafe { _vhaddq_s8(a, b) }
14494}
14495#[doc = "Halving add"]
14496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s16)"]
14497#[inline(always)]
14498#[target_feature(enable = "neon")]
14499#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14500#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s16"))]
14501#[cfg_attr(
14502 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14503 assert_instr(shadd)
14504)]
14505#[cfg_attr(
14506 not(target_arch = "arm"),
14507 stable(feature = "neon_intrinsics", since = "1.59.0")
14508)]
14509#[cfg_attr(
14510 target_arch = "arm",
14511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14512)]
14513pub fn vhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
14514 unsafe extern "unadjusted" {
14515 #[cfg_attr(
14516 any(target_arch = "aarch64", target_arch = "arm64ec"),
14517 link_name = "llvm.aarch64.neon.shadd.v4i16"
14518 )]
14519 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v4i16")]
14520 fn _vhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
14521 }
14522 unsafe { _vhadd_s16(a, b) }
14523}
14524#[doc = "Halving add"]
14525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s16)"]
14526#[inline(always)]
14527#[target_feature(enable = "neon")]
14528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14529#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s16"))]
14530#[cfg_attr(
14531 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14532 assert_instr(shadd)
14533)]
14534#[cfg_attr(
14535 not(target_arch = "arm"),
14536 stable(feature = "neon_intrinsics", since = "1.59.0")
14537)]
14538#[cfg_attr(
14539 target_arch = "arm",
14540 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14541)]
14542pub fn vhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
14543 unsafe extern "unadjusted" {
14544 #[cfg_attr(
14545 any(target_arch = "aarch64", target_arch = "arm64ec"),
14546 link_name = "llvm.aarch64.neon.shadd.v8i16"
14547 )]
14548 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v8i16")]
14549 fn _vhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
14550 }
14551 unsafe { _vhaddq_s16(a, b) }
14552}
14553#[doc = "Halving add"]
14554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s32)"]
14555#[inline(always)]
14556#[target_feature(enable = "neon")]
14557#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14558#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s32"))]
14559#[cfg_attr(
14560 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14561 assert_instr(shadd)
14562)]
14563#[cfg_attr(
14564 not(target_arch = "arm"),
14565 stable(feature = "neon_intrinsics", since = "1.59.0")
14566)]
14567#[cfg_attr(
14568 target_arch = "arm",
14569 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14570)]
14571pub fn vhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
14572 unsafe extern "unadjusted" {
14573 #[cfg_attr(
14574 any(target_arch = "aarch64", target_arch = "arm64ec"),
14575 link_name = "llvm.aarch64.neon.shadd.v2i32"
14576 )]
14577 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v2i32")]
14578 fn _vhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
14579 }
14580 unsafe { _vhadd_s32(a, b) }
14581}
14582#[doc = "Halving add"]
14583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s32)"]
14584#[inline(always)]
14585#[target_feature(enable = "neon")]
14586#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14587#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s32"))]
14588#[cfg_attr(
14589 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14590 assert_instr(shadd)
14591)]
14592#[cfg_attr(
14593 not(target_arch = "arm"),
14594 stable(feature = "neon_intrinsics", since = "1.59.0")
14595)]
14596#[cfg_attr(
14597 target_arch = "arm",
14598 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14599)]
14600pub fn vhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
14601 unsafe extern "unadjusted" {
14602 #[cfg_attr(
14603 any(target_arch = "aarch64", target_arch = "arm64ec"),
14604 link_name = "llvm.aarch64.neon.shadd.v4i32"
14605 )]
14606 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v4i32")]
14607 fn _vhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
14608 }
14609 unsafe { _vhaddq_s32(a, b) }
14610}
14611#[doc = "Halving add"]
14612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u8)"]
14613#[inline(always)]
14614#[target_feature(enable = "neon")]
14615#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14616#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u8"))]
14617#[cfg_attr(
14618 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14619 assert_instr(uhadd)
14620)]
14621#[cfg_attr(
14622 not(target_arch = "arm"),
14623 stable(feature = "neon_intrinsics", since = "1.59.0")
14624)]
14625#[cfg_attr(
14626 target_arch = "arm",
14627 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14628)]
14629pub fn vhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
14630 unsafe extern "unadjusted" {
14631 #[cfg_attr(
14632 any(target_arch = "aarch64", target_arch = "arm64ec"),
14633 link_name = "llvm.aarch64.neon.uhadd.v8i8"
14634 )]
14635 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v8i8")]
14636 fn _vhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
14637 }
14638 unsafe { _vhadd_u8(a, b) }
14639}
14640#[doc = "Halving add"]
14641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u8)"]
14642#[inline(always)]
14643#[target_feature(enable = "neon")]
14644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14645#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u8"))]
14646#[cfg_attr(
14647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14648 assert_instr(uhadd)
14649)]
14650#[cfg_attr(
14651 not(target_arch = "arm"),
14652 stable(feature = "neon_intrinsics", since = "1.59.0")
14653)]
14654#[cfg_attr(
14655 target_arch = "arm",
14656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14657)]
14658pub fn vhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
14659 unsafe extern "unadjusted" {
14660 #[cfg_attr(
14661 any(target_arch = "aarch64", target_arch = "arm64ec"),
14662 link_name = "llvm.aarch64.neon.uhadd.v16i8"
14663 )]
14664 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v16i8")]
14665 fn _vhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
14666 }
14667 unsafe { _vhaddq_u8(a, b) }
14668}
14669#[doc = "Halving add"]
14670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u16)"]
14671#[inline(always)]
14672#[target_feature(enable = "neon")]
14673#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14674#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u16"))]
14675#[cfg_attr(
14676 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14677 assert_instr(uhadd)
14678)]
14679#[cfg_attr(
14680 not(target_arch = "arm"),
14681 stable(feature = "neon_intrinsics", since = "1.59.0")
14682)]
14683#[cfg_attr(
14684 target_arch = "arm",
14685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14686)]
14687pub fn vhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
14688 unsafe extern "unadjusted" {
14689 #[cfg_attr(
14690 any(target_arch = "aarch64", target_arch = "arm64ec"),
14691 link_name = "llvm.aarch64.neon.uhadd.v4i16"
14692 )]
14693 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v4i16")]
14694 fn _vhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
14695 }
14696 unsafe { _vhadd_u16(a, b) }
14697}
14698#[doc = "Halving add"]
14699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u16)"]
14700#[inline(always)]
14701#[target_feature(enable = "neon")]
14702#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14703#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u16"))]
14704#[cfg_attr(
14705 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14706 assert_instr(uhadd)
14707)]
14708#[cfg_attr(
14709 not(target_arch = "arm"),
14710 stable(feature = "neon_intrinsics", since = "1.59.0")
14711)]
14712#[cfg_attr(
14713 target_arch = "arm",
14714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14715)]
14716pub fn vhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
14717 unsafe extern "unadjusted" {
14718 #[cfg_attr(
14719 any(target_arch = "aarch64", target_arch = "arm64ec"),
14720 link_name = "llvm.aarch64.neon.uhadd.v8i16"
14721 )]
14722 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v8i16")]
14723 fn _vhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
14724 }
14725 unsafe { _vhaddq_u16(a, b) }
14726}
14727#[doc = "Halving add"]
14728#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u32)"]
14729#[inline(always)]
14730#[target_feature(enable = "neon")]
14731#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14732#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u32"))]
14733#[cfg_attr(
14734 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14735 assert_instr(uhadd)
14736)]
14737#[cfg_attr(
14738 not(target_arch = "arm"),
14739 stable(feature = "neon_intrinsics", since = "1.59.0")
14740)]
14741#[cfg_attr(
14742 target_arch = "arm",
14743 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14744)]
14745pub fn vhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
14746 unsafe extern "unadjusted" {
14747 #[cfg_attr(
14748 any(target_arch = "aarch64", target_arch = "arm64ec"),
14749 link_name = "llvm.aarch64.neon.uhadd.v2i32"
14750 )]
14751 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v2i32")]
14752 fn _vhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
14753 }
14754 unsafe { _vhadd_u32(a, b) }
14755}
14756#[doc = "Halving add"]
14757#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u32)"]
14758#[inline(always)]
14759#[target_feature(enable = "neon")]
14760#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14761#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u32"))]
14762#[cfg_attr(
14763 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14764 assert_instr(uhadd)
14765)]
14766#[cfg_attr(
14767 not(target_arch = "arm"),
14768 stable(feature = "neon_intrinsics", since = "1.59.0")
14769)]
14770#[cfg_attr(
14771 target_arch = "arm",
14772 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14773)]
14774pub fn vhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
14775 unsafe extern "unadjusted" {
14776 #[cfg_attr(
14777 any(target_arch = "aarch64", target_arch = "arm64ec"),
14778 link_name = "llvm.aarch64.neon.uhadd.v4i32"
14779 )]
14780 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v4i32")]
14781 fn _vhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
14782 }
14783 unsafe { _vhaddq_u32(a, b) }
14784}
14785#[doc = "Signed halving subtract"]
14786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s16)"]
14787#[inline(always)]
14788#[target_feature(enable = "neon")]
14789#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14790#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s16"))]
14791#[cfg_attr(
14792 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14793 assert_instr(shsub)
14794)]
14795#[cfg_attr(
14796 not(target_arch = "arm"),
14797 stable(feature = "neon_intrinsics", since = "1.59.0")
14798)]
14799#[cfg_attr(
14800 target_arch = "arm",
14801 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14802)]
14803pub fn vhsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
14804 unsafe extern "unadjusted" {
14805 #[cfg_attr(
14806 any(target_arch = "aarch64", target_arch = "arm64ec"),
14807 link_name = "llvm.aarch64.neon.shsub.v4i16"
14808 )]
14809 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v4i16")]
14810 fn _vhsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
14811 }
14812 unsafe { _vhsub_s16(a, b) }
14813}
14814#[doc = "Signed halving subtract"]
14815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s16)"]
14816#[inline(always)]
14817#[target_feature(enable = "neon")]
14818#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14819#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s16"))]
14820#[cfg_attr(
14821 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14822 assert_instr(shsub)
14823)]
14824#[cfg_attr(
14825 not(target_arch = "arm"),
14826 stable(feature = "neon_intrinsics", since = "1.59.0")
14827)]
14828#[cfg_attr(
14829 target_arch = "arm",
14830 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14831)]
14832pub fn vhsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
14833 unsafe extern "unadjusted" {
14834 #[cfg_attr(
14835 any(target_arch = "aarch64", target_arch = "arm64ec"),
14836 link_name = "llvm.aarch64.neon.shsub.v8i16"
14837 )]
14838 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v8i16")]
14839 fn _vhsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
14840 }
14841 unsafe { _vhsubq_s16(a, b) }
14842}
14843#[doc = "Signed halving subtract"]
14844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s32)"]
14845#[inline(always)]
14846#[target_feature(enable = "neon")]
14847#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14848#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s32"))]
14849#[cfg_attr(
14850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14851 assert_instr(shsub)
14852)]
14853#[cfg_attr(
14854 not(target_arch = "arm"),
14855 stable(feature = "neon_intrinsics", since = "1.59.0")
14856)]
14857#[cfg_attr(
14858 target_arch = "arm",
14859 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14860)]
14861pub fn vhsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
14862 unsafe extern "unadjusted" {
14863 #[cfg_attr(
14864 any(target_arch = "aarch64", target_arch = "arm64ec"),
14865 link_name = "llvm.aarch64.neon.shsub.v2i32"
14866 )]
14867 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v2i32")]
14868 fn _vhsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
14869 }
14870 unsafe { _vhsub_s32(a, b) }
14871}
14872#[doc = "Signed halving subtract"]
14873#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s32)"]
14874#[inline(always)]
14875#[target_feature(enable = "neon")]
14876#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14877#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s32"))]
14878#[cfg_attr(
14879 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14880 assert_instr(shsub)
14881)]
14882#[cfg_attr(
14883 not(target_arch = "arm"),
14884 stable(feature = "neon_intrinsics", since = "1.59.0")
14885)]
14886#[cfg_attr(
14887 target_arch = "arm",
14888 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14889)]
14890pub fn vhsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
14891 unsafe extern "unadjusted" {
14892 #[cfg_attr(
14893 any(target_arch = "aarch64", target_arch = "arm64ec"),
14894 link_name = "llvm.aarch64.neon.shsub.v4i32"
14895 )]
14896 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v4i32")]
14897 fn _vhsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
14898 }
14899 unsafe { _vhsubq_s32(a, b) }
14900}
14901#[doc = "Signed halving subtract"]
14902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s8)"]
14903#[inline(always)]
14904#[target_feature(enable = "neon")]
14905#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14906#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s8"))]
14907#[cfg_attr(
14908 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14909 assert_instr(shsub)
14910)]
14911#[cfg_attr(
14912 not(target_arch = "arm"),
14913 stable(feature = "neon_intrinsics", since = "1.59.0")
14914)]
14915#[cfg_attr(
14916 target_arch = "arm",
14917 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14918)]
14919pub fn vhsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
14920 unsafe extern "unadjusted" {
14921 #[cfg_attr(
14922 any(target_arch = "aarch64", target_arch = "arm64ec"),
14923 link_name = "llvm.aarch64.neon.shsub.v8i8"
14924 )]
14925 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v8i8")]
14926 fn _vhsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
14927 }
14928 unsafe { _vhsub_s8(a, b) }
14929}
14930#[doc = "Signed halving subtract"]
14931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s8)"]
14932#[inline(always)]
14933#[target_feature(enable = "neon")]
14934#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14935#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s8"))]
14936#[cfg_attr(
14937 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14938 assert_instr(shsub)
14939)]
14940#[cfg_attr(
14941 not(target_arch = "arm"),
14942 stable(feature = "neon_intrinsics", since = "1.59.0")
14943)]
14944#[cfg_attr(
14945 target_arch = "arm",
14946 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14947)]
14948pub fn vhsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
14949 unsafe extern "unadjusted" {
14950 #[cfg_attr(
14951 any(target_arch = "aarch64", target_arch = "arm64ec"),
14952 link_name = "llvm.aarch64.neon.shsub.v16i8"
14953 )]
14954 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v16i8")]
14955 fn _vhsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
14956 }
14957 unsafe { _vhsubq_s8(a, b) }
14958}
14959#[doc = "Signed halving subtract"]
14960#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u8)"]
14961#[inline(always)]
14962#[target_feature(enable = "neon")]
14963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14964#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u8"))]
14965#[cfg_attr(
14966 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14967 assert_instr(uhsub)
14968)]
14969#[cfg_attr(
14970 not(target_arch = "arm"),
14971 stable(feature = "neon_intrinsics", since = "1.59.0")
14972)]
14973#[cfg_attr(
14974 target_arch = "arm",
14975 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14976)]
14977pub fn vhsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
14978 unsafe extern "unadjusted" {
14979 #[cfg_attr(
14980 any(target_arch = "aarch64", target_arch = "arm64ec"),
14981 link_name = "llvm.aarch64.neon.uhsub.v8i8"
14982 )]
14983 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v8i8")]
14984 fn _vhsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
14985 }
14986 unsafe { _vhsub_u8(a, b) }
14987}
14988#[doc = "Signed halving subtract"]
14989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u8)"]
14990#[inline(always)]
14991#[target_feature(enable = "neon")]
14992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14993#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u8"))]
14994#[cfg_attr(
14995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14996 assert_instr(uhsub)
14997)]
14998#[cfg_attr(
14999 not(target_arch = "arm"),
15000 stable(feature = "neon_intrinsics", since = "1.59.0")
15001)]
15002#[cfg_attr(
15003 target_arch = "arm",
15004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15005)]
15006pub fn vhsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
15007 unsafe extern "unadjusted" {
15008 #[cfg_attr(
15009 any(target_arch = "aarch64", target_arch = "arm64ec"),
15010 link_name = "llvm.aarch64.neon.uhsub.v16i8"
15011 )]
15012 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v16i8")]
15013 fn _vhsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
15014 }
15015 unsafe { _vhsubq_u8(a, b) }
15016}
15017#[doc = "Signed halving subtract"]
15018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u16)"]
15019#[inline(always)]
15020#[target_feature(enable = "neon")]
15021#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15022#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u16"))]
15023#[cfg_attr(
15024 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15025 assert_instr(uhsub)
15026)]
15027#[cfg_attr(
15028 not(target_arch = "arm"),
15029 stable(feature = "neon_intrinsics", since = "1.59.0")
15030)]
15031#[cfg_attr(
15032 target_arch = "arm",
15033 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15034)]
15035pub fn vhsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
15036 unsafe extern "unadjusted" {
15037 #[cfg_attr(
15038 any(target_arch = "aarch64", target_arch = "arm64ec"),
15039 link_name = "llvm.aarch64.neon.uhsub.v4i16"
15040 )]
15041 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v4i16")]
15042 fn _vhsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
15043 }
15044 unsafe { _vhsub_u16(a, b) }
15045}
15046#[doc = "Signed halving subtract"]
15047#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u16)"]
15048#[inline(always)]
15049#[target_feature(enable = "neon")]
15050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15051#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u16"))]
15052#[cfg_attr(
15053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15054 assert_instr(uhsub)
15055)]
15056#[cfg_attr(
15057 not(target_arch = "arm"),
15058 stable(feature = "neon_intrinsics", since = "1.59.0")
15059)]
15060#[cfg_attr(
15061 target_arch = "arm",
15062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15063)]
15064pub fn vhsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
15065 unsafe extern "unadjusted" {
15066 #[cfg_attr(
15067 any(target_arch = "aarch64", target_arch = "arm64ec"),
15068 link_name = "llvm.aarch64.neon.uhsub.v8i16"
15069 )]
15070 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v8i16")]
15071 fn _vhsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
15072 }
15073 unsafe { _vhsubq_u16(a, b) }
15074}
15075#[doc = "Signed halving subtract"]
15076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u32)"]
15077#[inline(always)]
15078#[target_feature(enable = "neon")]
15079#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15080#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u32"))]
15081#[cfg_attr(
15082 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15083 assert_instr(uhsub)
15084)]
15085#[cfg_attr(
15086 not(target_arch = "arm"),
15087 stable(feature = "neon_intrinsics", since = "1.59.0")
15088)]
15089#[cfg_attr(
15090 target_arch = "arm",
15091 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15092)]
15093pub fn vhsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
15094 unsafe extern "unadjusted" {
15095 #[cfg_attr(
15096 any(target_arch = "aarch64", target_arch = "arm64ec"),
15097 link_name = "llvm.aarch64.neon.uhsub.v2i32"
15098 )]
15099 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v2i32")]
15100 fn _vhsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
15101 }
15102 unsafe { _vhsub_u32(a, b) }
15103}
15104#[doc = "Signed halving subtract"]
15105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u32)"]
15106#[inline(always)]
15107#[target_feature(enable = "neon")]
15108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15109#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u32"))]
15110#[cfg_attr(
15111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15112 assert_instr(uhsub)
15113)]
15114#[cfg_attr(
15115 not(target_arch = "arm"),
15116 stable(feature = "neon_intrinsics", since = "1.59.0")
15117)]
15118#[cfg_attr(
15119 target_arch = "arm",
15120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15121)]
15122pub fn vhsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
15123 unsafe extern "unadjusted" {
15124 #[cfg_attr(
15125 any(target_arch = "aarch64", target_arch = "arm64ec"),
15126 link_name = "llvm.aarch64.neon.uhsub.v4i32"
15127 )]
15128 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v4i32")]
15129 fn _vhsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
15130 }
15131 unsafe { _vhsubq_u32(a, b) }
15132}
15133#[doc = "Load one single-element structure and replicate to all lanes of one register"]
15134#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_f16)"]
15135#[doc = "## Safety"]
15136#[doc = " * Neon intrinsic unsafe"]
15137#[inline(always)]
15138#[target_feature(enable = "neon")]
15139#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15140#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15141#[cfg_attr(
15142 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15143 assert_instr(ld1r)
15144)]
15145#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15146#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15147#[cfg(not(target_arch = "arm64ec"))]
15148pub unsafe fn vld1_dup_f16(ptr: *const f16) -> float16x4_t {
15149 let x: float16x4_t = vld1_lane_f16::<0>(ptr, transmute(f16x4::splat(0.0)));
15150 simd_shuffle!(x, x, [0, 0, 0, 0])
15151}
15152#[doc = "Load one single-element structure and replicate to all lanes of one register"]
15153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_f16)"]
15154#[doc = "## Safety"]
15155#[doc = " * Neon intrinsic unsafe"]
15156#[inline(always)]
15157#[target_feature(enable = "neon")]
15158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15159#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15160#[cfg_attr(
15161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15162 assert_instr(ld1r)
15163)]
15164#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15165#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15166#[cfg(not(target_arch = "arm64ec"))]
15167pub unsafe fn vld1q_dup_f16(ptr: *const f16) -> float16x8_t {
15168 let x: float16x8_t = vld1q_lane_f16::<0>(ptr, transmute(f16x8::splat(0.0)));
15169 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
15170}
15171#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15172#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_f32)"]
15173#[doc = "## Safety"]
15174#[doc = " * Neon intrinsic unsafe"]
15175#[inline(always)]
15176#[target_feature(enable = "neon")]
15177#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15178#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15179#[cfg_attr(
15180 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15181 assert_instr(ld1r)
15182)]
15183#[cfg_attr(
15184 not(target_arch = "arm"),
15185 stable(feature = "neon_intrinsics", since = "1.59.0")
15186)]
15187#[cfg_attr(
15188 target_arch = "arm",
15189 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15190)]
15191pub unsafe fn vld1_dup_f32(ptr: *const f32) -> float32x2_t {
15192 transmute(f32x2::splat(*ptr))
15193}
15194#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p16)"]
15196#[doc = "## Safety"]
15197#[doc = " * Neon intrinsic unsafe"]
15198#[inline(always)]
15199#[target_feature(enable = "neon")]
15200#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15201#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15202#[cfg_attr(
15203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15204 assert_instr(ld1r)
15205)]
15206#[cfg_attr(
15207 not(target_arch = "arm"),
15208 stable(feature = "neon_intrinsics", since = "1.59.0")
15209)]
15210#[cfg_attr(
15211 target_arch = "arm",
15212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15213)]
15214pub unsafe fn vld1_dup_p16(ptr: *const p16) -> poly16x4_t {
15215 transmute(u16x4::splat(*ptr))
15216}
15217#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p8)"]
15219#[doc = "## Safety"]
15220#[doc = " * Neon intrinsic unsafe"]
15221#[inline(always)]
15222#[target_feature(enable = "neon")]
15223#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15224#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15225#[cfg_attr(
15226 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15227 assert_instr(ld1r)
15228)]
15229#[cfg_attr(
15230 not(target_arch = "arm"),
15231 stable(feature = "neon_intrinsics", since = "1.59.0")
15232)]
15233#[cfg_attr(
15234 target_arch = "arm",
15235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15236)]
15237pub unsafe fn vld1_dup_p8(ptr: *const p8) -> poly8x8_t {
15238 transmute(u8x8::splat(*ptr))
15239}
15240#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s16)"]
15242#[doc = "## Safety"]
15243#[doc = " * Neon intrinsic unsafe"]
15244#[inline(always)]
15245#[target_feature(enable = "neon")]
15246#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15247#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15248#[cfg_attr(
15249 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15250 assert_instr(ld1r)
15251)]
15252#[cfg_attr(
15253 not(target_arch = "arm"),
15254 stable(feature = "neon_intrinsics", since = "1.59.0")
15255)]
15256#[cfg_attr(
15257 target_arch = "arm",
15258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15259)]
15260pub unsafe fn vld1_dup_s16(ptr: *const i16) -> int16x4_t {
15261 transmute(i16x4::splat(*ptr))
15262}
15263#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s32)"]
15265#[doc = "## Safety"]
15266#[doc = " * Neon intrinsic unsafe"]
15267#[inline(always)]
15268#[target_feature(enable = "neon")]
15269#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15270#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15271#[cfg_attr(
15272 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15273 assert_instr(ld1r)
15274)]
15275#[cfg_attr(
15276 not(target_arch = "arm"),
15277 stable(feature = "neon_intrinsics", since = "1.59.0")
15278)]
15279#[cfg_attr(
15280 target_arch = "arm",
15281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15282)]
15283pub unsafe fn vld1_dup_s32(ptr: *const i32) -> int32x2_t {
15284 transmute(i32x2::splat(*ptr))
15285}
15286#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s8)"]
15288#[doc = "## Safety"]
15289#[doc = " * Neon intrinsic unsafe"]
15290#[inline(always)]
15291#[target_feature(enable = "neon")]
15292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15293#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15294#[cfg_attr(
15295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15296 assert_instr(ld1r)
15297)]
15298#[cfg_attr(
15299 not(target_arch = "arm"),
15300 stable(feature = "neon_intrinsics", since = "1.59.0")
15301)]
15302#[cfg_attr(
15303 target_arch = "arm",
15304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15305)]
15306pub unsafe fn vld1_dup_s8(ptr: *const i8) -> int8x8_t {
15307 transmute(i8x8::splat(*ptr))
15308}
15309#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u16)"]
15311#[doc = "## Safety"]
15312#[doc = " * Neon intrinsic unsafe"]
15313#[inline(always)]
15314#[target_feature(enable = "neon")]
15315#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15316#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15317#[cfg_attr(
15318 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15319 assert_instr(ld1r)
15320)]
15321#[cfg_attr(
15322 not(target_arch = "arm"),
15323 stable(feature = "neon_intrinsics", since = "1.59.0")
15324)]
15325#[cfg_attr(
15326 target_arch = "arm",
15327 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15328)]
15329pub unsafe fn vld1_dup_u16(ptr: *const u16) -> uint16x4_t {
15330 transmute(u16x4::splat(*ptr))
15331}
15332#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15333#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u32)"]
15334#[doc = "## Safety"]
15335#[doc = " * Neon intrinsic unsafe"]
15336#[inline(always)]
15337#[target_feature(enable = "neon")]
15338#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15339#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15340#[cfg_attr(
15341 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15342 assert_instr(ld1r)
15343)]
15344#[cfg_attr(
15345 not(target_arch = "arm"),
15346 stable(feature = "neon_intrinsics", since = "1.59.0")
15347)]
15348#[cfg_attr(
15349 target_arch = "arm",
15350 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15351)]
15352pub unsafe fn vld1_dup_u32(ptr: *const u32) -> uint32x2_t {
15353 transmute(u32x2::splat(*ptr))
15354}
15355#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u8)"]
15357#[doc = "## Safety"]
15358#[doc = " * Neon intrinsic unsafe"]
15359#[inline(always)]
15360#[target_feature(enable = "neon")]
15361#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15362#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15363#[cfg_attr(
15364 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15365 assert_instr(ld1r)
15366)]
15367#[cfg_attr(
15368 not(target_arch = "arm"),
15369 stable(feature = "neon_intrinsics", since = "1.59.0")
15370)]
15371#[cfg_attr(
15372 target_arch = "arm",
15373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15374)]
15375pub unsafe fn vld1_dup_u8(ptr: *const u8) -> uint8x8_t {
15376 transmute(u8x8::splat(*ptr))
15377}
15378#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_f32)"]
15380#[doc = "## Safety"]
15381#[doc = " * Neon intrinsic unsafe"]
15382#[inline(always)]
15383#[target_feature(enable = "neon")]
15384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15385#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15386#[cfg_attr(
15387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15388 assert_instr(ld1r)
15389)]
15390#[cfg_attr(
15391 not(target_arch = "arm"),
15392 stable(feature = "neon_intrinsics", since = "1.59.0")
15393)]
15394#[cfg_attr(
15395 target_arch = "arm",
15396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15397)]
15398pub unsafe fn vld1q_dup_f32(ptr: *const f32) -> float32x4_t {
15399 transmute(f32x4::splat(*ptr))
15400}
15401#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p16)"]
15403#[doc = "## Safety"]
15404#[doc = " * Neon intrinsic unsafe"]
15405#[inline(always)]
15406#[target_feature(enable = "neon")]
15407#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15408#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15409#[cfg_attr(
15410 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15411 assert_instr(ld1r)
15412)]
15413#[cfg_attr(
15414 not(target_arch = "arm"),
15415 stable(feature = "neon_intrinsics", since = "1.59.0")
15416)]
15417#[cfg_attr(
15418 target_arch = "arm",
15419 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15420)]
15421pub unsafe fn vld1q_dup_p16(ptr: *const p16) -> poly16x8_t {
15422 transmute(u16x8::splat(*ptr))
15423}
15424#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15425#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p8)"]
15426#[doc = "## Safety"]
15427#[doc = " * Neon intrinsic unsafe"]
15428#[inline(always)]
15429#[target_feature(enable = "neon")]
15430#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15431#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15432#[cfg_attr(
15433 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15434 assert_instr(ld1r)
15435)]
15436#[cfg_attr(
15437 not(target_arch = "arm"),
15438 stable(feature = "neon_intrinsics", since = "1.59.0")
15439)]
15440#[cfg_attr(
15441 target_arch = "arm",
15442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15443)]
15444pub unsafe fn vld1q_dup_p8(ptr: *const p8) -> poly8x16_t {
15445 transmute(u8x16::splat(*ptr))
15446}
15447#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15448#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s16)"]
15449#[doc = "## Safety"]
15450#[doc = " * Neon intrinsic unsafe"]
15451#[inline(always)]
15452#[target_feature(enable = "neon")]
15453#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15454#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15455#[cfg_attr(
15456 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15457 assert_instr(ld1r)
15458)]
15459#[cfg_attr(
15460 not(target_arch = "arm"),
15461 stable(feature = "neon_intrinsics", since = "1.59.0")
15462)]
15463#[cfg_attr(
15464 target_arch = "arm",
15465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15466)]
15467pub unsafe fn vld1q_dup_s16(ptr: *const i16) -> int16x8_t {
15468 transmute(i16x8::splat(*ptr))
15469}
15470#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15471#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s32)"]
15472#[doc = "## Safety"]
15473#[doc = " * Neon intrinsic unsafe"]
15474#[inline(always)]
15475#[target_feature(enable = "neon")]
15476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15478#[cfg_attr(
15479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15480 assert_instr(ld1r)
15481)]
15482#[cfg_attr(
15483 not(target_arch = "arm"),
15484 stable(feature = "neon_intrinsics", since = "1.59.0")
15485)]
15486#[cfg_attr(
15487 target_arch = "arm",
15488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15489)]
15490pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
15491 transmute(i32x4::splat(*ptr))
15492}
15493#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s64)"]
15495#[doc = "## Safety"]
15496#[doc = " * Neon intrinsic unsafe"]
15497#[inline(always)]
15498#[target_feature(enable = "neon")]
15499#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15500#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]
15501#[cfg_attr(
15502 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15503 assert_instr(ld1r)
15504)]
15505#[cfg_attr(
15506 not(target_arch = "arm"),
15507 stable(feature = "neon_intrinsics", since = "1.59.0")
15508)]
15509#[cfg_attr(
15510 target_arch = "arm",
15511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15512)]
15513pub unsafe fn vld1q_dup_s64(ptr: *const i64) -> int64x2_t {
15514 transmute(i64x2::splat(*ptr))
15515}
15516#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s8)"]
15518#[doc = "## Safety"]
15519#[doc = " * Neon intrinsic unsafe"]
15520#[inline(always)]
15521#[target_feature(enable = "neon")]
15522#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15523#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15524#[cfg_attr(
15525 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15526 assert_instr(ld1r)
15527)]
15528#[cfg_attr(
15529 not(target_arch = "arm"),
15530 stable(feature = "neon_intrinsics", since = "1.59.0")
15531)]
15532#[cfg_attr(
15533 target_arch = "arm",
15534 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15535)]
15536pub unsafe fn vld1q_dup_s8(ptr: *const i8) -> int8x16_t {
15537 transmute(i8x16::splat(*ptr))
15538}
15539#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u16)"]
15541#[doc = "## Safety"]
15542#[doc = " * Neon intrinsic unsafe"]
15543#[inline(always)]
15544#[target_feature(enable = "neon")]
15545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15546#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15547#[cfg_attr(
15548 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15549 assert_instr(ld1r)
15550)]
15551#[cfg_attr(
15552 not(target_arch = "arm"),
15553 stable(feature = "neon_intrinsics", since = "1.59.0")
15554)]
15555#[cfg_attr(
15556 target_arch = "arm",
15557 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15558)]
15559pub unsafe fn vld1q_dup_u16(ptr: *const u16) -> uint16x8_t {
15560 transmute(u16x8::splat(*ptr))
15561}
15562#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u32)"]
15564#[doc = "## Safety"]
15565#[doc = " * Neon intrinsic unsafe"]
15566#[inline(always)]
15567#[target_feature(enable = "neon")]
15568#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15569#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15570#[cfg_attr(
15571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15572 assert_instr(ld1r)
15573)]
15574#[cfg_attr(
15575 not(target_arch = "arm"),
15576 stable(feature = "neon_intrinsics", since = "1.59.0")
15577)]
15578#[cfg_attr(
15579 target_arch = "arm",
15580 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15581)]
15582pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {
15583 transmute(u32x4::splat(*ptr))
15584}
15585#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u64)"]
15587#[doc = "## Safety"]
15588#[doc = " * Neon intrinsic unsafe"]
15589#[inline(always)]
15590#[target_feature(enable = "neon")]
15591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15592#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]
15593#[cfg_attr(
15594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15595 assert_instr(ld1r)
15596)]
15597#[cfg_attr(
15598 not(target_arch = "arm"),
15599 stable(feature = "neon_intrinsics", since = "1.59.0")
15600)]
15601#[cfg_attr(
15602 target_arch = "arm",
15603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15604)]
15605pub unsafe fn vld1q_dup_u64(ptr: *const u64) -> uint64x2_t {
15606 transmute(u64x2::splat(*ptr))
15607}
15608#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u8)"]
15610#[doc = "## Safety"]
15611#[doc = " * Neon intrinsic unsafe"]
15612#[inline(always)]
15613#[target_feature(enable = "neon")]
15614#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15615#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15616#[cfg_attr(
15617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15618 assert_instr(ld1r)
15619)]
15620#[cfg_attr(
15621 not(target_arch = "arm"),
15622 stable(feature = "neon_intrinsics", since = "1.59.0")
15623)]
15624#[cfg_attr(
15625 target_arch = "arm",
15626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15627)]
15628pub unsafe fn vld1q_dup_u8(ptr: *const u8) -> uint8x16_t {
15629 transmute(u8x16::splat(*ptr))
15630}
15631#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p64)"]
15633#[doc = "## Safety"]
15634#[doc = " * Neon intrinsic unsafe"]
15635#[inline(always)]
15636#[target_feature(enable = "neon,aes")]
15637#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15638#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15639#[cfg_attr(
15640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15641 assert_instr(ldr)
15642)]
15643#[cfg_attr(
15644 not(target_arch = "arm"),
15645 stable(feature = "neon_intrinsics", since = "1.59.0")
15646)]
15647#[cfg_attr(
15648 target_arch = "arm",
15649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15650)]
15651pub unsafe fn vld1_dup_p64(ptr: *const p64) -> poly64x1_t {
15652 let x: poly64x1_t;
15653 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
15654 {
15655 x = crate::core_arch::aarch64::vld1_p64(ptr);
15656 }
15657 #[cfg(target_arch = "arm")]
15658 {
15659 x = crate::core_arch::arm::vld1_p64(ptr);
15660 };
15661 x
15662}
15663#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15664#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s64)"]
15665#[doc = "## Safety"]
15666#[doc = " * Neon intrinsic unsafe"]
15667#[inline(always)]
15668#[target_feature(enable = "neon")]
15669#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15670#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15671#[cfg_attr(
15672 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15673 assert_instr(ldr)
15674)]
15675#[cfg_attr(
15676 not(target_arch = "arm"),
15677 stable(feature = "neon_intrinsics", since = "1.59.0")
15678)]
15679#[cfg_attr(
15680 target_arch = "arm",
15681 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15682)]
15683pub unsafe fn vld1_dup_s64(ptr: *const i64) -> int64x1_t {
15684 let x: int64x1_t;
15685 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
15686 {
15687 x = crate::core_arch::aarch64::vld1_s64(ptr);
15688 }
15689 #[cfg(target_arch = "arm")]
15690 {
15691 x = crate::core_arch::arm::vld1_s64(ptr);
15692 };
15693 x
15694}
15695#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u64)"]
15697#[doc = "## Safety"]
15698#[doc = " * Neon intrinsic unsafe"]
15699#[inline(always)]
15700#[target_feature(enable = "neon")]
15701#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15702#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15703#[cfg_attr(
15704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15705 assert_instr(ldr)
15706)]
15707#[cfg_attr(
15708 not(target_arch = "arm"),
15709 stable(feature = "neon_intrinsics", since = "1.59.0")
15710)]
15711#[cfg_attr(
15712 target_arch = "arm",
15713 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15714)]
15715pub unsafe fn vld1_dup_u64(ptr: *const u64) -> uint64x1_t {
15716 let x: uint64x1_t;
15717 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
15718 {
15719 x = crate::core_arch::aarch64::vld1_u64(ptr);
15720 }
15721 #[cfg(target_arch = "arm")]
15722 {
15723 x = crate::core_arch::arm::vld1_u64(ptr);
15724 };
15725 x
15726}
15727#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15728#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16)"]
15729#[doc = "## Safety"]
15730#[doc = " * Neon intrinsic unsafe"]
15731#[inline(always)]
15732#[cfg(target_endian = "little")]
15733#[cfg(target_arch = "arm")]
15734#[target_feature(enable = "neon,v7")]
15735#[target_feature(enable = "neon,fp16")]
15736#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15737#[cfg(not(target_arch = "arm64ec"))]
15738#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15739pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t {
15740 transmute(vld1_v4f16(
15741 ptr as *const i8,
15742 crate::mem::align_of::<f16>() as i32,
15743 ))
15744}
15745#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15746#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16)"]
15747#[doc = "## Safety"]
15748#[doc = " * Neon intrinsic unsafe"]
15749#[inline(always)]
15750#[cfg(target_endian = "big")]
15751#[cfg(target_arch = "arm")]
15752#[target_feature(enable = "neon,v7")]
15753#[target_feature(enable = "neon,fp16")]
15754#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15755#[cfg(not(target_arch = "arm64ec"))]
15756#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15757pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t {
15758 let ret_val: float16x4_t = transmute(vld1_v4f16(
15759 ptr as *const i8,
15760 crate::mem::align_of::<f16>() as i32,
15761 ));
15762 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
15763}
15764#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16)"]
15766#[doc = "## Safety"]
15767#[doc = " * Neon intrinsic unsafe"]
15768#[inline(always)]
15769#[cfg(target_endian = "little")]
15770#[cfg(target_arch = "arm")]
15771#[target_feature(enable = "neon,v7")]
15772#[target_feature(enable = "neon,fp16")]
15773#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15774#[cfg(not(target_arch = "arm64ec"))]
15775#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15776pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t {
15777 transmute(vld1q_v8f16(
15778 ptr as *const i8,
15779 crate::mem::align_of::<f16>() as i32,
15780 ))
15781}
15782#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16)"]
15784#[doc = "## Safety"]
15785#[doc = " * Neon intrinsic unsafe"]
15786#[inline(always)]
15787#[cfg(target_endian = "big")]
15788#[cfg(target_arch = "arm")]
15789#[target_feature(enable = "neon,v7")]
15790#[target_feature(enable = "neon,fp16")]
15791#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15792#[cfg(not(target_arch = "arm64ec"))]
15793#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15794pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t {
15795 let ret_val: float16x8_t = transmute(vld1q_v8f16(
15796 ptr as *const i8,
15797 crate::mem::align_of::<f16>() as i32,
15798 ));
15799 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
15800}
15801#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x2)"]
15803#[doc = "## Safety"]
15804#[doc = " * Neon intrinsic unsafe"]
15805#[inline(always)]
15806#[target_feature(enable = "neon")]
15807#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15808#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15809#[cfg_attr(
15810 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15811 assert_instr(ld)
15812)]
15813#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15814#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15815#[cfg(not(target_arch = "arm64ec"))]
15816pub unsafe fn vld1_f16_x2(a: *const f16) -> float16x4x2_t {
15817 crate::ptr::read_unaligned(a.cast())
15818}
15819#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x3)"]
15821#[doc = "## Safety"]
15822#[doc = " * Neon intrinsic unsafe"]
15823#[inline(always)]
15824#[target_feature(enable = "neon")]
15825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15826#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15827#[cfg_attr(
15828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15829 assert_instr(ld)
15830)]
15831#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15832#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15833#[cfg(not(target_arch = "arm64ec"))]
15834pub unsafe fn vld1_f16_x3(a: *const f16) -> float16x4x3_t {
15835 crate::ptr::read_unaligned(a.cast())
15836}
15837#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x4)"]
15839#[doc = "## Safety"]
15840#[doc = " * Neon intrinsic unsafe"]
15841#[inline(always)]
15842#[target_feature(enable = "neon")]
15843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15844#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15845#[cfg_attr(
15846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15847 assert_instr(ld)
15848)]
15849#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15850#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15851#[cfg(not(target_arch = "arm64ec"))]
15852pub unsafe fn vld1_f16_x4(a: *const f16) -> float16x4x4_t {
15853 crate::ptr::read_unaligned(a.cast())
15854}
15855#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x2)"]
15857#[doc = "## Safety"]
15858#[doc = " * Neon intrinsic unsafe"]
15859#[inline(always)]
15860#[target_feature(enable = "neon")]
15861#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15862#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15863#[cfg_attr(
15864 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15865 assert_instr(ld)
15866)]
15867#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15868#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15869#[cfg(not(target_arch = "arm64ec"))]
15870pub unsafe fn vld1q_f16_x2(a: *const f16) -> float16x8x2_t {
15871 crate::ptr::read_unaligned(a.cast())
15872}
15873#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x3)"]
15875#[doc = "## Safety"]
15876#[doc = " * Neon intrinsic unsafe"]
15877#[inline(always)]
15878#[target_feature(enable = "neon")]
15879#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15880#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15881#[cfg_attr(
15882 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15883 assert_instr(ld)
15884)]
15885#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15886#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15887#[cfg(not(target_arch = "arm64ec"))]
15888pub unsafe fn vld1q_f16_x3(a: *const f16) -> float16x8x3_t {
15889 crate::ptr::read_unaligned(a.cast())
15890}
15891#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15892#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x4)"]
15893#[doc = "## Safety"]
15894#[doc = " * Neon intrinsic unsafe"]
15895#[inline(always)]
15896#[target_feature(enable = "neon")]
15897#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15898#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15899#[cfg_attr(
15900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15901 assert_instr(ld)
15902)]
15903#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15904#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15905#[cfg(not(target_arch = "arm64ec"))]
15906pub unsafe fn vld1q_f16_x4(a: *const f16) -> float16x8x4_t {
15907 crate::ptr::read_unaligned(a.cast())
15908}
15909#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32)"]
15911#[doc = "## Safety"]
15912#[doc = " * Neon intrinsic unsafe"]
15913#[inline(always)]
15914#[cfg(target_arch = "arm")]
15915#[target_feature(enable = "neon,v7")]
15916#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15917#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15918pub unsafe fn vld1_f32(ptr: *const f32) -> float32x2_t {
15919 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
15920 transmute(vld1_v2f32::<ALIGN>(ptr as *const i8))
15921}
15922#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32)"]
15924#[doc = "## Safety"]
15925#[doc = " * Neon intrinsic unsafe"]
15926#[inline(always)]
15927#[cfg(target_arch = "arm")]
15928#[target_feature(enable = "neon,v7")]
15929#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15930#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15931pub unsafe fn vld1q_f32(ptr: *const f32) -> float32x4_t {
15932 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
15933 transmute(vld1q_v4f32::<ALIGN>(ptr as *const i8))
15934}
15935#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8)"]
15937#[doc = "## Safety"]
15938#[doc = " * Neon intrinsic unsafe"]
15939#[inline(always)]
15940#[cfg(target_arch = "arm")]
15941#[target_feature(enable = "neon,v7")]
15942#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15943#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15944pub unsafe fn vld1_u8(ptr: *const u8) -> uint8x8_t {
15945 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
15946 transmute(vld1_v8i8::<ALIGN>(ptr as *const i8))
15947}
15948#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8)"]
15950#[doc = "## Safety"]
15951#[doc = " * Neon intrinsic unsafe"]
15952#[inline(always)]
15953#[cfg(target_arch = "arm")]
15954#[target_feature(enable = "neon,v7")]
15955#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15956#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15957pub unsafe fn vld1q_u8(ptr: *const u8) -> uint8x16_t {
15958 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
15959 transmute(vld1q_v16i8::<ALIGN>(ptr as *const i8))
15960}
15961#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16)"]
15963#[doc = "## Safety"]
15964#[doc = " * Neon intrinsic unsafe"]
15965#[inline(always)]
15966#[cfg(target_arch = "arm")]
15967#[target_feature(enable = "neon,v7")]
15968#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15969#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15970pub unsafe fn vld1_u16(ptr: *const u16) -> uint16x4_t {
15971 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
15972 transmute(vld1_v4i16::<ALIGN>(ptr as *const i8))
15973}
15974#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16)"]
15976#[doc = "## Safety"]
15977#[doc = " * Neon intrinsic unsafe"]
15978#[inline(always)]
15979#[cfg(target_arch = "arm")]
15980#[target_feature(enable = "neon,v7")]
15981#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15982#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15983pub unsafe fn vld1q_u16(ptr: *const u16) -> uint16x8_t {
15984 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
15985 transmute(vld1q_v8i16::<ALIGN>(ptr as *const i8))
15986}
15987#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32)"]
15989#[doc = "## Safety"]
15990#[doc = " * Neon intrinsic unsafe"]
15991#[inline(always)]
15992#[cfg(target_arch = "arm")]
15993#[target_feature(enable = "neon,v7")]
15994#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15995#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15996pub unsafe fn vld1_u32(ptr: *const u32) -> uint32x2_t {
15997 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
15998 transmute(vld1_v2i32::<ALIGN>(ptr as *const i8))
15999}
16000#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32)"]
16002#[doc = "## Safety"]
16003#[doc = " * Neon intrinsic unsafe"]
16004#[inline(always)]
16005#[cfg(target_arch = "arm")]
16006#[target_feature(enable = "neon,v7")]
16007#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16008#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
16009pub unsafe fn vld1q_u32(ptr: *const u32) -> uint32x4_t {
16010 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
16011 transmute(vld1q_v4i32::<ALIGN>(ptr as *const i8))
16012}
16013#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64)"]
16015#[doc = "## Safety"]
16016#[doc = " * Neon intrinsic unsafe"]
16017#[inline(always)]
16018#[cfg(target_arch = "arm")]
16019#[target_feature(enable = "neon,v7")]
16020#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16021#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
16022pub unsafe fn vld1_u64(ptr: *const u64) -> uint64x1_t {
16023 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
16024 transmute(vld1_v1i64::<ALIGN>(ptr as *const i8))
16025}
16026#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16027#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64)"]
16028#[doc = "## Safety"]
16029#[doc = " * Neon intrinsic unsafe"]
16030#[inline(always)]
16031#[cfg(target_arch = "arm")]
16032#[target_feature(enable = "neon,v7")]
16033#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16034#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
16035pub unsafe fn vld1q_u64(ptr: *const u64) -> uint64x2_t {
16036 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
16037 transmute(vld1q_v2i64::<ALIGN>(ptr as *const i8))
16038}
16039#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8)"]
16041#[doc = "## Safety"]
16042#[doc = " * Neon intrinsic unsafe"]
16043#[inline(always)]
16044#[cfg(target_arch = "arm")]
16045#[target_feature(enable = "neon,v7")]
16046#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16047#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
16048pub unsafe fn vld1_p8(ptr: *const p8) -> poly8x8_t {
16049 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
16050 transmute(vld1_v8i8::<ALIGN>(ptr as *const i8))
16051}
16052#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16053#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8)"]
16054#[doc = "## Safety"]
16055#[doc = " * Neon intrinsic unsafe"]
16056#[inline(always)]
16057#[cfg(target_arch = "arm")]
16058#[target_feature(enable = "neon,v7")]
16059#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16060#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
16061pub unsafe fn vld1q_p8(ptr: *const p8) -> poly8x16_t {
16062 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
16063 transmute(vld1q_v16i8::<ALIGN>(ptr as *const i8))
16064}
16065#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16)"]
16067#[doc = "## Safety"]
16068#[doc = " * Neon intrinsic unsafe"]
16069#[inline(always)]
16070#[cfg(target_arch = "arm")]
16071#[target_feature(enable = "neon,v7")]
16072#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16073#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
16074pub unsafe fn vld1_p16(ptr: *const p16) -> poly16x4_t {
16075 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
16076 transmute(vld1_v4i16::<ALIGN>(ptr as *const i8))
16077}
16078#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16079#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16)"]
16080#[doc = "## Safety"]
16081#[doc = " * Neon intrinsic unsafe"]
16082#[inline(always)]
16083#[cfg(target_arch = "arm")]
16084#[target_feature(enable = "neon,v7")]
16085#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16086#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
16087pub unsafe fn vld1q_p16(ptr: *const p16) -> poly16x8_t {
16088 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
16089 transmute(vld1q_v8i16::<ALIGN>(ptr as *const i8))
16090}
16091#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64)"]
16093#[doc = "## Safety"]
16094#[doc = " * Neon intrinsic unsafe"]
16095#[inline(always)]
16096#[cfg(target_arch = "arm")]
16097#[target_feature(enable = "neon,aes")]
16098#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16099#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
16100pub unsafe fn vld1q_p64(ptr: *const p64) -> poly64x2_t {
16101 const ALIGN: i32 = crate::mem::align_of::<p64>() as i32;
16102 transmute(vld1q_v2i64::<ALIGN>(ptr as *const i8))
16103}
16104#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x2)"]
16106#[doc = "## Safety"]
16107#[doc = " * Neon intrinsic unsafe"]
16108#[inline(always)]
16109#[target_feature(enable = "neon")]
16110#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16111#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16112#[cfg_attr(
16113 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16114 assert_instr(ld)
16115)]
16116#[cfg_attr(
16117 not(target_arch = "arm"),
16118 stable(feature = "neon_intrinsics", since = "1.59.0")
16119)]
16120#[cfg_attr(
16121 target_arch = "arm",
16122 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16123)]
16124pub unsafe fn vld1_f32_x2(a: *const f32) -> float32x2x2_t {
16125 crate::ptr::read_unaligned(a.cast())
16126}
16127#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x3)"]
16129#[doc = "## Safety"]
16130#[doc = " * Neon intrinsic unsafe"]
16131#[inline(always)]
16132#[target_feature(enable = "neon")]
16133#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16134#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16135#[cfg_attr(
16136 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16137 assert_instr(ld)
16138)]
16139#[cfg_attr(
16140 not(target_arch = "arm"),
16141 stable(feature = "neon_intrinsics", since = "1.59.0")
16142)]
16143#[cfg_attr(
16144 target_arch = "arm",
16145 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16146)]
16147pub unsafe fn vld1_f32_x3(a: *const f32) -> float32x2x3_t {
16148 crate::ptr::read_unaligned(a.cast())
16149}
16150#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x4)"]
16152#[doc = "## Safety"]
16153#[doc = " * Neon intrinsic unsafe"]
16154#[inline(always)]
16155#[target_feature(enable = "neon")]
16156#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16157#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16158#[cfg_attr(
16159 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16160 assert_instr(ld)
16161)]
16162#[cfg_attr(
16163 not(target_arch = "arm"),
16164 stable(feature = "neon_intrinsics", since = "1.59.0")
16165)]
16166#[cfg_attr(
16167 target_arch = "arm",
16168 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16169)]
16170pub unsafe fn vld1_f32_x4(a: *const f32) -> float32x2x4_t {
16171 crate::ptr::read_unaligned(a.cast())
16172}
16173#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x2)"]
16175#[doc = "## Safety"]
16176#[doc = " * Neon intrinsic unsafe"]
16177#[inline(always)]
16178#[target_feature(enable = "neon")]
16179#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16180#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16181#[cfg_attr(
16182 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16183 assert_instr(ld)
16184)]
16185#[cfg_attr(
16186 not(target_arch = "arm"),
16187 stable(feature = "neon_intrinsics", since = "1.59.0")
16188)]
16189#[cfg_attr(
16190 target_arch = "arm",
16191 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16192)]
16193pub unsafe fn vld1q_f32_x2(a: *const f32) -> float32x4x2_t {
16194 crate::ptr::read_unaligned(a.cast())
16195}
16196#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16197#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x3)"]
16198#[doc = "## Safety"]
16199#[doc = " * Neon intrinsic unsafe"]
16200#[inline(always)]
16201#[target_feature(enable = "neon")]
16202#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16203#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16204#[cfg_attr(
16205 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16206 assert_instr(ld)
16207)]
16208#[cfg_attr(
16209 not(target_arch = "arm"),
16210 stable(feature = "neon_intrinsics", since = "1.59.0")
16211)]
16212#[cfg_attr(
16213 target_arch = "arm",
16214 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16215)]
16216pub unsafe fn vld1q_f32_x3(a: *const f32) -> float32x4x3_t {
16217 crate::ptr::read_unaligned(a.cast())
16218}
16219#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x4)"]
16221#[doc = "## Safety"]
16222#[doc = " * Neon intrinsic unsafe"]
16223#[inline(always)]
16224#[target_feature(enable = "neon")]
16225#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16226#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16227#[cfg_attr(
16228 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16229 assert_instr(ld)
16230)]
16231#[cfg_attr(
16232 not(target_arch = "arm"),
16233 stable(feature = "neon_intrinsics", since = "1.59.0")
16234)]
16235#[cfg_attr(
16236 target_arch = "arm",
16237 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16238)]
16239pub unsafe fn vld1q_f32_x4(a: *const f32) -> float32x4x4_t {
16240 crate::ptr::read_unaligned(a.cast())
16241}
16242#[doc = "Load one single-element structure to one lane of one register"]
16243#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_f16)"]
16244#[doc = "## Safety"]
16245#[doc = " * Neon intrinsic unsafe"]
16246#[inline(always)]
16247#[target_feature(enable = "neon")]
16248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1, LANE = 0))]
16250#[cfg_attr(
16251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16252 assert_instr(ld1, LANE = 0)
16253)]
16254#[rustc_legacy_const_generics(2)]
16255#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
16256#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
16257#[cfg(not(target_arch = "arm64ec"))]
16258pub unsafe fn vld1_lane_f16<const LANE: i32>(ptr: *const f16, src: float16x4_t) -> float16x4_t {
16259 static_assert_uimm_bits!(LANE, 2);
16260 simd_insert!(src, LANE as u32, *ptr)
16261}
16262#[doc = "Load one single-element structure to one lane of one register"]
16263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_f16)"]
16264#[doc = "## Safety"]
16265#[doc = " * Neon intrinsic unsafe"]
16266#[inline(always)]
16267#[target_feature(enable = "neon")]
16268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16269#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1, LANE = 0))]
16270#[cfg_attr(
16271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16272 assert_instr(ld1, LANE = 0)
16273)]
16274#[rustc_legacy_const_generics(2)]
16275#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
16276#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
16277#[cfg(not(target_arch = "arm64ec"))]
16278pub unsafe fn vld1q_lane_f16<const LANE: i32>(ptr: *const f16, src: float16x8_t) -> float16x8_t {
16279 static_assert_uimm_bits!(LANE, 3);
16280 simd_insert!(src, LANE as u32, *ptr)
16281}
16282#[doc = "Load one single-element structure to one lane of one register."]
16283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_f32)"]
16284#[doc = "## Safety"]
16285#[doc = " * Neon intrinsic unsafe"]
16286#[inline(always)]
16287#[target_feature(enable = "neon")]
16288#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16289#[rustc_legacy_const_generics(2)]
16290#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
16291#[cfg_attr(
16292 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16293 assert_instr(ld1, LANE = 1)
16294)]
16295#[cfg_attr(
16296 not(target_arch = "arm"),
16297 stable(feature = "neon_intrinsics", since = "1.59.0")
16298)]
16299#[cfg_attr(
16300 target_arch = "arm",
16301 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16302)]
16303pub unsafe fn vld1_lane_f32<const LANE: i32>(ptr: *const f32, src: float32x2_t) -> float32x2_t {
16304 static_assert_uimm_bits!(LANE, 1);
16305 simd_insert!(src, LANE as u32, *ptr)
16306}
16307#[doc = "Load one single-element structure to one lane of one register."]
16308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p16)"]
16309#[doc = "## Safety"]
16310#[doc = " * Neon intrinsic unsafe"]
16311#[inline(always)]
16312#[target_feature(enable = "neon")]
16313#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16314#[rustc_legacy_const_generics(2)]
16315#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
16316#[cfg_attr(
16317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16318 assert_instr(ld1, LANE = 3)
16319)]
16320#[cfg_attr(
16321 not(target_arch = "arm"),
16322 stable(feature = "neon_intrinsics", since = "1.59.0")
16323)]
16324#[cfg_attr(
16325 target_arch = "arm",
16326 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16327)]
16328pub unsafe fn vld1_lane_p16<const LANE: i32>(ptr: *const p16, src: poly16x4_t) -> poly16x4_t {
16329 static_assert_uimm_bits!(LANE, 2);
16330 simd_insert!(src, LANE as u32, *ptr)
16331}
16332#[doc = "Load one single-element structure to one lane of one register."]
16333#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p8)"]
16334#[doc = "## Safety"]
16335#[doc = " * Neon intrinsic unsafe"]
16336#[inline(always)]
16337#[target_feature(enable = "neon")]
16338#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16339#[rustc_legacy_const_generics(2)]
16340#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16341#[cfg_attr(
16342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16343 assert_instr(ld1, LANE = 7)
16344)]
16345#[cfg_attr(
16346 not(target_arch = "arm"),
16347 stable(feature = "neon_intrinsics", since = "1.59.0")
16348)]
16349#[cfg_attr(
16350 target_arch = "arm",
16351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16352)]
16353pub unsafe fn vld1_lane_p8<const LANE: i32>(ptr: *const p8, src: poly8x8_t) -> poly8x8_t {
16354 static_assert_uimm_bits!(LANE, 3);
16355 simd_insert!(src, LANE as u32, *ptr)
16356}
16357#[doc = "Load one single-element structure to one lane of one register."]
16358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s16)"]
16359#[doc = "## Safety"]
16360#[doc = " * Neon intrinsic unsafe"]
16361#[inline(always)]
16362#[target_feature(enable = "neon")]
16363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16364#[rustc_legacy_const_generics(2)]
16365#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
16366#[cfg_attr(
16367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16368 assert_instr(ld1, LANE = 3)
16369)]
16370#[cfg_attr(
16371 not(target_arch = "arm"),
16372 stable(feature = "neon_intrinsics", since = "1.59.0")
16373)]
16374#[cfg_attr(
16375 target_arch = "arm",
16376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16377)]
16378pub unsafe fn vld1_lane_s16<const LANE: i32>(ptr: *const i16, src: int16x4_t) -> int16x4_t {
16379 static_assert_uimm_bits!(LANE, 2);
16380 simd_insert!(src, LANE as u32, *ptr)
16381}
16382#[doc = "Load one single-element structure to one lane of one register."]
16383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s32)"]
16384#[doc = "## Safety"]
16385#[doc = " * Neon intrinsic unsafe"]
16386#[inline(always)]
16387#[target_feature(enable = "neon")]
16388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16389#[rustc_legacy_const_generics(2)]
16390#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
16391#[cfg_attr(
16392 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16393 assert_instr(ld1, LANE = 1)
16394)]
16395#[cfg_attr(
16396 not(target_arch = "arm"),
16397 stable(feature = "neon_intrinsics", since = "1.59.0")
16398)]
16399#[cfg_attr(
16400 target_arch = "arm",
16401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16402)]
16403pub unsafe fn vld1_lane_s32<const LANE: i32>(ptr: *const i32, src: int32x2_t) -> int32x2_t {
16404 static_assert_uimm_bits!(LANE, 1);
16405 simd_insert!(src, LANE as u32, *ptr)
16406}
16407#[doc = "Load one single-element structure to one lane of one register."]
16408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s64)"]
16409#[doc = "## Safety"]
16410#[doc = " * Neon intrinsic unsafe"]
16411#[inline(always)]
16412#[target_feature(enable = "neon")]
16413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16414#[rustc_legacy_const_generics(2)]
16415#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16416#[cfg_attr(
16417 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16418 assert_instr(ldr, LANE = 0)
16419)]
16420#[cfg_attr(
16421 not(target_arch = "arm"),
16422 stable(feature = "neon_intrinsics", since = "1.59.0")
16423)]
16424#[cfg_attr(
16425 target_arch = "arm",
16426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16427)]
16428pub unsafe fn vld1_lane_s64<const LANE: i32>(ptr: *const i64, src: int64x1_t) -> int64x1_t {
16429 static_assert!(LANE == 0);
16430 simd_insert!(src, LANE as u32, *ptr)
16431}
16432#[doc = "Load one single-element structure to one lane of one register."]
16433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s8)"]
16434#[doc = "## Safety"]
16435#[doc = " * Neon intrinsic unsafe"]
16436#[inline(always)]
16437#[target_feature(enable = "neon")]
16438#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16439#[rustc_legacy_const_generics(2)]
16440#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16441#[cfg_attr(
16442 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16443 assert_instr(ld1, LANE = 7)
16444)]
16445#[cfg_attr(
16446 not(target_arch = "arm"),
16447 stable(feature = "neon_intrinsics", since = "1.59.0")
16448)]
16449#[cfg_attr(
16450 target_arch = "arm",
16451 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16452)]
16453pub unsafe fn vld1_lane_s8<const LANE: i32>(ptr: *const i8, src: int8x8_t) -> int8x8_t {
16454 static_assert_uimm_bits!(LANE, 3);
16455 simd_insert!(src, LANE as u32, *ptr)
16456}
16457#[doc = "Load one single-element structure to one lane of one register."]
16458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u16)"]
16459#[doc = "## Safety"]
16460#[doc = " * Neon intrinsic unsafe"]
16461#[inline(always)]
16462#[target_feature(enable = "neon")]
16463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16464#[rustc_legacy_const_generics(2)]
16465#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
16466#[cfg_attr(
16467 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16468 assert_instr(ld1, LANE = 3)
16469)]
16470#[cfg_attr(
16471 not(target_arch = "arm"),
16472 stable(feature = "neon_intrinsics", since = "1.59.0")
16473)]
16474#[cfg_attr(
16475 target_arch = "arm",
16476 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16477)]
16478pub unsafe fn vld1_lane_u16<const LANE: i32>(ptr: *const u16, src: uint16x4_t) -> uint16x4_t {
16479 static_assert_uimm_bits!(LANE, 2);
16480 simd_insert!(src, LANE as u32, *ptr)
16481}
16482#[doc = "Load one single-element structure to one lane of one register."]
16483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u32)"]
16484#[doc = "## Safety"]
16485#[doc = " * Neon intrinsic unsafe"]
16486#[inline(always)]
16487#[target_feature(enable = "neon")]
16488#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16489#[rustc_legacy_const_generics(2)]
16490#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
16491#[cfg_attr(
16492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16493 assert_instr(ld1, LANE = 1)
16494)]
16495#[cfg_attr(
16496 not(target_arch = "arm"),
16497 stable(feature = "neon_intrinsics", since = "1.59.0")
16498)]
16499#[cfg_attr(
16500 target_arch = "arm",
16501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16502)]
16503pub unsafe fn vld1_lane_u32<const LANE: i32>(ptr: *const u32, src: uint32x2_t) -> uint32x2_t {
16504 static_assert_uimm_bits!(LANE, 1);
16505 simd_insert!(src, LANE as u32, *ptr)
16506}
16507#[doc = "Load one single-element structure to one lane of one register."]
16508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u64)"]
16509#[doc = "## Safety"]
16510#[doc = " * Neon intrinsic unsafe"]
16511#[inline(always)]
16512#[target_feature(enable = "neon")]
16513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16514#[rustc_legacy_const_generics(2)]
16515#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16516#[cfg_attr(
16517 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16518 assert_instr(ldr, LANE = 0)
16519)]
16520#[cfg_attr(
16521 not(target_arch = "arm"),
16522 stable(feature = "neon_intrinsics", since = "1.59.0")
16523)]
16524#[cfg_attr(
16525 target_arch = "arm",
16526 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16527)]
16528pub unsafe fn vld1_lane_u64<const LANE: i32>(ptr: *const u64, src: uint64x1_t) -> uint64x1_t {
16529 static_assert!(LANE == 0);
16530 simd_insert!(src, LANE as u32, *ptr)
16531}
16532#[doc = "Load one single-element structure to one lane of one register."]
16533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u8)"]
16534#[doc = "## Safety"]
16535#[doc = " * Neon intrinsic unsafe"]
16536#[inline(always)]
16537#[target_feature(enable = "neon")]
16538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16539#[rustc_legacy_const_generics(2)]
16540#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16541#[cfg_attr(
16542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16543 assert_instr(ld1, LANE = 7)
16544)]
16545#[cfg_attr(
16546 not(target_arch = "arm"),
16547 stable(feature = "neon_intrinsics", since = "1.59.0")
16548)]
16549#[cfg_attr(
16550 target_arch = "arm",
16551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16552)]
16553pub unsafe fn vld1_lane_u8<const LANE: i32>(ptr: *const u8, src: uint8x8_t) -> uint8x8_t {
16554 static_assert_uimm_bits!(LANE, 3);
16555 simd_insert!(src, LANE as u32, *ptr)
16556}
16557#[doc = "Load one single-element structure to one lane of one register."]
16558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_f32)"]
16559#[doc = "## Safety"]
16560#[doc = " * Neon intrinsic unsafe"]
16561#[inline(always)]
16562#[target_feature(enable = "neon")]
16563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16564#[rustc_legacy_const_generics(2)]
16565#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16566#[cfg_attr(
16567 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16568 assert_instr(ld1, LANE = 3)
16569)]
16570#[cfg_attr(
16571 not(target_arch = "arm"),
16572 stable(feature = "neon_intrinsics", since = "1.59.0")
16573)]
16574#[cfg_attr(
16575 target_arch = "arm",
16576 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16577)]
16578pub unsafe fn vld1q_lane_f32<const LANE: i32>(ptr: *const f32, src: float32x4_t) -> float32x4_t {
16579 static_assert_uimm_bits!(LANE, 2);
16580 simd_insert!(src, LANE as u32, *ptr)
16581}
16582#[doc = "Load one single-element structure to one lane of one register."]
16583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p16)"]
16584#[doc = "## Safety"]
16585#[doc = " * Neon intrinsic unsafe"]
16586#[inline(always)]
16587#[target_feature(enable = "neon")]
16588#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16589#[rustc_legacy_const_generics(2)]
16590#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16591#[cfg_attr(
16592 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16593 assert_instr(ld1, LANE = 7)
16594)]
16595#[cfg_attr(
16596 not(target_arch = "arm"),
16597 stable(feature = "neon_intrinsics", since = "1.59.0")
16598)]
16599#[cfg_attr(
16600 target_arch = "arm",
16601 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16602)]
16603pub unsafe fn vld1q_lane_p16<const LANE: i32>(ptr: *const p16, src: poly16x8_t) -> poly16x8_t {
16604 static_assert_uimm_bits!(LANE, 3);
16605 simd_insert!(src, LANE as u32, *ptr)
16606}
16607#[doc = "Load one single-element structure to one lane of one register."]
16608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p8)"]
16609#[doc = "## Safety"]
16610#[doc = " * Neon intrinsic unsafe"]
16611#[inline(always)]
16612#[target_feature(enable = "neon")]
16613#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16614#[rustc_legacy_const_generics(2)]
16615#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16616#[cfg_attr(
16617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16618 assert_instr(ld1, LANE = 15)
16619)]
16620#[cfg_attr(
16621 not(target_arch = "arm"),
16622 stable(feature = "neon_intrinsics", since = "1.59.0")
16623)]
16624#[cfg_attr(
16625 target_arch = "arm",
16626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16627)]
16628pub unsafe fn vld1q_lane_p8<const LANE: i32>(ptr: *const p8, src: poly8x16_t) -> poly8x16_t {
16629 static_assert_uimm_bits!(LANE, 4);
16630 simd_insert!(src, LANE as u32, *ptr)
16631}
16632#[doc = "Load one single-element structure to one lane of one register."]
16633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s16)"]
16634#[doc = "## Safety"]
16635#[doc = " * Neon intrinsic unsafe"]
16636#[inline(always)]
16637#[target_feature(enable = "neon")]
16638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16639#[rustc_legacy_const_generics(2)]
16640#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16641#[cfg_attr(
16642 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16643 assert_instr(ld1, LANE = 7)
16644)]
16645#[cfg_attr(
16646 not(target_arch = "arm"),
16647 stable(feature = "neon_intrinsics", since = "1.59.0")
16648)]
16649#[cfg_attr(
16650 target_arch = "arm",
16651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16652)]
16653pub unsafe fn vld1q_lane_s16<const LANE: i32>(ptr: *const i16, src: int16x8_t) -> int16x8_t {
16654 static_assert_uimm_bits!(LANE, 3);
16655 simd_insert!(src, LANE as u32, *ptr)
16656}
16657#[doc = "Load one single-element structure to one lane of one register."]
16658#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s32)"]
16659#[doc = "## Safety"]
16660#[doc = " * Neon intrinsic unsafe"]
16661#[inline(always)]
16662#[target_feature(enable = "neon")]
16663#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16664#[rustc_legacy_const_generics(2)]
16665#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16666#[cfg_attr(
16667 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16668 assert_instr(ld1, LANE = 3)
16669)]
16670#[cfg_attr(
16671 not(target_arch = "arm"),
16672 stable(feature = "neon_intrinsics", since = "1.59.0")
16673)]
16674#[cfg_attr(
16675 target_arch = "arm",
16676 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16677)]
16678pub unsafe fn vld1q_lane_s32<const LANE: i32>(ptr: *const i32, src: int32x4_t) -> int32x4_t {
16679 static_assert_uimm_bits!(LANE, 2);
16680 simd_insert!(src, LANE as u32, *ptr)
16681}
16682#[doc = "Load one single-element structure to one lane of one register."]
16683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s64)"]
16684#[doc = "## Safety"]
16685#[doc = " * Neon intrinsic unsafe"]
16686#[inline(always)]
16687#[target_feature(enable = "neon")]
16688#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16689#[rustc_legacy_const_generics(2)]
16690#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16691#[cfg_attr(
16692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16693 assert_instr(ld1, LANE = 1)
16694)]
16695#[cfg_attr(
16696 not(target_arch = "arm"),
16697 stable(feature = "neon_intrinsics", since = "1.59.0")
16698)]
16699#[cfg_attr(
16700 target_arch = "arm",
16701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16702)]
16703pub unsafe fn vld1q_lane_s64<const LANE: i32>(ptr: *const i64, src: int64x2_t) -> int64x2_t {
16704 static_assert_uimm_bits!(LANE, 1);
16705 simd_insert!(src, LANE as u32, *ptr)
16706}
16707#[doc = "Load one single-element structure to one lane of one register."]
16708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s8)"]
16709#[doc = "## Safety"]
16710#[doc = " * Neon intrinsic unsafe"]
16711#[inline(always)]
16712#[target_feature(enable = "neon")]
16713#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16714#[rustc_legacy_const_generics(2)]
16715#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16716#[cfg_attr(
16717 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16718 assert_instr(ld1, LANE = 15)
16719)]
16720#[cfg_attr(
16721 not(target_arch = "arm"),
16722 stable(feature = "neon_intrinsics", since = "1.59.0")
16723)]
16724#[cfg_attr(
16725 target_arch = "arm",
16726 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16727)]
16728pub unsafe fn vld1q_lane_s8<const LANE: i32>(ptr: *const i8, src: int8x16_t) -> int8x16_t {
16729 static_assert_uimm_bits!(LANE, 4);
16730 simd_insert!(src, LANE as u32, *ptr)
16731}
16732#[doc = "Load one single-element structure to one lane of one register."]
16733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u16)"]
16734#[doc = "## Safety"]
16735#[doc = " * Neon intrinsic unsafe"]
16736#[inline(always)]
16737#[target_feature(enable = "neon")]
16738#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16739#[rustc_legacy_const_generics(2)]
16740#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16741#[cfg_attr(
16742 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16743 assert_instr(ld1, LANE = 7)
16744)]
16745#[cfg_attr(
16746 not(target_arch = "arm"),
16747 stable(feature = "neon_intrinsics", since = "1.59.0")
16748)]
16749#[cfg_attr(
16750 target_arch = "arm",
16751 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16752)]
16753pub unsafe fn vld1q_lane_u16<const LANE: i32>(ptr: *const u16, src: uint16x8_t) -> uint16x8_t {
16754 static_assert_uimm_bits!(LANE, 3);
16755 simd_insert!(src, LANE as u32, *ptr)
16756}
16757#[doc = "Load one single-element structure to one lane of one register."]
16758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u32)"]
16759#[doc = "## Safety"]
16760#[doc = " * Neon intrinsic unsafe"]
16761#[inline(always)]
16762#[target_feature(enable = "neon")]
16763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16764#[rustc_legacy_const_generics(2)]
16765#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16766#[cfg_attr(
16767 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16768 assert_instr(ld1, LANE = 3)
16769)]
16770#[cfg_attr(
16771 not(target_arch = "arm"),
16772 stable(feature = "neon_intrinsics", since = "1.59.0")
16773)]
16774#[cfg_attr(
16775 target_arch = "arm",
16776 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16777)]
16778pub unsafe fn vld1q_lane_u32<const LANE: i32>(ptr: *const u32, src: uint32x4_t) -> uint32x4_t {
16779 static_assert_uimm_bits!(LANE, 2);
16780 simd_insert!(src, LANE as u32, *ptr)
16781}
16782#[doc = "Load one single-element structure to one lane of one register."]
16783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u64)"]
16784#[doc = "## Safety"]
16785#[doc = " * Neon intrinsic unsafe"]
16786#[inline(always)]
16787#[target_feature(enable = "neon")]
16788#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16789#[rustc_legacy_const_generics(2)]
16790#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16791#[cfg_attr(
16792 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16793 assert_instr(ld1, LANE = 1)
16794)]
16795#[cfg_attr(
16796 not(target_arch = "arm"),
16797 stable(feature = "neon_intrinsics", since = "1.59.0")
16798)]
16799#[cfg_attr(
16800 target_arch = "arm",
16801 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16802)]
16803pub unsafe fn vld1q_lane_u64<const LANE: i32>(ptr: *const u64, src: uint64x2_t) -> uint64x2_t {
16804 static_assert_uimm_bits!(LANE, 1);
16805 simd_insert!(src, LANE as u32, *ptr)
16806}
16807#[doc = "Load one single-element structure to one lane of one register."]
16808#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u8)"]
16809#[doc = "## Safety"]
16810#[doc = " * Neon intrinsic unsafe"]
16811#[inline(always)]
16812#[target_feature(enable = "neon")]
16813#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16814#[rustc_legacy_const_generics(2)]
16815#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16816#[cfg_attr(
16817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16818 assert_instr(ld1, LANE = 15)
16819)]
16820#[cfg_attr(
16821 not(target_arch = "arm"),
16822 stable(feature = "neon_intrinsics", since = "1.59.0")
16823)]
16824#[cfg_attr(
16825 target_arch = "arm",
16826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16827)]
16828pub unsafe fn vld1q_lane_u8<const LANE: i32>(ptr: *const u8, src: uint8x16_t) -> uint8x16_t {
16829 static_assert_uimm_bits!(LANE, 4);
16830 simd_insert!(src, LANE as u32, *ptr)
16831}
16832#[doc = "Load one single-element structure to one lane of one register."]
16833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p64)"]
16834#[doc = "## Safety"]
16835#[doc = " * Neon intrinsic unsafe"]
16836#[inline(always)]
16837#[target_feature(enable = "neon,aes")]
16838#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16839#[rustc_legacy_const_generics(2)]
16840#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16841#[cfg_attr(
16842 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16843 assert_instr(ldr, LANE = 0)
16844)]
16845#[cfg_attr(
16846 not(target_arch = "arm"),
16847 stable(feature = "neon_intrinsics", since = "1.59.0")
16848)]
16849#[cfg_attr(
16850 target_arch = "arm",
16851 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16852)]
16853pub unsafe fn vld1_lane_p64<const LANE: i32>(ptr: *const p64, src: poly64x1_t) -> poly64x1_t {
16854 static_assert!(LANE == 0);
16855 simd_insert!(src, LANE as u32, *ptr)
16856}
16857#[doc = "Load one single-element structure to one lane of one register."]
16858#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p64)"]
16859#[doc = "## Safety"]
16860#[doc = " * Neon intrinsic unsafe"]
16861#[inline(always)]
16862#[target_feature(enable = "neon,aes")]
16863#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16864#[rustc_legacy_const_generics(2)]
16865#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16866#[cfg_attr(
16867 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16868 assert_instr(ld1, LANE = 1)
16869)]
16870#[cfg_attr(
16871 not(target_arch = "arm"),
16872 stable(feature = "neon_intrinsics", since = "1.59.0")
16873)]
16874#[cfg_attr(
16875 target_arch = "arm",
16876 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16877)]
16878pub unsafe fn vld1q_lane_p64<const LANE: i32>(ptr: *const p64, src: poly64x2_t) -> poly64x2_t {
16879 static_assert_uimm_bits!(LANE, 1);
16880 simd_insert!(src, LANE as u32, *ptr)
16881}
16882#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16883#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64)"]
16884#[doc = "## Safety"]
16885#[doc = " * Neon intrinsic unsafe"]
16886#[inline(always)]
16887#[cfg(target_arch = "arm")]
16888#[target_feature(enable = "neon,aes")]
16889#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16890#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
16891pub unsafe fn vld1_p64(ptr: *const p64) -> poly64x1_t {
16892 let a: *const i8 = ptr as *const i8;
16893 let b: i32 = crate::mem::align_of::<p64>() as i32;
16894 unsafe extern "unadjusted" {
16895 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v1i64")]
16896 fn _vld1_v1i64(a: *const i8, b: i32) -> int64x1_t;
16897 }
16898 transmute(_vld1_v1i64(a, b))
16899}
16900#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16901#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x2)"]
16902#[doc = "## Safety"]
16903#[doc = " * Neon intrinsic unsafe"]
16904#[inline(always)]
16905#[target_feature(enable = "neon,aes")]
16906#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16907#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16908#[cfg_attr(
16909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16910 assert_instr(ld)
16911)]
16912#[cfg_attr(
16913 not(target_arch = "arm"),
16914 stable(feature = "neon_intrinsics", since = "1.59.0")
16915)]
16916#[cfg_attr(
16917 target_arch = "arm",
16918 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16919)]
16920pub unsafe fn vld1_p64_x2(a: *const p64) -> poly64x1x2_t {
16921 crate::ptr::read_unaligned(a.cast())
16922}
16923#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x3)"]
16925#[doc = "## Safety"]
16926#[doc = " * Neon intrinsic unsafe"]
16927#[inline(always)]
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(ld)
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 vld1_p64_x3(a: *const p64) -> poly64x1x3_t {
16944 crate::ptr::read_unaligned(a.cast())
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/vld1_p64_x4)"]
16948#[doc = "## Safety"]
16949#[doc = " * Neon intrinsic unsafe"]
16950#[inline(always)]
16951#[target_feature(enable = "neon,aes")]
16952#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16954#[cfg_attr(
16955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16956 assert_instr(ld)
16957)]
16958#[cfg_attr(
16959 not(target_arch = "arm"),
16960 stable(feature = "neon_intrinsics", since = "1.59.0")
16961)]
16962#[cfg_attr(
16963 target_arch = "arm",
16964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16965)]
16966pub unsafe fn vld1_p64_x4(a: *const p64) -> poly64x1x4_t {
16967 crate::ptr::read_unaligned(a.cast())
16968}
16969#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x2)"]
16971#[doc = "## Safety"]
16972#[doc = " * Neon intrinsic unsafe"]
16973#[inline(always)]
16974#[target_feature(enable = "neon,aes")]
16975#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16976#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16977#[cfg_attr(
16978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16979 assert_instr(ld)
16980)]
16981#[cfg_attr(
16982 not(target_arch = "arm"),
16983 stable(feature = "neon_intrinsics", since = "1.59.0")
16984)]
16985#[cfg_attr(
16986 target_arch = "arm",
16987 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16988)]
16989pub unsafe fn vld1q_p64_x2(a: *const p64) -> poly64x2x2_t {
16990 crate::ptr::read_unaligned(a.cast())
16991}
16992#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x3)"]
16994#[doc = "## Safety"]
16995#[doc = " * Neon intrinsic unsafe"]
16996#[inline(always)]
16997#[target_feature(enable = "neon,aes")]
16998#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16999#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
17000#[cfg_attr(
17001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17002 assert_instr(ld)
17003)]
17004#[cfg_attr(
17005 not(target_arch = "arm"),
17006 stable(feature = "neon_intrinsics", since = "1.59.0")
17007)]
17008#[cfg_attr(
17009 target_arch = "arm",
17010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17011)]
17012pub unsafe fn vld1q_p64_x3(a: *const p64) -> poly64x2x3_t {
17013 crate::ptr::read_unaligned(a.cast())
17014}
17015#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x4)"]
17017#[doc = "## Safety"]
17018#[doc = " * Neon intrinsic unsafe"]
17019#[inline(always)]
17020#[target_feature(enable = "neon,aes")]
17021#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
17022#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
17023#[cfg_attr(
17024 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17025 assert_instr(ld)
17026)]
17027#[cfg_attr(
17028 not(target_arch = "arm"),
17029 stable(feature = "neon_intrinsics", since = "1.59.0")
17030)]
17031#[cfg_attr(
17032 target_arch = "arm",
17033 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17034)]
17035pub unsafe fn vld1q_p64_x4(a: *const p64) -> poly64x2x4_t {
17036 crate::ptr::read_unaligned(a.cast())
17037}
17038#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17039#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8)"]
17040#[doc = "## Safety"]
17041#[doc = " * Neon intrinsic unsafe"]
17042#[inline(always)]
17043#[cfg(target_arch = "arm")]
17044#[target_feature(enable = "neon,v7")]
17045#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17046#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
17047pub unsafe fn vld1_s8(ptr: *const i8) -> int8x8_t {
17048 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
17049 vld1_v8i8::<ALIGN>(ptr as *const i8)
17050}
17051#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8)"]
17053#[doc = "## Safety"]
17054#[doc = " * Neon intrinsic unsafe"]
17055#[inline(always)]
17056#[cfg(target_arch = "arm")]
17057#[target_feature(enable = "neon,v7")]
17058#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17059#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
17060pub unsafe fn vld1q_s8(ptr: *const i8) -> int8x16_t {
17061 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
17062 vld1q_v16i8::<ALIGN>(ptr as *const i8)
17063}
17064#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16)"]
17066#[doc = "## Safety"]
17067#[doc = " * Neon intrinsic unsafe"]
17068#[inline(always)]
17069#[cfg(target_arch = "arm")]
17070#[target_feature(enable = "neon,v7")]
17071#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17072#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
17073pub unsafe fn vld1_s16(ptr: *const i16) -> int16x4_t {
17074 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
17075 vld1_v4i16::<ALIGN>(ptr as *const i8)
17076}
17077#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16)"]
17079#[doc = "## Safety"]
17080#[doc = " * Neon intrinsic unsafe"]
17081#[inline(always)]
17082#[cfg(target_arch = "arm")]
17083#[target_feature(enable = "neon,v7")]
17084#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17085#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
17086pub unsafe fn vld1q_s16(ptr: *const i16) -> int16x8_t {
17087 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
17088 vld1q_v8i16::<ALIGN>(ptr as *const i8)
17089}
17090#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32)"]
17092#[doc = "## Safety"]
17093#[doc = " * Neon intrinsic unsafe"]
17094#[inline(always)]
17095#[cfg(target_arch = "arm")]
17096#[target_feature(enable = "neon,v7")]
17097#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17098#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
17099pub unsafe fn vld1_s32(ptr: *const i32) -> int32x2_t {
17100 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
17101 vld1_v2i32::<ALIGN>(ptr as *const i8)
17102}
17103#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32)"]
17105#[doc = "## Safety"]
17106#[doc = " * Neon intrinsic unsafe"]
17107#[inline(always)]
17108#[cfg(target_arch = "arm")]
17109#[target_feature(enable = "neon,v7")]
17110#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17111#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
17112pub unsafe fn vld1q_s32(ptr: *const i32) -> int32x4_t {
17113 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
17114 vld1q_v4i32::<ALIGN>(ptr as *const i8)
17115}
17116#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64)"]
17118#[doc = "## Safety"]
17119#[doc = " * Neon intrinsic unsafe"]
17120#[inline(always)]
17121#[cfg(target_arch = "arm")]
17122#[target_feature(enable = "neon,v7")]
17123#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17124#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
17125pub unsafe fn vld1_s64(ptr: *const i64) -> int64x1_t {
17126 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
17127 vld1_v1i64::<ALIGN>(ptr as *const i8)
17128}
17129#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
17130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64)"]
17131#[doc = "## Safety"]
17132#[doc = " * Neon intrinsic unsafe"]
17133#[inline(always)]
17134#[cfg(target_arch = "arm")]
17135#[target_feature(enable = "neon,v7")]
17136#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
17137#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
17138pub unsafe fn vld1q_s64(ptr: *const i64) -> int64x2_t {
17139 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
17140 vld1q_v2i64::<ALIGN>(ptr as *const i8)
17141}
17142#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17143#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x2)"]
17144#[doc = "## Safety"]
17145#[doc = " * Neon intrinsic unsafe"]
17146#[inline(always)]
17147#[target_feature(enable = "neon")]
17148#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17149#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17150#[cfg_attr(
17151 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17152 assert_instr(ld)
17153)]
17154#[cfg_attr(
17155 not(target_arch = "arm"),
17156 stable(feature = "neon_intrinsics", since = "1.59.0")
17157)]
17158#[cfg_attr(
17159 target_arch = "arm",
17160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17161)]
17162pub unsafe fn vld1_s8_x2(a: *const i8) -> int8x8x2_t {
17163 crate::ptr::read_unaligned(a.cast())
17164}
17165#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x3)"]
17167#[doc = "## Safety"]
17168#[doc = " * Neon intrinsic unsafe"]
17169#[inline(always)]
17170#[target_feature(enable = "neon")]
17171#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17172#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17173#[cfg_attr(
17174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17175 assert_instr(ld)
17176)]
17177#[cfg_attr(
17178 not(target_arch = "arm"),
17179 stable(feature = "neon_intrinsics", since = "1.59.0")
17180)]
17181#[cfg_attr(
17182 target_arch = "arm",
17183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17184)]
17185pub unsafe fn vld1_s8_x3(a: *const i8) -> int8x8x3_t {
17186 crate::ptr::read_unaligned(a.cast())
17187}
17188#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x4)"]
17190#[doc = "## Safety"]
17191#[doc = " * Neon intrinsic unsafe"]
17192#[inline(always)]
17193#[target_feature(enable = "neon")]
17194#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17195#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17196#[cfg_attr(
17197 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17198 assert_instr(ld)
17199)]
17200#[cfg_attr(
17201 not(target_arch = "arm"),
17202 stable(feature = "neon_intrinsics", since = "1.59.0")
17203)]
17204#[cfg_attr(
17205 target_arch = "arm",
17206 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17207)]
17208pub unsafe fn vld1_s8_x4(a: *const i8) -> int8x8x4_t {
17209 crate::ptr::read_unaligned(a.cast())
17210}
17211#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x2)"]
17213#[doc = "## Safety"]
17214#[doc = " * Neon intrinsic unsafe"]
17215#[inline(always)]
17216#[target_feature(enable = "neon")]
17217#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17218#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17219#[cfg_attr(
17220 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17221 assert_instr(ld)
17222)]
17223#[cfg_attr(
17224 not(target_arch = "arm"),
17225 stable(feature = "neon_intrinsics", since = "1.59.0")
17226)]
17227#[cfg_attr(
17228 target_arch = "arm",
17229 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17230)]
17231pub unsafe fn vld1q_s8_x2(a: *const i8) -> int8x16x2_t {
17232 crate::ptr::read_unaligned(a.cast())
17233}
17234#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x3)"]
17236#[doc = "## Safety"]
17237#[doc = " * Neon intrinsic unsafe"]
17238#[inline(always)]
17239#[target_feature(enable = "neon")]
17240#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17241#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17242#[cfg_attr(
17243 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17244 assert_instr(ld)
17245)]
17246#[cfg_attr(
17247 not(target_arch = "arm"),
17248 stable(feature = "neon_intrinsics", since = "1.59.0")
17249)]
17250#[cfg_attr(
17251 target_arch = "arm",
17252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17253)]
17254pub unsafe fn vld1q_s8_x3(a: *const i8) -> int8x16x3_t {
17255 crate::ptr::read_unaligned(a.cast())
17256}
17257#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x4)"]
17259#[doc = "## Safety"]
17260#[doc = " * Neon intrinsic unsafe"]
17261#[inline(always)]
17262#[target_feature(enable = "neon")]
17263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17264#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17265#[cfg_attr(
17266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17267 assert_instr(ld)
17268)]
17269#[cfg_attr(
17270 not(target_arch = "arm"),
17271 stable(feature = "neon_intrinsics", since = "1.59.0")
17272)]
17273#[cfg_attr(
17274 target_arch = "arm",
17275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17276)]
17277pub unsafe fn vld1q_s8_x4(a: *const i8) -> int8x16x4_t {
17278 crate::ptr::read_unaligned(a.cast())
17279}
17280#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16_x2)"]
17282#[doc = "## Safety"]
17283#[doc = " * Neon intrinsic unsafe"]
17284#[inline(always)]
17285#[target_feature(enable = "neon")]
17286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17287#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17288#[cfg_attr(
17289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17290 assert_instr(ld)
17291)]
17292#[cfg_attr(
17293 not(target_arch = "arm"),
17294 stable(feature = "neon_intrinsics", since = "1.59.0")
17295)]
17296#[cfg_attr(
17297 target_arch = "arm",
17298 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17299)]
17300pub unsafe fn vld1_s16_x2(a: *const i16) -> int16x4x2_t {
17301 crate::ptr::read_unaligned(a.cast())
17302}
17303#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16_x3)"]
17305#[doc = "## Safety"]
17306#[doc = " * Neon intrinsic unsafe"]
17307#[inline(always)]
17308#[target_feature(enable = "neon")]
17309#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17310#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17311#[cfg_attr(
17312 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17313 assert_instr(ld)
17314)]
17315#[cfg_attr(
17316 not(target_arch = "arm"),
17317 stable(feature = "neon_intrinsics", since = "1.59.0")
17318)]
17319#[cfg_attr(
17320 target_arch = "arm",
17321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17322)]
17323pub unsafe fn vld1_s16_x3(a: *const i16) -> int16x4x3_t {
17324 crate::ptr::read_unaligned(a.cast())
17325}
17326#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16_x4)"]
17328#[doc = "## Safety"]
17329#[doc = " * Neon intrinsic unsafe"]
17330#[inline(always)]
17331#[target_feature(enable = "neon")]
17332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17333#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17334#[cfg_attr(
17335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17336 assert_instr(ld)
17337)]
17338#[cfg_attr(
17339 not(target_arch = "arm"),
17340 stable(feature = "neon_intrinsics", since = "1.59.0")
17341)]
17342#[cfg_attr(
17343 target_arch = "arm",
17344 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17345)]
17346pub unsafe fn vld1_s16_x4(a: *const i16) -> int16x4x4_t {
17347 crate::ptr::read_unaligned(a.cast())
17348}
17349#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16_x2)"]
17351#[doc = "## Safety"]
17352#[doc = " * Neon intrinsic unsafe"]
17353#[inline(always)]
17354#[target_feature(enable = "neon")]
17355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17356#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17357#[cfg_attr(
17358 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17359 assert_instr(ld)
17360)]
17361#[cfg_attr(
17362 not(target_arch = "arm"),
17363 stable(feature = "neon_intrinsics", since = "1.59.0")
17364)]
17365#[cfg_attr(
17366 target_arch = "arm",
17367 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17368)]
17369pub unsafe fn vld1q_s16_x2(a: *const i16) -> int16x8x2_t {
17370 crate::ptr::read_unaligned(a.cast())
17371}
17372#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16_x3)"]
17374#[doc = "## Safety"]
17375#[doc = " * Neon intrinsic unsafe"]
17376#[inline(always)]
17377#[target_feature(enable = "neon")]
17378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17379#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17380#[cfg_attr(
17381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17382 assert_instr(ld)
17383)]
17384#[cfg_attr(
17385 not(target_arch = "arm"),
17386 stable(feature = "neon_intrinsics", since = "1.59.0")
17387)]
17388#[cfg_attr(
17389 target_arch = "arm",
17390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17391)]
17392pub unsafe fn vld1q_s16_x3(a: *const i16) -> int16x8x3_t {
17393 crate::ptr::read_unaligned(a.cast())
17394}
17395#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16_x4)"]
17397#[doc = "## Safety"]
17398#[doc = " * Neon intrinsic unsafe"]
17399#[inline(always)]
17400#[target_feature(enable = "neon")]
17401#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17402#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17403#[cfg_attr(
17404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17405 assert_instr(ld)
17406)]
17407#[cfg_attr(
17408 not(target_arch = "arm"),
17409 stable(feature = "neon_intrinsics", since = "1.59.0")
17410)]
17411#[cfg_attr(
17412 target_arch = "arm",
17413 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17414)]
17415pub unsafe fn vld1q_s16_x4(a: *const i16) -> int16x8x4_t {
17416 crate::ptr::read_unaligned(a.cast())
17417}
17418#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32_x2)"]
17420#[doc = "## Safety"]
17421#[doc = " * Neon intrinsic unsafe"]
17422#[inline(always)]
17423#[target_feature(enable = "neon")]
17424#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17425#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17426#[cfg_attr(
17427 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17428 assert_instr(ld)
17429)]
17430#[cfg_attr(
17431 not(target_arch = "arm"),
17432 stable(feature = "neon_intrinsics", since = "1.59.0")
17433)]
17434#[cfg_attr(
17435 target_arch = "arm",
17436 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17437)]
17438pub unsafe fn vld1_s32_x2(a: *const i32) -> int32x2x2_t {
17439 crate::ptr::read_unaligned(a.cast())
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/vld1_s32_x3)"]
17443#[doc = "## Safety"]
17444#[doc = " * Neon intrinsic unsafe"]
17445#[inline(always)]
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(vld))]
17449#[cfg_attr(
17450 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17451 assert_instr(ld)
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 vld1_s32_x3(a: *const i32) -> int32x2x3_t {
17462 crate::ptr::read_unaligned(a.cast())
17463}
17464#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32_x4)"]
17466#[doc = "## Safety"]
17467#[doc = " * Neon intrinsic unsafe"]
17468#[inline(always)]
17469#[target_feature(enable = "neon")]
17470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17472#[cfg_attr(
17473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17474 assert_instr(ld)
17475)]
17476#[cfg_attr(
17477 not(target_arch = "arm"),
17478 stable(feature = "neon_intrinsics", since = "1.59.0")
17479)]
17480#[cfg_attr(
17481 target_arch = "arm",
17482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17483)]
17484pub unsafe fn vld1_s32_x4(a: *const i32) -> int32x2x4_t {
17485 crate::ptr::read_unaligned(a.cast())
17486}
17487#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32_x2)"]
17489#[doc = "## Safety"]
17490#[doc = " * Neon intrinsic unsafe"]
17491#[inline(always)]
17492#[target_feature(enable = "neon")]
17493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17494#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17495#[cfg_attr(
17496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17497 assert_instr(ld)
17498)]
17499#[cfg_attr(
17500 not(target_arch = "arm"),
17501 stable(feature = "neon_intrinsics", since = "1.59.0")
17502)]
17503#[cfg_attr(
17504 target_arch = "arm",
17505 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17506)]
17507pub unsafe fn vld1q_s32_x2(a: *const i32) -> int32x4x2_t {
17508 crate::ptr::read_unaligned(a.cast())
17509}
17510#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17511#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32_x3)"]
17512#[doc = "## Safety"]
17513#[doc = " * Neon intrinsic unsafe"]
17514#[inline(always)]
17515#[target_feature(enable = "neon")]
17516#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17517#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17518#[cfg_attr(
17519 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17520 assert_instr(ld)
17521)]
17522#[cfg_attr(
17523 not(target_arch = "arm"),
17524 stable(feature = "neon_intrinsics", since = "1.59.0")
17525)]
17526#[cfg_attr(
17527 target_arch = "arm",
17528 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17529)]
17530pub unsafe fn vld1q_s32_x3(a: *const i32) -> int32x4x3_t {
17531 crate::ptr::read_unaligned(a.cast())
17532}
17533#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32_x4)"]
17535#[doc = "## Safety"]
17536#[doc = " * Neon intrinsic unsafe"]
17537#[inline(always)]
17538#[target_feature(enable = "neon")]
17539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17540#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17541#[cfg_attr(
17542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17543 assert_instr(ld)
17544)]
17545#[cfg_attr(
17546 not(target_arch = "arm"),
17547 stable(feature = "neon_intrinsics", since = "1.59.0")
17548)]
17549#[cfg_attr(
17550 target_arch = "arm",
17551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17552)]
17553pub unsafe fn vld1q_s32_x4(a: *const i32) -> int32x4x4_t {
17554 crate::ptr::read_unaligned(a.cast())
17555}
17556#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64_x2)"]
17558#[doc = "## Safety"]
17559#[doc = " * Neon intrinsic unsafe"]
17560#[inline(always)]
17561#[target_feature(enable = "neon")]
17562#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17563#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17564#[cfg_attr(
17565 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17566 assert_instr(ld)
17567)]
17568#[cfg_attr(
17569 not(target_arch = "arm"),
17570 stable(feature = "neon_intrinsics", since = "1.59.0")
17571)]
17572#[cfg_attr(
17573 target_arch = "arm",
17574 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17575)]
17576pub unsafe fn vld1_s64_x2(a: *const i64) -> int64x1x2_t {
17577 crate::ptr::read_unaligned(a.cast())
17578}
17579#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17580#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64_x3)"]
17581#[doc = "## Safety"]
17582#[doc = " * Neon intrinsic unsafe"]
17583#[inline(always)]
17584#[target_feature(enable = "neon")]
17585#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17586#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17587#[cfg_attr(
17588 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17589 assert_instr(ld)
17590)]
17591#[cfg_attr(
17592 not(target_arch = "arm"),
17593 stable(feature = "neon_intrinsics", since = "1.59.0")
17594)]
17595#[cfg_attr(
17596 target_arch = "arm",
17597 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17598)]
17599pub unsafe fn vld1_s64_x3(a: *const i64) -> int64x1x3_t {
17600 crate::ptr::read_unaligned(a.cast())
17601}
17602#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64_x4)"]
17604#[doc = "## Safety"]
17605#[doc = " * Neon intrinsic unsafe"]
17606#[inline(always)]
17607#[target_feature(enable = "neon")]
17608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17610#[cfg_attr(
17611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17612 assert_instr(ld)
17613)]
17614#[cfg_attr(
17615 not(target_arch = "arm"),
17616 stable(feature = "neon_intrinsics", since = "1.59.0")
17617)]
17618#[cfg_attr(
17619 target_arch = "arm",
17620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17621)]
17622pub unsafe fn vld1_s64_x4(a: *const i64) -> int64x1x4_t {
17623 crate::ptr::read_unaligned(a.cast())
17624}
17625#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64_x2)"]
17627#[doc = "## Safety"]
17628#[doc = " * Neon intrinsic unsafe"]
17629#[inline(always)]
17630#[target_feature(enable = "neon")]
17631#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17633#[cfg_attr(
17634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17635 assert_instr(ld)
17636)]
17637#[cfg_attr(
17638 not(target_arch = "arm"),
17639 stable(feature = "neon_intrinsics", since = "1.59.0")
17640)]
17641#[cfg_attr(
17642 target_arch = "arm",
17643 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17644)]
17645pub unsafe fn vld1q_s64_x2(a: *const i64) -> int64x2x2_t {
17646 crate::ptr::read_unaligned(a.cast())
17647}
17648#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64_x3)"]
17650#[doc = "## Safety"]
17651#[doc = " * Neon intrinsic unsafe"]
17652#[inline(always)]
17653#[target_feature(enable = "neon")]
17654#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17655#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17656#[cfg_attr(
17657 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17658 assert_instr(ld)
17659)]
17660#[cfg_attr(
17661 not(target_arch = "arm"),
17662 stable(feature = "neon_intrinsics", since = "1.59.0")
17663)]
17664#[cfg_attr(
17665 target_arch = "arm",
17666 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17667)]
17668pub unsafe fn vld1q_s64_x3(a: *const i64) -> int64x2x3_t {
17669 crate::ptr::read_unaligned(a.cast())
17670}
17671#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64_x4)"]
17673#[doc = "## Safety"]
17674#[doc = " * Neon intrinsic unsafe"]
17675#[inline(always)]
17676#[target_feature(enable = "neon")]
17677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17678#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17679#[cfg_attr(
17680 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17681 assert_instr(ld)
17682)]
17683#[cfg_attr(
17684 not(target_arch = "arm"),
17685 stable(feature = "neon_intrinsics", since = "1.59.0")
17686)]
17687#[cfg_attr(
17688 target_arch = "arm",
17689 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17690)]
17691pub unsafe fn vld1q_s64_x4(a: *const i64) -> int64x2x4_t {
17692 crate::ptr::read_unaligned(a.cast())
17693}
17694#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x2)"]
17696#[doc = "## Safety"]
17697#[doc = " * Neon intrinsic unsafe"]
17698#[inline(always)]
17699#[target_feature(enable = "neon")]
17700#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17701#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17702#[cfg_attr(
17703 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17704 assert_instr(ld)
17705)]
17706#[cfg_attr(
17707 not(target_arch = "arm"),
17708 stable(feature = "neon_intrinsics", since = "1.59.0")
17709)]
17710#[cfg_attr(
17711 target_arch = "arm",
17712 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17713)]
17714pub unsafe fn vld1_u8_x2(a: *const u8) -> uint8x8x2_t {
17715 crate::ptr::read_unaligned(a.cast())
17716}
17717#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x3)"]
17719#[doc = "## Safety"]
17720#[doc = " * Neon intrinsic unsafe"]
17721#[inline(always)]
17722#[target_feature(enable = "neon")]
17723#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17724#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17725#[cfg_attr(
17726 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17727 assert_instr(ld)
17728)]
17729#[cfg_attr(
17730 not(target_arch = "arm"),
17731 stable(feature = "neon_intrinsics", since = "1.59.0")
17732)]
17733#[cfg_attr(
17734 target_arch = "arm",
17735 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17736)]
17737pub unsafe fn vld1_u8_x3(a: *const u8) -> uint8x8x3_t {
17738 crate::ptr::read_unaligned(a.cast())
17739}
17740#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8_x4)"]
17742#[doc = "## Safety"]
17743#[doc = " * Neon intrinsic unsafe"]
17744#[inline(always)]
17745#[target_feature(enable = "neon")]
17746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17748#[cfg_attr(
17749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17750 assert_instr(ld)
17751)]
17752#[cfg_attr(
17753 not(target_arch = "arm"),
17754 stable(feature = "neon_intrinsics", since = "1.59.0")
17755)]
17756#[cfg_attr(
17757 target_arch = "arm",
17758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17759)]
17760pub unsafe fn vld1_u8_x4(a: *const u8) -> uint8x8x4_t {
17761 crate::ptr::read_unaligned(a.cast())
17762}
17763#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x2)"]
17765#[doc = "## Safety"]
17766#[doc = " * Neon intrinsic unsafe"]
17767#[inline(always)]
17768#[target_feature(enable = "neon")]
17769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17771#[cfg_attr(
17772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17773 assert_instr(ld)
17774)]
17775#[cfg_attr(
17776 not(target_arch = "arm"),
17777 stable(feature = "neon_intrinsics", since = "1.59.0")
17778)]
17779#[cfg_attr(
17780 target_arch = "arm",
17781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17782)]
17783pub unsafe fn vld1q_u8_x2(a: *const u8) -> uint8x16x2_t {
17784 crate::ptr::read_unaligned(a.cast())
17785}
17786#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17787#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x3)"]
17788#[doc = "## Safety"]
17789#[doc = " * Neon intrinsic unsafe"]
17790#[inline(always)]
17791#[target_feature(enable = "neon")]
17792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17793#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17794#[cfg_attr(
17795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17796 assert_instr(ld)
17797)]
17798#[cfg_attr(
17799 not(target_arch = "arm"),
17800 stable(feature = "neon_intrinsics", since = "1.59.0")
17801)]
17802#[cfg_attr(
17803 target_arch = "arm",
17804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17805)]
17806pub unsafe fn vld1q_u8_x3(a: *const u8) -> uint8x16x3_t {
17807 crate::ptr::read_unaligned(a.cast())
17808}
17809#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8_x4)"]
17811#[doc = "## Safety"]
17812#[doc = " * Neon intrinsic unsafe"]
17813#[inline(always)]
17814#[target_feature(enable = "neon")]
17815#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17816#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17817#[cfg_attr(
17818 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17819 assert_instr(ld)
17820)]
17821#[cfg_attr(
17822 not(target_arch = "arm"),
17823 stable(feature = "neon_intrinsics", since = "1.59.0")
17824)]
17825#[cfg_attr(
17826 target_arch = "arm",
17827 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17828)]
17829pub unsafe fn vld1q_u8_x4(a: *const u8) -> uint8x16x4_t {
17830 crate::ptr::read_unaligned(a.cast())
17831}
17832#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x2)"]
17834#[doc = "## Safety"]
17835#[doc = " * Neon intrinsic unsafe"]
17836#[inline(always)]
17837#[target_feature(enable = "neon")]
17838#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17839#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17840#[cfg_attr(
17841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17842 assert_instr(ld)
17843)]
17844#[cfg_attr(
17845 not(target_arch = "arm"),
17846 stable(feature = "neon_intrinsics", since = "1.59.0")
17847)]
17848#[cfg_attr(
17849 target_arch = "arm",
17850 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17851)]
17852pub unsafe fn vld1_u16_x2(a: *const u16) -> uint16x4x2_t {
17853 crate::ptr::read_unaligned(a.cast())
17854}
17855#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x3)"]
17857#[doc = "## Safety"]
17858#[doc = " * Neon intrinsic unsafe"]
17859#[inline(always)]
17860#[target_feature(enable = "neon")]
17861#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17862#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17863#[cfg_attr(
17864 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17865 assert_instr(ld)
17866)]
17867#[cfg_attr(
17868 not(target_arch = "arm"),
17869 stable(feature = "neon_intrinsics", since = "1.59.0")
17870)]
17871#[cfg_attr(
17872 target_arch = "arm",
17873 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17874)]
17875pub unsafe fn vld1_u16_x3(a: *const u16) -> uint16x4x3_t {
17876 crate::ptr::read_unaligned(a.cast())
17877}
17878#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17879#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16_x4)"]
17880#[doc = "## Safety"]
17881#[doc = " * Neon intrinsic unsafe"]
17882#[inline(always)]
17883#[target_feature(enable = "neon")]
17884#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17885#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17886#[cfg_attr(
17887 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17888 assert_instr(ld)
17889)]
17890#[cfg_attr(
17891 not(target_arch = "arm"),
17892 stable(feature = "neon_intrinsics", since = "1.59.0")
17893)]
17894#[cfg_attr(
17895 target_arch = "arm",
17896 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17897)]
17898pub unsafe fn vld1_u16_x4(a: *const u16) -> uint16x4x4_t {
17899 crate::ptr::read_unaligned(a.cast())
17900}
17901#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x2)"]
17903#[doc = "## Safety"]
17904#[doc = " * Neon intrinsic unsafe"]
17905#[inline(always)]
17906#[target_feature(enable = "neon")]
17907#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17908#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17909#[cfg_attr(
17910 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17911 assert_instr(ld)
17912)]
17913#[cfg_attr(
17914 not(target_arch = "arm"),
17915 stable(feature = "neon_intrinsics", since = "1.59.0")
17916)]
17917#[cfg_attr(
17918 target_arch = "arm",
17919 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17920)]
17921pub unsafe fn vld1q_u16_x2(a: *const u16) -> uint16x8x2_t {
17922 crate::ptr::read_unaligned(a.cast())
17923}
17924#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x3)"]
17926#[doc = "## Safety"]
17927#[doc = " * Neon intrinsic unsafe"]
17928#[inline(always)]
17929#[target_feature(enable = "neon")]
17930#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17931#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17932#[cfg_attr(
17933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17934 assert_instr(ld)
17935)]
17936#[cfg_attr(
17937 not(target_arch = "arm"),
17938 stable(feature = "neon_intrinsics", since = "1.59.0")
17939)]
17940#[cfg_attr(
17941 target_arch = "arm",
17942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17943)]
17944pub unsafe fn vld1q_u16_x3(a: *const u16) -> uint16x8x3_t {
17945 crate::ptr::read_unaligned(a.cast())
17946}
17947#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16_x4)"]
17949#[doc = "## Safety"]
17950#[doc = " * Neon intrinsic unsafe"]
17951#[inline(always)]
17952#[target_feature(enable = "neon")]
17953#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17954#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17955#[cfg_attr(
17956 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17957 assert_instr(ld)
17958)]
17959#[cfg_attr(
17960 not(target_arch = "arm"),
17961 stable(feature = "neon_intrinsics", since = "1.59.0")
17962)]
17963#[cfg_attr(
17964 target_arch = "arm",
17965 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17966)]
17967pub unsafe fn vld1q_u16_x4(a: *const u16) -> uint16x8x4_t {
17968 crate::ptr::read_unaligned(a.cast())
17969}
17970#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17971#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x2)"]
17972#[doc = "## Safety"]
17973#[doc = " * Neon intrinsic unsafe"]
17974#[inline(always)]
17975#[target_feature(enable = "neon")]
17976#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17977#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17978#[cfg_attr(
17979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17980 assert_instr(ld)
17981)]
17982#[cfg_attr(
17983 not(target_arch = "arm"),
17984 stable(feature = "neon_intrinsics", since = "1.59.0")
17985)]
17986#[cfg_attr(
17987 target_arch = "arm",
17988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17989)]
17990pub unsafe fn vld1_u32_x2(a: *const u32) -> uint32x2x2_t {
17991 crate::ptr::read_unaligned(a.cast())
17992}
17993#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x3)"]
17995#[doc = "## Safety"]
17996#[doc = " * Neon intrinsic unsafe"]
17997#[inline(always)]
17998#[target_feature(enable = "neon")]
17999#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18000#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18001#[cfg_attr(
18002 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18003 assert_instr(ld)
18004)]
18005#[cfg_attr(
18006 not(target_arch = "arm"),
18007 stable(feature = "neon_intrinsics", since = "1.59.0")
18008)]
18009#[cfg_attr(
18010 target_arch = "arm",
18011 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18012)]
18013pub unsafe fn vld1_u32_x3(a: *const u32) -> uint32x2x3_t {
18014 crate::ptr::read_unaligned(a.cast())
18015}
18016#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32_x4)"]
18018#[doc = "## Safety"]
18019#[doc = " * Neon intrinsic unsafe"]
18020#[inline(always)]
18021#[target_feature(enable = "neon")]
18022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18023#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18024#[cfg_attr(
18025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18026 assert_instr(ld)
18027)]
18028#[cfg_attr(
18029 not(target_arch = "arm"),
18030 stable(feature = "neon_intrinsics", since = "1.59.0")
18031)]
18032#[cfg_attr(
18033 target_arch = "arm",
18034 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18035)]
18036pub unsafe fn vld1_u32_x4(a: *const u32) -> uint32x2x4_t {
18037 crate::ptr::read_unaligned(a.cast())
18038}
18039#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x2)"]
18041#[doc = "## Safety"]
18042#[doc = " * Neon intrinsic unsafe"]
18043#[inline(always)]
18044#[target_feature(enable = "neon")]
18045#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18046#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18047#[cfg_attr(
18048 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18049 assert_instr(ld)
18050)]
18051#[cfg_attr(
18052 not(target_arch = "arm"),
18053 stable(feature = "neon_intrinsics", since = "1.59.0")
18054)]
18055#[cfg_attr(
18056 target_arch = "arm",
18057 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18058)]
18059pub unsafe fn vld1q_u32_x2(a: *const u32) -> uint32x4x2_t {
18060 crate::ptr::read_unaligned(a.cast())
18061}
18062#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x3)"]
18064#[doc = "## Safety"]
18065#[doc = " * Neon intrinsic unsafe"]
18066#[inline(always)]
18067#[target_feature(enable = "neon")]
18068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18069#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18070#[cfg_attr(
18071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18072 assert_instr(ld)
18073)]
18074#[cfg_attr(
18075 not(target_arch = "arm"),
18076 stable(feature = "neon_intrinsics", since = "1.59.0")
18077)]
18078#[cfg_attr(
18079 target_arch = "arm",
18080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18081)]
18082pub unsafe fn vld1q_u32_x3(a: *const u32) -> uint32x4x3_t {
18083 crate::ptr::read_unaligned(a.cast())
18084}
18085#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18086#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32_x4)"]
18087#[doc = "## Safety"]
18088#[doc = " * Neon intrinsic unsafe"]
18089#[inline(always)]
18090#[target_feature(enable = "neon")]
18091#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18092#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18093#[cfg_attr(
18094 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18095 assert_instr(ld)
18096)]
18097#[cfg_attr(
18098 not(target_arch = "arm"),
18099 stable(feature = "neon_intrinsics", since = "1.59.0")
18100)]
18101#[cfg_attr(
18102 target_arch = "arm",
18103 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18104)]
18105pub unsafe fn vld1q_u32_x4(a: *const u32) -> uint32x4x4_t {
18106 crate::ptr::read_unaligned(a.cast())
18107}
18108#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64_x2)"]
18110#[doc = "## Safety"]
18111#[doc = " * Neon intrinsic unsafe"]
18112#[inline(always)]
18113#[target_feature(enable = "neon")]
18114#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18115#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18116#[cfg_attr(
18117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18118 assert_instr(ld)
18119)]
18120#[cfg_attr(
18121 not(target_arch = "arm"),
18122 stable(feature = "neon_intrinsics", since = "1.59.0")
18123)]
18124#[cfg_attr(
18125 target_arch = "arm",
18126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18127)]
18128pub unsafe fn vld1_u64_x2(a: *const u64) -> uint64x1x2_t {
18129 crate::ptr::read_unaligned(a.cast())
18130}
18131#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18132#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64_x3)"]
18133#[doc = "## Safety"]
18134#[doc = " * Neon intrinsic unsafe"]
18135#[inline(always)]
18136#[target_feature(enable = "neon")]
18137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18138#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18139#[cfg_attr(
18140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18141 assert_instr(ld)
18142)]
18143#[cfg_attr(
18144 not(target_arch = "arm"),
18145 stable(feature = "neon_intrinsics", since = "1.59.0")
18146)]
18147#[cfg_attr(
18148 target_arch = "arm",
18149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18150)]
18151pub unsafe fn vld1_u64_x3(a: *const u64) -> uint64x1x3_t {
18152 crate::ptr::read_unaligned(a.cast())
18153}
18154#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64_x4)"]
18156#[doc = "## Safety"]
18157#[doc = " * Neon intrinsic unsafe"]
18158#[inline(always)]
18159#[target_feature(enable = "neon")]
18160#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18161#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18162#[cfg_attr(
18163 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18164 assert_instr(ld)
18165)]
18166#[cfg_attr(
18167 not(target_arch = "arm"),
18168 stable(feature = "neon_intrinsics", since = "1.59.0")
18169)]
18170#[cfg_attr(
18171 target_arch = "arm",
18172 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18173)]
18174pub unsafe fn vld1_u64_x4(a: *const u64) -> uint64x1x4_t {
18175 crate::ptr::read_unaligned(a.cast())
18176}
18177#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x2)"]
18179#[doc = "## Safety"]
18180#[doc = " * Neon intrinsic unsafe"]
18181#[inline(always)]
18182#[target_feature(enable = "neon")]
18183#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18184#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18185#[cfg_attr(
18186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18187 assert_instr(ld)
18188)]
18189#[cfg_attr(
18190 not(target_arch = "arm"),
18191 stable(feature = "neon_intrinsics", since = "1.59.0")
18192)]
18193#[cfg_attr(
18194 target_arch = "arm",
18195 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18196)]
18197pub unsafe fn vld1q_u64_x2(a: *const u64) -> uint64x2x2_t {
18198 crate::ptr::read_unaligned(a.cast())
18199}
18200#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18201#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x3)"]
18202#[doc = "## Safety"]
18203#[doc = " * Neon intrinsic unsafe"]
18204#[inline(always)]
18205#[target_feature(enable = "neon")]
18206#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18207#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18208#[cfg_attr(
18209 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18210 assert_instr(ld)
18211)]
18212#[cfg_attr(
18213 not(target_arch = "arm"),
18214 stable(feature = "neon_intrinsics", since = "1.59.0")
18215)]
18216#[cfg_attr(
18217 target_arch = "arm",
18218 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18219)]
18220pub unsafe fn vld1q_u64_x3(a: *const u64) -> uint64x2x3_t {
18221 crate::ptr::read_unaligned(a.cast())
18222}
18223#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64_x4)"]
18225#[doc = "## Safety"]
18226#[doc = " * Neon intrinsic unsafe"]
18227#[inline(always)]
18228#[target_feature(enable = "neon")]
18229#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18230#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18231#[cfg_attr(
18232 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18233 assert_instr(ld)
18234)]
18235#[cfg_attr(
18236 not(target_arch = "arm"),
18237 stable(feature = "neon_intrinsics", since = "1.59.0")
18238)]
18239#[cfg_attr(
18240 target_arch = "arm",
18241 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18242)]
18243pub unsafe fn vld1q_u64_x4(a: *const u64) -> uint64x2x4_t {
18244 crate::ptr::read_unaligned(a.cast())
18245}
18246#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x2)"]
18248#[doc = "## Safety"]
18249#[doc = " * Neon intrinsic unsafe"]
18250#[inline(always)]
18251#[target_feature(enable = "neon")]
18252#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18253#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18254#[cfg_attr(
18255 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18256 assert_instr(ld)
18257)]
18258#[cfg_attr(
18259 not(target_arch = "arm"),
18260 stable(feature = "neon_intrinsics", since = "1.59.0")
18261)]
18262#[cfg_attr(
18263 target_arch = "arm",
18264 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18265)]
18266pub unsafe fn vld1_p8_x2(a: *const p8) -> poly8x8x2_t {
18267 crate::ptr::read_unaligned(a.cast())
18268}
18269#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8_x3)"]
18271#[doc = "## Safety"]
18272#[doc = " * Neon intrinsic unsafe"]
18273#[inline(always)]
18274#[target_feature(enable = "neon")]
18275#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18276#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18277#[cfg_attr(
18278 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18279 assert_instr(ld)
18280)]
18281#[cfg_attr(
18282 not(target_arch = "arm"),
18283 stable(feature = "neon_intrinsics", since = "1.59.0")
18284)]
18285#[cfg_attr(
18286 target_arch = "arm",
18287 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18288)]
18289pub unsafe fn vld1_p8_x3(a: *const p8) -> poly8x8x3_t {
18290 crate::ptr::read_unaligned(a.cast())
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_p8_x4)"]
18294#[doc = "## Safety"]
18295#[doc = " * Neon intrinsic unsafe"]
18296#[inline(always)]
18297#[target_feature(enable = "neon")]
18298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18299#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18300#[cfg_attr(
18301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18302 assert_instr(ld)
18303)]
18304#[cfg_attr(
18305 not(target_arch = "arm"),
18306 stable(feature = "neon_intrinsics", since = "1.59.0")
18307)]
18308#[cfg_attr(
18309 target_arch = "arm",
18310 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18311)]
18312pub unsafe fn vld1_p8_x4(a: *const p8) -> poly8x8x4_t {
18313 crate::ptr::read_unaligned(a.cast())
18314}
18315#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18316#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x2)"]
18317#[doc = "## Safety"]
18318#[doc = " * Neon intrinsic unsafe"]
18319#[inline(always)]
18320#[target_feature(enable = "neon")]
18321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18322#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18323#[cfg_attr(
18324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18325 assert_instr(ld)
18326)]
18327#[cfg_attr(
18328 not(target_arch = "arm"),
18329 stable(feature = "neon_intrinsics", since = "1.59.0")
18330)]
18331#[cfg_attr(
18332 target_arch = "arm",
18333 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18334)]
18335pub unsafe fn vld1q_p8_x2(a: *const p8) -> poly8x16x2_t {
18336 crate::ptr::read_unaligned(a.cast())
18337}
18338#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x3)"]
18340#[doc = "## Safety"]
18341#[doc = " * Neon intrinsic unsafe"]
18342#[inline(always)]
18343#[target_feature(enable = "neon")]
18344#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18345#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18346#[cfg_attr(
18347 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18348 assert_instr(ld)
18349)]
18350#[cfg_attr(
18351 not(target_arch = "arm"),
18352 stable(feature = "neon_intrinsics", since = "1.59.0")
18353)]
18354#[cfg_attr(
18355 target_arch = "arm",
18356 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18357)]
18358pub unsafe fn vld1q_p8_x3(a: *const p8) -> poly8x16x3_t {
18359 crate::ptr::read_unaligned(a.cast())
18360}
18361#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8_x4)"]
18363#[doc = "## Safety"]
18364#[doc = " * Neon intrinsic unsafe"]
18365#[inline(always)]
18366#[target_feature(enable = "neon")]
18367#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18368#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18369#[cfg_attr(
18370 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18371 assert_instr(ld)
18372)]
18373#[cfg_attr(
18374 not(target_arch = "arm"),
18375 stable(feature = "neon_intrinsics", since = "1.59.0")
18376)]
18377#[cfg_attr(
18378 target_arch = "arm",
18379 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18380)]
18381pub unsafe fn vld1q_p8_x4(a: *const p8) -> poly8x16x4_t {
18382 crate::ptr::read_unaligned(a.cast())
18383}
18384#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x2)"]
18386#[doc = "## Safety"]
18387#[doc = " * Neon intrinsic unsafe"]
18388#[inline(always)]
18389#[target_feature(enable = "neon")]
18390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18391#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18392#[cfg_attr(
18393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18394 assert_instr(ld)
18395)]
18396#[cfg_attr(
18397 not(target_arch = "arm"),
18398 stable(feature = "neon_intrinsics", since = "1.59.0")
18399)]
18400#[cfg_attr(
18401 target_arch = "arm",
18402 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18403)]
18404pub unsafe fn vld1_p16_x2(a: *const p16) -> poly16x4x2_t {
18405 crate::ptr::read_unaligned(a.cast())
18406}
18407#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x3)"]
18409#[doc = "## Safety"]
18410#[doc = " * Neon intrinsic unsafe"]
18411#[inline(always)]
18412#[target_feature(enable = "neon")]
18413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18414#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18415#[cfg_attr(
18416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18417 assert_instr(ld)
18418)]
18419#[cfg_attr(
18420 not(target_arch = "arm"),
18421 stable(feature = "neon_intrinsics", since = "1.59.0")
18422)]
18423#[cfg_attr(
18424 target_arch = "arm",
18425 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18426)]
18427pub unsafe fn vld1_p16_x3(a: *const p16) -> poly16x4x3_t {
18428 crate::ptr::read_unaligned(a.cast())
18429}
18430#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18431#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16_x4)"]
18432#[doc = "## Safety"]
18433#[doc = " * Neon intrinsic unsafe"]
18434#[inline(always)]
18435#[target_feature(enable = "neon")]
18436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18437#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18438#[cfg_attr(
18439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18440 assert_instr(ld)
18441)]
18442#[cfg_attr(
18443 not(target_arch = "arm"),
18444 stable(feature = "neon_intrinsics", since = "1.59.0")
18445)]
18446#[cfg_attr(
18447 target_arch = "arm",
18448 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18449)]
18450pub unsafe fn vld1_p16_x4(a: *const p16) -> poly16x4x4_t {
18451 crate::ptr::read_unaligned(a.cast())
18452}
18453#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x2)"]
18455#[doc = "## Safety"]
18456#[doc = " * Neon intrinsic unsafe"]
18457#[inline(always)]
18458#[target_feature(enable = "neon")]
18459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18460#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18461#[cfg_attr(
18462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18463 assert_instr(ld)
18464)]
18465#[cfg_attr(
18466 not(target_arch = "arm"),
18467 stable(feature = "neon_intrinsics", since = "1.59.0")
18468)]
18469#[cfg_attr(
18470 target_arch = "arm",
18471 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18472)]
18473pub unsafe fn vld1q_p16_x2(a: *const p16) -> poly16x8x2_t {
18474 crate::ptr::read_unaligned(a.cast())
18475}
18476#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x3)"]
18478#[doc = "## Safety"]
18479#[doc = " * Neon intrinsic unsafe"]
18480#[inline(always)]
18481#[target_feature(enable = "neon")]
18482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18483#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18484#[cfg_attr(
18485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18486 assert_instr(ld)
18487)]
18488#[cfg_attr(
18489 not(target_arch = "arm"),
18490 stable(feature = "neon_intrinsics", since = "1.59.0")
18491)]
18492#[cfg_attr(
18493 target_arch = "arm",
18494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18495)]
18496pub unsafe fn vld1q_p16_x3(a: *const p16) -> poly16x8x3_t {
18497 crate::ptr::read_unaligned(a.cast())
18498}
18499#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
18500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16_x4)"]
18501#[doc = "## Safety"]
18502#[doc = " * Neon intrinsic unsafe"]
18503#[inline(always)]
18504#[target_feature(enable = "neon")]
18505#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18506#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
18507#[cfg_attr(
18508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18509 assert_instr(ld)
18510)]
18511#[cfg_attr(
18512 not(target_arch = "arm"),
18513 stable(feature = "neon_intrinsics", since = "1.59.0")
18514)]
18515#[cfg_attr(
18516 target_arch = "arm",
18517 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18518)]
18519pub unsafe fn vld1q_p16_x4(a: *const p16) -> poly16x8x4_t {
18520 crate::ptr::read_unaligned(a.cast())
18521}
18522#[inline(always)]
18523#[rustc_legacy_const_generics(1)]
18524#[cfg(target_arch = "arm")]
18525#[target_feature(enable = "neon,v7")]
18526#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18527#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18528unsafe fn vld1_v1i64<const ALIGN: i32>(a: *const i8) -> int64x1_t {
18529 unsafe extern "unadjusted" {
18530 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v1i64")]
18531 fn _vld1_v1i64(a: *const i8, b: i32) -> int64x1_t;
18532 }
18533 _vld1_v1i64(a, ALIGN)
18534}
18535#[inline(always)]
18536#[rustc_legacy_const_generics(1)]
18537#[cfg(target_arch = "arm")]
18538#[target_feature(enable = "neon,v7")]
18539#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18540#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18541unsafe fn vld1_v2f32<const ALIGN: i32>(a: *const i8) -> float32x2_t {
18542 unsafe extern "unadjusted" {
18543 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2f32")]
18544 fn _vld1_v2f32(a: *const i8, b: i32) -> float32x2_t;
18545 }
18546 _vld1_v2f32(a, ALIGN)
18547}
18548#[inline(always)]
18549#[rustc_legacy_const_generics(1)]
18550#[cfg(target_arch = "arm")]
18551#[target_feature(enable = "neon,v7")]
18552#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18553#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18554unsafe fn vld1_v2i32<const ALIGN: i32>(a: *const i8) -> int32x2_t {
18555 unsafe extern "unadjusted" {
18556 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2i32")]
18557 fn _vld1_v2i32(a: *const i8, b: i32) -> int32x2_t;
18558 }
18559 _vld1_v2i32(a, ALIGN)
18560}
18561#[inline(always)]
18562#[rustc_legacy_const_generics(1)]
18563#[cfg(target_arch = "arm")]
18564#[target_feature(enable = "neon,v7")]
18565#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18566#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18567unsafe fn vld1_v4i16<const ALIGN: i32>(a: *const i8) -> int16x4_t {
18568 unsafe extern "unadjusted" {
18569 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4i16")]
18570 fn _vld1_v4i16(a: *const i8, b: i32) -> int16x4_t;
18571 }
18572 _vld1_v4i16(a, ALIGN)
18573}
18574#[inline(always)]
18575#[rustc_legacy_const_generics(1)]
18576#[cfg(target_arch = "arm")]
18577#[target_feature(enable = "neon,v7")]
18578#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18579#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18580unsafe fn vld1_v8i8<const ALIGN: i32>(a: *const i8) -> int8x8_t {
18581 unsafe extern "unadjusted" {
18582 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8i8")]
18583 fn _vld1_v8i8(a: *const i8, b: i32) -> int8x8_t;
18584 }
18585 _vld1_v8i8(a, ALIGN)
18586}
18587#[inline(always)]
18588#[rustc_legacy_const_generics(1)]
18589#[cfg(target_arch = "arm")]
18590#[target_feature(enable = "neon,v7")]
18591#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18592#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18593unsafe fn vld1q_v16i8<const ALIGN: i32>(a: *const i8) -> int8x16_t {
18594 unsafe extern "unadjusted" {
18595 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v16i8")]
18596 fn _vld1q_v16i8(a: *const i8, b: i32) -> int8x16_t;
18597 }
18598 _vld1q_v16i8(a, ALIGN)
18599}
18600#[inline(always)]
18601#[rustc_legacy_const_generics(1)]
18602#[cfg(target_arch = "arm")]
18603#[target_feature(enable = "neon,v7")]
18604#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18605#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18606unsafe fn vld1q_v2i64<const ALIGN: i32>(a: *const i8) -> int64x2_t {
18607 unsafe extern "unadjusted" {
18608 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2i64")]
18609 fn _vld1q_v2i64(a: *const i8, b: i32) -> int64x2_t;
18610 }
18611 _vld1q_v2i64(a, ALIGN)
18612}
18613#[inline(always)]
18614#[rustc_legacy_const_generics(1)]
18615#[cfg(target_arch = "arm")]
18616#[target_feature(enable = "neon,v7")]
18617#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18618#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18619unsafe fn vld1q_v4f32<const ALIGN: i32>(a: *const i8) -> float32x4_t {
18620 unsafe extern "unadjusted" {
18621 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4f32")]
18622 fn _vld1q_v4f32(a: *const i8, b: i32) -> float32x4_t;
18623 }
18624 _vld1q_v4f32(a, ALIGN)
18625}
18626#[inline(always)]
18627#[rustc_legacy_const_generics(1)]
18628#[cfg(target_arch = "arm")]
18629#[target_feature(enable = "neon,v7")]
18630#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18631#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18632unsafe fn vld1q_v4i32<const ALIGN: i32>(a: *const i8) -> int32x4_t {
18633 unsafe extern "unadjusted" {
18634 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4i32")]
18635 fn _vld1q_v4i32(a: *const i8, b: i32) -> int32x4_t;
18636 }
18637 _vld1q_v4i32(a, ALIGN)
18638}
18639#[inline(always)]
18640#[rustc_legacy_const_generics(1)]
18641#[cfg(target_arch = "arm")]
18642#[target_feature(enable = "neon,v7")]
18643#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18644#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18645unsafe fn vld1q_v8i16<const ALIGN: i32>(a: *const i8) -> int16x8_t {
18646 unsafe extern "unadjusted" {
18647 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8i16")]
18648 fn _vld1q_v8i16(a: *const i8, b: i32) -> int16x8_t;
18649 }
18650 _vld1q_v8i16(a, ALIGN)
18651}
18652#[inline(always)]
18653#[cfg(target_arch = "arm")]
18654#[target_feature(enable = "neon,v7")]
18655#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
18656#[target_feature(enable = "neon,fp16")]
18657#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18658#[cfg(not(target_arch = "arm64ec"))]
18659unsafe fn vld1_v4f16(a: *const i8, b: i32) -> float16x4_t {
18660 unsafe extern "unadjusted" {
18661 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4f16")]
18662 fn _vld1_v4f16(a: *const i8, b: i32) -> float16x4_t;
18663 }
18664 _vld1_v4f16(a, b)
18665}
18666#[inline(always)]
18667#[cfg(target_arch = "arm")]
18668#[target_feature(enable = "neon,v7")]
18669#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
18670#[target_feature(enable = "neon,fp16")]
18671#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18672#[cfg(not(target_arch = "arm64ec"))]
18673unsafe fn vld1q_v8f16(a: *const i8, b: i32) -> float16x8_t {
18674 unsafe extern "unadjusted" {
18675 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8f16")]
18676 fn _vld1q_v8f16(a: *const i8, b: i32) -> float16x8_t;
18677 }
18678 _vld1q_v8f16(a, b)
18679}
18680#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
18681#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p64)"]
18682#[doc = "## Safety"]
18683#[doc = " * Neon intrinsic unsafe"]
18684#[inline(always)]
18685#[target_feature(enable = "neon,aes")]
18686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18687#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
18688#[cfg_attr(
18689 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18690 assert_instr(ld1r)
18691)]
18692#[cfg_attr(
18693 not(target_arch = "arm"),
18694 stable(feature = "neon_intrinsics", since = "1.59.0")
18695)]
18696#[cfg_attr(
18697 target_arch = "arm",
18698 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18699)]
18700pub unsafe fn vld1q_dup_p64(ptr: *const p64) -> poly64x2_t {
18701 let x = vld1q_lane_p64::<0>(ptr, transmute(u64x2::splat(0)));
18702 simd_shuffle!(x, x, [0, 0])
18703}
18704#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18705#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f16)"]
18706#[doc = "## Safety"]
18707#[doc = " * Neon intrinsic unsafe"]
18708#[inline(always)]
18709#[target_feature(enable = "neon")]
18710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18711#[cfg(target_arch = "arm")]
18712#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
18713#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
18714#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
18715#[cfg(not(target_arch = "arm64ec"))]
18716pub unsafe fn vld2_dup_f16(a: *const f16) -> float16x4x2_t {
18717 unsafe extern "unadjusted" {
18718 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4f16.p0")]
18719 fn _vld2_dup_f16(ptr: *const f16, size: i32) -> float16x4x2_t;
18720 }
18721 _vld2_dup_f16(a as _, 2)
18722}
18723#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f16)"]
18725#[doc = "## Safety"]
18726#[doc = " * Neon intrinsic unsafe"]
18727#[inline(always)]
18728#[target_feature(enable = "neon")]
18729#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18730#[cfg(target_arch = "arm")]
18731#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
18732#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
18733#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
18734#[cfg(not(target_arch = "arm64ec"))]
18735pub unsafe fn vld2q_dup_f16(a: *const f16) -> float16x8x2_t {
18736 unsafe extern "unadjusted" {
18737 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8f16.p0")]
18738 fn _vld2q_dup_f16(ptr: *const f16, size: i32) -> float16x8x2_t;
18739 }
18740 _vld2q_dup_f16(a as _, 2)
18741}
18742#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f16)"]
18744#[doc = "## Safety"]
18745#[doc = " * Neon intrinsic unsafe"]
18746#[inline(always)]
18747#[target_feature(enable = "neon")]
18748#[cfg(not(target_arch = "arm"))]
18749#[cfg_attr(
18750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18751 assert_instr(ld2r)
18752)]
18753#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
18754#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
18755#[cfg(not(target_arch = "arm64ec"))]
18756pub unsafe fn vld2_dup_f16(a: *const f16) -> float16x4x2_t {
18757 unsafe extern "unadjusted" {
18758 #[cfg_attr(
18759 any(target_arch = "aarch64", target_arch = "arm64ec"),
18760 link_name = "llvm.aarch64.neon.ld2r.v4f16.p0"
18761 )]
18762 fn _vld2_dup_f16(ptr: *const f16) -> float16x4x2_t;
18763 }
18764 _vld2_dup_f16(a as _)
18765}
18766#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f16)"]
18768#[doc = "## Safety"]
18769#[doc = " * Neon intrinsic unsafe"]
18770#[inline(always)]
18771#[target_feature(enable = "neon")]
18772#[cfg(not(target_arch = "arm"))]
18773#[cfg_attr(
18774 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18775 assert_instr(ld2r)
18776)]
18777#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
18778#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
18779#[cfg(not(target_arch = "arm64ec"))]
18780pub unsafe fn vld2q_dup_f16(a: *const f16) -> float16x8x2_t {
18781 unsafe extern "unadjusted" {
18782 #[cfg_attr(
18783 any(target_arch = "aarch64", target_arch = "arm64ec"),
18784 link_name = "llvm.aarch64.neon.ld2r.v8f16.p0"
18785 )]
18786 fn _vld2q_dup_f16(ptr: *const f16) -> float16x8x2_t;
18787 }
18788 _vld2q_dup_f16(a as _)
18789}
18790#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f32)"]
18792#[doc = "## Safety"]
18793#[doc = " * Neon intrinsic unsafe"]
18794#[inline(always)]
18795#[target_feature(enable = "neon,v7")]
18796#[cfg(target_arch = "arm")]
18797#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18798#[cfg_attr(test, assert_instr(vld2))]
18799pub unsafe fn vld2_dup_f32(a: *const f32) -> float32x2x2_t {
18800 unsafe extern "unadjusted" {
18801 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v2f32.p0")]
18802 fn _vld2_dup_f32(ptr: *const i8, size: i32) -> float32x2x2_t;
18803 }
18804 _vld2_dup_f32(a as *const i8, 4)
18805}
18806#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f32)"]
18808#[doc = "## Safety"]
18809#[doc = " * Neon intrinsic unsafe"]
18810#[inline(always)]
18811#[target_feature(enable = "neon,v7")]
18812#[cfg(target_arch = "arm")]
18813#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18814#[cfg_attr(test, assert_instr(vld2))]
18815pub unsafe fn vld2q_dup_f32(a: *const f32) -> float32x4x2_t {
18816 unsafe extern "unadjusted" {
18817 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4f32.p0")]
18818 fn _vld2q_dup_f32(ptr: *const i8, size: i32) -> float32x4x2_t;
18819 }
18820 _vld2q_dup_f32(a as *const i8, 4)
18821}
18822#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s8)"]
18824#[doc = "## Safety"]
18825#[doc = " * Neon intrinsic unsafe"]
18826#[inline(always)]
18827#[target_feature(enable = "neon,v7")]
18828#[cfg(target_arch = "arm")]
18829#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18830#[cfg_attr(test, assert_instr(vld2))]
18831pub unsafe fn vld2_dup_s8(a: *const i8) -> int8x8x2_t {
18832 unsafe extern "unadjusted" {
18833 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8i8.p0")]
18834 fn _vld2_dup_s8(ptr: *const i8, size: i32) -> int8x8x2_t;
18835 }
18836 _vld2_dup_s8(a as *const i8, 1)
18837}
18838#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s8)"]
18840#[doc = "## Safety"]
18841#[doc = " * Neon intrinsic unsafe"]
18842#[inline(always)]
18843#[target_feature(enable = "neon,v7")]
18844#[cfg(target_arch = "arm")]
18845#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18846#[cfg_attr(test, assert_instr(vld2))]
18847pub unsafe fn vld2q_dup_s8(a: *const i8) -> int8x16x2_t {
18848 unsafe extern "unadjusted" {
18849 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v16i8.p0")]
18850 fn _vld2q_dup_s8(ptr: *const i8, size: i32) -> int8x16x2_t;
18851 }
18852 _vld2q_dup_s8(a as *const i8, 1)
18853}
18854#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s16)"]
18856#[doc = "## Safety"]
18857#[doc = " * Neon intrinsic unsafe"]
18858#[inline(always)]
18859#[target_feature(enable = "neon,v7")]
18860#[cfg(target_arch = "arm")]
18861#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18862#[cfg_attr(test, assert_instr(vld2))]
18863pub unsafe fn vld2_dup_s16(a: *const i16) -> int16x4x2_t {
18864 unsafe extern "unadjusted" {
18865 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4i16.p0")]
18866 fn _vld2_dup_s16(ptr: *const i8, size: i32) -> int16x4x2_t;
18867 }
18868 _vld2_dup_s16(a as *const i8, 2)
18869}
18870#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s16)"]
18872#[doc = "## Safety"]
18873#[doc = " * Neon intrinsic unsafe"]
18874#[inline(always)]
18875#[target_feature(enable = "neon,v7")]
18876#[cfg(target_arch = "arm")]
18877#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18878#[cfg_attr(test, assert_instr(vld2))]
18879pub unsafe fn vld2q_dup_s16(a: *const i16) -> int16x8x2_t {
18880 unsafe extern "unadjusted" {
18881 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8i16.p0")]
18882 fn _vld2q_dup_s16(ptr: *const i8, size: i32) -> int16x8x2_t;
18883 }
18884 _vld2q_dup_s16(a as *const i8, 2)
18885}
18886#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s32)"]
18888#[doc = "## Safety"]
18889#[doc = " * Neon intrinsic unsafe"]
18890#[inline(always)]
18891#[target_feature(enable = "neon,v7")]
18892#[cfg(target_arch = "arm")]
18893#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18894#[cfg_attr(test, assert_instr(vld2))]
18895pub unsafe fn vld2_dup_s32(a: *const i32) -> int32x2x2_t {
18896 unsafe extern "unadjusted" {
18897 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v2i32.p0")]
18898 fn _vld2_dup_s32(ptr: *const i8, size: i32) -> int32x2x2_t;
18899 }
18900 _vld2_dup_s32(a as *const i8, 4)
18901}
18902#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s32)"]
18904#[doc = "## Safety"]
18905#[doc = " * Neon intrinsic unsafe"]
18906#[inline(always)]
18907#[target_feature(enable = "neon,v7")]
18908#[cfg(target_arch = "arm")]
18909#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18910#[cfg_attr(test, assert_instr(vld2))]
18911pub unsafe fn vld2q_dup_s32(a: *const i32) -> int32x4x2_t {
18912 unsafe extern "unadjusted" {
18913 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4i32.p0")]
18914 fn _vld2q_dup_s32(ptr: *const i8, size: i32) -> int32x4x2_t;
18915 }
18916 _vld2q_dup_s32(a as *const i8, 4)
18917}
18918#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f32)"]
18920#[doc = "## Safety"]
18921#[doc = " * Neon intrinsic unsafe"]
18922#[inline(always)]
18923#[target_feature(enable = "neon")]
18924#[cfg(not(target_arch = "arm"))]
18925#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18926#[cfg_attr(test, assert_instr(ld2r))]
18927pub unsafe fn vld2_dup_f32(a: *const f32) -> float32x2x2_t {
18928 unsafe extern "unadjusted" {
18929 #[cfg_attr(
18930 any(target_arch = "aarch64", target_arch = "arm64ec"),
18931 link_name = "llvm.aarch64.neon.ld2r.v2f32.p0"
18932 )]
18933 fn _vld2_dup_f32(ptr: *const f32) -> float32x2x2_t;
18934 }
18935 _vld2_dup_f32(a as _)
18936}
18937#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f32)"]
18939#[doc = "## Safety"]
18940#[doc = " * Neon intrinsic unsafe"]
18941#[inline(always)]
18942#[target_feature(enable = "neon")]
18943#[cfg(not(target_arch = "arm"))]
18944#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18945#[cfg_attr(test, assert_instr(ld2r))]
18946pub unsafe fn vld2q_dup_f32(a: *const f32) -> float32x4x2_t {
18947 unsafe extern "unadjusted" {
18948 #[cfg_attr(
18949 any(target_arch = "aarch64", target_arch = "arm64ec"),
18950 link_name = "llvm.aarch64.neon.ld2r.v4f32.p0"
18951 )]
18952 fn _vld2q_dup_f32(ptr: *const f32) -> float32x4x2_t;
18953 }
18954 _vld2q_dup_f32(a as _)
18955}
18956#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s8)"]
18958#[doc = "## Safety"]
18959#[doc = " * Neon intrinsic unsafe"]
18960#[inline(always)]
18961#[target_feature(enable = "neon")]
18962#[cfg(not(target_arch = "arm"))]
18963#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18964#[cfg_attr(test, assert_instr(ld2r))]
18965pub unsafe fn vld2_dup_s8(a: *const i8) -> int8x8x2_t {
18966 unsafe extern "unadjusted" {
18967 #[cfg_attr(
18968 any(target_arch = "aarch64", target_arch = "arm64ec"),
18969 link_name = "llvm.aarch64.neon.ld2r.v8i8.p0"
18970 )]
18971 fn _vld2_dup_s8(ptr: *const i8) -> int8x8x2_t;
18972 }
18973 _vld2_dup_s8(a as _)
18974}
18975#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18976#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s8)"]
18977#[doc = "## Safety"]
18978#[doc = " * Neon intrinsic unsafe"]
18979#[inline(always)]
18980#[target_feature(enable = "neon")]
18981#[cfg(not(target_arch = "arm"))]
18982#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18983#[cfg_attr(test, assert_instr(ld2r))]
18984pub unsafe fn vld2q_dup_s8(a: *const i8) -> int8x16x2_t {
18985 unsafe extern "unadjusted" {
18986 #[cfg_attr(
18987 any(target_arch = "aarch64", target_arch = "arm64ec"),
18988 link_name = "llvm.aarch64.neon.ld2r.v16i8.p0"
18989 )]
18990 fn _vld2q_dup_s8(ptr: *const i8) -> int8x16x2_t;
18991 }
18992 _vld2q_dup_s8(a as _)
18993}
18994#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s16)"]
18996#[doc = "## Safety"]
18997#[doc = " * Neon intrinsic unsafe"]
18998#[inline(always)]
18999#[target_feature(enable = "neon")]
19000#[cfg(not(target_arch = "arm"))]
19001#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19002#[cfg_attr(test, assert_instr(ld2r))]
19003pub unsafe fn vld2_dup_s16(a: *const i16) -> int16x4x2_t {
19004 unsafe extern "unadjusted" {
19005 #[cfg_attr(
19006 any(target_arch = "aarch64", target_arch = "arm64ec"),
19007 link_name = "llvm.aarch64.neon.ld2r.v4i16.p0"
19008 )]
19009 fn _vld2_dup_s16(ptr: *const i16) -> int16x4x2_t;
19010 }
19011 _vld2_dup_s16(a as _)
19012}
19013#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s16)"]
19015#[doc = "## Safety"]
19016#[doc = " * Neon intrinsic unsafe"]
19017#[inline(always)]
19018#[target_feature(enable = "neon")]
19019#[cfg(not(target_arch = "arm"))]
19020#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19021#[cfg_attr(test, assert_instr(ld2r))]
19022pub unsafe fn vld2q_dup_s16(a: *const i16) -> int16x8x2_t {
19023 unsafe extern "unadjusted" {
19024 #[cfg_attr(
19025 any(target_arch = "aarch64", target_arch = "arm64ec"),
19026 link_name = "llvm.aarch64.neon.ld2r.v8i16.p0"
19027 )]
19028 fn _vld2q_dup_s16(ptr: *const i16) -> int16x8x2_t;
19029 }
19030 _vld2q_dup_s16(a as _)
19031}
19032#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s32)"]
19034#[doc = "## Safety"]
19035#[doc = " * Neon intrinsic unsafe"]
19036#[inline(always)]
19037#[target_feature(enable = "neon")]
19038#[cfg(not(target_arch = "arm"))]
19039#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19040#[cfg_attr(test, assert_instr(ld2r))]
19041pub unsafe fn vld2_dup_s32(a: *const i32) -> int32x2x2_t {
19042 unsafe extern "unadjusted" {
19043 #[cfg_attr(
19044 any(target_arch = "aarch64", target_arch = "arm64ec"),
19045 link_name = "llvm.aarch64.neon.ld2r.v2i32.p0"
19046 )]
19047 fn _vld2_dup_s32(ptr: *const i32) -> int32x2x2_t;
19048 }
19049 _vld2_dup_s32(a as _)
19050}
19051#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s32)"]
19053#[doc = "## Safety"]
19054#[doc = " * Neon intrinsic unsafe"]
19055#[inline(always)]
19056#[target_feature(enable = "neon")]
19057#[cfg(not(target_arch = "arm"))]
19058#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19059#[cfg_attr(test, assert_instr(ld2r))]
19060pub unsafe fn vld2q_dup_s32(a: *const i32) -> int32x4x2_t {
19061 unsafe extern "unadjusted" {
19062 #[cfg_attr(
19063 any(target_arch = "aarch64", target_arch = "arm64ec"),
19064 link_name = "llvm.aarch64.neon.ld2r.v4i32.p0"
19065 )]
19066 fn _vld2q_dup_s32(ptr: *const i32) -> int32x4x2_t;
19067 }
19068 _vld2q_dup_s32(a as _)
19069}
19070#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19071#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p64)"]
19072#[doc = "## Safety"]
19073#[doc = " * Neon intrinsic unsafe"]
19074#[inline(always)]
19075#[target_feature(enable = "neon,aes")]
19076#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
19077#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
19078#[cfg_attr(
19079 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19080 assert_instr(ld2r)
19081)]
19082#[cfg_attr(
19083 not(target_arch = "arm"),
19084 stable(feature = "neon_intrinsics", since = "1.59.0")
19085)]
19086#[cfg_attr(
19087 target_arch = "arm",
19088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19089)]
19090pub unsafe fn vld2_dup_p64(a: *const p64) -> poly64x1x2_t {
19091 transmute(vld2_dup_s64(transmute(a)))
19092}
19093#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s64)"]
19095#[doc = "## Safety"]
19096#[doc = " * Neon intrinsic unsafe"]
19097#[inline(always)]
19098#[target_feature(enable = "neon,v7")]
19099#[cfg(target_arch = "arm")]
19100#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19101#[cfg_attr(test, assert_instr(nop))]
19102pub unsafe fn vld2_dup_s64(a: *const i64) -> int64x1x2_t {
19103 unsafe extern "unadjusted" {
19104 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v1i64.p0")]
19105 fn _vld2_dup_s64(ptr: *const i8, size: i32) -> int64x1x2_t;
19106 }
19107 _vld2_dup_s64(a as *const i8, 8)
19108}
19109#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s64)"]
19111#[doc = "## Safety"]
19112#[doc = " * Neon intrinsic unsafe"]
19113#[inline(always)]
19114#[target_feature(enable = "neon")]
19115#[cfg(not(target_arch = "arm"))]
19116#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19117#[cfg_attr(test, assert_instr(ld2r))]
19118pub unsafe fn vld2_dup_s64(a: *const i64) -> int64x1x2_t {
19119 unsafe extern "unadjusted" {
19120 #[cfg_attr(
19121 any(target_arch = "aarch64", target_arch = "arm64ec"),
19122 link_name = "llvm.aarch64.neon.ld2r.v1i64.p0"
19123 )]
19124 fn _vld2_dup_s64(ptr: *const i64) -> int64x1x2_t;
19125 }
19126 _vld2_dup_s64(a as _)
19127}
19128#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u64)"]
19130#[doc = "## Safety"]
19131#[doc = " * Neon intrinsic unsafe"]
19132#[inline(always)]
19133#[target_feature(enable = "neon")]
19134#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19135#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
19136#[cfg_attr(
19137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19138 assert_instr(ld2r)
19139)]
19140#[cfg_attr(
19141 not(target_arch = "arm"),
19142 stable(feature = "neon_intrinsics", since = "1.59.0")
19143)]
19144#[cfg_attr(
19145 target_arch = "arm",
19146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19147)]
19148pub unsafe fn vld2_dup_u64(a: *const u64) -> uint64x1x2_t {
19149 transmute(vld2_dup_s64(transmute(a)))
19150}
19151#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u8)"]
19153#[doc = "## Safety"]
19154#[doc = " * Neon intrinsic unsafe"]
19155#[inline(always)]
19156#[cfg(target_endian = "little")]
19157#[target_feature(enable = "neon")]
19158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19159#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19160#[cfg_attr(
19161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19162 assert_instr(ld2r)
19163)]
19164#[cfg_attr(
19165 not(target_arch = "arm"),
19166 stable(feature = "neon_intrinsics", since = "1.59.0")
19167)]
19168#[cfg_attr(
19169 target_arch = "arm",
19170 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19171)]
19172pub unsafe fn vld2_dup_u8(a: *const u8) -> uint8x8x2_t {
19173 transmute(vld2_dup_s8(transmute(a)))
19174}
19175#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u8)"]
19177#[doc = "## Safety"]
19178#[doc = " * Neon intrinsic unsafe"]
19179#[inline(always)]
19180#[cfg(target_endian = "big")]
19181#[target_feature(enable = "neon")]
19182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19184#[cfg_attr(
19185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19186 assert_instr(ld2r)
19187)]
19188#[cfg_attr(
19189 not(target_arch = "arm"),
19190 stable(feature = "neon_intrinsics", since = "1.59.0")
19191)]
19192#[cfg_attr(
19193 target_arch = "arm",
19194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19195)]
19196pub unsafe fn vld2_dup_u8(a: *const u8) -> uint8x8x2_t {
19197 let mut ret_val: uint8x8x2_t = transmute(vld2_dup_s8(transmute(a)));
19198 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19199 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19200 ret_val
19201}
19202#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u8)"]
19204#[doc = "## Safety"]
19205#[doc = " * Neon intrinsic unsafe"]
19206#[inline(always)]
19207#[cfg(target_endian = "little")]
19208#[target_feature(enable = "neon")]
19209#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19210#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19211#[cfg_attr(
19212 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19213 assert_instr(ld2r)
19214)]
19215#[cfg_attr(
19216 not(target_arch = "arm"),
19217 stable(feature = "neon_intrinsics", since = "1.59.0")
19218)]
19219#[cfg_attr(
19220 target_arch = "arm",
19221 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19222)]
19223pub unsafe fn vld2q_dup_u8(a: *const u8) -> uint8x16x2_t {
19224 transmute(vld2q_dup_s8(transmute(a)))
19225}
19226#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19227#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u8)"]
19228#[doc = "## Safety"]
19229#[doc = " * Neon intrinsic unsafe"]
19230#[inline(always)]
19231#[cfg(target_endian = "big")]
19232#[target_feature(enable = "neon")]
19233#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19234#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19235#[cfg_attr(
19236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19237 assert_instr(ld2r)
19238)]
19239#[cfg_attr(
19240 not(target_arch = "arm"),
19241 stable(feature = "neon_intrinsics", since = "1.59.0")
19242)]
19243#[cfg_attr(
19244 target_arch = "arm",
19245 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19246)]
19247pub unsafe fn vld2q_dup_u8(a: *const u8) -> uint8x16x2_t {
19248 let mut ret_val: uint8x16x2_t = transmute(vld2q_dup_s8(transmute(a)));
19249 ret_val.0 = unsafe {
19250 simd_shuffle!(
19251 ret_val.0,
19252 ret_val.0,
19253 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19254 )
19255 };
19256 ret_val.1 = unsafe {
19257 simd_shuffle!(
19258 ret_val.1,
19259 ret_val.1,
19260 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19261 )
19262 };
19263 ret_val
19264}
19265#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u16)"]
19267#[doc = "## Safety"]
19268#[doc = " * Neon intrinsic unsafe"]
19269#[inline(always)]
19270#[cfg(target_endian = "little")]
19271#[target_feature(enable = "neon")]
19272#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19273#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19274#[cfg_attr(
19275 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19276 assert_instr(ld2r)
19277)]
19278#[cfg_attr(
19279 not(target_arch = "arm"),
19280 stable(feature = "neon_intrinsics", since = "1.59.0")
19281)]
19282#[cfg_attr(
19283 target_arch = "arm",
19284 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19285)]
19286pub unsafe fn vld2_dup_u16(a: *const u16) -> uint16x4x2_t {
19287 transmute(vld2_dup_s16(transmute(a)))
19288}
19289#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19290#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u16)"]
19291#[doc = "## Safety"]
19292#[doc = " * Neon intrinsic unsafe"]
19293#[inline(always)]
19294#[cfg(target_endian = "big")]
19295#[target_feature(enable = "neon")]
19296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19298#[cfg_attr(
19299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19300 assert_instr(ld2r)
19301)]
19302#[cfg_attr(
19303 not(target_arch = "arm"),
19304 stable(feature = "neon_intrinsics", since = "1.59.0")
19305)]
19306#[cfg_attr(
19307 target_arch = "arm",
19308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19309)]
19310pub unsafe fn vld2_dup_u16(a: *const u16) -> uint16x4x2_t {
19311 let mut ret_val: uint16x4x2_t = transmute(vld2_dup_s16(transmute(a)));
19312 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19313 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19314 ret_val
19315}
19316#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u16)"]
19318#[doc = "## Safety"]
19319#[doc = " * Neon intrinsic unsafe"]
19320#[inline(always)]
19321#[cfg(target_endian = "little")]
19322#[target_feature(enable = "neon")]
19323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19324#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19325#[cfg_attr(
19326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19327 assert_instr(ld2r)
19328)]
19329#[cfg_attr(
19330 not(target_arch = "arm"),
19331 stable(feature = "neon_intrinsics", since = "1.59.0")
19332)]
19333#[cfg_attr(
19334 target_arch = "arm",
19335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19336)]
19337pub unsafe fn vld2q_dup_u16(a: *const u16) -> uint16x8x2_t {
19338 transmute(vld2q_dup_s16(transmute(a)))
19339}
19340#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u16)"]
19342#[doc = "## Safety"]
19343#[doc = " * Neon intrinsic unsafe"]
19344#[inline(always)]
19345#[cfg(target_endian = "big")]
19346#[target_feature(enable = "neon")]
19347#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19348#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19349#[cfg_attr(
19350 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19351 assert_instr(ld2r)
19352)]
19353#[cfg_attr(
19354 not(target_arch = "arm"),
19355 stable(feature = "neon_intrinsics", since = "1.59.0")
19356)]
19357#[cfg_attr(
19358 target_arch = "arm",
19359 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19360)]
19361pub unsafe fn vld2q_dup_u16(a: *const u16) -> uint16x8x2_t {
19362 let mut ret_val: uint16x8x2_t = transmute(vld2q_dup_s16(transmute(a)));
19363 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19364 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19365 ret_val
19366}
19367#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u32)"]
19369#[doc = "## Safety"]
19370#[doc = " * Neon intrinsic unsafe"]
19371#[inline(always)]
19372#[cfg(target_endian = "little")]
19373#[target_feature(enable = "neon")]
19374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19376#[cfg_attr(
19377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19378 assert_instr(ld2r)
19379)]
19380#[cfg_attr(
19381 not(target_arch = "arm"),
19382 stable(feature = "neon_intrinsics", since = "1.59.0")
19383)]
19384#[cfg_attr(
19385 target_arch = "arm",
19386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19387)]
19388pub unsafe fn vld2_dup_u32(a: *const u32) -> uint32x2x2_t {
19389 transmute(vld2_dup_s32(transmute(a)))
19390}
19391#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u32)"]
19393#[doc = "## Safety"]
19394#[doc = " * Neon intrinsic unsafe"]
19395#[inline(always)]
19396#[cfg(target_endian = "big")]
19397#[target_feature(enable = "neon")]
19398#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19399#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19400#[cfg_attr(
19401 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19402 assert_instr(ld2r)
19403)]
19404#[cfg_attr(
19405 not(target_arch = "arm"),
19406 stable(feature = "neon_intrinsics", since = "1.59.0")
19407)]
19408#[cfg_attr(
19409 target_arch = "arm",
19410 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19411)]
19412pub unsafe fn vld2_dup_u32(a: *const u32) -> uint32x2x2_t {
19413 let mut ret_val: uint32x2x2_t = transmute(vld2_dup_s32(transmute(a)));
19414 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
19415 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
19416 ret_val
19417}
19418#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u32)"]
19420#[doc = "## Safety"]
19421#[doc = " * Neon intrinsic unsafe"]
19422#[inline(always)]
19423#[cfg(target_endian = "little")]
19424#[target_feature(enable = "neon")]
19425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19426#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19427#[cfg_attr(
19428 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19429 assert_instr(ld2r)
19430)]
19431#[cfg_attr(
19432 not(target_arch = "arm"),
19433 stable(feature = "neon_intrinsics", since = "1.59.0")
19434)]
19435#[cfg_attr(
19436 target_arch = "arm",
19437 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19438)]
19439pub unsafe fn vld2q_dup_u32(a: *const u32) -> uint32x4x2_t {
19440 transmute(vld2q_dup_s32(transmute(a)))
19441}
19442#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u32)"]
19444#[doc = "## Safety"]
19445#[doc = " * Neon intrinsic unsafe"]
19446#[inline(always)]
19447#[cfg(target_endian = "big")]
19448#[target_feature(enable = "neon")]
19449#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19450#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19451#[cfg_attr(
19452 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19453 assert_instr(ld2r)
19454)]
19455#[cfg_attr(
19456 not(target_arch = "arm"),
19457 stable(feature = "neon_intrinsics", since = "1.59.0")
19458)]
19459#[cfg_attr(
19460 target_arch = "arm",
19461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19462)]
19463pub unsafe fn vld2q_dup_u32(a: *const u32) -> uint32x4x2_t {
19464 let mut ret_val: uint32x4x2_t = transmute(vld2q_dup_s32(transmute(a)));
19465 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19466 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19467 ret_val
19468}
19469#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p8)"]
19471#[doc = "## Safety"]
19472#[doc = " * Neon intrinsic unsafe"]
19473#[inline(always)]
19474#[cfg(target_endian = "little")]
19475#[target_feature(enable = "neon")]
19476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19477#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19478#[cfg_attr(
19479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19480 assert_instr(ld2r)
19481)]
19482#[cfg_attr(
19483 not(target_arch = "arm"),
19484 stable(feature = "neon_intrinsics", since = "1.59.0")
19485)]
19486#[cfg_attr(
19487 target_arch = "arm",
19488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19489)]
19490pub unsafe fn vld2_dup_p8(a: *const p8) -> poly8x8x2_t {
19491 transmute(vld2_dup_s8(transmute(a)))
19492}
19493#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p8)"]
19495#[doc = "## Safety"]
19496#[doc = " * Neon intrinsic unsafe"]
19497#[inline(always)]
19498#[cfg(target_endian = "big")]
19499#[target_feature(enable = "neon")]
19500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19501#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19502#[cfg_attr(
19503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19504 assert_instr(ld2r)
19505)]
19506#[cfg_attr(
19507 not(target_arch = "arm"),
19508 stable(feature = "neon_intrinsics", since = "1.59.0")
19509)]
19510#[cfg_attr(
19511 target_arch = "arm",
19512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19513)]
19514pub unsafe fn vld2_dup_p8(a: *const p8) -> poly8x8x2_t {
19515 let mut ret_val: poly8x8x2_t = transmute(vld2_dup_s8(transmute(a)));
19516 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19517 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19518 ret_val
19519}
19520#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p8)"]
19522#[doc = "## Safety"]
19523#[doc = " * Neon intrinsic unsafe"]
19524#[inline(always)]
19525#[cfg(target_endian = "little")]
19526#[target_feature(enable = "neon")]
19527#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19528#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19529#[cfg_attr(
19530 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19531 assert_instr(ld2r)
19532)]
19533#[cfg_attr(
19534 not(target_arch = "arm"),
19535 stable(feature = "neon_intrinsics", since = "1.59.0")
19536)]
19537#[cfg_attr(
19538 target_arch = "arm",
19539 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19540)]
19541pub unsafe fn vld2q_dup_p8(a: *const p8) -> poly8x16x2_t {
19542 transmute(vld2q_dup_s8(transmute(a)))
19543}
19544#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19545#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p8)"]
19546#[doc = "## Safety"]
19547#[doc = " * Neon intrinsic unsafe"]
19548#[inline(always)]
19549#[cfg(target_endian = "big")]
19550#[target_feature(enable = "neon")]
19551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19553#[cfg_attr(
19554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19555 assert_instr(ld2r)
19556)]
19557#[cfg_attr(
19558 not(target_arch = "arm"),
19559 stable(feature = "neon_intrinsics", since = "1.59.0")
19560)]
19561#[cfg_attr(
19562 target_arch = "arm",
19563 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19564)]
19565pub unsafe fn vld2q_dup_p8(a: *const p8) -> poly8x16x2_t {
19566 let mut ret_val: poly8x16x2_t = transmute(vld2q_dup_s8(transmute(a)));
19567 ret_val.0 = unsafe {
19568 simd_shuffle!(
19569 ret_val.0,
19570 ret_val.0,
19571 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19572 )
19573 };
19574 ret_val.1 = unsafe {
19575 simd_shuffle!(
19576 ret_val.1,
19577 ret_val.1,
19578 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19579 )
19580 };
19581 ret_val
19582}
19583#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p16)"]
19585#[doc = "## Safety"]
19586#[doc = " * Neon intrinsic unsafe"]
19587#[inline(always)]
19588#[cfg(target_endian = "little")]
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(vld2))]
19592#[cfg_attr(
19593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19594 assert_instr(ld2r)
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 vld2_dup_p16(a: *const p16) -> poly16x4x2_t {
19605 transmute(vld2_dup_s16(transmute(a)))
19606}
19607#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p16)"]
19609#[doc = "## Safety"]
19610#[doc = " * Neon intrinsic unsafe"]
19611#[inline(always)]
19612#[cfg(target_endian = "big")]
19613#[target_feature(enable = "neon")]
19614#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19615#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19616#[cfg_attr(
19617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19618 assert_instr(ld2r)
19619)]
19620#[cfg_attr(
19621 not(target_arch = "arm"),
19622 stable(feature = "neon_intrinsics", since = "1.59.0")
19623)]
19624#[cfg_attr(
19625 target_arch = "arm",
19626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19627)]
19628pub unsafe fn vld2_dup_p16(a: *const p16) -> poly16x4x2_t {
19629 let mut ret_val: poly16x4x2_t = transmute(vld2_dup_s16(transmute(a)));
19630 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19631 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19632 ret_val
19633}
19634#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p16)"]
19636#[doc = "## Safety"]
19637#[doc = " * Neon intrinsic unsafe"]
19638#[inline(always)]
19639#[cfg(target_endian = "little")]
19640#[target_feature(enable = "neon")]
19641#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19642#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19643#[cfg_attr(
19644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19645 assert_instr(ld2r)
19646)]
19647#[cfg_attr(
19648 not(target_arch = "arm"),
19649 stable(feature = "neon_intrinsics", since = "1.59.0")
19650)]
19651#[cfg_attr(
19652 target_arch = "arm",
19653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19654)]
19655pub unsafe fn vld2q_dup_p16(a: *const p16) -> poly16x8x2_t {
19656 transmute(vld2q_dup_s16(transmute(a)))
19657}
19658#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p16)"]
19660#[doc = "## Safety"]
19661#[doc = " * Neon intrinsic unsafe"]
19662#[inline(always)]
19663#[cfg(target_endian = "big")]
19664#[target_feature(enable = "neon")]
19665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19666#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19667#[cfg_attr(
19668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19669 assert_instr(ld2r)
19670)]
19671#[cfg_attr(
19672 not(target_arch = "arm"),
19673 stable(feature = "neon_intrinsics", since = "1.59.0")
19674)]
19675#[cfg_attr(
19676 target_arch = "arm",
19677 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19678)]
19679pub unsafe fn vld2q_dup_p16(a: *const p16) -> poly16x8x2_t {
19680 let mut ret_val: poly16x8x2_t = transmute(vld2q_dup_s16(transmute(a)));
19681 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19682 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19683 ret_val
19684}
19685#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f16)"]
19687#[doc = "## Safety"]
19688#[doc = " * Neon intrinsic unsafe"]
19689#[inline(always)]
19690#[target_feature(enable = "neon")]
19691#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19692#[cfg(target_arch = "arm")]
19693#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19694#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19695#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19696#[cfg(not(target_arch = "arm64ec"))]
19697pub unsafe fn vld2_f16(a: *const f16) -> float16x4x2_t {
19698 unsafe extern "unadjusted" {
19699 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4f16.p0")]
19700 fn _vld2_f16(ptr: *const f16, size: i32) -> float16x4x2_t;
19701 }
19702 _vld2_f16(a as _, 2)
19703}
19704#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19705#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f16)"]
19706#[doc = "## Safety"]
19707#[doc = " * Neon intrinsic unsafe"]
19708#[inline(always)]
19709#[target_feature(enable = "neon")]
19710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19711#[cfg(target_arch = "arm")]
19712#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19713#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19714#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19715#[cfg(not(target_arch = "arm64ec"))]
19716pub unsafe fn vld2q_f16(a: *const f16) -> float16x8x2_t {
19717 unsafe extern "unadjusted" {
19718 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8f16.p0")]
19719 fn _vld2q_f16(ptr: *const f16, size: i32) -> float16x8x2_t;
19720 }
19721 _vld2q_f16(a as _, 2)
19722}
19723#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f16)"]
19725#[doc = "## Safety"]
19726#[doc = " * Neon intrinsic unsafe"]
19727#[inline(always)]
19728#[target_feature(enable = "neon")]
19729#[cfg(not(target_arch = "arm"))]
19730#[cfg_attr(
19731 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19732 assert_instr(ld2)
19733)]
19734#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19735#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19736#[cfg(not(target_arch = "arm64ec"))]
19737pub unsafe fn vld2_f16(a: *const f16) -> float16x4x2_t {
19738 unsafe extern "unadjusted" {
19739 #[cfg_attr(
19740 any(target_arch = "aarch64", target_arch = "arm64ec"),
19741 link_name = "llvm.aarch64.neon.ld2.v4f16.p0"
19742 )]
19743 fn _vld2_f16(ptr: *const f16) -> float16x4x2_t;
19744 }
19745 _vld2_f16(a as _)
19746}
19747#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19748#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f16)"]
19749#[doc = "## Safety"]
19750#[doc = " * Neon intrinsic unsafe"]
19751#[inline(always)]
19752#[target_feature(enable = "neon")]
19753#[cfg(not(target_arch = "arm"))]
19754#[cfg_attr(
19755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19756 assert_instr(ld2)
19757)]
19758#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19759#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19760#[cfg(not(target_arch = "arm64ec"))]
19761pub unsafe fn vld2q_f16(a: *const f16) -> float16x8x2_t {
19762 unsafe extern "unadjusted" {
19763 #[cfg_attr(
19764 any(target_arch = "aarch64", target_arch = "arm64ec"),
19765 link_name = "llvm.aarch64.neon.ld2.v8f16.p0"
19766 )]
19767 fn _vld2q_f16(ptr: *const f16) -> float16x8x2_t;
19768 }
19769 _vld2q_f16(a as _)
19770}
19771#[doc = "Load multiple 2-element structures to two registers"]
19772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f32)"]
19773#[doc = "## Safety"]
19774#[doc = " * Neon intrinsic unsafe"]
19775#[inline(always)]
19776#[target_feature(enable = "neon,v7")]
19777#[cfg(target_arch = "arm")]
19778#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19779#[cfg_attr(test, assert_instr(vld2))]
19780pub unsafe fn vld2_f32(a: *const f32) -> float32x2x2_t {
19781 unsafe extern "unadjusted" {
19782 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v2f32")]
19783 fn _vld2_f32(ptr: *const i8, size: i32) -> float32x2x2_t;
19784 }
19785 _vld2_f32(a as *const i8, 4)
19786}
19787#[doc = "Load multiple 2-element structures to two registers"]
19788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f32)"]
19789#[doc = "## Safety"]
19790#[doc = " * Neon intrinsic unsafe"]
19791#[inline(always)]
19792#[target_feature(enable = "neon,v7")]
19793#[cfg(target_arch = "arm")]
19794#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19795#[cfg_attr(test, assert_instr(vld2))]
19796pub unsafe fn vld2q_f32(a: *const f32) -> float32x4x2_t {
19797 unsafe extern "unadjusted" {
19798 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4f32")]
19799 fn _vld2q_f32(ptr: *const i8, size: i32) -> float32x4x2_t;
19800 }
19801 _vld2q_f32(a as *const i8, 4)
19802}
19803#[doc = "Load multiple 2-element structures to two registers"]
19804#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s8)"]
19805#[doc = "## Safety"]
19806#[doc = " * Neon intrinsic unsafe"]
19807#[inline(always)]
19808#[target_feature(enable = "neon,v7")]
19809#[cfg(target_arch = "arm")]
19810#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19811#[cfg_attr(test, assert_instr(vld2))]
19812pub unsafe fn vld2_s8(a: *const i8) -> int8x8x2_t {
19813 unsafe extern "unadjusted" {
19814 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8i8")]
19815 fn _vld2_s8(ptr: *const i8, size: i32) -> int8x8x2_t;
19816 }
19817 _vld2_s8(a as *const i8, 1)
19818}
19819#[doc = "Load multiple 2-element structures to two registers"]
19820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s8)"]
19821#[doc = "## Safety"]
19822#[doc = " * Neon intrinsic unsafe"]
19823#[inline(always)]
19824#[target_feature(enable = "neon,v7")]
19825#[cfg(target_arch = "arm")]
19826#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19827#[cfg_attr(test, assert_instr(vld2))]
19828pub unsafe fn vld2q_s8(a: *const i8) -> int8x16x2_t {
19829 unsafe extern "unadjusted" {
19830 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v16i8")]
19831 fn _vld2q_s8(ptr: *const i8, size: i32) -> int8x16x2_t;
19832 }
19833 _vld2q_s8(a as *const i8, 1)
19834}
19835#[doc = "Load multiple 2-element structures to two registers"]
19836#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s16)"]
19837#[doc = "## Safety"]
19838#[doc = " * Neon intrinsic unsafe"]
19839#[inline(always)]
19840#[target_feature(enable = "neon,v7")]
19841#[cfg(target_arch = "arm")]
19842#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19843#[cfg_attr(test, assert_instr(vld2))]
19844pub unsafe fn vld2_s16(a: *const i16) -> int16x4x2_t {
19845 unsafe extern "unadjusted" {
19846 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4i16")]
19847 fn _vld2_s16(ptr: *const i8, size: i32) -> int16x4x2_t;
19848 }
19849 _vld2_s16(a as *const i8, 2)
19850}
19851#[doc = "Load multiple 2-element structures to two registers"]
19852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s16)"]
19853#[doc = "## Safety"]
19854#[doc = " * Neon intrinsic unsafe"]
19855#[inline(always)]
19856#[target_feature(enable = "neon,v7")]
19857#[cfg(target_arch = "arm")]
19858#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19859#[cfg_attr(test, assert_instr(vld2))]
19860pub unsafe fn vld2q_s16(a: *const i16) -> int16x8x2_t {
19861 unsafe extern "unadjusted" {
19862 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8i16")]
19863 fn _vld2q_s16(ptr: *const i8, size: i32) -> int16x8x2_t;
19864 }
19865 _vld2q_s16(a as *const i8, 2)
19866}
19867#[doc = "Load multiple 2-element structures to two registers"]
19868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s32)"]
19869#[doc = "## Safety"]
19870#[doc = " * Neon intrinsic unsafe"]
19871#[inline(always)]
19872#[target_feature(enable = "neon,v7")]
19873#[cfg(target_arch = "arm")]
19874#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19875#[cfg_attr(test, assert_instr(vld2))]
19876pub unsafe fn vld2_s32(a: *const i32) -> int32x2x2_t {
19877 unsafe extern "unadjusted" {
19878 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v2i32")]
19879 fn _vld2_s32(ptr: *const i8, size: i32) -> int32x2x2_t;
19880 }
19881 _vld2_s32(a as *const i8, 4)
19882}
19883#[doc = "Load multiple 2-element structures to two registers"]
19884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s32)"]
19885#[doc = "## Safety"]
19886#[doc = " * Neon intrinsic unsafe"]
19887#[inline(always)]
19888#[target_feature(enable = "neon,v7")]
19889#[cfg(target_arch = "arm")]
19890#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19891#[cfg_attr(test, assert_instr(vld2))]
19892pub unsafe fn vld2q_s32(a: *const i32) -> int32x4x2_t {
19893 unsafe extern "unadjusted" {
19894 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4i32")]
19895 fn _vld2q_s32(ptr: *const i8, size: i32) -> int32x4x2_t;
19896 }
19897 _vld2q_s32(a as *const i8, 4)
19898}
19899#[doc = "Load multiple 2-element structures to two registers"]
19900#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f32)"]
19901#[doc = "## Safety"]
19902#[doc = " * Neon intrinsic unsafe"]
19903#[inline(always)]
19904#[target_feature(enable = "neon")]
19905#[cfg(not(target_arch = "arm"))]
19906#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19907#[cfg_attr(test, assert_instr(ld2))]
19908pub unsafe fn vld2_f32(a: *const f32) -> float32x2x2_t {
19909 unsafe extern "unadjusted" {
19910 #[cfg_attr(
19911 any(target_arch = "aarch64", target_arch = "arm64ec"),
19912 link_name = "llvm.aarch64.neon.ld2.v2f32.p0"
19913 )]
19914 fn _vld2_f32(ptr: *const float32x2_t) -> float32x2x2_t;
19915 }
19916 _vld2_f32(a as _)
19917}
19918#[doc = "Load multiple 2-element structures to two registers"]
19919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f32)"]
19920#[doc = "## Safety"]
19921#[doc = " * Neon intrinsic unsafe"]
19922#[inline(always)]
19923#[target_feature(enable = "neon")]
19924#[cfg(not(target_arch = "arm"))]
19925#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19926#[cfg_attr(test, assert_instr(ld2))]
19927pub unsafe fn vld2q_f32(a: *const f32) -> float32x4x2_t {
19928 unsafe extern "unadjusted" {
19929 #[cfg_attr(
19930 any(target_arch = "aarch64", target_arch = "arm64ec"),
19931 link_name = "llvm.aarch64.neon.ld2.v4f32.p0"
19932 )]
19933 fn _vld2q_f32(ptr: *const float32x4_t) -> float32x4x2_t;
19934 }
19935 _vld2q_f32(a as _)
19936}
19937#[doc = "Load multiple 2-element structures to two registers"]
19938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s8)"]
19939#[doc = "## Safety"]
19940#[doc = " * Neon intrinsic unsafe"]
19941#[inline(always)]
19942#[target_feature(enable = "neon")]
19943#[cfg(not(target_arch = "arm"))]
19944#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19945#[cfg_attr(test, assert_instr(ld2))]
19946pub unsafe fn vld2_s8(a: *const i8) -> int8x8x2_t {
19947 unsafe extern "unadjusted" {
19948 #[cfg_attr(
19949 any(target_arch = "aarch64", target_arch = "arm64ec"),
19950 link_name = "llvm.aarch64.neon.ld2.v8i8.p0"
19951 )]
19952 fn _vld2_s8(ptr: *const int8x8_t) -> int8x8x2_t;
19953 }
19954 _vld2_s8(a as _)
19955}
19956#[doc = "Load multiple 2-element structures to two registers"]
19957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s8)"]
19958#[doc = "## Safety"]
19959#[doc = " * Neon intrinsic unsafe"]
19960#[inline(always)]
19961#[target_feature(enable = "neon")]
19962#[cfg(not(target_arch = "arm"))]
19963#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19964#[cfg_attr(test, assert_instr(ld2))]
19965pub unsafe fn vld2q_s8(a: *const i8) -> int8x16x2_t {
19966 unsafe extern "unadjusted" {
19967 #[cfg_attr(
19968 any(target_arch = "aarch64", target_arch = "arm64ec"),
19969 link_name = "llvm.aarch64.neon.ld2.v16i8.p0"
19970 )]
19971 fn _vld2q_s8(ptr: *const int8x16_t) -> int8x16x2_t;
19972 }
19973 _vld2q_s8(a as _)
19974}
19975#[doc = "Load multiple 2-element structures to two registers"]
19976#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s16)"]
19977#[doc = "## Safety"]
19978#[doc = " * Neon intrinsic unsafe"]
19979#[inline(always)]
19980#[target_feature(enable = "neon")]
19981#[cfg(not(target_arch = "arm"))]
19982#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19983#[cfg_attr(test, assert_instr(ld2))]
19984pub unsafe fn vld2_s16(a: *const i16) -> int16x4x2_t {
19985 unsafe extern "unadjusted" {
19986 #[cfg_attr(
19987 any(target_arch = "aarch64", target_arch = "arm64ec"),
19988 link_name = "llvm.aarch64.neon.ld2.v4i16.p0"
19989 )]
19990 fn _vld2_s16(ptr: *const int16x4_t) -> int16x4x2_t;
19991 }
19992 _vld2_s16(a as _)
19993}
19994#[doc = "Load multiple 2-element structures to two registers"]
19995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s16)"]
19996#[doc = "## Safety"]
19997#[doc = " * Neon intrinsic unsafe"]
19998#[inline(always)]
19999#[target_feature(enable = "neon")]
20000#[cfg(not(target_arch = "arm"))]
20001#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20002#[cfg_attr(test, assert_instr(ld2))]
20003pub unsafe fn vld2q_s16(a: *const i16) -> int16x8x2_t {
20004 unsafe extern "unadjusted" {
20005 #[cfg_attr(
20006 any(target_arch = "aarch64", target_arch = "arm64ec"),
20007 link_name = "llvm.aarch64.neon.ld2.v8i16.p0"
20008 )]
20009 fn _vld2q_s16(ptr: *const int16x8_t) -> int16x8x2_t;
20010 }
20011 _vld2q_s16(a as _)
20012}
20013#[doc = "Load multiple 2-element structures to two registers"]
20014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s32)"]
20015#[doc = "## Safety"]
20016#[doc = " * Neon intrinsic unsafe"]
20017#[inline(always)]
20018#[target_feature(enable = "neon")]
20019#[cfg(not(target_arch = "arm"))]
20020#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20021#[cfg_attr(test, assert_instr(ld2))]
20022pub unsafe fn vld2_s32(a: *const i32) -> int32x2x2_t {
20023 unsafe extern "unadjusted" {
20024 #[cfg_attr(
20025 any(target_arch = "aarch64", target_arch = "arm64ec"),
20026 link_name = "llvm.aarch64.neon.ld2.v2i32.p0"
20027 )]
20028 fn _vld2_s32(ptr: *const int32x2_t) -> int32x2x2_t;
20029 }
20030 _vld2_s32(a as _)
20031}
20032#[doc = "Load multiple 2-element structures to two registers"]
20033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s32)"]
20034#[doc = "## Safety"]
20035#[doc = " * Neon intrinsic unsafe"]
20036#[inline(always)]
20037#[target_feature(enable = "neon")]
20038#[cfg(not(target_arch = "arm"))]
20039#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20040#[cfg_attr(test, assert_instr(ld2))]
20041pub unsafe fn vld2q_s32(a: *const i32) -> int32x4x2_t {
20042 unsafe extern "unadjusted" {
20043 #[cfg_attr(
20044 any(target_arch = "aarch64", target_arch = "arm64ec"),
20045 link_name = "llvm.aarch64.neon.ld2.v4i32.p0"
20046 )]
20047 fn _vld2q_s32(ptr: *const int32x4_t) -> int32x4x2_t;
20048 }
20049 _vld2q_s32(a as _)
20050}
20051#[doc = "Load multiple 2-element structures to two registers"]
20052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f16)"]
20053#[doc = "## Safety"]
20054#[doc = " * Neon intrinsic unsafe"]
20055#[inline(always)]
20056#[target_feature(enable = "neon,v7")]
20057#[cfg(target_arch = "arm")]
20058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20059#[rustc_legacy_const_generics(2)]
20060#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20061#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20062#[cfg(not(target_arch = "arm64ec"))]
20063pub unsafe fn vld2_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x2_t) -> float16x4x2_t {
20064 static_assert_uimm_bits!(LANE, 2);
20065 unsafe extern "unadjusted" {
20066 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4f16.p0")]
20067 fn _vld2_lane_f16(
20068 ptr: *const f16,
20069 a: float16x4_t,
20070 b: float16x4_t,
20071 n: i32,
20072 size: i32,
20073 ) -> float16x4x2_t;
20074 }
20075 _vld2_lane_f16(a as _, b.0, b.1, LANE, 2)
20076}
20077#[doc = "Load multiple 2-element structures to two registers"]
20078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f16)"]
20079#[doc = "## Safety"]
20080#[doc = " * Neon intrinsic unsafe"]
20081#[inline(always)]
20082#[target_feature(enable = "neon,v7")]
20083#[cfg(target_arch = "arm")]
20084#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20085#[rustc_legacy_const_generics(2)]
20086#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20087#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20088#[cfg(not(target_arch = "arm64ec"))]
20089pub unsafe fn vld2q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x2_t) -> float16x8x2_t {
20090 static_assert_uimm_bits!(LANE, 3);
20091 unsafe extern "unadjusted" {
20092 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8f16.p0")]
20093 fn _vld2q_lane_f16(
20094 ptr: *const f16,
20095 a: float16x8_t,
20096 b: float16x8_t,
20097 n: i32,
20098 size: i32,
20099 ) -> float16x8x2_t;
20100 }
20101 _vld2q_lane_f16(a as _, b.0, b.1, LANE, 2)
20102}
20103#[doc = "Load multiple 2-element structures to two registers"]
20104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f16)"]
20105#[doc = "## Safety"]
20106#[doc = " * Neon intrinsic unsafe"]
20107#[inline(always)]
20108#[target_feature(enable = "neon")]
20109#[cfg(not(target_arch = "arm"))]
20110#[cfg_attr(
20111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20112 assert_instr(ld2, LANE = 0)
20113)]
20114#[rustc_legacy_const_generics(2)]
20115#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20116#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20117#[cfg(not(target_arch = "arm64ec"))]
20118pub unsafe fn vld2_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x2_t) -> float16x4x2_t {
20119 static_assert_uimm_bits!(LANE, 2);
20120 unsafe extern "unadjusted" {
20121 #[cfg_attr(
20122 any(target_arch = "aarch64", target_arch = "arm64ec"),
20123 link_name = "llvm.aarch64.neon.ld2lane.v4f16.p0"
20124 )]
20125 fn _vld2_lane_f16(a: float16x4_t, b: float16x4_t, n: i64, ptr: *const f16)
20126 -> float16x4x2_t;
20127 }
20128 _vld2_lane_f16(b.0, b.1, LANE as i64, a as _)
20129}
20130#[doc = "Load multiple 2-element structures to two registers"]
20131#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f16)"]
20132#[doc = "## Safety"]
20133#[doc = " * Neon intrinsic unsafe"]
20134#[inline(always)]
20135#[target_feature(enable = "neon")]
20136#[cfg(not(target_arch = "arm"))]
20137#[cfg_attr(
20138 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20139 assert_instr(ld2, LANE = 0)
20140)]
20141#[rustc_legacy_const_generics(2)]
20142#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20143#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20144#[cfg(not(target_arch = "arm64ec"))]
20145pub unsafe fn vld2q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x2_t) -> float16x8x2_t {
20146 static_assert_uimm_bits!(LANE, 3);
20147 unsafe extern "unadjusted" {
20148 #[cfg_attr(
20149 any(target_arch = "aarch64", target_arch = "arm64ec"),
20150 link_name = "llvm.aarch64.neon.ld2lane.v8f16.p0"
20151 )]
20152 fn _vld2q_lane_f16(
20153 a: float16x8_t,
20154 b: float16x8_t,
20155 n: i64,
20156 ptr: *const f16,
20157 ) -> float16x8x2_t;
20158 }
20159 _vld2q_lane_f16(b.0, b.1, LANE as i64, a as _)
20160}
20161#[doc = "Load multiple 2-element structures to two registers"]
20162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f32)"]
20163#[doc = "## Safety"]
20164#[doc = " * Neon intrinsic unsafe"]
20165#[inline(always)]
20166#[target_feature(enable = "neon")]
20167#[cfg(not(target_arch = "arm"))]
20168#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20169#[rustc_legacy_const_generics(2)]
20170#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20171pub unsafe fn vld2_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x2_t) -> float32x2x2_t {
20172 static_assert_uimm_bits!(LANE, 2);
20173 unsafe extern "unadjusted" {
20174 #[cfg_attr(
20175 any(target_arch = "aarch64", target_arch = "arm64ec"),
20176 link_name = "llvm.aarch64.neon.ld2lane.v2f32.p0"
20177 )]
20178 fn _vld2_lane_f32(a: float32x2_t, b: float32x2_t, n: i64, ptr: *const i8) -> float32x2x2_t;
20179 }
20180 _vld2_lane_f32(b.0, b.1, LANE as i64, a as _)
20181}
20182#[doc = "Load multiple 2-element structures to two registers"]
20183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f32)"]
20184#[doc = "## Safety"]
20185#[doc = " * Neon intrinsic unsafe"]
20186#[inline(always)]
20187#[target_feature(enable = "neon")]
20188#[cfg(not(target_arch = "arm"))]
20189#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20190#[rustc_legacy_const_generics(2)]
20191#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20192pub unsafe fn vld2q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x2_t) -> float32x4x2_t {
20193 static_assert_uimm_bits!(LANE, 2);
20194 unsafe extern "unadjusted" {
20195 #[cfg_attr(
20196 any(target_arch = "aarch64", target_arch = "arm64ec"),
20197 link_name = "llvm.aarch64.neon.ld2lane.v4f32.p0"
20198 )]
20199 fn _vld2q_lane_f32(a: float32x4_t, b: float32x4_t, n: i64, ptr: *const i8)
20200 -> float32x4x2_t;
20201 }
20202 _vld2q_lane_f32(b.0, b.1, LANE as i64, a as _)
20203}
20204#[doc = "Load multiple 2-element structures to two registers"]
20205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s8)"]
20206#[doc = "## Safety"]
20207#[doc = " * Neon intrinsic unsafe"]
20208#[inline(always)]
20209#[target_feature(enable = "neon")]
20210#[cfg(not(target_arch = "arm"))]
20211#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20212#[rustc_legacy_const_generics(2)]
20213#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20214pub unsafe fn vld2_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x2_t) -> int8x8x2_t {
20215 static_assert_uimm_bits!(LANE, 3);
20216 unsafe extern "unadjusted" {
20217 #[cfg_attr(
20218 any(target_arch = "aarch64", target_arch = "arm64ec"),
20219 link_name = "llvm.aarch64.neon.ld2lane.v8i8.p0"
20220 )]
20221 fn _vld2_lane_s8(a: int8x8_t, b: int8x8_t, n: i64, ptr: *const i8) -> int8x8x2_t;
20222 }
20223 _vld2_lane_s8(b.0, b.1, LANE as i64, a as _)
20224}
20225#[doc = "Load multiple 2-element structures to two registers"]
20226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s16)"]
20227#[doc = "## Safety"]
20228#[doc = " * Neon intrinsic unsafe"]
20229#[inline(always)]
20230#[target_feature(enable = "neon")]
20231#[cfg(not(target_arch = "arm"))]
20232#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20233#[rustc_legacy_const_generics(2)]
20234#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20235pub unsafe fn vld2_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x2_t) -> int16x4x2_t {
20236 static_assert_uimm_bits!(LANE, 2);
20237 unsafe extern "unadjusted" {
20238 #[cfg_attr(
20239 any(target_arch = "aarch64", target_arch = "arm64ec"),
20240 link_name = "llvm.aarch64.neon.ld2lane.v4i16.p0"
20241 )]
20242 fn _vld2_lane_s16(a: int16x4_t, b: int16x4_t, n: i64, ptr: *const i8) -> int16x4x2_t;
20243 }
20244 _vld2_lane_s16(b.0, b.1, LANE as i64, a as _)
20245}
20246#[doc = "Load multiple 2-element structures to two registers"]
20247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s16)"]
20248#[doc = "## Safety"]
20249#[doc = " * Neon intrinsic unsafe"]
20250#[inline(always)]
20251#[target_feature(enable = "neon")]
20252#[cfg(not(target_arch = "arm"))]
20253#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20254#[rustc_legacy_const_generics(2)]
20255#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20256pub unsafe fn vld2q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x2_t) -> int16x8x2_t {
20257 static_assert_uimm_bits!(LANE, 3);
20258 unsafe extern "unadjusted" {
20259 #[cfg_attr(
20260 any(target_arch = "aarch64", target_arch = "arm64ec"),
20261 link_name = "llvm.aarch64.neon.ld2lane.v8i16.p0"
20262 )]
20263 fn _vld2q_lane_s16(a: int16x8_t, b: int16x8_t, n: i64, ptr: *const i8) -> int16x8x2_t;
20264 }
20265 _vld2q_lane_s16(b.0, b.1, LANE as i64, a as _)
20266}
20267#[doc = "Load multiple 2-element structures to two registers"]
20268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s32)"]
20269#[doc = "## Safety"]
20270#[doc = " * Neon intrinsic unsafe"]
20271#[inline(always)]
20272#[target_feature(enable = "neon")]
20273#[cfg(not(target_arch = "arm"))]
20274#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20275#[rustc_legacy_const_generics(2)]
20276#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20277pub unsafe fn vld2_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x2_t) -> int32x2x2_t {
20278 static_assert_uimm_bits!(LANE, 1);
20279 unsafe extern "unadjusted" {
20280 #[cfg_attr(
20281 any(target_arch = "aarch64", target_arch = "arm64ec"),
20282 link_name = "llvm.aarch64.neon.ld2lane.v2i32.p0"
20283 )]
20284 fn _vld2_lane_s32(a: int32x2_t, b: int32x2_t, n: i64, ptr: *const i8) -> int32x2x2_t;
20285 }
20286 _vld2_lane_s32(b.0, b.1, LANE as i64, a as _)
20287}
20288#[doc = "Load multiple 2-element structures to two registers"]
20289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s32)"]
20290#[doc = "## Safety"]
20291#[doc = " * Neon intrinsic unsafe"]
20292#[inline(always)]
20293#[target_feature(enable = "neon")]
20294#[cfg(not(target_arch = "arm"))]
20295#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20296#[rustc_legacy_const_generics(2)]
20297#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20298pub unsafe fn vld2q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x2_t) -> int32x4x2_t {
20299 static_assert_uimm_bits!(LANE, 2);
20300 unsafe extern "unadjusted" {
20301 #[cfg_attr(
20302 any(target_arch = "aarch64", target_arch = "arm64ec"),
20303 link_name = "llvm.aarch64.neon.ld2lane.v4i32.p0"
20304 )]
20305 fn _vld2q_lane_s32(a: int32x4_t, b: int32x4_t, n: i64, ptr: *const i8) -> int32x4x2_t;
20306 }
20307 _vld2q_lane_s32(b.0, b.1, LANE as i64, a as _)
20308}
20309#[doc = "Load multiple 2-element structures to two registers"]
20310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f32)"]
20311#[doc = "## Safety"]
20312#[doc = " * Neon intrinsic unsafe"]
20313#[inline(always)]
20314#[target_feature(enable = "neon,v7")]
20315#[cfg(target_arch = "arm")]
20316#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20317#[rustc_legacy_const_generics(2)]
20318#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20319pub unsafe fn vld2_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x2_t) -> float32x2x2_t {
20320 static_assert_uimm_bits!(LANE, 1);
20321 unsafe extern "unadjusted" {
20322 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v2f32.p0")]
20323 fn _vld2_lane_f32(
20324 ptr: *const i8,
20325 a: float32x2_t,
20326 b: float32x2_t,
20327 n: i32,
20328 size: i32,
20329 ) -> float32x2x2_t;
20330 }
20331 _vld2_lane_f32(a as _, b.0, b.1, LANE, 4)
20332}
20333#[doc = "Load multiple 2-element structures to two registers"]
20334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f32)"]
20335#[doc = "## Safety"]
20336#[doc = " * Neon intrinsic unsafe"]
20337#[inline(always)]
20338#[target_feature(enable = "neon,v7")]
20339#[cfg(target_arch = "arm")]
20340#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20341#[rustc_legacy_const_generics(2)]
20342#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20343pub unsafe fn vld2q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x2_t) -> float32x4x2_t {
20344 static_assert_uimm_bits!(LANE, 2);
20345 unsafe extern "unadjusted" {
20346 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4f32.p0")]
20347 fn _vld2q_lane_f32(
20348 ptr: *const i8,
20349 a: float32x4_t,
20350 b: float32x4_t,
20351 n: i32,
20352 size: i32,
20353 ) -> float32x4x2_t;
20354 }
20355 _vld2q_lane_f32(a as _, b.0, b.1, LANE, 4)
20356}
20357#[doc = "Load multiple 2-element structures to two registers"]
20358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s16)"]
20359#[doc = "## Safety"]
20360#[doc = " * Neon intrinsic unsafe"]
20361#[inline(always)]
20362#[target_feature(enable = "neon,v7")]
20363#[cfg(target_arch = "arm")]
20364#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20365#[rustc_legacy_const_generics(2)]
20366#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20367pub unsafe fn vld2q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x2_t) -> int16x8x2_t {
20368 static_assert_uimm_bits!(LANE, 3);
20369 unsafe extern "unadjusted" {
20370 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8i16.p0")]
20371 fn _vld2q_lane_s16(
20372 ptr: *const i8,
20373 a: int16x8_t,
20374 b: int16x8_t,
20375 n: i32,
20376 size: i32,
20377 ) -> int16x8x2_t;
20378 }
20379 _vld2q_lane_s16(a as _, b.0, b.1, LANE, 2)
20380}
20381#[doc = "Load multiple 2-element structures to two registers"]
20382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s32)"]
20383#[doc = "## Safety"]
20384#[doc = " * Neon intrinsic unsafe"]
20385#[inline(always)]
20386#[target_feature(enable = "neon,v7")]
20387#[cfg(target_arch = "arm")]
20388#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20389#[rustc_legacy_const_generics(2)]
20390#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20391pub unsafe fn vld2q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x2_t) -> int32x4x2_t {
20392 static_assert_uimm_bits!(LANE, 2);
20393 unsafe extern "unadjusted" {
20394 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4i32.p0")]
20395 fn _vld2q_lane_s32(
20396 ptr: *const i8,
20397 a: int32x4_t,
20398 b: int32x4_t,
20399 n: i32,
20400 size: i32,
20401 ) -> int32x4x2_t;
20402 }
20403 _vld2q_lane_s32(a as _, b.0, b.1, LANE, 4)
20404}
20405#[doc = "Load multiple 2-element structures to two registers"]
20406#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s8)"]
20407#[doc = "## Safety"]
20408#[doc = " * Neon intrinsic unsafe"]
20409#[inline(always)]
20410#[target_feature(enable = "neon,v7")]
20411#[cfg(target_arch = "arm")]
20412#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20413#[rustc_legacy_const_generics(2)]
20414#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20415pub unsafe fn vld2_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x2_t) -> int8x8x2_t {
20416 static_assert_uimm_bits!(LANE, 3);
20417 unsafe extern "unadjusted" {
20418 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8i8.p0")]
20419 fn _vld2_lane_s8(ptr: *const i8, a: int8x8_t, b: int8x8_t, n: i32, size: i32)
20420 -> int8x8x2_t;
20421 }
20422 _vld2_lane_s8(a as _, b.0, b.1, LANE, 1)
20423}
20424#[doc = "Load multiple 2-element structures to two registers"]
20425#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s16)"]
20426#[doc = "## Safety"]
20427#[doc = " * Neon intrinsic unsafe"]
20428#[inline(always)]
20429#[target_feature(enable = "neon,v7")]
20430#[cfg(target_arch = "arm")]
20431#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20432#[rustc_legacy_const_generics(2)]
20433#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20434pub unsafe fn vld2_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x2_t) -> int16x4x2_t {
20435 static_assert_uimm_bits!(LANE, 2);
20436 unsafe extern "unadjusted" {
20437 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4i16.p0")]
20438 fn _vld2_lane_s16(
20439 ptr: *const i8,
20440 a: int16x4_t,
20441 b: int16x4_t,
20442 n: i32,
20443 size: i32,
20444 ) -> int16x4x2_t;
20445 }
20446 _vld2_lane_s16(a as _, b.0, b.1, LANE, 2)
20447}
20448#[doc = "Load multiple 2-element structures to two registers"]
20449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s32)"]
20450#[doc = "## Safety"]
20451#[doc = " * Neon intrinsic unsafe"]
20452#[inline(always)]
20453#[target_feature(enable = "neon,v7")]
20454#[cfg(target_arch = "arm")]
20455#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20456#[rustc_legacy_const_generics(2)]
20457#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20458pub unsafe fn vld2_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x2_t) -> int32x2x2_t {
20459 static_assert_uimm_bits!(LANE, 1);
20460 unsafe extern "unadjusted" {
20461 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v2i32.p0")]
20462 fn _vld2_lane_s32(
20463 ptr: *const i8,
20464 a: int32x2_t,
20465 b: int32x2_t,
20466 n: i32,
20467 size: i32,
20468 ) -> int32x2x2_t;
20469 }
20470 _vld2_lane_s32(a as _, b.0, b.1, LANE, 4)
20471}
20472#[doc = "Load multiple 2-element structures to two registers"]
20473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u8)"]
20474#[doc = "## Safety"]
20475#[doc = " * Neon intrinsic unsafe"]
20476#[inline(always)]
20477#[target_feature(enable = "neon")]
20478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20480#[cfg_attr(
20481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20482 assert_instr(ld2, LANE = 0)
20483)]
20484#[rustc_legacy_const_generics(2)]
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 vld2_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x2_t) -> uint8x8x2_t {
20494 static_assert_uimm_bits!(LANE, 3);
20495 transmute(vld2_lane_s8::<LANE>(transmute(a), transmute(b)))
20496}
20497#[doc = "Load multiple 2-element structures to two registers"]
20498#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u16)"]
20499#[doc = "## Safety"]
20500#[doc = " * Neon intrinsic unsafe"]
20501#[inline(always)]
20502#[target_feature(enable = "neon")]
20503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20504#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20505#[cfg_attr(
20506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20507 assert_instr(ld2, LANE = 0)
20508)]
20509#[rustc_legacy_const_generics(2)]
20510#[cfg_attr(
20511 not(target_arch = "arm"),
20512 stable(feature = "neon_intrinsics", since = "1.59.0")
20513)]
20514#[cfg_attr(
20515 target_arch = "arm",
20516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20517)]
20518pub unsafe fn vld2_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x2_t) -> uint16x4x2_t {
20519 static_assert_uimm_bits!(LANE, 2);
20520 transmute(vld2_lane_s16::<LANE>(transmute(a), transmute(b)))
20521}
20522#[doc = "Load multiple 2-element structures to two registers"]
20523#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_u16)"]
20524#[doc = "## Safety"]
20525#[doc = " * Neon intrinsic unsafe"]
20526#[inline(always)]
20527#[target_feature(enable = "neon")]
20528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20529#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20530#[cfg_attr(
20531 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20532 assert_instr(ld2, LANE = 0)
20533)]
20534#[rustc_legacy_const_generics(2)]
20535#[cfg_attr(
20536 not(target_arch = "arm"),
20537 stable(feature = "neon_intrinsics", since = "1.59.0")
20538)]
20539#[cfg_attr(
20540 target_arch = "arm",
20541 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20542)]
20543pub unsafe fn vld2q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x2_t) -> uint16x8x2_t {
20544 static_assert_uimm_bits!(LANE, 3);
20545 transmute(vld2q_lane_s16::<LANE>(transmute(a), transmute(b)))
20546}
20547#[doc = "Load multiple 2-element structures to two registers"]
20548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u32)"]
20549#[doc = "## Safety"]
20550#[doc = " * Neon intrinsic unsafe"]
20551#[inline(always)]
20552#[target_feature(enable = "neon")]
20553#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20554#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20555#[cfg_attr(
20556 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20557 assert_instr(ld2, LANE = 0)
20558)]
20559#[rustc_legacy_const_generics(2)]
20560#[cfg_attr(
20561 not(target_arch = "arm"),
20562 stable(feature = "neon_intrinsics", since = "1.59.0")
20563)]
20564#[cfg_attr(
20565 target_arch = "arm",
20566 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20567)]
20568pub unsafe fn vld2_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x2_t) -> uint32x2x2_t {
20569 static_assert_uimm_bits!(LANE, 1);
20570 transmute(vld2_lane_s32::<LANE>(transmute(a), transmute(b)))
20571}
20572#[doc = "Load multiple 2-element structures to two registers"]
20573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_u32)"]
20574#[doc = "## Safety"]
20575#[doc = " * Neon intrinsic unsafe"]
20576#[inline(always)]
20577#[target_feature(enable = "neon")]
20578#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20579#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20580#[cfg_attr(
20581 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20582 assert_instr(ld2, LANE = 0)
20583)]
20584#[rustc_legacy_const_generics(2)]
20585#[cfg_attr(
20586 not(target_arch = "arm"),
20587 stable(feature = "neon_intrinsics", since = "1.59.0")
20588)]
20589#[cfg_attr(
20590 target_arch = "arm",
20591 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20592)]
20593pub unsafe fn vld2q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x2_t) -> uint32x4x2_t {
20594 static_assert_uimm_bits!(LANE, 2);
20595 transmute(vld2q_lane_s32::<LANE>(transmute(a), transmute(b)))
20596}
20597#[doc = "Load multiple 2-element structures to two registers"]
20598#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_p8)"]
20599#[doc = "## Safety"]
20600#[doc = " * Neon intrinsic unsafe"]
20601#[inline(always)]
20602#[target_feature(enable = "neon")]
20603#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20604#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20605#[cfg_attr(
20606 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20607 assert_instr(ld2, LANE = 0)
20608)]
20609#[rustc_legacy_const_generics(2)]
20610#[cfg_attr(
20611 not(target_arch = "arm"),
20612 stable(feature = "neon_intrinsics", since = "1.59.0")
20613)]
20614#[cfg_attr(
20615 target_arch = "arm",
20616 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20617)]
20618pub unsafe fn vld2_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x2_t) -> poly8x8x2_t {
20619 static_assert_uimm_bits!(LANE, 3);
20620 transmute(vld2_lane_s8::<LANE>(transmute(a), transmute(b)))
20621}
20622#[doc = "Load multiple 2-element structures to two registers"]
20623#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_p16)"]
20624#[doc = "## Safety"]
20625#[doc = " * Neon intrinsic unsafe"]
20626#[inline(always)]
20627#[target_feature(enable = "neon")]
20628#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20629#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20630#[cfg_attr(
20631 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20632 assert_instr(ld2, LANE = 0)
20633)]
20634#[rustc_legacy_const_generics(2)]
20635#[cfg_attr(
20636 not(target_arch = "arm"),
20637 stable(feature = "neon_intrinsics", since = "1.59.0")
20638)]
20639#[cfg_attr(
20640 target_arch = "arm",
20641 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20642)]
20643pub unsafe fn vld2_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x2_t) -> poly16x4x2_t {
20644 static_assert_uimm_bits!(LANE, 2);
20645 transmute(vld2_lane_s16::<LANE>(transmute(a), transmute(b)))
20646}
20647#[doc = "Load multiple 2-element structures to two registers"]
20648#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_p16)"]
20649#[doc = "## Safety"]
20650#[doc = " * Neon intrinsic unsafe"]
20651#[inline(always)]
20652#[target_feature(enable = "neon")]
20653#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20654#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20655#[cfg_attr(
20656 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20657 assert_instr(ld2, LANE = 0)
20658)]
20659#[rustc_legacy_const_generics(2)]
20660#[cfg_attr(
20661 not(target_arch = "arm"),
20662 stable(feature = "neon_intrinsics", since = "1.59.0")
20663)]
20664#[cfg_attr(
20665 target_arch = "arm",
20666 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20667)]
20668pub unsafe fn vld2q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x2_t) -> poly16x8x2_t {
20669 static_assert_uimm_bits!(LANE, 3);
20670 transmute(vld2q_lane_s16::<LANE>(transmute(a), transmute(b)))
20671}
20672#[doc = "Load multiple 2-element structures to two registers"]
20673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p64)"]
20674#[doc = "## Safety"]
20675#[doc = " * Neon intrinsic unsafe"]
20676#[inline(always)]
20677#[target_feature(enable = "neon,aes")]
20678#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
20679#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
20680#[cfg_attr(
20681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20682 assert_instr(nop)
20683)]
20684#[cfg_attr(
20685 not(target_arch = "arm"),
20686 stable(feature = "neon_intrinsics", since = "1.59.0")
20687)]
20688#[cfg_attr(
20689 target_arch = "arm",
20690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20691)]
20692pub unsafe fn vld2_p64(a: *const p64) -> poly64x1x2_t {
20693 transmute(vld2_s64(transmute(a)))
20694}
20695#[doc = "Load multiple 2-element structures to two registers"]
20696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s64)"]
20697#[doc = "## Safety"]
20698#[doc = " * Neon intrinsic unsafe"]
20699#[inline(always)]
20700#[target_feature(enable = "neon,v7")]
20701#[cfg(target_arch = "arm")]
20702#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20703#[cfg_attr(test, assert_instr(nop))]
20704pub unsafe fn vld2_s64(a: *const i64) -> int64x1x2_t {
20705 unsafe extern "unadjusted" {
20706 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v1i64")]
20707 fn _vld2_s64(ptr: *const i8, size: i32) -> int64x1x2_t;
20708 }
20709 _vld2_s64(a as *const i8, 8)
20710}
20711#[doc = "Load multiple 2-element structures to two registers"]
20712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s64)"]
20713#[doc = "## Safety"]
20714#[doc = " * Neon intrinsic unsafe"]
20715#[inline(always)]
20716#[target_feature(enable = "neon")]
20717#[cfg(not(target_arch = "arm"))]
20718#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20719#[cfg_attr(test, assert_instr(nop))]
20720pub unsafe fn vld2_s64(a: *const i64) -> int64x1x2_t {
20721 unsafe extern "unadjusted" {
20722 #[cfg_attr(
20723 any(target_arch = "aarch64", target_arch = "arm64ec"),
20724 link_name = "llvm.aarch64.neon.ld2.v1i64.p0"
20725 )]
20726 fn _vld2_s64(ptr: *const int64x1_t) -> int64x1x2_t;
20727 }
20728 _vld2_s64(a as _)
20729}
20730#[doc = "Load multiple 2-element structures to two registers"]
20731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u64)"]
20732#[doc = "## Safety"]
20733#[doc = " * Neon intrinsic unsafe"]
20734#[inline(always)]
20735#[target_feature(enable = "neon")]
20736#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20737#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
20738#[cfg_attr(
20739 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20740 assert_instr(nop)
20741)]
20742#[cfg_attr(
20743 not(target_arch = "arm"),
20744 stable(feature = "neon_intrinsics", since = "1.59.0")
20745)]
20746#[cfg_attr(
20747 target_arch = "arm",
20748 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20749)]
20750pub unsafe fn vld2_u64(a: *const u64) -> uint64x1x2_t {
20751 transmute(vld2_s64(transmute(a)))
20752}
20753#[doc = "Load multiple 2-element structures to two registers"]
20754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u8)"]
20755#[doc = "## Safety"]
20756#[doc = " * Neon intrinsic unsafe"]
20757#[inline(always)]
20758#[target_feature(enable = "neon")]
20759#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20760#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20761#[cfg_attr(
20762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20763 assert_instr(ld2)
20764)]
20765#[cfg_attr(
20766 not(target_arch = "arm"),
20767 stable(feature = "neon_intrinsics", since = "1.59.0")
20768)]
20769#[cfg_attr(
20770 target_arch = "arm",
20771 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20772)]
20773pub unsafe fn vld2_u8(a: *const u8) -> uint8x8x2_t {
20774 transmute(vld2_s8(transmute(a)))
20775}
20776#[doc = "Load multiple 2-element structures to two registers"]
20777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u8)"]
20778#[doc = "## Safety"]
20779#[doc = " * Neon intrinsic unsafe"]
20780#[inline(always)]
20781#[target_feature(enable = "neon")]
20782#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20783#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20784#[cfg_attr(
20785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20786 assert_instr(ld2)
20787)]
20788#[cfg_attr(
20789 not(target_arch = "arm"),
20790 stable(feature = "neon_intrinsics", since = "1.59.0")
20791)]
20792#[cfg_attr(
20793 target_arch = "arm",
20794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20795)]
20796pub unsafe fn vld2q_u8(a: *const u8) -> uint8x16x2_t {
20797 transmute(vld2q_s8(transmute(a)))
20798}
20799#[doc = "Load multiple 2-element structures to two registers"]
20800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u16)"]
20801#[doc = "## Safety"]
20802#[doc = " * Neon intrinsic unsafe"]
20803#[inline(always)]
20804#[target_feature(enable = "neon")]
20805#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20806#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20807#[cfg_attr(
20808 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20809 assert_instr(ld2)
20810)]
20811#[cfg_attr(
20812 not(target_arch = "arm"),
20813 stable(feature = "neon_intrinsics", since = "1.59.0")
20814)]
20815#[cfg_attr(
20816 target_arch = "arm",
20817 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20818)]
20819pub unsafe fn vld2_u16(a: *const u16) -> uint16x4x2_t {
20820 transmute(vld2_s16(transmute(a)))
20821}
20822#[doc = "Load multiple 2-element structures to two registers"]
20823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u16)"]
20824#[doc = "## Safety"]
20825#[doc = " * Neon intrinsic unsafe"]
20826#[inline(always)]
20827#[target_feature(enable = "neon")]
20828#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20829#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20830#[cfg_attr(
20831 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20832 assert_instr(ld2)
20833)]
20834#[cfg_attr(
20835 not(target_arch = "arm"),
20836 stable(feature = "neon_intrinsics", since = "1.59.0")
20837)]
20838#[cfg_attr(
20839 target_arch = "arm",
20840 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20841)]
20842pub unsafe fn vld2q_u16(a: *const u16) -> uint16x8x2_t {
20843 transmute(vld2q_s16(transmute(a)))
20844}
20845#[doc = "Load multiple 2-element structures to two registers"]
20846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u32)"]
20847#[doc = "## Safety"]
20848#[doc = " * Neon intrinsic unsafe"]
20849#[inline(always)]
20850#[target_feature(enable = "neon")]
20851#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20852#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20853#[cfg_attr(
20854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20855 assert_instr(ld2)
20856)]
20857#[cfg_attr(
20858 not(target_arch = "arm"),
20859 stable(feature = "neon_intrinsics", since = "1.59.0")
20860)]
20861#[cfg_attr(
20862 target_arch = "arm",
20863 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20864)]
20865pub unsafe fn vld2_u32(a: *const u32) -> uint32x2x2_t {
20866 transmute(vld2_s32(transmute(a)))
20867}
20868#[doc = "Load multiple 2-element structures to two registers"]
20869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u32)"]
20870#[doc = "## Safety"]
20871#[doc = " * Neon intrinsic unsafe"]
20872#[inline(always)]
20873#[target_feature(enable = "neon")]
20874#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20875#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20876#[cfg_attr(
20877 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20878 assert_instr(ld2)
20879)]
20880#[cfg_attr(
20881 not(target_arch = "arm"),
20882 stable(feature = "neon_intrinsics", since = "1.59.0")
20883)]
20884#[cfg_attr(
20885 target_arch = "arm",
20886 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20887)]
20888pub unsafe fn vld2q_u32(a: *const u32) -> uint32x4x2_t {
20889 transmute(vld2q_s32(transmute(a)))
20890}
20891#[doc = "Load multiple 2-element structures to two registers"]
20892#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p8)"]
20893#[doc = "## Safety"]
20894#[doc = " * Neon intrinsic unsafe"]
20895#[inline(always)]
20896#[target_feature(enable = "neon")]
20897#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20898#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20899#[cfg_attr(
20900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20901 assert_instr(ld2)
20902)]
20903#[cfg_attr(
20904 not(target_arch = "arm"),
20905 stable(feature = "neon_intrinsics", since = "1.59.0")
20906)]
20907#[cfg_attr(
20908 target_arch = "arm",
20909 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20910)]
20911pub unsafe fn vld2_p8(a: *const p8) -> poly8x8x2_t {
20912 transmute(vld2_s8(transmute(a)))
20913}
20914#[doc = "Load multiple 2-element structures to two registers"]
20915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_p8)"]
20916#[doc = "## Safety"]
20917#[doc = " * Neon intrinsic unsafe"]
20918#[inline(always)]
20919#[target_feature(enable = "neon")]
20920#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20921#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20922#[cfg_attr(
20923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20924 assert_instr(ld2)
20925)]
20926#[cfg_attr(
20927 not(target_arch = "arm"),
20928 stable(feature = "neon_intrinsics", since = "1.59.0")
20929)]
20930#[cfg_attr(
20931 target_arch = "arm",
20932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20933)]
20934pub unsafe fn vld2q_p8(a: *const p8) -> poly8x16x2_t {
20935 transmute(vld2q_s8(transmute(a)))
20936}
20937#[doc = "Load multiple 2-element structures to two registers"]
20938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p16)"]
20939#[doc = "## Safety"]
20940#[doc = " * Neon intrinsic unsafe"]
20941#[inline(always)]
20942#[target_feature(enable = "neon")]
20943#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20944#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20945#[cfg_attr(
20946 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20947 assert_instr(ld2)
20948)]
20949#[cfg_attr(
20950 not(target_arch = "arm"),
20951 stable(feature = "neon_intrinsics", since = "1.59.0")
20952)]
20953#[cfg_attr(
20954 target_arch = "arm",
20955 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20956)]
20957pub unsafe fn vld2_p16(a: *const p16) -> poly16x4x2_t {
20958 transmute(vld2_s16(transmute(a)))
20959}
20960#[doc = "Load multiple 2-element structures to two registers"]
20961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_p16)"]
20962#[doc = "## Safety"]
20963#[doc = " * Neon intrinsic unsafe"]
20964#[inline(always)]
20965#[target_feature(enable = "neon")]
20966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20967#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20968#[cfg_attr(
20969 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20970 assert_instr(ld2)
20971)]
20972#[cfg_attr(
20973 not(target_arch = "arm"),
20974 stable(feature = "neon_intrinsics", since = "1.59.0")
20975)]
20976#[cfg_attr(
20977 target_arch = "arm",
20978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20979)]
20980pub unsafe fn vld2q_p16(a: *const p16) -> poly16x8x2_t {
20981 transmute(vld2q_s16(transmute(a)))
20982}
20983#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
20984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f16)"]
20985#[doc = "## Safety"]
20986#[doc = " * Neon intrinsic unsafe"]
20987#[inline(always)]
20988#[target_feature(enable = "neon")]
20989#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20990#[cfg(target_arch = "arm")]
20991#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
20992#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20993#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20994#[cfg(not(target_arch = "arm64ec"))]
20995pub unsafe fn vld3_dup_f16(a: *const f16) -> float16x4x3_t {
20996 unsafe extern "unadjusted" {
20997 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4f16.p0")]
20998 fn _vld3_dup_f16(ptr: *const f16, size: i32) -> float16x4x3_t;
20999 }
21000 _vld3_dup_f16(a as _, 2)
21001}
21002#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
21003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f16)"]
21004#[doc = "## Safety"]
21005#[doc = " * Neon intrinsic unsafe"]
21006#[inline(always)]
21007#[target_feature(enable = "neon")]
21008#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21009#[cfg(target_arch = "arm")]
21010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21011#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21012#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21013#[cfg(not(target_arch = "arm64ec"))]
21014pub unsafe fn vld3q_dup_f16(a: *const f16) -> float16x8x3_t {
21015 unsafe extern "unadjusted" {
21016 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8f16.p0")]
21017 fn _vld3q_dup_f16(ptr: *const f16, size: i32) -> float16x8x3_t;
21018 }
21019 _vld3q_dup_f16(a as _, 2)
21020}
21021#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
21022#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f16)"]
21023#[doc = "## Safety"]
21024#[doc = " * Neon intrinsic unsafe"]
21025#[inline(always)]
21026#[target_feature(enable = "neon")]
21027#[cfg(not(target_arch = "arm"))]
21028#[cfg_attr(
21029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21030 assert_instr(ld3r)
21031)]
21032#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21033#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21034#[cfg(not(target_arch = "arm64ec"))]
21035pub unsafe fn vld3_dup_f16(a: *const f16) -> float16x4x3_t {
21036 unsafe extern "unadjusted" {
21037 #[cfg_attr(
21038 any(target_arch = "aarch64", target_arch = "arm64ec"),
21039 link_name = "llvm.aarch64.neon.ld3r.v4f16.p0"
21040 )]
21041 fn _vld3_dup_f16(ptr: *const f16) -> float16x4x3_t;
21042 }
21043 _vld3_dup_f16(a as _)
21044}
21045#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
21046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f16)"]
21047#[doc = "## Safety"]
21048#[doc = " * Neon intrinsic unsafe"]
21049#[inline(always)]
21050#[target_feature(enable = "neon")]
21051#[cfg(not(target_arch = "arm"))]
21052#[cfg_attr(
21053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21054 assert_instr(ld3r)
21055)]
21056#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21057#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21058#[cfg(not(target_arch = "arm64ec"))]
21059pub unsafe fn vld3q_dup_f16(a: *const f16) -> float16x8x3_t {
21060 unsafe extern "unadjusted" {
21061 #[cfg_attr(
21062 any(target_arch = "aarch64", target_arch = "arm64ec"),
21063 link_name = "llvm.aarch64.neon.ld3r.v8f16.p0"
21064 )]
21065 fn _vld3q_dup_f16(ptr: *const f16) -> float16x8x3_t;
21066 }
21067 _vld3q_dup_f16(a as _)
21068}
21069#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f32)"]
21071#[doc = "## Safety"]
21072#[doc = " * Neon intrinsic unsafe"]
21073#[inline(always)]
21074#[target_feature(enable = "neon")]
21075#[cfg(not(target_arch = "arm"))]
21076#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21077#[cfg_attr(test, assert_instr(ld3r))]
21078pub unsafe fn vld3_dup_f32(a: *const f32) -> float32x2x3_t {
21079 unsafe extern "unadjusted" {
21080 #[cfg_attr(
21081 any(target_arch = "aarch64", target_arch = "arm64ec"),
21082 link_name = "llvm.aarch64.neon.ld3r.v2f32.p0"
21083 )]
21084 fn _vld3_dup_f32(ptr: *const f32) -> float32x2x3_t;
21085 }
21086 _vld3_dup_f32(a as _)
21087}
21088#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21089#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f32)"]
21090#[doc = "## Safety"]
21091#[doc = " * Neon intrinsic unsafe"]
21092#[inline(always)]
21093#[target_feature(enable = "neon")]
21094#[cfg(not(target_arch = "arm"))]
21095#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21096#[cfg_attr(test, assert_instr(ld3r))]
21097pub unsafe fn vld3q_dup_f32(a: *const f32) -> float32x4x3_t {
21098 unsafe extern "unadjusted" {
21099 #[cfg_attr(
21100 any(target_arch = "aarch64", target_arch = "arm64ec"),
21101 link_name = "llvm.aarch64.neon.ld3r.v4f32.p0"
21102 )]
21103 fn _vld3q_dup_f32(ptr: *const f32) -> float32x4x3_t;
21104 }
21105 _vld3q_dup_f32(a as _)
21106}
21107#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s8)"]
21109#[doc = "## Safety"]
21110#[doc = " * Neon intrinsic unsafe"]
21111#[inline(always)]
21112#[target_feature(enable = "neon")]
21113#[cfg(not(target_arch = "arm"))]
21114#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21115#[cfg_attr(test, assert_instr(ld3r))]
21116pub unsafe fn vld3_dup_s8(a: *const i8) -> int8x8x3_t {
21117 unsafe extern "unadjusted" {
21118 #[cfg_attr(
21119 any(target_arch = "aarch64", target_arch = "arm64ec"),
21120 link_name = "llvm.aarch64.neon.ld3r.v8i8.p0"
21121 )]
21122 fn _vld3_dup_s8(ptr: *const i8) -> int8x8x3_t;
21123 }
21124 _vld3_dup_s8(a as _)
21125}
21126#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s8)"]
21128#[doc = "## Safety"]
21129#[doc = " * Neon intrinsic unsafe"]
21130#[inline(always)]
21131#[target_feature(enable = "neon")]
21132#[cfg(not(target_arch = "arm"))]
21133#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21134#[cfg_attr(test, assert_instr(ld3r))]
21135pub unsafe fn vld3q_dup_s8(a: *const i8) -> int8x16x3_t {
21136 unsafe extern "unadjusted" {
21137 #[cfg_attr(
21138 any(target_arch = "aarch64", target_arch = "arm64ec"),
21139 link_name = "llvm.aarch64.neon.ld3r.v16i8.p0"
21140 )]
21141 fn _vld3q_dup_s8(ptr: *const i8) -> int8x16x3_t;
21142 }
21143 _vld3q_dup_s8(a as _)
21144}
21145#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s16)"]
21147#[doc = "## Safety"]
21148#[doc = " * Neon intrinsic unsafe"]
21149#[inline(always)]
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(ld3r))]
21154pub unsafe fn vld3_dup_s16(a: *const i16) -> int16x4x3_t {
21155 unsafe extern "unadjusted" {
21156 #[cfg_attr(
21157 any(target_arch = "aarch64", target_arch = "arm64ec"),
21158 link_name = "llvm.aarch64.neon.ld3r.v4i16.p0"
21159 )]
21160 fn _vld3_dup_s16(ptr: *const i16) -> int16x4x3_t;
21161 }
21162 _vld3_dup_s16(a as _)
21163}
21164#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s16)"]
21166#[doc = "## Safety"]
21167#[doc = " * Neon intrinsic unsafe"]
21168#[inline(always)]
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(ld3r))]
21173pub unsafe fn vld3q_dup_s16(a: *const i16) -> int16x8x3_t {
21174 unsafe extern "unadjusted" {
21175 #[cfg_attr(
21176 any(target_arch = "aarch64", target_arch = "arm64ec"),
21177 link_name = "llvm.aarch64.neon.ld3r.v8i16.p0"
21178 )]
21179 fn _vld3q_dup_s16(ptr: *const i16) -> int16x8x3_t;
21180 }
21181 _vld3q_dup_s16(a as _)
21182}
21183#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s32)"]
21185#[doc = "## Safety"]
21186#[doc = " * Neon intrinsic unsafe"]
21187#[inline(always)]
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(ld3r))]
21192pub unsafe fn vld3_dup_s32(a: *const i32) -> int32x2x3_t {
21193 unsafe extern "unadjusted" {
21194 #[cfg_attr(
21195 any(target_arch = "aarch64", target_arch = "arm64ec"),
21196 link_name = "llvm.aarch64.neon.ld3r.v2i32.p0"
21197 )]
21198 fn _vld3_dup_s32(ptr: *const i32) -> int32x2x3_t;
21199 }
21200 _vld3_dup_s32(a as _)
21201}
21202#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s32)"]
21204#[doc = "## Safety"]
21205#[doc = " * Neon intrinsic unsafe"]
21206#[inline(always)]
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(ld3r))]
21211pub unsafe fn vld3q_dup_s32(a: *const i32) -> int32x4x3_t {
21212 unsafe extern "unadjusted" {
21213 #[cfg_attr(
21214 any(target_arch = "aarch64", target_arch = "arm64ec"),
21215 link_name = "llvm.aarch64.neon.ld3r.v4i32.p0"
21216 )]
21217 fn _vld3q_dup_s32(ptr: *const i32) -> int32x4x3_t;
21218 }
21219 _vld3q_dup_s32(a as _)
21220}
21221#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s64)"]
21223#[doc = "## Safety"]
21224#[doc = " * Neon intrinsic unsafe"]
21225#[inline(always)]
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(ld3r))]
21230pub unsafe fn vld3_dup_s64(a: *const i64) -> int64x1x3_t {
21231 unsafe extern "unadjusted" {
21232 #[cfg_attr(
21233 any(target_arch = "aarch64", target_arch = "arm64ec"),
21234 link_name = "llvm.aarch64.neon.ld3r.v1i64.p0"
21235 )]
21236 fn _vld3_dup_s64(ptr: *const i64) -> int64x1x3_t;
21237 }
21238 _vld3_dup_s64(a as _)
21239}
21240#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f32)"]
21242#[doc = "## Safety"]
21243#[doc = " * Neon intrinsic unsafe"]
21244#[inline(always)]
21245#[target_feature(enable = "neon,v7")]
21246#[cfg(target_arch = "arm")]
21247#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21248#[cfg_attr(test, assert_instr(vld3))]
21249pub unsafe fn vld3_dup_f32(a: *const f32) -> float32x2x3_t {
21250 unsafe extern "unadjusted" {
21251 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v2f32.p0")]
21252 fn _vld3_dup_f32(ptr: *const i8, size: i32) -> float32x2x3_t;
21253 }
21254 _vld3_dup_f32(a as *const i8, 4)
21255}
21256#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21257#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f32)"]
21258#[doc = "## Safety"]
21259#[doc = " * Neon intrinsic unsafe"]
21260#[inline(always)]
21261#[target_feature(enable = "neon,v7")]
21262#[cfg(target_arch = "arm")]
21263#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21264#[cfg_attr(test, assert_instr(vld3))]
21265pub unsafe fn vld3q_dup_f32(a: *const f32) -> float32x4x3_t {
21266 unsafe extern "unadjusted" {
21267 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4f32.p0")]
21268 fn _vld3q_dup_f32(ptr: *const i8, size: i32) -> float32x4x3_t;
21269 }
21270 _vld3q_dup_f32(a as *const i8, 4)
21271}
21272#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21273#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s8)"]
21274#[doc = "## Safety"]
21275#[doc = " * Neon intrinsic unsafe"]
21276#[inline(always)]
21277#[target_feature(enable = "neon,v7")]
21278#[cfg(target_arch = "arm")]
21279#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21280#[cfg_attr(test, assert_instr(vld3))]
21281pub unsafe fn vld3_dup_s8(a: *const i8) -> int8x8x3_t {
21282 unsafe extern "unadjusted" {
21283 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8i8.p0")]
21284 fn _vld3_dup_s8(ptr: *const i8, size: i32) -> int8x8x3_t;
21285 }
21286 _vld3_dup_s8(a as *const i8, 1)
21287}
21288#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s8)"]
21290#[doc = "## Safety"]
21291#[doc = " * Neon intrinsic unsafe"]
21292#[inline(always)]
21293#[target_feature(enable = "neon,v7")]
21294#[cfg(target_arch = "arm")]
21295#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21296#[cfg_attr(test, assert_instr(vld3))]
21297pub unsafe fn vld3q_dup_s8(a: *const i8) -> int8x16x3_t {
21298 unsafe extern "unadjusted" {
21299 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v16i8.p0")]
21300 fn _vld3q_dup_s8(ptr: *const i8, size: i32) -> int8x16x3_t;
21301 }
21302 _vld3q_dup_s8(a as *const i8, 1)
21303}
21304#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s16)"]
21306#[doc = "## Safety"]
21307#[doc = " * Neon intrinsic unsafe"]
21308#[inline(always)]
21309#[target_feature(enable = "neon,v7")]
21310#[cfg(target_arch = "arm")]
21311#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21312#[cfg_attr(test, assert_instr(vld3))]
21313pub unsafe fn vld3_dup_s16(a: *const i16) -> int16x4x3_t {
21314 unsafe extern "unadjusted" {
21315 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4i16.p0")]
21316 fn _vld3_dup_s16(ptr: *const i8, size: i32) -> int16x4x3_t;
21317 }
21318 _vld3_dup_s16(a as *const i8, 2)
21319}
21320#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s16)"]
21322#[doc = "## Safety"]
21323#[doc = " * Neon intrinsic unsafe"]
21324#[inline(always)]
21325#[target_feature(enable = "neon,v7")]
21326#[cfg(target_arch = "arm")]
21327#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21328#[cfg_attr(test, assert_instr(vld3))]
21329pub unsafe fn vld3q_dup_s16(a: *const i16) -> int16x8x3_t {
21330 unsafe extern "unadjusted" {
21331 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8i16.p0")]
21332 fn _vld3q_dup_s16(ptr: *const i8, size: i32) -> int16x8x3_t;
21333 }
21334 _vld3q_dup_s16(a as *const i8, 2)
21335}
21336#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s32)"]
21338#[doc = "## Safety"]
21339#[doc = " * Neon intrinsic unsafe"]
21340#[inline(always)]
21341#[target_feature(enable = "neon,v7")]
21342#[cfg(target_arch = "arm")]
21343#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21344#[cfg_attr(test, assert_instr(vld3))]
21345pub unsafe fn vld3_dup_s32(a: *const i32) -> int32x2x3_t {
21346 unsafe extern "unadjusted" {
21347 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v2i32.p0")]
21348 fn _vld3_dup_s32(ptr: *const i8, size: i32) -> int32x2x3_t;
21349 }
21350 _vld3_dup_s32(a as *const i8, 4)
21351}
21352#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s32)"]
21354#[doc = "## Safety"]
21355#[doc = " * Neon intrinsic unsafe"]
21356#[inline(always)]
21357#[target_feature(enable = "neon,v7")]
21358#[cfg(target_arch = "arm")]
21359#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21360#[cfg_attr(test, assert_instr(vld3))]
21361pub unsafe fn vld3q_dup_s32(a: *const i32) -> int32x4x3_t {
21362 unsafe extern "unadjusted" {
21363 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4i32.p0")]
21364 fn _vld3q_dup_s32(ptr: *const i8, size: i32) -> int32x4x3_t;
21365 }
21366 _vld3q_dup_s32(a as *const i8, 4)
21367}
21368#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p64)"]
21370#[doc = "## Safety"]
21371#[doc = " * Neon intrinsic unsafe"]
21372#[inline(always)]
21373#[target_feature(enable = "neon,aes")]
21374#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
21375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
21376#[cfg_attr(
21377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21378 assert_instr(ld3r)
21379)]
21380#[cfg_attr(
21381 not(target_arch = "arm"),
21382 stable(feature = "neon_intrinsics", since = "1.59.0")
21383)]
21384#[cfg_attr(
21385 target_arch = "arm",
21386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21387)]
21388pub unsafe fn vld3_dup_p64(a: *const p64) -> poly64x1x3_t {
21389 transmute(vld3_dup_s64(transmute(a)))
21390}
21391#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s64)"]
21393#[doc = "## Safety"]
21394#[doc = " * Neon intrinsic unsafe"]
21395#[inline(always)]
21396#[cfg(target_arch = "arm")]
21397#[target_feature(enable = "neon,v7")]
21398#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21399#[cfg_attr(test, assert_instr(nop))]
21400pub unsafe fn vld3_dup_s64(a: *const i64) -> int64x1x3_t {
21401 unsafe extern "unadjusted" {
21402 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v1i64.p0")]
21403 fn _vld3_dup_s64(ptr: *const i8, size: i32) -> int64x1x3_t;
21404 }
21405 _vld3_dup_s64(a as *const i8, 8)
21406}
21407#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u64)"]
21409#[doc = "## Safety"]
21410#[doc = " * Neon intrinsic unsafe"]
21411#[inline(always)]
21412#[target_feature(enable = "neon")]
21413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21414#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
21415#[cfg_attr(
21416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21417 assert_instr(ld3r)
21418)]
21419#[cfg_attr(
21420 not(target_arch = "arm"),
21421 stable(feature = "neon_intrinsics", since = "1.59.0")
21422)]
21423#[cfg_attr(
21424 target_arch = "arm",
21425 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21426)]
21427pub unsafe fn vld3_dup_u64(a: *const u64) -> uint64x1x3_t {
21428 transmute(vld3_dup_s64(transmute(a)))
21429}
21430#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21431#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u8)"]
21432#[doc = "## Safety"]
21433#[doc = " * Neon intrinsic unsafe"]
21434#[inline(always)]
21435#[cfg(target_endian = "little")]
21436#[target_feature(enable = "neon")]
21437#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21438#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21439#[cfg_attr(
21440 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21441 assert_instr(ld3r)
21442)]
21443#[cfg_attr(
21444 not(target_arch = "arm"),
21445 stable(feature = "neon_intrinsics", since = "1.59.0")
21446)]
21447#[cfg_attr(
21448 target_arch = "arm",
21449 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21450)]
21451pub unsafe fn vld3_dup_u8(a: *const u8) -> uint8x8x3_t {
21452 transmute(vld3_dup_s8(transmute(a)))
21453}
21454#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u8)"]
21456#[doc = "## Safety"]
21457#[doc = " * Neon intrinsic unsafe"]
21458#[inline(always)]
21459#[cfg(target_endian = "big")]
21460#[target_feature(enable = "neon")]
21461#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21462#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21463#[cfg_attr(
21464 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21465 assert_instr(ld3r)
21466)]
21467#[cfg_attr(
21468 not(target_arch = "arm"),
21469 stable(feature = "neon_intrinsics", since = "1.59.0")
21470)]
21471#[cfg_attr(
21472 target_arch = "arm",
21473 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21474)]
21475pub unsafe fn vld3_dup_u8(a: *const u8) -> uint8x8x3_t {
21476 let mut ret_val: uint8x8x3_t = transmute(vld3_dup_s8(transmute(a)));
21477 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
21478 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
21479 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
21480 ret_val
21481}
21482#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u8)"]
21484#[doc = "## Safety"]
21485#[doc = " * Neon intrinsic unsafe"]
21486#[inline(always)]
21487#[cfg(target_endian = "little")]
21488#[target_feature(enable = "neon")]
21489#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21490#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21491#[cfg_attr(
21492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21493 assert_instr(ld3r)
21494)]
21495#[cfg_attr(
21496 not(target_arch = "arm"),
21497 stable(feature = "neon_intrinsics", since = "1.59.0")
21498)]
21499#[cfg_attr(
21500 target_arch = "arm",
21501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21502)]
21503pub unsafe fn vld3q_dup_u8(a: *const u8) -> uint8x16x3_t {
21504 transmute(vld3q_dup_s8(transmute(a)))
21505}
21506#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u8)"]
21508#[doc = "## Safety"]
21509#[doc = " * Neon intrinsic unsafe"]
21510#[inline(always)]
21511#[cfg(target_endian = "big")]
21512#[target_feature(enable = "neon")]
21513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21514#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21515#[cfg_attr(
21516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21517 assert_instr(ld3r)
21518)]
21519#[cfg_attr(
21520 not(target_arch = "arm"),
21521 stable(feature = "neon_intrinsics", since = "1.59.0")
21522)]
21523#[cfg_attr(
21524 target_arch = "arm",
21525 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21526)]
21527pub unsafe fn vld3q_dup_u8(a: *const u8) -> uint8x16x3_t {
21528 let mut ret_val: uint8x16x3_t = transmute(vld3q_dup_s8(transmute(a)));
21529 ret_val.0 = unsafe {
21530 simd_shuffle!(
21531 ret_val.0,
21532 ret_val.0,
21533 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21534 )
21535 };
21536 ret_val.1 = unsafe {
21537 simd_shuffle!(
21538 ret_val.1,
21539 ret_val.1,
21540 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21541 )
21542 };
21543 ret_val.2 = unsafe {
21544 simd_shuffle!(
21545 ret_val.2,
21546 ret_val.2,
21547 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21548 )
21549 };
21550 ret_val
21551}
21552#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21553#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u16)"]
21554#[doc = "## Safety"]
21555#[doc = " * Neon intrinsic unsafe"]
21556#[inline(always)]
21557#[cfg(target_endian = "little")]
21558#[target_feature(enable = "neon")]
21559#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21560#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21561#[cfg_attr(
21562 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21563 assert_instr(ld3r)
21564)]
21565#[cfg_attr(
21566 not(target_arch = "arm"),
21567 stable(feature = "neon_intrinsics", since = "1.59.0")
21568)]
21569#[cfg_attr(
21570 target_arch = "arm",
21571 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21572)]
21573pub unsafe fn vld3_dup_u16(a: *const u16) -> uint16x4x3_t {
21574 transmute(vld3_dup_s16(transmute(a)))
21575}
21576#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u16)"]
21578#[doc = "## Safety"]
21579#[doc = " * Neon intrinsic unsafe"]
21580#[inline(always)]
21581#[cfg(target_endian = "big")]
21582#[target_feature(enable = "neon")]
21583#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21584#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21585#[cfg_attr(
21586 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21587 assert_instr(ld3r)
21588)]
21589#[cfg_attr(
21590 not(target_arch = "arm"),
21591 stable(feature = "neon_intrinsics", since = "1.59.0")
21592)]
21593#[cfg_attr(
21594 target_arch = "arm",
21595 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21596)]
21597pub unsafe fn vld3_dup_u16(a: *const u16) -> uint16x4x3_t {
21598 let mut ret_val: uint16x4x3_t = transmute(vld3_dup_s16(transmute(a)));
21599 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
21600 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
21601 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
21602 ret_val
21603}
21604#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u16)"]
21606#[doc = "## Safety"]
21607#[doc = " * Neon intrinsic unsafe"]
21608#[inline(always)]
21609#[cfg(target_endian = "little")]
21610#[target_feature(enable = "neon")]
21611#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21612#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21613#[cfg_attr(
21614 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21615 assert_instr(ld3r)
21616)]
21617#[cfg_attr(
21618 not(target_arch = "arm"),
21619 stable(feature = "neon_intrinsics", since = "1.59.0")
21620)]
21621#[cfg_attr(
21622 target_arch = "arm",
21623 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21624)]
21625pub unsafe fn vld3q_dup_u16(a: *const u16) -> uint16x8x3_t {
21626 transmute(vld3q_dup_s16(transmute(a)))
21627}
21628#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u16)"]
21630#[doc = "## Safety"]
21631#[doc = " * Neon intrinsic unsafe"]
21632#[inline(always)]
21633#[cfg(target_endian = "big")]
21634#[target_feature(enable = "neon")]
21635#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21636#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21637#[cfg_attr(
21638 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21639 assert_instr(ld3r)
21640)]
21641#[cfg_attr(
21642 not(target_arch = "arm"),
21643 stable(feature = "neon_intrinsics", since = "1.59.0")
21644)]
21645#[cfg_attr(
21646 target_arch = "arm",
21647 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21648)]
21649pub unsafe fn vld3q_dup_u16(a: *const u16) -> uint16x8x3_t {
21650 let mut ret_val: uint16x8x3_t = transmute(vld3q_dup_s16(transmute(a)));
21651 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
21652 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
21653 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
21654 ret_val
21655}
21656#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u32)"]
21658#[doc = "## Safety"]
21659#[doc = " * Neon intrinsic unsafe"]
21660#[inline(always)]
21661#[cfg(target_endian = "little")]
21662#[target_feature(enable = "neon")]
21663#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21664#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21665#[cfg_attr(
21666 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21667 assert_instr(ld3r)
21668)]
21669#[cfg_attr(
21670 not(target_arch = "arm"),
21671 stable(feature = "neon_intrinsics", since = "1.59.0")
21672)]
21673#[cfg_attr(
21674 target_arch = "arm",
21675 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21676)]
21677pub unsafe fn vld3_dup_u32(a: *const u32) -> uint32x2x3_t {
21678 transmute(vld3_dup_s32(transmute(a)))
21679}
21680#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21681#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u32)"]
21682#[doc = "## Safety"]
21683#[doc = " * Neon intrinsic unsafe"]
21684#[inline(always)]
21685#[cfg(target_endian = "big")]
21686#[target_feature(enable = "neon")]
21687#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21688#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21689#[cfg_attr(
21690 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21691 assert_instr(ld3r)
21692)]
21693#[cfg_attr(
21694 not(target_arch = "arm"),
21695 stable(feature = "neon_intrinsics", since = "1.59.0")
21696)]
21697#[cfg_attr(
21698 target_arch = "arm",
21699 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21700)]
21701pub unsafe fn vld3_dup_u32(a: *const u32) -> uint32x2x3_t {
21702 let mut ret_val: uint32x2x3_t = transmute(vld3_dup_s32(transmute(a)));
21703 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
21704 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
21705 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
21706 ret_val
21707}
21708#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21709#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u32)"]
21710#[doc = "## Safety"]
21711#[doc = " * Neon intrinsic unsafe"]
21712#[inline(always)]
21713#[cfg(target_endian = "little")]
21714#[target_feature(enable = "neon")]
21715#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21716#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21717#[cfg_attr(
21718 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21719 assert_instr(ld3r)
21720)]
21721#[cfg_attr(
21722 not(target_arch = "arm"),
21723 stable(feature = "neon_intrinsics", since = "1.59.0")
21724)]
21725#[cfg_attr(
21726 target_arch = "arm",
21727 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21728)]
21729pub unsafe fn vld3q_dup_u32(a: *const u32) -> uint32x4x3_t {
21730 transmute(vld3q_dup_s32(transmute(a)))
21731}
21732#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u32)"]
21734#[doc = "## Safety"]
21735#[doc = " * Neon intrinsic unsafe"]
21736#[inline(always)]
21737#[cfg(target_endian = "big")]
21738#[target_feature(enable = "neon")]
21739#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21740#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21741#[cfg_attr(
21742 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21743 assert_instr(ld3r)
21744)]
21745#[cfg_attr(
21746 not(target_arch = "arm"),
21747 stable(feature = "neon_intrinsics", since = "1.59.0")
21748)]
21749#[cfg_attr(
21750 target_arch = "arm",
21751 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21752)]
21753pub unsafe fn vld3q_dup_u32(a: *const u32) -> uint32x4x3_t {
21754 let mut ret_val: uint32x4x3_t = transmute(vld3q_dup_s32(transmute(a)));
21755 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
21756 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
21757 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
21758 ret_val
21759}
21760#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p8)"]
21762#[doc = "## Safety"]
21763#[doc = " * Neon intrinsic unsafe"]
21764#[inline(always)]
21765#[cfg(target_endian = "little")]
21766#[target_feature(enable = "neon")]
21767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21768#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21769#[cfg_attr(
21770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21771 assert_instr(ld3r)
21772)]
21773#[cfg_attr(
21774 not(target_arch = "arm"),
21775 stable(feature = "neon_intrinsics", since = "1.59.0")
21776)]
21777#[cfg_attr(
21778 target_arch = "arm",
21779 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21780)]
21781pub unsafe fn vld3_dup_p8(a: *const p8) -> poly8x8x3_t {
21782 transmute(vld3_dup_s8(transmute(a)))
21783}
21784#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p8)"]
21786#[doc = "## Safety"]
21787#[doc = " * Neon intrinsic unsafe"]
21788#[inline(always)]
21789#[cfg(target_endian = "big")]
21790#[target_feature(enable = "neon")]
21791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21793#[cfg_attr(
21794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21795 assert_instr(ld3r)
21796)]
21797#[cfg_attr(
21798 not(target_arch = "arm"),
21799 stable(feature = "neon_intrinsics", since = "1.59.0")
21800)]
21801#[cfg_attr(
21802 target_arch = "arm",
21803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21804)]
21805pub unsafe fn vld3_dup_p8(a: *const p8) -> poly8x8x3_t {
21806 let mut ret_val: poly8x8x3_t = transmute(vld3_dup_s8(transmute(a)));
21807 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
21808 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
21809 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
21810 ret_val
21811}
21812#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21813#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p8)"]
21814#[doc = "## Safety"]
21815#[doc = " * Neon intrinsic unsafe"]
21816#[inline(always)]
21817#[cfg(target_endian = "little")]
21818#[target_feature(enable = "neon")]
21819#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21820#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21821#[cfg_attr(
21822 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21823 assert_instr(ld3r)
21824)]
21825#[cfg_attr(
21826 not(target_arch = "arm"),
21827 stable(feature = "neon_intrinsics", since = "1.59.0")
21828)]
21829#[cfg_attr(
21830 target_arch = "arm",
21831 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21832)]
21833pub unsafe fn vld3q_dup_p8(a: *const p8) -> poly8x16x3_t {
21834 transmute(vld3q_dup_s8(transmute(a)))
21835}
21836#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p8)"]
21838#[doc = "## Safety"]
21839#[doc = " * Neon intrinsic unsafe"]
21840#[inline(always)]
21841#[cfg(target_endian = "big")]
21842#[target_feature(enable = "neon")]
21843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21844#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21845#[cfg_attr(
21846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21847 assert_instr(ld3r)
21848)]
21849#[cfg_attr(
21850 not(target_arch = "arm"),
21851 stable(feature = "neon_intrinsics", since = "1.59.0")
21852)]
21853#[cfg_attr(
21854 target_arch = "arm",
21855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21856)]
21857pub unsafe fn vld3q_dup_p8(a: *const p8) -> poly8x16x3_t {
21858 let mut ret_val: poly8x16x3_t = transmute(vld3q_dup_s8(transmute(a)));
21859 ret_val.0 = unsafe {
21860 simd_shuffle!(
21861 ret_val.0,
21862 ret_val.0,
21863 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21864 )
21865 };
21866 ret_val.1 = unsafe {
21867 simd_shuffle!(
21868 ret_val.1,
21869 ret_val.1,
21870 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21871 )
21872 };
21873 ret_val.2 = unsafe {
21874 simd_shuffle!(
21875 ret_val.2,
21876 ret_val.2,
21877 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21878 )
21879 };
21880 ret_val
21881}
21882#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21883#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p16)"]
21884#[doc = "## Safety"]
21885#[doc = " * Neon intrinsic unsafe"]
21886#[inline(always)]
21887#[cfg(target_endian = "little")]
21888#[target_feature(enable = "neon")]
21889#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21890#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21891#[cfg_attr(
21892 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21893 assert_instr(ld3r)
21894)]
21895#[cfg_attr(
21896 not(target_arch = "arm"),
21897 stable(feature = "neon_intrinsics", since = "1.59.0")
21898)]
21899#[cfg_attr(
21900 target_arch = "arm",
21901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21902)]
21903pub unsafe fn vld3_dup_p16(a: *const p16) -> poly16x4x3_t {
21904 transmute(vld3_dup_s16(transmute(a)))
21905}
21906#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p16)"]
21908#[doc = "## Safety"]
21909#[doc = " * Neon intrinsic unsafe"]
21910#[inline(always)]
21911#[cfg(target_endian = "big")]
21912#[target_feature(enable = "neon")]
21913#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21914#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21915#[cfg_attr(
21916 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21917 assert_instr(ld3r)
21918)]
21919#[cfg_attr(
21920 not(target_arch = "arm"),
21921 stable(feature = "neon_intrinsics", since = "1.59.0")
21922)]
21923#[cfg_attr(
21924 target_arch = "arm",
21925 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21926)]
21927pub unsafe fn vld3_dup_p16(a: *const p16) -> poly16x4x3_t {
21928 let mut ret_val: poly16x4x3_t = transmute(vld3_dup_s16(transmute(a)));
21929 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
21930 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
21931 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
21932 ret_val
21933}
21934#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21935#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p16)"]
21936#[doc = "## Safety"]
21937#[doc = " * Neon intrinsic unsafe"]
21938#[inline(always)]
21939#[cfg(target_endian = "little")]
21940#[target_feature(enable = "neon")]
21941#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21942#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21943#[cfg_attr(
21944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21945 assert_instr(ld3r)
21946)]
21947#[cfg_attr(
21948 not(target_arch = "arm"),
21949 stable(feature = "neon_intrinsics", since = "1.59.0")
21950)]
21951#[cfg_attr(
21952 target_arch = "arm",
21953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21954)]
21955pub unsafe fn vld3q_dup_p16(a: *const p16) -> poly16x8x3_t {
21956 transmute(vld3q_dup_s16(transmute(a)))
21957}
21958#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p16)"]
21960#[doc = "## Safety"]
21961#[doc = " * Neon intrinsic unsafe"]
21962#[inline(always)]
21963#[cfg(target_endian = "big")]
21964#[target_feature(enable = "neon")]
21965#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21966#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21967#[cfg_attr(
21968 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21969 assert_instr(ld3r)
21970)]
21971#[cfg_attr(
21972 not(target_arch = "arm"),
21973 stable(feature = "neon_intrinsics", since = "1.59.0")
21974)]
21975#[cfg_attr(
21976 target_arch = "arm",
21977 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21978)]
21979pub unsafe fn vld3q_dup_p16(a: *const p16) -> poly16x8x3_t {
21980 let mut ret_val: poly16x8x3_t = transmute(vld3q_dup_s16(transmute(a)));
21981 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
21982 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
21983 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
21984 ret_val
21985}
21986#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
21987#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f16)"]
21988#[doc = "## Safety"]
21989#[doc = " * Neon intrinsic unsafe"]
21990#[inline(always)]
21991#[target_feature(enable = "neon")]
21992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21993#[cfg(target_arch = "arm")]
21994#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21995#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21996#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21997#[cfg(not(target_arch = "arm64ec"))]
21998pub unsafe fn vld3_f16(a: *const f16) -> float16x4x3_t {
21999 unsafe extern "unadjusted" {
22000 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4f16.p0")]
22001 fn _vld3_f16(ptr: *const f16, size: i32) -> float16x4x3_t;
22002 }
22003 _vld3_f16(a as _, 2)
22004}
22005#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22006#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f16)"]
22007#[doc = "## Safety"]
22008#[doc = " * Neon intrinsic unsafe"]
22009#[inline(always)]
22010#[target_feature(enable = "neon")]
22011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22012#[cfg(target_arch = "arm")]
22013#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22014#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22015#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22016#[cfg(not(target_arch = "arm64ec"))]
22017pub unsafe fn vld3q_f16(a: *const f16) -> float16x8x3_t {
22018 unsafe extern "unadjusted" {
22019 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8f16.p0")]
22020 fn _vld3q_f16(ptr: *const f16, size: i32) -> float16x8x3_t;
22021 }
22022 _vld3q_f16(a as _, 2)
22023}
22024#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22025#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f16)"]
22026#[doc = "## Safety"]
22027#[doc = " * Neon intrinsic unsafe"]
22028#[inline(always)]
22029#[target_feature(enable = "neon")]
22030#[cfg(not(target_arch = "arm"))]
22031#[cfg_attr(
22032 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22033 assert_instr(ld3)
22034)]
22035#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22036#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22037#[cfg(not(target_arch = "arm64ec"))]
22038pub unsafe fn vld3_f16(a: *const f16) -> float16x4x3_t {
22039 crate::core_arch::macros::deinterleaving_load!(f16, 4, 3, a)
22040}
22041#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
22042#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f16)"]
22043#[doc = "## Safety"]
22044#[doc = " * Neon intrinsic unsafe"]
22045#[inline(always)]
22046#[target_feature(enable = "neon")]
22047#[cfg(not(target_arch = "arm"))]
22048#[cfg_attr(
22049 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22050 assert_instr(ld3)
22051)]
22052#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22053#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22054#[cfg(not(target_arch = "arm64ec"))]
22055pub unsafe fn vld3q_f16(a: *const f16) -> float16x8x3_t {
22056 crate::core_arch::macros::deinterleaving_load!(f16, 8, 3, a)
22057}
22058#[doc = "Load multiple 3-element structures to three registers"]
22059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f32)"]
22060#[doc = "## Safety"]
22061#[doc = " * Neon intrinsic unsafe"]
22062#[inline(always)]
22063#[target_feature(enable = "neon")]
22064#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22065#[cfg(not(target_arch = "arm"))]
22066#[cfg_attr(test, assert_instr(ld3))]
22067pub unsafe fn vld3_f32(a: *const f32) -> float32x2x3_t {
22068 crate::core_arch::macros::deinterleaving_load!(f32, 2, 3, a)
22069}
22070#[doc = "Load multiple 3-element structures to three registers"]
22071#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f32)"]
22072#[doc = "## Safety"]
22073#[doc = " * Neon intrinsic unsafe"]
22074#[inline(always)]
22075#[target_feature(enable = "neon")]
22076#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22077#[cfg(not(target_arch = "arm"))]
22078#[cfg_attr(test, assert_instr(ld3))]
22079pub unsafe fn vld3q_f32(a: *const f32) -> float32x4x3_t {
22080 crate::core_arch::macros::deinterleaving_load!(f32, 4, 3, a)
22081}
22082#[doc = "Load multiple 3-element structures to three registers"]
22083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s8)"]
22084#[doc = "## Safety"]
22085#[doc = " * Neon intrinsic unsafe"]
22086#[inline(always)]
22087#[target_feature(enable = "neon")]
22088#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22089#[cfg(not(target_arch = "arm"))]
22090#[cfg_attr(test, assert_instr(ld3))]
22091pub unsafe fn vld3_s8(a: *const i8) -> int8x8x3_t {
22092 crate::core_arch::macros::deinterleaving_load!(i8, 8, 3, a)
22093}
22094#[doc = "Load multiple 3-element structures to three registers"]
22095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s8)"]
22096#[doc = "## Safety"]
22097#[doc = " * Neon intrinsic unsafe"]
22098#[inline(always)]
22099#[target_feature(enable = "neon")]
22100#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22101#[cfg(not(target_arch = "arm"))]
22102#[cfg_attr(test, assert_instr(ld3))]
22103pub unsafe fn vld3q_s8(a: *const i8) -> int8x16x3_t {
22104 crate::core_arch::macros::deinterleaving_load!(i8, 16, 3, a)
22105}
22106#[doc = "Load multiple 3-element structures to three registers"]
22107#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s16)"]
22108#[doc = "## Safety"]
22109#[doc = " * Neon intrinsic unsafe"]
22110#[inline(always)]
22111#[target_feature(enable = "neon")]
22112#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22113#[cfg(not(target_arch = "arm"))]
22114#[cfg_attr(test, assert_instr(ld3))]
22115pub unsafe fn vld3_s16(a: *const i16) -> int16x4x3_t {
22116 crate::core_arch::macros::deinterleaving_load!(i16, 4, 3, a)
22117}
22118#[doc = "Load multiple 3-element structures to three registers"]
22119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s16)"]
22120#[doc = "## Safety"]
22121#[doc = " * Neon intrinsic unsafe"]
22122#[inline(always)]
22123#[target_feature(enable = "neon")]
22124#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22125#[cfg(not(target_arch = "arm"))]
22126#[cfg_attr(test, assert_instr(ld3))]
22127pub unsafe fn vld3q_s16(a: *const i16) -> int16x8x3_t {
22128 crate::core_arch::macros::deinterleaving_load!(i16, 8, 3, a)
22129}
22130#[doc = "Load multiple 3-element structures to three registers"]
22131#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s32)"]
22132#[doc = "## Safety"]
22133#[doc = " * Neon intrinsic unsafe"]
22134#[inline(always)]
22135#[target_feature(enable = "neon")]
22136#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22137#[cfg(not(target_arch = "arm"))]
22138#[cfg_attr(test, assert_instr(ld3))]
22139pub unsafe fn vld3_s32(a: *const i32) -> int32x2x3_t {
22140 crate::core_arch::macros::deinterleaving_load!(i32, 2, 3, a)
22141}
22142#[doc = "Load multiple 3-element structures to three registers"]
22143#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s32)"]
22144#[doc = "## Safety"]
22145#[doc = " * Neon intrinsic unsafe"]
22146#[inline(always)]
22147#[target_feature(enable = "neon")]
22148#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22149#[cfg(not(target_arch = "arm"))]
22150#[cfg_attr(test, assert_instr(ld3))]
22151pub unsafe fn vld3q_s32(a: *const i32) -> int32x4x3_t {
22152 crate::core_arch::macros::deinterleaving_load!(i32, 4, 3, a)
22153}
22154#[doc = "Load multiple 3-element structures to three registers"]
22155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f32)"]
22156#[doc = "## Safety"]
22157#[doc = " * Neon intrinsic unsafe"]
22158#[inline(always)]
22159#[cfg(target_arch = "arm")]
22160#[target_feature(enable = "neon,v7")]
22161#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22162#[cfg_attr(test, assert_instr(vld3))]
22163pub unsafe fn vld3_f32(a: *const f32) -> float32x2x3_t {
22164 unsafe extern "unadjusted" {
22165 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v2f32.p0")]
22166 fn _vld3_f32(ptr: *const i8, size: i32) -> float32x2x3_t;
22167 }
22168 _vld3_f32(a as *const i8, 4)
22169}
22170#[doc = "Load multiple 3-element structures to three registers"]
22171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f32)"]
22172#[doc = "## Safety"]
22173#[doc = " * Neon intrinsic unsafe"]
22174#[inline(always)]
22175#[cfg(target_arch = "arm")]
22176#[target_feature(enable = "neon,v7")]
22177#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22178#[cfg_attr(test, assert_instr(vld3))]
22179pub unsafe fn vld3q_f32(a: *const f32) -> float32x4x3_t {
22180 unsafe extern "unadjusted" {
22181 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4f32.p0")]
22182 fn _vld3q_f32(ptr: *const i8, size: i32) -> float32x4x3_t;
22183 }
22184 _vld3q_f32(a as *const i8, 4)
22185}
22186#[doc = "Load multiple 3-element structures to three registers"]
22187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s8)"]
22188#[doc = "## Safety"]
22189#[doc = " * Neon intrinsic unsafe"]
22190#[inline(always)]
22191#[cfg(target_arch = "arm")]
22192#[target_feature(enable = "neon,v7")]
22193#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22194#[cfg_attr(test, assert_instr(vld3))]
22195pub unsafe fn vld3_s8(a: *const i8) -> int8x8x3_t {
22196 unsafe extern "unadjusted" {
22197 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8i8.p0")]
22198 fn _vld3_s8(ptr: *const i8, size: i32) -> int8x8x3_t;
22199 }
22200 _vld3_s8(a as *const i8, 1)
22201}
22202#[doc = "Load multiple 3-element structures to three registers"]
22203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s8)"]
22204#[doc = "## Safety"]
22205#[doc = " * Neon intrinsic unsafe"]
22206#[inline(always)]
22207#[cfg(target_arch = "arm")]
22208#[target_feature(enable = "neon,v7")]
22209#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22210#[cfg_attr(test, assert_instr(vld3))]
22211pub unsafe fn vld3q_s8(a: *const i8) -> int8x16x3_t {
22212 unsafe extern "unadjusted" {
22213 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v16i8.p0")]
22214 fn _vld3q_s8(ptr: *const i8, size: i32) -> int8x16x3_t;
22215 }
22216 _vld3q_s8(a as *const i8, 1)
22217}
22218#[doc = "Load multiple 3-element structures to three registers"]
22219#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s16)"]
22220#[doc = "## Safety"]
22221#[doc = " * Neon intrinsic unsafe"]
22222#[inline(always)]
22223#[cfg(target_arch = "arm")]
22224#[target_feature(enable = "neon,v7")]
22225#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22226#[cfg_attr(test, assert_instr(vld3))]
22227pub unsafe fn vld3_s16(a: *const i16) -> int16x4x3_t {
22228 unsafe extern "unadjusted" {
22229 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4i16.p0")]
22230 fn _vld3_s16(ptr: *const i8, size: i32) -> int16x4x3_t;
22231 }
22232 _vld3_s16(a as *const i8, 2)
22233}
22234#[doc = "Load multiple 3-element structures to three registers"]
22235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s16)"]
22236#[doc = "## Safety"]
22237#[doc = " * Neon intrinsic unsafe"]
22238#[inline(always)]
22239#[cfg(target_arch = "arm")]
22240#[target_feature(enable = "neon,v7")]
22241#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22242#[cfg_attr(test, assert_instr(vld3))]
22243pub unsafe fn vld3q_s16(a: *const i16) -> int16x8x3_t {
22244 unsafe extern "unadjusted" {
22245 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8i16.p0")]
22246 fn _vld3q_s16(ptr: *const i8, size: i32) -> int16x8x3_t;
22247 }
22248 _vld3q_s16(a as *const i8, 2)
22249}
22250#[doc = "Load multiple 3-element structures to three registers"]
22251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s32)"]
22252#[doc = "## Safety"]
22253#[doc = " * Neon intrinsic unsafe"]
22254#[inline(always)]
22255#[cfg(target_arch = "arm")]
22256#[target_feature(enable = "neon,v7")]
22257#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22258#[cfg_attr(test, assert_instr(vld3))]
22259pub unsafe fn vld3_s32(a: *const i32) -> int32x2x3_t {
22260 unsafe extern "unadjusted" {
22261 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v2i32.p0")]
22262 fn _vld3_s32(ptr: *const i8, size: i32) -> int32x2x3_t;
22263 }
22264 _vld3_s32(a as *const i8, 4)
22265}
22266#[doc = "Load multiple 3-element structures to three registers"]
22267#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s32)"]
22268#[doc = "## Safety"]
22269#[doc = " * Neon intrinsic unsafe"]
22270#[inline(always)]
22271#[cfg(target_arch = "arm")]
22272#[target_feature(enable = "neon,v7")]
22273#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22274#[cfg_attr(test, assert_instr(vld3))]
22275pub unsafe fn vld3q_s32(a: *const i32) -> int32x4x3_t {
22276 unsafe extern "unadjusted" {
22277 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4i32.p0")]
22278 fn _vld3q_s32(ptr: *const i8, size: i32) -> int32x4x3_t;
22279 }
22280 _vld3q_s32(a as *const i8, 4)
22281}
22282#[doc = "Load multiple 3-element structures to two registers"]
22283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f16)"]
22284#[doc = "## Safety"]
22285#[doc = " * Neon intrinsic unsafe"]
22286#[inline(always)]
22287#[target_feature(enable = "neon,v7")]
22288#[cfg(target_arch = "arm")]
22289#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22290#[rustc_legacy_const_generics(2)]
22291#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22292#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22293#[cfg(not(target_arch = "arm64ec"))]
22294pub unsafe fn vld3_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x3_t) -> float16x4x3_t {
22295 static_assert_uimm_bits!(LANE, 2);
22296 unsafe extern "unadjusted" {
22297 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4f16.p0")]
22298 fn _vld3_lane_f16(
22299 ptr: *const f16,
22300 a: float16x4_t,
22301 b: float16x4_t,
22302 c: float16x4_t,
22303 n: i32,
22304 size: i32,
22305 ) -> float16x4x3_t;
22306 }
22307 _vld3_lane_f16(a as _, b.0, b.1, b.2, LANE, 2)
22308}
22309#[doc = "Load multiple 3-element structures to two registers"]
22310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f16)"]
22311#[doc = "## Safety"]
22312#[doc = " * Neon intrinsic unsafe"]
22313#[inline(always)]
22314#[target_feature(enable = "neon,v7")]
22315#[cfg(target_arch = "arm")]
22316#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22317#[rustc_legacy_const_generics(2)]
22318#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22319#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22320#[cfg(not(target_arch = "arm64ec"))]
22321pub unsafe fn vld3q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x3_t) -> float16x8x3_t {
22322 static_assert_uimm_bits!(LANE, 3);
22323 unsafe extern "unadjusted" {
22324 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8f16.p0")]
22325 fn _vld3q_lane_f16(
22326 ptr: *const f16,
22327 a: float16x8_t,
22328 b: float16x8_t,
22329 c: float16x8_t,
22330 n: i32,
22331 size: i32,
22332 ) -> float16x8x3_t;
22333 }
22334 _vld3q_lane_f16(a as _, b.0, b.1, b.2, LANE, 2)
22335}
22336#[doc = "Load multiple 3-element structures to two registers"]
22337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f16)"]
22338#[doc = "## Safety"]
22339#[doc = " * Neon intrinsic unsafe"]
22340#[inline(always)]
22341#[target_feature(enable = "neon")]
22342#[cfg(not(target_arch = "arm"))]
22343#[cfg_attr(
22344 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22345 assert_instr(ld3, LANE = 0)
22346)]
22347#[rustc_legacy_const_generics(2)]
22348#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22349#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22350#[cfg(not(target_arch = "arm64ec"))]
22351pub unsafe fn vld3_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x3_t) -> float16x4x3_t {
22352 static_assert_uimm_bits!(LANE, 2);
22353 unsafe extern "unadjusted" {
22354 #[cfg_attr(
22355 any(target_arch = "aarch64", target_arch = "arm64ec"),
22356 link_name = "llvm.aarch64.neon.ld3lane.v4f16.p0"
22357 )]
22358 fn _vld3_lane_f16(
22359 a: float16x4_t,
22360 b: float16x4_t,
22361 c: float16x4_t,
22362 n: i64,
22363 ptr: *const f16,
22364 ) -> float16x4x3_t;
22365 }
22366 _vld3_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
22367}
22368#[doc = "Load multiple 3-element structures to two registers"]
22369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f16)"]
22370#[doc = "## Safety"]
22371#[doc = " * Neon intrinsic unsafe"]
22372#[inline(always)]
22373#[target_feature(enable = "neon")]
22374#[cfg(not(target_arch = "arm"))]
22375#[cfg_attr(
22376 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22377 assert_instr(ld3, LANE = 0)
22378)]
22379#[rustc_legacy_const_generics(2)]
22380#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22381#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22382#[cfg(not(target_arch = "arm64ec"))]
22383pub unsafe fn vld3q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x3_t) -> float16x8x3_t {
22384 static_assert_uimm_bits!(LANE, 3);
22385 unsafe extern "unadjusted" {
22386 #[cfg_attr(
22387 any(target_arch = "aarch64", target_arch = "arm64ec"),
22388 link_name = "llvm.aarch64.neon.ld3lane.v8f16.p0"
22389 )]
22390 fn _vld3q_lane_f16(
22391 a: float16x8_t,
22392 b: float16x8_t,
22393 c: float16x8_t,
22394 n: i64,
22395 ptr: *const f16,
22396 ) -> float16x8x3_t;
22397 }
22398 _vld3q_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
22399}
22400#[doc = "Load multiple 3-element structures to three registers"]
22401#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f32)"]
22402#[doc = "## Safety"]
22403#[doc = " * Neon intrinsic unsafe"]
22404#[inline(always)]
22405#[target_feature(enable = "neon")]
22406#[cfg(not(target_arch = "arm"))]
22407#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22408#[rustc_legacy_const_generics(2)]
22409#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22410pub unsafe fn vld3_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x3_t) -> float32x2x3_t {
22411 static_assert_uimm_bits!(LANE, 1);
22412 unsafe extern "unadjusted" {
22413 #[cfg_attr(
22414 any(target_arch = "aarch64", target_arch = "arm64ec"),
22415 link_name = "llvm.aarch64.neon.ld3lane.v2f32.p0"
22416 )]
22417 fn _vld3_lane_f32(
22418 a: float32x2_t,
22419 b: float32x2_t,
22420 c: float32x2_t,
22421 n: i64,
22422 ptr: *const i8,
22423 ) -> float32x2x3_t;
22424 }
22425 _vld3_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
22426}
22427#[doc = "Load multiple 3-element structures to three registers"]
22428#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f32)"]
22429#[doc = "## Safety"]
22430#[doc = " * Neon intrinsic unsafe"]
22431#[inline(always)]
22432#[target_feature(enable = "neon")]
22433#[cfg(not(target_arch = "arm"))]
22434#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22435#[rustc_legacy_const_generics(2)]
22436#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22437pub unsafe fn vld3q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x3_t) -> float32x4x3_t {
22438 static_assert_uimm_bits!(LANE, 2);
22439 unsafe extern "unadjusted" {
22440 #[cfg_attr(
22441 any(target_arch = "aarch64", target_arch = "arm64ec"),
22442 link_name = "llvm.aarch64.neon.ld3lane.v4f32.p0"
22443 )]
22444 fn _vld3q_lane_f32(
22445 a: float32x4_t,
22446 b: float32x4_t,
22447 c: float32x4_t,
22448 n: i64,
22449 ptr: *const i8,
22450 ) -> float32x4x3_t;
22451 }
22452 _vld3q_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
22453}
22454#[doc = "Load multiple 3-element structures to three registers"]
22455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f32)"]
22456#[doc = "## Safety"]
22457#[doc = " * Neon intrinsic unsafe"]
22458#[inline(always)]
22459#[cfg(target_arch = "arm")]
22460#[target_feature(enable = "neon,v7")]
22461#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22462#[rustc_legacy_const_generics(2)]
22463#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22464pub unsafe fn vld3_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x3_t) -> float32x2x3_t {
22465 static_assert_uimm_bits!(LANE, 1);
22466 unsafe extern "unadjusted" {
22467 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v2f32.p0")]
22468 fn _vld3_lane_f32(
22469 ptr: *const i8,
22470 a: float32x2_t,
22471 b: float32x2_t,
22472 c: float32x2_t,
22473 n: i32,
22474 size: i32,
22475 ) -> float32x2x3_t;
22476 }
22477 _vld3_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
22478}
22479#[doc = "Load multiple 3-element structures to two registers"]
22480#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s8)"]
22481#[doc = "## Safety"]
22482#[doc = " * Neon intrinsic unsafe"]
22483#[inline(always)]
22484#[target_feature(enable = "neon")]
22485#[cfg(not(target_arch = "arm"))]
22486#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22487#[rustc_legacy_const_generics(2)]
22488#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22489pub unsafe fn vld3_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x3_t) -> int8x8x3_t {
22490 static_assert_uimm_bits!(LANE, 3);
22491 unsafe extern "unadjusted" {
22492 #[cfg_attr(
22493 any(target_arch = "aarch64", target_arch = "arm64ec"),
22494 link_name = "llvm.aarch64.neon.ld3lane.v8i8.p0"
22495 )]
22496 fn _vld3_lane_s8(
22497 a: int8x8_t,
22498 b: int8x8_t,
22499 c: int8x8_t,
22500 n: i64,
22501 ptr: *const i8,
22502 ) -> int8x8x3_t;
22503 }
22504 _vld3_lane_s8(b.0, b.1, b.2, LANE as i64, a as _)
22505}
22506#[doc = "Load multiple 3-element structures to two registers"]
22507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s16)"]
22508#[doc = "## Safety"]
22509#[doc = " * Neon intrinsic unsafe"]
22510#[inline(always)]
22511#[target_feature(enable = "neon")]
22512#[cfg(not(target_arch = "arm"))]
22513#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22514#[rustc_legacy_const_generics(2)]
22515#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22516pub unsafe fn vld3_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x3_t) -> int16x4x3_t {
22517 static_assert_uimm_bits!(LANE, 2);
22518 unsafe extern "unadjusted" {
22519 #[cfg_attr(
22520 any(target_arch = "aarch64", target_arch = "arm64ec"),
22521 link_name = "llvm.aarch64.neon.ld3lane.v4i16.p0"
22522 )]
22523 fn _vld3_lane_s16(
22524 a: int16x4_t,
22525 b: int16x4_t,
22526 c: int16x4_t,
22527 n: i64,
22528 ptr: *const i8,
22529 ) -> int16x4x3_t;
22530 }
22531 _vld3_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
22532}
22533#[doc = "Load multiple 3-element structures to two registers"]
22534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s16)"]
22535#[doc = "## Safety"]
22536#[doc = " * Neon intrinsic unsafe"]
22537#[inline(always)]
22538#[target_feature(enable = "neon")]
22539#[cfg(not(target_arch = "arm"))]
22540#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22541#[rustc_legacy_const_generics(2)]
22542#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22543pub unsafe fn vld3q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x3_t) -> int16x8x3_t {
22544 static_assert_uimm_bits!(LANE, 4);
22545 unsafe extern "unadjusted" {
22546 #[cfg_attr(
22547 any(target_arch = "aarch64", target_arch = "arm64ec"),
22548 link_name = "llvm.aarch64.neon.ld3lane.v8i16.p0"
22549 )]
22550 fn _vld3q_lane_s16(
22551 a: int16x8_t,
22552 b: int16x8_t,
22553 c: int16x8_t,
22554 n: i64,
22555 ptr: *const i8,
22556 ) -> int16x8x3_t;
22557 }
22558 _vld3q_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
22559}
22560#[doc = "Load multiple 3-element structures to two registers"]
22561#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s32)"]
22562#[doc = "## Safety"]
22563#[doc = " * Neon intrinsic unsafe"]
22564#[inline(always)]
22565#[target_feature(enable = "neon")]
22566#[cfg(not(target_arch = "arm"))]
22567#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22568#[rustc_legacy_const_generics(2)]
22569#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22570pub unsafe fn vld3_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x3_t) -> int32x2x3_t {
22571 static_assert_uimm_bits!(LANE, 1);
22572 unsafe extern "unadjusted" {
22573 #[cfg_attr(
22574 any(target_arch = "aarch64", target_arch = "arm64ec"),
22575 link_name = "llvm.aarch64.neon.ld3lane.v2i32.p0"
22576 )]
22577 fn _vld3_lane_s32(
22578 a: int32x2_t,
22579 b: int32x2_t,
22580 c: int32x2_t,
22581 n: i64,
22582 ptr: *const i8,
22583 ) -> int32x2x3_t;
22584 }
22585 _vld3_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
22586}
22587#[doc = "Load multiple 3-element structures to two registers"]
22588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s32)"]
22589#[doc = "## Safety"]
22590#[doc = " * Neon intrinsic unsafe"]
22591#[inline(always)]
22592#[target_feature(enable = "neon")]
22593#[cfg(not(target_arch = "arm"))]
22594#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22595#[rustc_legacy_const_generics(2)]
22596#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22597pub unsafe fn vld3q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x3_t) -> int32x4x3_t {
22598 static_assert_uimm_bits!(LANE, 2);
22599 unsafe extern "unadjusted" {
22600 #[cfg_attr(
22601 any(target_arch = "aarch64", target_arch = "arm64ec"),
22602 link_name = "llvm.aarch64.neon.ld3lane.v4i32.p0"
22603 )]
22604 fn _vld3q_lane_s32(
22605 a: int32x4_t,
22606 b: int32x4_t,
22607 c: int32x4_t,
22608 n: i64,
22609 ptr: *const i8,
22610 ) -> int32x4x3_t;
22611 }
22612 _vld3q_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
22613}
22614#[doc = "Load multiple 3-element structures to two registers"]
22615#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s8)"]
22616#[doc = "## Safety"]
22617#[doc = " * Neon intrinsic unsafe"]
22618#[inline(always)]
22619#[cfg(target_arch = "arm")]
22620#[target_feature(enable = "neon,v7")]
22621#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22622#[rustc_legacy_const_generics(2)]
22623#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22624pub unsafe fn vld3_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x3_t) -> int8x8x3_t {
22625 static_assert_uimm_bits!(LANE, 3);
22626 unsafe extern "unadjusted" {
22627 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8i8.p0")]
22628 fn _vld3_lane_s8(
22629 ptr: *const i8,
22630 a: int8x8_t,
22631 b: int8x8_t,
22632 c: int8x8_t,
22633 n: i32,
22634 size: i32,
22635 ) -> int8x8x3_t;
22636 }
22637 _vld3_lane_s8(a as _, b.0, b.1, b.2, LANE, 1)
22638}
22639#[doc = "Load multiple 3-element structures to two registers"]
22640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s16)"]
22641#[doc = "## Safety"]
22642#[doc = " * Neon intrinsic unsafe"]
22643#[inline(always)]
22644#[cfg(target_arch = "arm")]
22645#[target_feature(enable = "neon,v7")]
22646#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22647#[rustc_legacy_const_generics(2)]
22648#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22649pub unsafe fn vld3_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x3_t) -> int16x4x3_t {
22650 static_assert_uimm_bits!(LANE, 2);
22651 unsafe extern "unadjusted" {
22652 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4i16.p0")]
22653 fn _vld3_lane_s16(
22654 ptr: *const i8,
22655 a: int16x4_t,
22656 b: int16x4_t,
22657 c: int16x4_t,
22658 n: i32,
22659 size: i32,
22660 ) -> int16x4x3_t;
22661 }
22662 _vld3_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
22663}
22664#[doc = "Load multiple 3-element structures to two registers"]
22665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s16)"]
22666#[doc = "## Safety"]
22667#[doc = " * Neon intrinsic unsafe"]
22668#[inline(always)]
22669#[cfg(target_arch = "arm")]
22670#[target_feature(enable = "neon,v7")]
22671#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22672#[rustc_legacy_const_generics(2)]
22673#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22674pub unsafe fn vld3q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x3_t) -> int16x8x3_t {
22675 static_assert_uimm_bits!(LANE, 3);
22676 unsafe extern "unadjusted" {
22677 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8i16.p0")]
22678 fn _vld3q_lane_s16(
22679 ptr: *const i8,
22680 a: int16x8_t,
22681 b: int16x8_t,
22682 c: int16x8_t,
22683 n: i32,
22684 size: i32,
22685 ) -> int16x8x3_t;
22686 }
22687 _vld3q_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
22688}
22689#[doc = "Load multiple 3-element structures to two registers"]
22690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s32)"]
22691#[doc = "## Safety"]
22692#[doc = " * Neon intrinsic unsafe"]
22693#[inline(always)]
22694#[cfg(target_arch = "arm")]
22695#[target_feature(enable = "neon,v7")]
22696#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22697#[rustc_legacy_const_generics(2)]
22698#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22699pub unsafe fn vld3_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x3_t) -> int32x2x3_t {
22700 static_assert_uimm_bits!(LANE, 1);
22701 unsafe extern "unadjusted" {
22702 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v2i32.p0")]
22703 fn _vld3_lane_s32(
22704 ptr: *const i8,
22705 a: int32x2_t,
22706 b: int32x2_t,
22707 c: int32x2_t,
22708 n: i32,
22709 size: i32,
22710 ) -> int32x2x3_t;
22711 }
22712 _vld3_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
22713}
22714#[doc = "Load multiple 3-element structures to two registers"]
22715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s32)"]
22716#[doc = "## Safety"]
22717#[doc = " * Neon intrinsic unsafe"]
22718#[inline(always)]
22719#[cfg(target_arch = "arm")]
22720#[target_feature(enable = "neon,v7")]
22721#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22722#[rustc_legacy_const_generics(2)]
22723#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22724pub unsafe fn vld3q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x3_t) -> int32x4x3_t {
22725 static_assert_uimm_bits!(LANE, 2);
22726 unsafe extern "unadjusted" {
22727 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4i32.p0")]
22728 fn _vld3q_lane_s32(
22729 ptr: *const i8,
22730 a: int32x4_t,
22731 b: int32x4_t,
22732 c: int32x4_t,
22733 n: i32,
22734 size: i32,
22735 ) -> int32x4x3_t;
22736 }
22737 _vld3q_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
22738}
22739#[doc = "Load multiple 3-element structures to three registers"]
22740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u8)"]
22741#[doc = "## Safety"]
22742#[doc = " * Neon intrinsic unsafe"]
22743#[inline(always)]
22744#[target_feature(enable = "neon")]
22745#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22746#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22747#[cfg_attr(
22748 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22749 assert_instr(ld3, LANE = 0)
22750)]
22751#[rustc_legacy_const_generics(2)]
22752#[cfg_attr(
22753 not(target_arch = "arm"),
22754 stable(feature = "neon_intrinsics", since = "1.59.0")
22755)]
22756#[cfg_attr(
22757 target_arch = "arm",
22758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22759)]
22760pub unsafe fn vld3_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x3_t) -> uint8x8x3_t {
22761 static_assert_uimm_bits!(LANE, 3);
22762 transmute(vld3_lane_s8::<LANE>(transmute(a), transmute(b)))
22763}
22764#[doc = "Load multiple 3-element structures to three registers"]
22765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u16)"]
22766#[doc = "## Safety"]
22767#[doc = " * Neon intrinsic unsafe"]
22768#[inline(always)]
22769#[target_feature(enable = "neon")]
22770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22772#[cfg_attr(
22773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22774 assert_instr(ld3, LANE = 0)
22775)]
22776#[rustc_legacy_const_generics(2)]
22777#[cfg_attr(
22778 not(target_arch = "arm"),
22779 stable(feature = "neon_intrinsics", since = "1.59.0")
22780)]
22781#[cfg_attr(
22782 target_arch = "arm",
22783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22784)]
22785pub unsafe fn vld3_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x3_t) -> uint16x4x3_t {
22786 static_assert_uimm_bits!(LANE, 2);
22787 transmute(vld3_lane_s16::<LANE>(transmute(a), transmute(b)))
22788}
22789#[doc = "Load multiple 3-element structures to three registers"]
22790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_u16)"]
22791#[doc = "## Safety"]
22792#[doc = " * Neon intrinsic unsafe"]
22793#[inline(always)]
22794#[target_feature(enable = "neon")]
22795#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22796#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22797#[cfg_attr(
22798 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22799 assert_instr(ld3, LANE = 0)
22800)]
22801#[rustc_legacy_const_generics(2)]
22802#[cfg_attr(
22803 not(target_arch = "arm"),
22804 stable(feature = "neon_intrinsics", since = "1.59.0")
22805)]
22806#[cfg_attr(
22807 target_arch = "arm",
22808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22809)]
22810pub unsafe fn vld3q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x3_t) -> uint16x8x3_t {
22811 static_assert_uimm_bits!(LANE, 3);
22812 transmute(vld3q_lane_s16::<LANE>(transmute(a), transmute(b)))
22813}
22814#[doc = "Load multiple 3-element structures to three registers"]
22815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u32)"]
22816#[doc = "## Safety"]
22817#[doc = " * Neon intrinsic unsafe"]
22818#[inline(always)]
22819#[target_feature(enable = "neon")]
22820#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22821#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22822#[cfg_attr(
22823 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22824 assert_instr(ld3, LANE = 0)
22825)]
22826#[rustc_legacy_const_generics(2)]
22827#[cfg_attr(
22828 not(target_arch = "arm"),
22829 stable(feature = "neon_intrinsics", since = "1.59.0")
22830)]
22831#[cfg_attr(
22832 target_arch = "arm",
22833 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22834)]
22835pub unsafe fn vld3_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x3_t) -> uint32x2x3_t {
22836 static_assert_uimm_bits!(LANE, 1);
22837 transmute(vld3_lane_s32::<LANE>(transmute(a), transmute(b)))
22838}
22839#[doc = "Load multiple 3-element structures to three registers"]
22840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_u32)"]
22841#[doc = "## Safety"]
22842#[doc = " * Neon intrinsic unsafe"]
22843#[inline(always)]
22844#[target_feature(enable = "neon")]
22845#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22846#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22847#[cfg_attr(
22848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22849 assert_instr(ld3, LANE = 0)
22850)]
22851#[rustc_legacy_const_generics(2)]
22852#[cfg_attr(
22853 not(target_arch = "arm"),
22854 stable(feature = "neon_intrinsics", since = "1.59.0")
22855)]
22856#[cfg_attr(
22857 target_arch = "arm",
22858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22859)]
22860pub unsafe fn vld3q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x3_t) -> uint32x4x3_t {
22861 static_assert_uimm_bits!(LANE, 2);
22862 transmute(vld3q_lane_s32::<LANE>(transmute(a), transmute(b)))
22863}
22864#[doc = "Load multiple 3-element structures to three registers"]
22865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_p8)"]
22866#[doc = "## Safety"]
22867#[doc = " * Neon intrinsic unsafe"]
22868#[inline(always)]
22869#[target_feature(enable = "neon")]
22870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22871#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22872#[cfg_attr(
22873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22874 assert_instr(ld3, LANE = 0)
22875)]
22876#[rustc_legacy_const_generics(2)]
22877#[cfg_attr(
22878 not(target_arch = "arm"),
22879 stable(feature = "neon_intrinsics", since = "1.59.0")
22880)]
22881#[cfg_attr(
22882 target_arch = "arm",
22883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22884)]
22885pub unsafe fn vld3_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x3_t) -> poly8x8x3_t {
22886 static_assert_uimm_bits!(LANE, 3);
22887 transmute(vld3_lane_s8::<LANE>(transmute(a), transmute(b)))
22888}
22889#[doc = "Load multiple 3-element structures to three registers"]
22890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_p16)"]
22891#[doc = "## Safety"]
22892#[doc = " * Neon intrinsic unsafe"]
22893#[inline(always)]
22894#[target_feature(enable = "neon")]
22895#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22896#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22897#[cfg_attr(
22898 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22899 assert_instr(ld3, LANE = 0)
22900)]
22901#[rustc_legacy_const_generics(2)]
22902#[cfg_attr(
22903 not(target_arch = "arm"),
22904 stable(feature = "neon_intrinsics", since = "1.59.0")
22905)]
22906#[cfg_attr(
22907 target_arch = "arm",
22908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22909)]
22910pub unsafe fn vld3_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x3_t) -> poly16x4x3_t {
22911 static_assert_uimm_bits!(LANE, 2);
22912 transmute(vld3_lane_s16::<LANE>(transmute(a), transmute(b)))
22913}
22914#[doc = "Load multiple 3-element structures to three registers"]
22915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_p16)"]
22916#[doc = "## Safety"]
22917#[doc = " * Neon intrinsic unsafe"]
22918#[inline(always)]
22919#[target_feature(enable = "neon")]
22920#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22921#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22922#[cfg_attr(
22923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22924 assert_instr(ld3, LANE = 0)
22925)]
22926#[rustc_legacy_const_generics(2)]
22927#[cfg_attr(
22928 not(target_arch = "arm"),
22929 stable(feature = "neon_intrinsics", since = "1.59.0")
22930)]
22931#[cfg_attr(
22932 target_arch = "arm",
22933 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22934)]
22935pub unsafe fn vld3q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x3_t) -> poly16x8x3_t {
22936 static_assert_uimm_bits!(LANE, 3);
22937 transmute(vld3q_lane_s16::<LANE>(transmute(a), transmute(b)))
22938}
22939#[doc = "Load multiple 3-element structures to three registers"]
22940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p64)"]
22941#[doc = "## Safety"]
22942#[doc = " * Neon intrinsic unsafe"]
22943#[inline(always)]
22944#[target_feature(enable = "neon,aes")]
22945#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
22946#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
22947#[cfg_attr(
22948 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22949 assert_instr(nop)
22950)]
22951#[cfg_attr(
22952 not(target_arch = "arm"),
22953 stable(feature = "neon_intrinsics", since = "1.59.0")
22954)]
22955#[cfg_attr(
22956 target_arch = "arm",
22957 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22958)]
22959pub unsafe fn vld3_p64(a: *const p64) -> poly64x1x3_t {
22960 transmute(vld3_s64(transmute(a)))
22961}
22962#[doc = "Load multiple 3-element structures to three registers"]
22963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s64)"]
22964#[doc = "## Safety"]
22965#[doc = " * Neon intrinsic unsafe"]
22966#[inline(always)]
22967#[target_feature(enable = "neon")]
22968#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22969#[cfg(not(target_arch = "arm"))]
22970#[cfg_attr(test, assert_instr(nop))]
22971pub unsafe fn vld3_s64(a: *const i64) -> int64x1x3_t {
22972 crate::ptr::read_unaligned(a.cast())
22973}
22974#[doc = "Load multiple 3-element structures to three registers"]
22975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s64)"]
22976#[doc = "## Safety"]
22977#[doc = " * Neon intrinsic unsafe"]
22978#[inline(always)]
22979#[cfg(target_arch = "arm")]
22980#[target_feature(enable = "neon,v7")]
22981#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22982#[cfg_attr(test, assert_instr(nop))]
22983pub unsafe fn vld3_s64(a: *const i64) -> int64x1x3_t {
22984 unsafe extern "unadjusted" {
22985 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v1i64.p0")]
22986 fn _vld3_s64(ptr: *const i8, size: i32) -> int64x1x3_t;
22987 }
22988 _vld3_s64(a as *const i8, 8)
22989}
22990#[doc = "Load multiple 3-element structures to three registers"]
22991#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u64)"]
22992#[doc = "## Safety"]
22993#[doc = " * Neon intrinsic unsafe"]
22994#[inline(always)]
22995#[target_feature(enable = "neon")]
22996#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22997#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
22998#[cfg_attr(
22999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23000 assert_instr(nop)
23001)]
23002#[cfg_attr(
23003 not(target_arch = "arm"),
23004 stable(feature = "neon_intrinsics", since = "1.59.0")
23005)]
23006#[cfg_attr(
23007 target_arch = "arm",
23008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23009)]
23010pub unsafe fn vld3_u64(a: *const u64) -> uint64x1x3_t {
23011 transmute(vld3_s64(transmute(a)))
23012}
23013#[doc = "Load multiple 3-element structures to three registers"]
23014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u8)"]
23015#[doc = "## Safety"]
23016#[doc = " * Neon intrinsic unsafe"]
23017#[inline(always)]
23018#[target_feature(enable = "neon")]
23019#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23020#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23021#[cfg_attr(
23022 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23023 assert_instr(ld3)
23024)]
23025#[cfg_attr(
23026 not(target_arch = "arm"),
23027 stable(feature = "neon_intrinsics", since = "1.59.0")
23028)]
23029#[cfg_attr(
23030 target_arch = "arm",
23031 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23032)]
23033pub unsafe fn vld3_u8(a: *const u8) -> uint8x8x3_t {
23034 transmute(vld3_s8(transmute(a)))
23035}
23036#[doc = "Load multiple 3-element structures to three registers"]
23037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u8)"]
23038#[doc = "## Safety"]
23039#[doc = " * Neon intrinsic unsafe"]
23040#[inline(always)]
23041#[target_feature(enable = "neon")]
23042#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23043#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23044#[cfg_attr(
23045 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23046 assert_instr(ld3)
23047)]
23048#[cfg_attr(
23049 not(target_arch = "arm"),
23050 stable(feature = "neon_intrinsics", since = "1.59.0")
23051)]
23052#[cfg_attr(
23053 target_arch = "arm",
23054 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23055)]
23056pub unsafe fn vld3q_u8(a: *const u8) -> uint8x16x3_t {
23057 transmute(vld3q_s8(transmute(a)))
23058}
23059#[doc = "Load multiple 3-element structures to three registers"]
23060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u16)"]
23061#[doc = "## Safety"]
23062#[doc = " * Neon intrinsic unsafe"]
23063#[inline(always)]
23064#[target_feature(enable = "neon")]
23065#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23066#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23067#[cfg_attr(
23068 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23069 assert_instr(ld3)
23070)]
23071#[cfg_attr(
23072 not(target_arch = "arm"),
23073 stable(feature = "neon_intrinsics", since = "1.59.0")
23074)]
23075#[cfg_attr(
23076 target_arch = "arm",
23077 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23078)]
23079pub unsafe fn vld3_u16(a: *const u16) -> uint16x4x3_t {
23080 transmute(vld3_s16(transmute(a)))
23081}
23082#[doc = "Load multiple 3-element structures to three registers"]
23083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u16)"]
23084#[doc = "## Safety"]
23085#[doc = " * Neon intrinsic unsafe"]
23086#[inline(always)]
23087#[target_feature(enable = "neon")]
23088#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23089#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23090#[cfg_attr(
23091 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23092 assert_instr(ld3)
23093)]
23094#[cfg_attr(
23095 not(target_arch = "arm"),
23096 stable(feature = "neon_intrinsics", since = "1.59.0")
23097)]
23098#[cfg_attr(
23099 target_arch = "arm",
23100 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23101)]
23102pub unsafe fn vld3q_u16(a: *const u16) -> uint16x8x3_t {
23103 transmute(vld3q_s16(transmute(a)))
23104}
23105#[doc = "Load multiple 3-element structures to three registers"]
23106#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u32)"]
23107#[doc = "## Safety"]
23108#[doc = " * Neon intrinsic unsafe"]
23109#[inline(always)]
23110#[target_feature(enable = "neon")]
23111#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23112#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23113#[cfg_attr(
23114 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23115 assert_instr(ld3)
23116)]
23117#[cfg_attr(
23118 not(target_arch = "arm"),
23119 stable(feature = "neon_intrinsics", since = "1.59.0")
23120)]
23121#[cfg_attr(
23122 target_arch = "arm",
23123 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23124)]
23125pub unsafe fn vld3_u32(a: *const u32) -> uint32x2x3_t {
23126 transmute(vld3_s32(transmute(a)))
23127}
23128#[doc = "Load multiple 3-element structures to three registers"]
23129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u32)"]
23130#[doc = "## Safety"]
23131#[doc = " * Neon intrinsic unsafe"]
23132#[inline(always)]
23133#[target_feature(enable = "neon")]
23134#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23135#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23136#[cfg_attr(
23137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23138 assert_instr(ld3)
23139)]
23140#[cfg_attr(
23141 not(target_arch = "arm"),
23142 stable(feature = "neon_intrinsics", since = "1.59.0")
23143)]
23144#[cfg_attr(
23145 target_arch = "arm",
23146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23147)]
23148pub unsafe fn vld3q_u32(a: *const u32) -> uint32x4x3_t {
23149 transmute(vld3q_s32(transmute(a)))
23150}
23151#[doc = "Load multiple 3-element structures to three registers"]
23152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p8)"]
23153#[doc = "## Safety"]
23154#[doc = " * Neon intrinsic unsafe"]
23155#[inline(always)]
23156#[target_feature(enable = "neon")]
23157#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23158#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23159#[cfg_attr(
23160 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23161 assert_instr(ld3)
23162)]
23163#[cfg_attr(
23164 not(target_arch = "arm"),
23165 stable(feature = "neon_intrinsics", since = "1.59.0")
23166)]
23167#[cfg_attr(
23168 target_arch = "arm",
23169 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23170)]
23171pub unsafe fn vld3_p8(a: *const p8) -> poly8x8x3_t {
23172 transmute(vld3_s8(transmute(a)))
23173}
23174#[doc = "Load multiple 3-element structures to three registers"]
23175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_p8)"]
23176#[doc = "## Safety"]
23177#[doc = " * Neon intrinsic unsafe"]
23178#[inline(always)]
23179#[target_feature(enable = "neon")]
23180#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23181#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23182#[cfg_attr(
23183 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23184 assert_instr(ld3)
23185)]
23186#[cfg_attr(
23187 not(target_arch = "arm"),
23188 stable(feature = "neon_intrinsics", since = "1.59.0")
23189)]
23190#[cfg_attr(
23191 target_arch = "arm",
23192 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23193)]
23194pub unsafe fn vld3q_p8(a: *const p8) -> poly8x16x3_t {
23195 transmute(vld3q_s8(transmute(a)))
23196}
23197#[doc = "Load multiple 3-element structures to three registers"]
23198#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p16)"]
23199#[doc = "## Safety"]
23200#[doc = " * Neon intrinsic unsafe"]
23201#[inline(always)]
23202#[target_feature(enable = "neon")]
23203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23204#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23205#[cfg_attr(
23206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23207 assert_instr(ld3)
23208)]
23209#[cfg_attr(
23210 not(target_arch = "arm"),
23211 stable(feature = "neon_intrinsics", since = "1.59.0")
23212)]
23213#[cfg_attr(
23214 target_arch = "arm",
23215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23216)]
23217pub unsafe fn vld3_p16(a: *const p16) -> poly16x4x3_t {
23218 transmute(vld3_s16(transmute(a)))
23219}
23220#[doc = "Load multiple 3-element structures to three registers"]
23221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_p16)"]
23222#[doc = "## Safety"]
23223#[doc = " * Neon intrinsic unsafe"]
23224#[inline(always)]
23225#[target_feature(enable = "neon")]
23226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
23228#[cfg_attr(
23229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23230 assert_instr(ld3)
23231)]
23232#[cfg_attr(
23233 not(target_arch = "arm"),
23234 stable(feature = "neon_intrinsics", since = "1.59.0")
23235)]
23236#[cfg_attr(
23237 target_arch = "arm",
23238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23239)]
23240pub unsafe fn vld3q_p16(a: *const p16) -> poly16x8x3_t {
23241 transmute(vld3q_s16(transmute(a)))
23242}
23243#[doc = "Load multiple 3-element structures to three registers"]
23244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f32)"]
23245#[doc = "## Safety"]
23246#[doc = " * Neon intrinsic unsafe"]
23247#[inline(always)]
23248#[cfg(target_arch = "arm")]
23249#[target_feature(enable = "neon,v7")]
23250#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
23251#[rustc_legacy_const_generics(2)]
23252#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23253pub unsafe fn vld3q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x3_t) -> float32x4x3_t {
23254 static_assert_uimm_bits!(LANE, 2);
23255 unsafe extern "unadjusted" {
23256 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4f32.p0")]
23257 fn _vld3q_lane_f32(
23258 ptr: *const i8,
23259 a: float32x4_t,
23260 b: float32x4_t,
23261 c: float32x4_t,
23262 n: i32,
23263 size: i32,
23264 ) -> float32x4x3_t;
23265 }
23266 _vld3q_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
23267}
23268#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
23269#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f16)"]
23270#[doc = "## Safety"]
23271#[doc = " * Neon intrinsic unsafe"]
23272#[inline(always)]
23273#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23274#[cfg(target_arch = "arm")]
23275#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23276#[target_feature(enable = "neon,fp16")]
23277#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23278#[cfg(not(target_arch = "arm64ec"))]
23279pub unsafe fn vld4_dup_f16(a: *const f16) -> float16x4x4_t {
23280 unsafe extern "unadjusted" {
23281 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4f16.p0")]
23282 fn _vld4_dup_f16(ptr: *const f16, size: i32) -> float16x4x4_t;
23283 }
23284 _vld4_dup_f16(a as _, 2)
23285}
23286#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
23287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f16)"]
23288#[doc = "## Safety"]
23289#[doc = " * Neon intrinsic unsafe"]
23290#[inline(always)]
23291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23292#[cfg(target_arch = "arm")]
23293#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23294#[target_feature(enable = "neon,fp16")]
23295#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23296#[cfg(not(target_arch = "arm64ec"))]
23297pub unsafe fn vld4q_dup_f16(a: *const f16) -> float16x8x4_t {
23298 unsafe extern "unadjusted" {
23299 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8f16.p0")]
23300 fn _vld4q_dup_f16(ptr: *const f16, size: i32) -> float16x8x4_t;
23301 }
23302 _vld4q_dup_f16(a as _, 2)
23303}
23304#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
23305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f16)"]
23306#[doc = "## Safety"]
23307#[doc = " * Neon intrinsic unsafe"]
23308#[inline(always)]
23309#[cfg(not(target_arch = "arm"))]
23310#[cfg_attr(
23311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23312 assert_instr(ld4r)
23313)]
23314#[target_feature(enable = "neon,fp16")]
23315#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23316#[cfg(not(target_arch = "arm64ec"))]
23317pub unsafe fn vld4_dup_f16(a: *const f16) -> float16x4x4_t {
23318 unsafe extern "unadjusted" {
23319 #[cfg_attr(
23320 any(target_arch = "aarch64", target_arch = "arm64ec"),
23321 link_name = "llvm.aarch64.neon.ld4r.v4f16.p0"
23322 )]
23323 fn _vld4_dup_f16(ptr: *const f16) -> float16x4x4_t;
23324 }
23325 _vld4_dup_f16(a as _)
23326}
23327#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
23328#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f16)"]
23329#[doc = "## Safety"]
23330#[doc = " * Neon intrinsic unsafe"]
23331#[inline(always)]
23332#[cfg(not(target_arch = "arm"))]
23333#[cfg_attr(
23334 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23335 assert_instr(ld4r)
23336)]
23337#[target_feature(enable = "neon,fp16")]
23338#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23339#[cfg(not(target_arch = "arm64ec"))]
23340pub unsafe fn vld4q_dup_f16(a: *const f16) -> float16x8x4_t {
23341 unsafe extern "unadjusted" {
23342 #[cfg_attr(
23343 any(target_arch = "aarch64", target_arch = "arm64ec"),
23344 link_name = "llvm.aarch64.neon.ld4r.v8f16.p0"
23345 )]
23346 fn _vld4q_dup_f16(ptr: *const f16) -> float16x8x4_t;
23347 }
23348 _vld4q_dup_f16(a as _)
23349}
23350#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f32)"]
23352#[doc = "## Safety"]
23353#[doc = " * Neon intrinsic unsafe"]
23354#[inline(always)]
23355#[cfg(target_arch = "arm")]
23356#[target_feature(enable = "neon,v7")]
23357#[cfg_attr(test, assert_instr(vld4))]
23358#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23359pub unsafe fn vld4_dup_f32(a: *const f32) -> float32x2x4_t {
23360 unsafe extern "unadjusted" {
23361 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v2f32.p0")]
23362 fn _vld4_dup_f32(ptr: *const i8, size: i32) -> float32x2x4_t;
23363 }
23364 _vld4_dup_f32(a as *const i8, 4)
23365}
23366#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f32)"]
23368#[doc = "## Safety"]
23369#[doc = " * Neon intrinsic unsafe"]
23370#[inline(always)]
23371#[cfg(target_arch = "arm")]
23372#[target_feature(enable = "neon,v7")]
23373#[cfg_attr(test, assert_instr(vld4))]
23374#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23375pub unsafe fn vld4q_dup_f32(a: *const f32) -> float32x4x4_t {
23376 unsafe extern "unadjusted" {
23377 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4f32.p0")]
23378 fn _vld4q_dup_f32(ptr: *const i8, size: i32) -> float32x4x4_t;
23379 }
23380 _vld4q_dup_f32(a as *const i8, 4)
23381}
23382#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s8)"]
23384#[doc = "## Safety"]
23385#[doc = " * Neon intrinsic unsafe"]
23386#[inline(always)]
23387#[cfg(target_arch = "arm")]
23388#[target_feature(enable = "neon,v7")]
23389#[cfg_attr(test, assert_instr(vld4))]
23390#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23391pub unsafe fn vld4_dup_s8(a: *const i8) -> int8x8x4_t {
23392 unsafe extern "unadjusted" {
23393 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8i8.p0")]
23394 fn _vld4_dup_s8(ptr: *const i8, size: i32) -> int8x8x4_t;
23395 }
23396 _vld4_dup_s8(a as *const i8, 1)
23397}
23398#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23399#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s8)"]
23400#[doc = "## Safety"]
23401#[doc = " * Neon intrinsic unsafe"]
23402#[inline(always)]
23403#[cfg(target_arch = "arm")]
23404#[target_feature(enable = "neon,v7")]
23405#[cfg_attr(test, assert_instr(vld4))]
23406#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23407pub unsafe fn vld4q_dup_s8(a: *const i8) -> int8x16x4_t {
23408 unsafe extern "unadjusted" {
23409 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v16i8.p0")]
23410 fn _vld4q_dup_s8(ptr: *const i8, size: i32) -> int8x16x4_t;
23411 }
23412 _vld4q_dup_s8(a as *const i8, 1)
23413}
23414#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s16)"]
23416#[doc = "## Safety"]
23417#[doc = " * Neon intrinsic unsafe"]
23418#[inline(always)]
23419#[cfg(target_arch = "arm")]
23420#[target_feature(enable = "neon,v7")]
23421#[cfg_attr(test, assert_instr(vld4))]
23422#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23423pub unsafe fn vld4_dup_s16(a: *const i16) -> int16x4x4_t {
23424 unsafe extern "unadjusted" {
23425 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4i16.p0")]
23426 fn _vld4_dup_s16(ptr: *const i8, size: i32) -> int16x4x4_t;
23427 }
23428 _vld4_dup_s16(a as *const i8, 2)
23429}
23430#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23431#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s16)"]
23432#[doc = "## Safety"]
23433#[doc = " * Neon intrinsic unsafe"]
23434#[inline(always)]
23435#[cfg(target_arch = "arm")]
23436#[target_feature(enable = "neon,v7")]
23437#[cfg_attr(test, assert_instr(vld4))]
23438#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23439pub unsafe fn vld4q_dup_s16(a: *const i16) -> int16x8x4_t {
23440 unsafe extern "unadjusted" {
23441 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8i16.p0")]
23442 fn _vld4q_dup_s16(ptr: *const i8, size: i32) -> int16x8x4_t;
23443 }
23444 _vld4q_dup_s16(a as *const i8, 2)
23445}
23446#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s32)"]
23448#[doc = "## Safety"]
23449#[doc = " * Neon intrinsic unsafe"]
23450#[inline(always)]
23451#[cfg(target_arch = "arm")]
23452#[target_feature(enable = "neon,v7")]
23453#[cfg_attr(test, assert_instr(vld4))]
23454#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23455pub unsafe fn vld4_dup_s32(a: *const i32) -> int32x2x4_t {
23456 unsafe extern "unadjusted" {
23457 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v2i32.p0")]
23458 fn _vld4_dup_s32(ptr: *const i8, size: i32) -> int32x2x4_t;
23459 }
23460 _vld4_dup_s32(a as *const i8, 4)
23461}
23462#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s32)"]
23464#[doc = "## Safety"]
23465#[doc = " * Neon intrinsic unsafe"]
23466#[inline(always)]
23467#[cfg(target_arch = "arm")]
23468#[target_feature(enable = "neon,v7")]
23469#[cfg_attr(test, assert_instr(vld4))]
23470#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23471pub unsafe fn vld4q_dup_s32(a: *const i32) -> int32x4x4_t {
23472 unsafe extern "unadjusted" {
23473 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4i32.p0")]
23474 fn _vld4q_dup_s32(ptr: *const i8, size: i32) -> int32x4x4_t;
23475 }
23476 _vld4q_dup_s32(a as *const i8, 4)
23477}
23478#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f32)"]
23480#[doc = "## Safety"]
23481#[doc = " * Neon intrinsic unsafe"]
23482#[inline(always)]
23483#[target_feature(enable = "neon")]
23484#[cfg(not(target_arch = "arm"))]
23485#[cfg_attr(test, assert_instr(ld4r))]
23486#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23487pub unsafe fn vld4_dup_f32(a: *const f32) -> float32x2x4_t {
23488 unsafe extern "unadjusted" {
23489 #[cfg_attr(
23490 any(target_arch = "aarch64", target_arch = "arm64ec"),
23491 link_name = "llvm.aarch64.neon.ld4r.v2f32.p0.p0"
23492 )]
23493 fn _vld4_dup_f32(ptr: *const f32) -> float32x2x4_t;
23494 }
23495 _vld4_dup_f32(a as _)
23496}
23497#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23498#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f32)"]
23499#[doc = "## Safety"]
23500#[doc = " * Neon intrinsic unsafe"]
23501#[inline(always)]
23502#[target_feature(enable = "neon")]
23503#[cfg(not(target_arch = "arm"))]
23504#[cfg_attr(test, assert_instr(ld4r))]
23505#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23506pub unsafe fn vld4q_dup_f32(a: *const f32) -> float32x4x4_t {
23507 unsafe extern "unadjusted" {
23508 #[cfg_attr(
23509 any(target_arch = "aarch64", target_arch = "arm64ec"),
23510 link_name = "llvm.aarch64.neon.ld4r.v4f32.p0.p0"
23511 )]
23512 fn _vld4q_dup_f32(ptr: *const f32) -> float32x4x4_t;
23513 }
23514 _vld4q_dup_f32(a as _)
23515}
23516#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s8)"]
23518#[doc = "## Safety"]
23519#[doc = " * Neon intrinsic unsafe"]
23520#[inline(always)]
23521#[target_feature(enable = "neon")]
23522#[cfg(not(target_arch = "arm"))]
23523#[cfg_attr(test, assert_instr(ld4r))]
23524#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23525pub unsafe fn vld4_dup_s8(a: *const i8) -> int8x8x4_t {
23526 unsafe extern "unadjusted" {
23527 #[cfg_attr(
23528 any(target_arch = "aarch64", target_arch = "arm64ec"),
23529 link_name = "llvm.aarch64.neon.ld4r.v8i8.p0.p0"
23530 )]
23531 fn _vld4_dup_s8(ptr: *const i8) -> int8x8x4_t;
23532 }
23533 _vld4_dup_s8(a as _)
23534}
23535#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s8)"]
23537#[doc = "## Safety"]
23538#[doc = " * Neon intrinsic unsafe"]
23539#[inline(always)]
23540#[target_feature(enable = "neon")]
23541#[cfg(not(target_arch = "arm"))]
23542#[cfg_attr(test, assert_instr(ld4r))]
23543#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23544pub unsafe fn vld4q_dup_s8(a: *const i8) -> int8x16x4_t {
23545 unsafe extern "unadjusted" {
23546 #[cfg_attr(
23547 any(target_arch = "aarch64", target_arch = "arm64ec"),
23548 link_name = "llvm.aarch64.neon.ld4r.v16i8.p0.p0"
23549 )]
23550 fn _vld4q_dup_s8(ptr: *const i8) -> int8x16x4_t;
23551 }
23552 _vld4q_dup_s8(a as _)
23553}
23554#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23555#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s16)"]
23556#[doc = "## Safety"]
23557#[doc = " * Neon intrinsic unsafe"]
23558#[inline(always)]
23559#[target_feature(enable = "neon")]
23560#[cfg(not(target_arch = "arm"))]
23561#[cfg_attr(test, assert_instr(ld4r))]
23562#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23563pub unsafe fn vld4_dup_s16(a: *const i16) -> int16x4x4_t {
23564 unsafe extern "unadjusted" {
23565 #[cfg_attr(
23566 any(target_arch = "aarch64", target_arch = "arm64ec"),
23567 link_name = "llvm.aarch64.neon.ld4r.v4i16.p0.p0"
23568 )]
23569 fn _vld4_dup_s16(ptr: *const i16) -> int16x4x4_t;
23570 }
23571 _vld4_dup_s16(a as _)
23572}
23573#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23574#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s16)"]
23575#[doc = "## Safety"]
23576#[doc = " * Neon intrinsic unsafe"]
23577#[inline(always)]
23578#[target_feature(enable = "neon")]
23579#[cfg(not(target_arch = "arm"))]
23580#[cfg_attr(test, assert_instr(ld4r))]
23581#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23582pub unsafe fn vld4q_dup_s16(a: *const i16) -> int16x8x4_t {
23583 unsafe extern "unadjusted" {
23584 #[cfg_attr(
23585 any(target_arch = "aarch64", target_arch = "arm64ec"),
23586 link_name = "llvm.aarch64.neon.ld4r.v8i16.p0.p0"
23587 )]
23588 fn _vld4q_dup_s16(ptr: *const i16) -> int16x8x4_t;
23589 }
23590 _vld4q_dup_s16(a as _)
23591}
23592#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23593#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s32)"]
23594#[doc = "## Safety"]
23595#[doc = " * Neon intrinsic unsafe"]
23596#[inline(always)]
23597#[target_feature(enable = "neon")]
23598#[cfg(not(target_arch = "arm"))]
23599#[cfg_attr(test, assert_instr(ld4r))]
23600#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23601pub unsafe fn vld4_dup_s32(a: *const i32) -> int32x2x4_t {
23602 unsafe extern "unadjusted" {
23603 #[cfg_attr(
23604 any(target_arch = "aarch64", target_arch = "arm64ec"),
23605 link_name = "llvm.aarch64.neon.ld4r.v2i32.p0.p0"
23606 )]
23607 fn _vld4_dup_s32(ptr: *const i32) -> int32x2x4_t;
23608 }
23609 _vld4_dup_s32(a as _)
23610}
23611#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s32)"]
23613#[doc = "## Safety"]
23614#[doc = " * Neon intrinsic unsafe"]
23615#[inline(always)]
23616#[target_feature(enable = "neon")]
23617#[cfg(not(target_arch = "arm"))]
23618#[cfg_attr(test, assert_instr(ld4r))]
23619#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23620pub unsafe fn vld4q_dup_s32(a: *const i32) -> int32x4x4_t {
23621 unsafe extern "unadjusted" {
23622 #[cfg_attr(
23623 any(target_arch = "aarch64", target_arch = "arm64ec"),
23624 link_name = "llvm.aarch64.neon.ld4r.v4i32.p0.p0"
23625 )]
23626 fn _vld4q_dup_s32(ptr: *const i32) -> int32x4x4_t;
23627 }
23628 _vld4q_dup_s32(a as _)
23629}
23630#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s64)"]
23632#[doc = "## Safety"]
23633#[doc = " * Neon intrinsic unsafe"]
23634#[inline(always)]
23635#[target_feature(enable = "neon")]
23636#[cfg(not(target_arch = "arm"))]
23637#[cfg_attr(test, assert_instr(ld4r))]
23638#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23639pub unsafe fn vld4_dup_s64(a: *const i64) -> int64x1x4_t {
23640 unsafe extern "unadjusted" {
23641 #[cfg_attr(
23642 any(target_arch = "aarch64", target_arch = "arm64ec"),
23643 link_name = "llvm.aarch64.neon.ld4r.v1i64.p0.p0"
23644 )]
23645 fn _vld4_dup_s64(ptr: *const i64) -> int64x1x4_t;
23646 }
23647 _vld4_dup_s64(a as _)
23648}
23649#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23650#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p64)"]
23651#[doc = "## Safety"]
23652#[doc = " * Neon intrinsic unsafe"]
23653#[inline(always)]
23654#[target_feature(enable = "neon,aes")]
23655#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
23656#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
23657#[cfg_attr(
23658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23659 assert_instr(ld4r)
23660)]
23661#[cfg_attr(
23662 not(target_arch = "arm"),
23663 stable(feature = "neon_intrinsics", since = "1.59.0")
23664)]
23665#[cfg_attr(
23666 target_arch = "arm",
23667 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23668)]
23669pub unsafe fn vld4_dup_p64(a: *const p64) -> poly64x1x4_t {
23670 transmute(vld4_dup_s64(transmute(a)))
23671}
23672#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s64)"]
23674#[doc = "## Safety"]
23675#[doc = " * Neon intrinsic unsafe"]
23676#[inline(always)]
23677#[cfg(target_arch = "arm")]
23678#[target_feature(enable = "neon,v7")]
23679#[cfg_attr(test, assert_instr(nop))]
23680#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23681pub unsafe fn vld4_dup_s64(a: *const i64) -> int64x1x4_t {
23682 unsafe extern "unadjusted" {
23683 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v1i64.p0")]
23684 fn _vld4_dup_s64(ptr: *const i8, size: i32) -> int64x1x4_t;
23685 }
23686 _vld4_dup_s64(a as *const i8, 8)
23687}
23688#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u64)"]
23690#[doc = "## Safety"]
23691#[doc = " * Neon intrinsic unsafe"]
23692#[inline(always)]
23693#[target_feature(enable = "neon")]
23694#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23695#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
23696#[cfg_attr(
23697 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23698 assert_instr(ld4r)
23699)]
23700#[cfg_attr(
23701 not(target_arch = "arm"),
23702 stable(feature = "neon_intrinsics", since = "1.59.0")
23703)]
23704#[cfg_attr(
23705 target_arch = "arm",
23706 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23707)]
23708pub unsafe fn vld4_dup_u64(a: *const u64) -> uint64x1x4_t {
23709 transmute(vld4_dup_s64(transmute(a)))
23710}
23711#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u8)"]
23713#[doc = "## Safety"]
23714#[doc = " * Neon intrinsic unsafe"]
23715#[inline(always)]
23716#[cfg(target_endian = "little")]
23717#[target_feature(enable = "neon")]
23718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23720#[cfg_attr(
23721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23722 assert_instr(ld4r)
23723)]
23724#[cfg_attr(
23725 not(target_arch = "arm"),
23726 stable(feature = "neon_intrinsics", since = "1.59.0")
23727)]
23728#[cfg_attr(
23729 target_arch = "arm",
23730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23731)]
23732pub unsafe fn vld4_dup_u8(a: *const u8) -> uint8x8x4_t {
23733 transmute(vld4_dup_s8(transmute(a)))
23734}
23735#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u8)"]
23737#[doc = "## Safety"]
23738#[doc = " * Neon intrinsic unsafe"]
23739#[inline(always)]
23740#[cfg(target_endian = "big")]
23741#[target_feature(enable = "neon")]
23742#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23743#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23744#[cfg_attr(
23745 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23746 assert_instr(ld4r)
23747)]
23748#[cfg_attr(
23749 not(target_arch = "arm"),
23750 stable(feature = "neon_intrinsics", since = "1.59.0")
23751)]
23752#[cfg_attr(
23753 target_arch = "arm",
23754 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23755)]
23756pub unsafe fn vld4_dup_u8(a: *const u8) -> uint8x8x4_t {
23757 let mut ret_val: uint8x8x4_t = transmute(vld4_dup_s8(transmute(a)));
23758 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23759 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23760 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23761 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
23762 ret_val
23763}
23764#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u8)"]
23766#[doc = "## Safety"]
23767#[doc = " * Neon intrinsic unsafe"]
23768#[inline(always)]
23769#[cfg(target_endian = "little")]
23770#[target_feature(enable = "neon")]
23771#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23772#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23773#[cfg_attr(
23774 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23775 assert_instr(ld4r)
23776)]
23777#[cfg_attr(
23778 not(target_arch = "arm"),
23779 stable(feature = "neon_intrinsics", since = "1.59.0")
23780)]
23781#[cfg_attr(
23782 target_arch = "arm",
23783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23784)]
23785pub unsafe fn vld4q_dup_u8(a: *const u8) -> uint8x16x4_t {
23786 transmute(vld4q_dup_s8(transmute(a)))
23787}
23788#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u8)"]
23790#[doc = "## Safety"]
23791#[doc = " * Neon intrinsic unsafe"]
23792#[inline(always)]
23793#[cfg(target_endian = "big")]
23794#[target_feature(enable = "neon")]
23795#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23796#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23797#[cfg_attr(
23798 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23799 assert_instr(ld4r)
23800)]
23801#[cfg_attr(
23802 not(target_arch = "arm"),
23803 stable(feature = "neon_intrinsics", since = "1.59.0")
23804)]
23805#[cfg_attr(
23806 target_arch = "arm",
23807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23808)]
23809pub unsafe fn vld4q_dup_u8(a: *const u8) -> uint8x16x4_t {
23810 let mut ret_val: uint8x16x4_t = transmute(vld4q_dup_s8(transmute(a)));
23811 ret_val.0 = unsafe {
23812 simd_shuffle!(
23813 ret_val.0,
23814 ret_val.0,
23815 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23816 )
23817 };
23818 ret_val.1 = unsafe {
23819 simd_shuffle!(
23820 ret_val.1,
23821 ret_val.1,
23822 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23823 )
23824 };
23825 ret_val.2 = unsafe {
23826 simd_shuffle!(
23827 ret_val.2,
23828 ret_val.2,
23829 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23830 )
23831 };
23832 ret_val.3 = unsafe {
23833 simd_shuffle!(
23834 ret_val.3,
23835 ret_val.3,
23836 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23837 )
23838 };
23839 ret_val
23840}
23841#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u16)"]
23843#[doc = "## Safety"]
23844#[doc = " * Neon intrinsic unsafe"]
23845#[inline(always)]
23846#[cfg(target_endian = "little")]
23847#[target_feature(enable = "neon")]
23848#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23849#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23850#[cfg_attr(
23851 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23852 assert_instr(ld4r)
23853)]
23854#[cfg_attr(
23855 not(target_arch = "arm"),
23856 stable(feature = "neon_intrinsics", since = "1.59.0")
23857)]
23858#[cfg_attr(
23859 target_arch = "arm",
23860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23861)]
23862pub unsafe fn vld4_dup_u16(a: *const u16) -> uint16x4x4_t {
23863 transmute(vld4_dup_s16(transmute(a)))
23864}
23865#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u16)"]
23867#[doc = "## Safety"]
23868#[doc = " * Neon intrinsic unsafe"]
23869#[inline(always)]
23870#[cfg(target_endian = "big")]
23871#[target_feature(enable = "neon")]
23872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23873#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23874#[cfg_attr(
23875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23876 assert_instr(ld4r)
23877)]
23878#[cfg_attr(
23879 not(target_arch = "arm"),
23880 stable(feature = "neon_intrinsics", since = "1.59.0")
23881)]
23882#[cfg_attr(
23883 target_arch = "arm",
23884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23885)]
23886pub unsafe fn vld4_dup_u16(a: *const u16) -> uint16x4x4_t {
23887 let mut ret_val: uint16x4x4_t = transmute(vld4_dup_s16(transmute(a)));
23888 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
23889 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
23890 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
23891 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
23892 ret_val
23893}
23894#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u16)"]
23896#[doc = "## Safety"]
23897#[doc = " * Neon intrinsic unsafe"]
23898#[inline(always)]
23899#[cfg(target_endian = "little")]
23900#[target_feature(enable = "neon")]
23901#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23902#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23903#[cfg_attr(
23904 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23905 assert_instr(ld4r)
23906)]
23907#[cfg_attr(
23908 not(target_arch = "arm"),
23909 stable(feature = "neon_intrinsics", since = "1.59.0")
23910)]
23911#[cfg_attr(
23912 target_arch = "arm",
23913 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23914)]
23915pub unsafe fn vld4q_dup_u16(a: *const u16) -> uint16x8x4_t {
23916 transmute(vld4q_dup_s16(transmute(a)))
23917}
23918#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u16)"]
23920#[doc = "## Safety"]
23921#[doc = " * Neon intrinsic unsafe"]
23922#[inline(always)]
23923#[cfg(target_endian = "big")]
23924#[target_feature(enable = "neon")]
23925#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23926#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23927#[cfg_attr(
23928 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23929 assert_instr(ld4r)
23930)]
23931#[cfg_attr(
23932 not(target_arch = "arm"),
23933 stable(feature = "neon_intrinsics", since = "1.59.0")
23934)]
23935#[cfg_attr(
23936 target_arch = "arm",
23937 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23938)]
23939pub unsafe fn vld4q_dup_u16(a: *const u16) -> uint16x8x4_t {
23940 let mut ret_val: uint16x8x4_t = transmute(vld4q_dup_s16(transmute(a)));
23941 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23942 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23943 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23944 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
23945 ret_val
23946}
23947#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u32)"]
23949#[doc = "## Safety"]
23950#[doc = " * Neon intrinsic unsafe"]
23951#[inline(always)]
23952#[cfg(target_endian = "little")]
23953#[target_feature(enable = "neon")]
23954#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23955#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23956#[cfg_attr(
23957 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23958 assert_instr(ld4r)
23959)]
23960#[cfg_attr(
23961 not(target_arch = "arm"),
23962 stable(feature = "neon_intrinsics", since = "1.59.0")
23963)]
23964#[cfg_attr(
23965 target_arch = "arm",
23966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23967)]
23968pub unsafe fn vld4_dup_u32(a: *const u32) -> uint32x2x4_t {
23969 transmute(vld4_dup_s32(transmute(a)))
23970}
23971#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u32)"]
23973#[doc = "## Safety"]
23974#[doc = " * Neon intrinsic unsafe"]
23975#[inline(always)]
23976#[cfg(target_endian = "big")]
23977#[target_feature(enable = "neon")]
23978#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23979#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23980#[cfg_attr(
23981 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23982 assert_instr(ld4r)
23983)]
23984#[cfg_attr(
23985 not(target_arch = "arm"),
23986 stable(feature = "neon_intrinsics", since = "1.59.0")
23987)]
23988#[cfg_attr(
23989 target_arch = "arm",
23990 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23991)]
23992pub unsafe fn vld4_dup_u32(a: *const u32) -> uint32x2x4_t {
23993 let mut ret_val: uint32x2x4_t = transmute(vld4_dup_s32(transmute(a)));
23994 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
23995 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
23996 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
23997 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
23998 ret_val
23999}
24000#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u32)"]
24002#[doc = "## Safety"]
24003#[doc = " * Neon intrinsic unsafe"]
24004#[inline(always)]
24005#[cfg(target_endian = "little")]
24006#[target_feature(enable = "neon")]
24007#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24008#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24009#[cfg_attr(
24010 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24011 assert_instr(ld4r)
24012)]
24013#[cfg_attr(
24014 not(target_arch = "arm"),
24015 stable(feature = "neon_intrinsics", since = "1.59.0")
24016)]
24017#[cfg_attr(
24018 target_arch = "arm",
24019 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24020)]
24021pub unsafe fn vld4q_dup_u32(a: *const u32) -> uint32x4x4_t {
24022 transmute(vld4q_dup_s32(transmute(a)))
24023}
24024#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24025#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u32)"]
24026#[doc = "## Safety"]
24027#[doc = " * Neon intrinsic unsafe"]
24028#[inline(always)]
24029#[cfg(target_endian = "big")]
24030#[target_feature(enable = "neon")]
24031#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24032#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24033#[cfg_attr(
24034 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24035 assert_instr(ld4r)
24036)]
24037#[cfg_attr(
24038 not(target_arch = "arm"),
24039 stable(feature = "neon_intrinsics", since = "1.59.0")
24040)]
24041#[cfg_attr(
24042 target_arch = "arm",
24043 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24044)]
24045pub unsafe fn vld4q_dup_u32(a: *const u32) -> uint32x4x4_t {
24046 let mut ret_val: uint32x4x4_t = transmute(vld4q_dup_s32(transmute(a)));
24047 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
24048 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
24049 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
24050 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
24051 ret_val
24052}
24053#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p8)"]
24055#[doc = "## Safety"]
24056#[doc = " * Neon intrinsic unsafe"]
24057#[inline(always)]
24058#[cfg(target_endian = "little")]
24059#[target_feature(enable = "neon")]
24060#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24061#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24062#[cfg_attr(
24063 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24064 assert_instr(ld4r)
24065)]
24066#[cfg_attr(
24067 not(target_arch = "arm"),
24068 stable(feature = "neon_intrinsics", since = "1.59.0")
24069)]
24070#[cfg_attr(
24071 target_arch = "arm",
24072 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24073)]
24074pub unsafe fn vld4_dup_p8(a: *const p8) -> poly8x8x4_t {
24075 transmute(vld4_dup_s8(transmute(a)))
24076}
24077#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p8)"]
24079#[doc = "## Safety"]
24080#[doc = " * Neon intrinsic unsafe"]
24081#[inline(always)]
24082#[cfg(target_endian = "big")]
24083#[target_feature(enable = "neon")]
24084#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24085#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24086#[cfg_attr(
24087 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24088 assert_instr(ld4r)
24089)]
24090#[cfg_attr(
24091 not(target_arch = "arm"),
24092 stable(feature = "neon_intrinsics", since = "1.59.0")
24093)]
24094#[cfg_attr(
24095 target_arch = "arm",
24096 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24097)]
24098pub unsafe fn vld4_dup_p8(a: *const p8) -> poly8x8x4_t {
24099 let mut ret_val: poly8x8x4_t = transmute(vld4_dup_s8(transmute(a)));
24100 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
24101 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
24102 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
24103 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
24104 ret_val
24105}
24106#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24107#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p8)"]
24108#[doc = "## Safety"]
24109#[doc = " * Neon intrinsic unsafe"]
24110#[inline(always)]
24111#[cfg(target_endian = "little")]
24112#[target_feature(enable = "neon")]
24113#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24114#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24115#[cfg_attr(
24116 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24117 assert_instr(ld4r)
24118)]
24119#[cfg_attr(
24120 not(target_arch = "arm"),
24121 stable(feature = "neon_intrinsics", since = "1.59.0")
24122)]
24123#[cfg_attr(
24124 target_arch = "arm",
24125 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24126)]
24127pub unsafe fn vld4q_dup_p8(a: *const p8) -> poly8x16x4_t {
24128 transmute(vld4q_dup_s8(transmute(a)))
24129}
24130#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24131#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p8)"]
24132#[doc = "## Safety"]
24133#[doc = " * Neon intrinsic unsafe"]
24134#[inline(always)]
24135#[cfg(target_endian = "big")]
24136#[target_feature(enable = "neon")]
24137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24138#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24139#[cfg_attr(
24140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24141 assert_instr(ld4r)
24142)]
24143#[cfg_attr(
24144 not(target_arch = "arm"),
24145 stable(feature = "neon_intrinsics", since = "1.59.0")
24146)]
24147#[cfg_attr(
24148 target_arch = "arm",
24149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24150)]
24151pub unsafe fn vld4q_dup_p8(a: *const p8) -> poly8x16x4_t {
24152 let mut ret_val: poly8x16x4_t = transmute(vld4q_dup_s8(transmute(a)));
24153 ret_val.0 = unsafe {
24154 simd_shuffle!(
24155 ret_val.0,
24156 ret_val.0,
24157 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24158 )
24159 };
24160 ret_val.1 = unsafe {
24161 simd_shuffle!(
24162 ret_val.1,
24163 ret_val.1,
24164 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24165 )
24166 };
24167 ret_val.2 = unsafe {
24168 simd_shuffle!(
24169 ret_val.2,
24170 ret_val.2,
24171 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24172 )
24173 };
24174 ret_val.3 = unsafe {
24175 simd_shuffle!(
24176 ret_val.3,
24177 ret_val.3,
24178 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24179 )
24180 };
24181 ret_val
24182}
24183#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p16)"]
24185#[doc = "## Safety"]
24186#[doc = " * Neon intrinsic unsafe"]
24187#[inline(always)]
24188#[cfg(target_endian = "little")]
24189#[target_feature(enable = "neon")]
24190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24191#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24192#[cfg_attr(
24193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24194 assert_instr(ld4r)
24195)]
24196#[cfg_attr(
24197 not(target_arch = "arm"),
24198 stable(feature = "neon_intrinsics", since = "1.59.0")
24199)]
24200#[cfg_attr(
24201 target_arch = "arm",
24202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24203)]
24204pub unsafe fn vld4_dup_p16(a: *const p16) -> poly16x4x4_t {
24205 transmute(vld4_dup_s16(transmute(a)))
24206}
24207#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p16)"]
24209#[doc = "## Safety"]
24210#[doc = " * Neon intrinsic unsafe"]
24211#[inline(always)]
24212#[cfg(target_endian = "big")]
24213#[target_feature(enable = "neon")]
24214#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24216#[cfg_attr(
24217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24218 assert_instr(ld4r)
24219)]
24220#[cfg_attr(
24221 not(target_arch = "arm"),
24222 stable(feature = "neon_intrinsics", since = "1.59.0")
24223)]
24224#[cfg_attr(
24225 target_arch = "arm",
24226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24227)]
24228pub unsafe fn vld4_dup_p16(a: *const p16) -> poly16x4x4_t {
24229 let mut ret_val: poly16x4x4_t = transmute(vld4_dup_s16(transmute(a)));
24230 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
24231 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
24232 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
24233 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
24234 ret_val
24235}
24236#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p16)"]
24238#[doc = "## Safety"]
24239#[doc = " * Neon intrinsic unsafe"]
24240#[inline(always)]
24241#[cfg(target_endian = "little")]
24242#[target_feature(enable = "neon")]
24243#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24244#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24245#[cfg_attr(
24246 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24247 assert_instr(ld4r)
24248)]
24249#[cfg_attr(
24250 not(target_arch = "arm"),
24251 stable(feature = "neon_intrinsics", since = "1.59.0")
24252)]
24253#[cfg_attr(
24254 target_arch = "arm",
24255 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24256)]
24257pub unsafe fn vld4q_dup_p16(a: *const p16) -> poly16x8x4_t {
24258 transmute(vld4q_dup_s16(transmute(a)))
24259}
24260#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p16)"]
24262#[doc = "## Safety"]
24263#[doc = " * Neon intrinsic unsafe"]
24264#[inline(always)]
24265#[cfg(target_endian = "big")]
24266#[target_feature(enable = "neon")]
24267#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24268#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24269#[cfg_attr(
24270 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24271 assert_instr(ld4r)
24272)]
24273#[cfg_attr(
24274 not(target_arch = "arm"),
24275 stable(feature = "neon_intrinsics", since = "1.59.0")
24276)]
24277#[cfg_attr(
24278 target_arch = "arm",
24279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24280)]
24281pub unsafe fn vld4q_dup_p16(a: *const p16) -> poly16x8x4_t {
24282 let mut ret_val: poly16x8x4_t = transmute(vld4q_dup_s16(transmute(a)));
24283 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
24284 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
24285 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
24286 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
24287 ret_val
24288}
24289#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24290#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f16)"]
24291#[doc = "## Safety"]
24292#[doc = " * Neon intrinsic unsafe"]
24293#[inline(always)]
24294#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24295#[cfg(target_arch = "arm")]
24296#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24297#[target_feature(enable = "neon,fp16")]
24298#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24299#[cfg(not(target_arch = "arm64ec"))]
24300pub unsafe fn vld4_f16(a: *const f16) -> float16x4x4_t {
24301 unsafe extern "unadjusted" {
24302 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4f16.p0")]
24303 fn _vld4_f16(ptr: *const f16, size: i32) -> float16x4x4_t;
24304 }
24305 _vld4_f16(a as _, 2)
24306}
24307#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f16)"]
24309#[doc = "## Safety"]
24310#[doc = " * Neon intrinsic unsafe"]
24311#[inline(always)]
24312#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24313#[cfg(target_arch = "arm")]
24314#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24315#[target_feature(enable = "neon,fp16")]
24316#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24317#[cfg(not(target_arch = "arm64ec"))]
24318pub unsafe fn vld4q_f16(a: *const f16) -> float16x8x4_t {
24319 unsafe extern "unadjusted" {
24320 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8f16.p0")]
24321 fn _vld4q_f16(ptr: *const f16, size: i32) -> float16x8x4_t;
24322 }
24323 _vld4q_f16(a as _, 2)
24324}
24325#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f16)"]
24327#[doc = "## Safety"]
24328#[doc = " * Neon intrinsic unsafe"]
24329#[inline(always)]
24330#[cfg(not(target_arch = "arm"))]
24331#[cfg_attr(
24332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24333 assert_instr(ld4)
24334)]
24335#[target_feature(enable = "neon,fp16")]
24336#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24337#[cfg(not(target_arch = "arm64ec"))]
24338pub unsafe fn vld4_f16(a: *const f16) -> float16x4x4_t {
24339 crate::core_arch::macros::deinterleaving_load!(f16, 4, 4, a)
24340}
24341#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f16)"]
24343#[doc = "## Safety"]
24344#[doc = " * Neon intrinsic unsafe"]
24345#[inline(always)]
24346#[cfg(not(target_arch = "arm"))]
24347#[cfg_attr(
24348 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24349 assert_instr(ld4)
24350)]
24351#[target_feature(enable = "neon,fp16")]
24352#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24353#[cfg(not(target_arch = "arm64ec"))]
24354pub unsafe fn vld4q_f16(a: *const f16) -> float16x8x4_t {
24355 crate::core_arch::macros::deinterleaving_load!(f16, 8, 4, a)
24356}
24357#[doc = "Load multiple 4-element structures to four registers"]
24358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f32)"]
24359#[doc = "## Safety"]
24360#[doc = " * Neon intrinsic unsafe"]
24361#[inline(always)]
24362#[target_feature(enable = "neon")]
24363#[cfg(not(target_arch = "arm"))]
24364#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24365#[cfg_attr(test, assert_instr(ld4))]
24366pub unsafe fn vld4_f32(a: *const f32) -> float32x2x4_t {
24367 crate::core_arch::macros::deinterleaving_load!(f32, 2, 4, a)
24368}
24369#[doc = "Load multiple 4-element structures to four registers"]
24370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f32)"]
24371#[doc = "## Safety"]
24372#[doc = " * Neon intrinsic unsafe"]
24373#[inline(always)]
24374#[target_feature(enable = "neon")]
24375#[cfg(not(target_arch = "arm"))]
24376#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24377#[cfg_attr(test, assert_instr(ld4))]
24378pub unsafe fn vld4q_f32(a: *const f32) -> float32x4x4_t {
24379 crate::core_arch::macros::deinterleaving_load!(f32, 4, 4, a)
24380}
24381#[doc = "Load multiple 4-element structures to four registers"]
24382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s8)"]
24383#[doc = "## Safety"]
24384#[doc = " * Neon intrinsic unsafe"]
24385#[inline(always)]
24386#[target_feature(enable = "neon")]
24387#[cfg(not(target_arch = "arm"))]
24388#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24389#[cfg_attr(test, assert_instr(ld4))]
24390pub unsafe fn vld4_s8(a: *const i8) -> int8x8x4_t {
24391 crate::core_arch::macros::deinterleaving_load!(i8, 8, 4, a)
24392}
24393#[doc = "Load multiple 4-element structures to four registers"]
24394#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s8)"]
24395#[doc = "## Safety"]
24396#[doc = " * Neon intrinsic unsafe"]
24397#[inline(always)]
24398#[target_feature(enable = "neon")]
24399#[cfg(not(target_arch = "arm"))]
24400#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24401#[cfg_attr(test, assert_instr(ld4))]
24402pub unsafe fn vld4q_s8(a: *const i8) -> int8x16x4_t {
24403 crate::core_arch::macros::deinterleaving_load!(i8, 16, 4, a)
24404}
24405#[doc = "Load multiple 4-element structures to four registers"]
24406#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s16)"]
24407#[doc = "## Safety"]
24408#[doc = " * Neon intrinsic unsafe"]
24409#[inline(always)]
24410#[target_feature(enable = "neon")]
24411#[cfg(not(target_arch = "arm"))]
24412#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24413#[cfg_attr(test, assert_instr(ld4))]
24414pub unsafe fn vld4_s16(a: *const i16) -> int16x4x4_t {
24415 crate::core_arch::macros::deinterleaving_load!(i16, 4, 4, a)
24416}
24417#[doc = "Load multiple 4-element structures to four registers"]
24418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s16)"]
24419#[doc = "## Safety"]
24420#[doc = " * Neon intrinsic unsafe"]
24421#[inline(always)]
24422#[target_feature(enable = "neon")]
24423#[cfg(not(target_arch = "arm"))]
24424#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24425#[cfg_attr(test, assert_instr(ld4))]
24426pub unsafe fn vld4q_s16(a: *const i16) -> int16x8x4_t {
24427 crate::core_arch::macros::deinterleaving_load!(i16, 8, 4, a)
24428}
24429#[doc = "Load multiple 4-element structures to four registers"]
24430#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s32)"]
24431#[doc = "## Safety"]
24432#[doc = " * Neon intrinsic unsafe"]
24433#[inline(always)]
24434#[target_feature(enable = "neon")]
24435#[cfg(not(target_arch = "arm"))]
24436#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24437#[cfg_attr(test, assert_instr(ld4))]
24438pub unsafe fn vld4_s32(a: *const i32) -> int32x2x4_t {
24439 crate::core_arch::macros::deinterleaving_load!(i32, 2, 4, a)
24440}
24441#[doc = "Load multiple 4-element structures to four registers"]
24442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s32)"]
24443#[doc = "## Safety"]
24444#[doc = " * Neon intrinsic unsafe"]
24445#[inline(always)]
24446#[target_feature(enable = "neon")]
24447#[cfg(not(target_arch = "arm"))]
24448#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24449#[cfg_attr(test, assert_instr(ld4))]
24450pub unsafe fn vld4q_s32(a: *const i32) -> int32x4x4_t {
24451 crate::core_arch::macros::deinterleaving_load!(i32, 4, 4, a)
24452}
24453#[doc = "Load multiple 4-element structures to four registers"]
24454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f32)"]
24455#[doc = "## Safety"]
24456#[doc = " * Neon intrinsic unsafe"]
24457#[inline(always)]
24458#[target_feature(enable = "neon,v7")]
24459#[cfg(target_arch = "arm")]
24460#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24461#[cfg_attr(test, assert_instr(vld4))]
24462pub unsafe fn vld4_f32(a: *const f32) -> float32x2x4_t {
24463 unsafe extern "unadjusted" {
24464 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v2f32.p0")]
24465 fn _vld4_f32(ptr: *const i8, size: i32) -> float32x2x4_t;
24466 }
24467 _vld4_f32(a as *const i8, 4)
24468}
24469#[doc = "Load multiple 4-element structures to four registers"]
24470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f32)"]
24471#[doc = "## Safety"]
24472#[doc = " * Neon intrinsic unsafe"]
24473#[inline(always)]
24474#[target_feature(enable = "neon,v7")]
24475#[cfg(target_arch = "arm")]
24476#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24477#[cfg_attr(test, assert_instr(vld4))]
24478pub unsafe fn vld4q_f32(a: *const f32) -> float32x4x4_t {
24479 unsafe extern "unadjusted" {
24480 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4f32.p0")]
24481 fn _vld4q_f32(ptr: *const i8, size: i32) -> float32x4x4_t;
24482 }
24483 _vld4q_f32(a as *const i8, 4)
24484}
24485#[doc = "Load multiple 4-element structures to four registers"]
24486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s8)"]
24487#[doc = "## Safety"]
24488#[doc = " * Neon intrinsic unsafe"]
24489#[inline(always)]
24490#[target_feature(enable = "neon,v7")]
24491#[cfg(target_arch = "arm")]
24492#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24493#[cfg_attr(test, assert_instr(vld4))]
24494pub unsafe fn vld4_s8(a: *const i8) -> int8x8x4_t {
24495 unsafe extern "unadjusted" {
24496 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8i8.p0")]
24497 fn _vld4_s8(ptr: *const i8, size: i32) -> int8x8x4_t;
24498 }
24499 _vld4_s8(a as *const i8, 1)
24500}
24501#[doc = "Load multiple 4-element structures to four registers"]
24502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s8)"]
24503#[doc = "## Safety"]
24504#[doc = " * Neon intrinsic unsafe"]
24505#[inline(always)]
24506#[target_feature(enable = "neon,v7")]
24507#[cfg(target_arch = "arm")]
24508#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24509#[cfg_attr(test, assert_instr(vld4))]
24510pub unsafe fn vld4q_s8(a: *const i8) -> int8x16x4_t {
24511 unsafe extern "unadjusted" {
24512 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v16i8.p0")]
24513 fn _vld4q_s8(ptr: *const i8, size: i32) -> int8x16x4_t;
24514 }
24515 _vld4q_s8(a as *const i8, 1)
24516}
24517#[doc = "Load multiple 4-element structures to four registers"]
24518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s16)"]
24519#[doc = "## Safety"]
24520#[doc = " * Neon intrinsic unsafe"]
24521#[inline(always)]
24522#[target_feature(enable = "neon,v7")]
24523#[cfg(target_arch = "arm")]
24524#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24525#[cfg_attr(test, assert_instr(vld4))]
24526pub unsafe fn vld4_s16(a: *const i16) -> int16x4x4_t {
24527 unsafe extern "unadjusted" {
24528 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4i16.p0")]
24529 fn _vld4_s16(ptr: *const i8, size: i32) -> int16x4x4_t;
24530 }
24531 _vld4_s16(a as *const i8, 2)
24532}
24533#[doc = "Load multiple 4-element structures to four registers"]
24534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s16)"]
24535#[doc = "## Safety"]
24536#[doc = " * Neon intrinsic unsafe"]
24537#[inline(always)]
24538#[target_feature(enable = "neon,v7")]
24539#[cfg(target_arch = "arm")]
24540#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24541#[cfg_attr(test, assert_instr(vld4))]
24542pub unsafe fn vld4q_s16(a: *const i16) -> int16x8x4_t {
24543 unsafe extern "unadjusted" {
24544 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8i16.p0")]
24545 fn _vld4q_s16(ptr: *const i8, size: i32) -> int16x8x4_t;
24546 }
24547 _vld4q_s16(a as *const i8, 2)
24548}
24549#[doc = "Load multiple 4-element structures to four registers"]
24550#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s32)"]
24551#[doc = "## Safety"]
24552#[doc = " * Neon intrinsic unsafe"]
24553#[inline(always)]
24554#[target_feature(enable = "neon,v7")]
24555#[cfg(target_arch = "arm")]
24556#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24557#[cfg_attr(test, assert_instr(vld4))]
24558pub unsafe fn vld4_s32(a: *const i32) -> int32x2x4_t {
24559 unsafe extern "unadjusted" {
24560 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v2i32.p0")]
24561 fn _vld4_s32(ptr: *const i8, size: i32) -> int32x2x4_t;
24562 }
24563 _vld4_s32(a as *const i8, 4)
24564}
24565#[doc = "Load multiple 4-element structures to four registers"]
24566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s32)"]
24567#[doc = "## Safety"]
24568#[doc = " * Neon intrinsic unsafe"]
24569#[inline(always)]
24570#[target_feature(enable = "neon,v7")]
24571#[cfg(target_arch = "arm")]
24572#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24573#[cfg_attr(test, assert_instr(vld4))]
24574pub unsafe fn vld4q_s32(a: *const i32) -> int32x4x4_t {
24575 unsafe extern "unadjusted" {
24576 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4i32.p0")]
24577 fn _vld4q_s32(ptr: *const i8, size: i32) -> int32x4x4_t;
24578 }
24579 _vld4q_s32(a as *const i8, 4)
24580}
24581#[doc = "Load multiple 4-element structures to two registers"]
24582#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f16)"]
24583#[doc = "## Safety"]
24584#[doc = " * Neon intrinsic unsafe"]
24585#[inline(always)]
24586#[target_feature(enable = "neon,v7")]
24587#[cfg(target_arch = "arm")]
24588#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
24589#[rustc_legacy_const_generics(2)]
24590#[target_feature(enable = "neon,fp16")]
24591#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24592#[cfg(not(target_arch = "arm64ec"))]
24593pub unsafe fn vld4_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x4_t) -> float16x4x4_t {
24594 static_assert_uimm_bits!(LANE, 2);
24595 unsafe extern "unadjusted" {
24596 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4f16.p0")]
24597 fn _vld4_lane_f16(
24598 ptr: *const f16,
24599 a: float16x4_t,
24600 b: float16x4_t,
24601 c: float16x4_t,
24602 d: float16x4_t,
24603 n: i32,
24604 size: i32,
24605 ) -> float16x4x4_t;
24606 }
24607 _vld4_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
24608}
24609#[doc = "Load multiple 4-element structures to two registers"]
24610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f16)"]
24611#[doc = "## Safety"]
24612#[doc = " * Neon intrinsic unsafe"]
24613#[inline(always)]
24614#[target_feature(enable = "neon,v7")]
24615#[cfg(target_arch = "arm")]
24616#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
24617#[rustc_legacy_const_generics(2)]
24618#[target_feature(enable = "neon,fp16")]
24619#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24620#[cfg(not(target_arch = "arm64ec"))]
24621pub unsafe fn vld4q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x4_t) -> float16x8x4_t {
24622 static_assert_uimm_bits!(LANE, 3);
24623 unsafe extern "unadjusted" {
24624 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8f16.p0")]
24625 fn _vld4q_lane_f16(
24626 ptr: *const f16,
24627 a: float16x8_t,
24628 b: float16x8_t,
24629 c: float16x8_t,
24630 d: float16x8_t,
24631 n: i32,
24632 size: i32,
24633 ) -> float16x8x4_t;
24634 }
24635 _vld4q_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
24636}
24637#[doc = "Load multiple 4-element structures to two registers"]
24638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f16)"]
24639#[doc = "## Safety"]
24640#[doc = " * Neon intrinsic unsafe"]
24641#[inline(always)]
24642#[cfg(not(target_arch = "arm"))]
24643#[cfg_attr(
24644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24645 assert_instr(ld4, LANE = 0)
24646)]
24647#[rustc_legacy_const_generics(2)]
24648#[target_feature(enable = "neon,fp16")]
24649#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24650#[cfg(not(target_arch = "arm64ec"))]
24651pub unsafe fn vld4_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x4_t) -> float16x4x4_t {
24652 static_assert_uimm_bits!(LANE, 2);
24653 unsafe extern "unadjusted" {
24654 #[cfg_attr(
24655 any(target_arch = "aarch64", target_arch = "arm64ec"),
24656 link_name = "llvm.aarch64.neon.ld4lane.v4f16.p0"
24657 )]
24658 fn _vld4_lane_f16(
24659 a: float16x4_t,
24660 b: float16x4_t,
24661 c: float16x4_t,
24662 d: float16x4_t,
24663 n: i64,
24664 ptr: *const f16,
24665 ) -> float16x4x4_t;
24666 }
24667 _vld4_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24668}
24669#[doc = "Load multiple 4-element structures to two registers"]
24670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f16)"]
24671#[doc = "## Safety"]
24672#[doc = " * Neon intrinsic unsafe"]
24673#[inline(always)]
24674#[cfg(not(target_arch = "arm"))]
24675#[cfg_attr(
24676 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24677 assert_instr(ld4, LANE = 0)
24678)]
24679#[rustc_legacy_const_generics(2)]
24680#[target_feature(enable = "neon,fp16")]
24681#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24682#[cfg(not(target_arch = "arm64ec"))]
24683pub unsafe fn vld4q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x4_t) -> float16x8x4_t {
24684 static_assert_uimm_bits!(LANE, 3);
24685 unsafe extern "unadjusted" {
24686 #[cfg_attr(
24687 any(target_arch = "aarch64", target_arch = "arm64ec"),
24688 link_name = "llvm.aarch64.neon.ld4lane.v8f16.p0"
24689 )]
24690 fn _vld4q_lane_f16(
24691 a: float16x8_t,
24692 b: float16x8_t,
24693 c: float16x8_t,
24694 d: float16x8_t,
24695 n: i64,
24696 ptr: *const f16,
24697 ) -> float16x8x4_t;
24698 }
24699 _vld4q_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24700}
24701#[doc = "Load multiple 4-element structures to four registers"]
24702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f32)"]
24703#[doc = "## Safety"]
24704#[doc = " * Neon intrinsic unsafe"]
24705#[inline(always)]
24706#[target_feature(enable = "neon")]
24707#[cfg(not(target_arch = "arm"))]
24708#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24709#[rustc_legacy_const_generics(2)]
24710#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24711pub unsafe fn vld4_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x4_t) -> float32x2x4_t {
24712 static_assert_uimm_bits!(LANE, 1);
24713 unsafe extern "unadjusted" {
24714 #[cfg_attr(
24715 any(target_arch = "aarch64", target_arch = "arm64ec"),
24716 link_name = "llvm.aarch64.neon.ld4lane.v2f32.p0"
24717 )]
24718 fn _vld4_lane_f32(
24719 a: float32x2_t,
24720 b: float32x2_t,
24721 c: float32x2_t,
24722 d: float32x2_t,
24723 n: i64,
24724 ptr: *const i8,
24725 ) -> float32x2x4_t;
24726 }
24727 _vld4_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24728}
24729#[doc = "Load multiple 4-element structures to four registers"]
24730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f32)"]
24731#[doc = "## Safety"]
24732#[doc = " * Neon intrinsic unsafe"]
24733#[inline(always)]
24734#[target_feature(enable = "neon")]
24735#[cfg(not(target_arch = "arm"))]
24736#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24737#[rustc_legacy_const_generics(2)]
24738#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24739pub unsafe fn vld4q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x4_t) -> float32x4x4_t {
24740 static_assert_uimm_bits!(LANE, 2);
24741 unsafe extern "unadjusted" {
24742 #[cfg_attr(
24743 any(target_arch = "aarch64", target_arch = "arm64ec"),
24744 link_name = "llvm.aarch64.neon.ld4lane.v4f32.p0"
24745 )]
24746 fn _vld4q_lane_f32(
24747 a: float32x4_t,
24748 b: float32x4_t,
24749 c: float32x4_t,
24750 d: float32x4_t,
24751 n: i64,
24752 ptr: *const i8,
24753 ) -> float32x4x4_t;
24754 }
24755 _vld4q_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24756}
24757#[doc = "Load multiple 4-element structures to four registers"]
24758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s8)"]
24759#[doc = "## Safety"]
24760#[doc = " * Neon intrinsic unsafe"]
24761#[inline(always)]
24762#[target_feature(enable = "neon")]
24763#[cfg(not(target_arch = "arm"))]
24764#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24765#[rustc_legacy_const_generics(2)]
24766#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24767pub unsafe fn vld4_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x4_t) -> int8x8x4_t {
24768 static_assert_uimm_bits!(LANE, 3);
24769 unsafe extern "unadjusted" {
24770 #[cfg_attr(
24771 any(target_arch = "aarch64", target_arch = "arm64ec"),
24772 link_name = "llvm.aarch64.neon.ld4lane.v8i8.p0"
24773 )]
24774 fn _vld4_lane_s8(
24775 a: int8x8_t,
24776 b: int8x8_t,
24777 c: int8x8_t,
24778 d: int8x8_t,
24779 n: i64,
24780 ptr: *const i8,
24781 ) -> int8x8x4_t;
24782 }
24783 _vld4_lane_s8(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24784}
24785#[doc = "Load multiple 4-element structures to four registers"]
24786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s16)"]
24787#[doc = "## Safety"]
24788#[doc = " * Neon intrinsic unsafe"]
24789#[inline(always)]
24790#[target_feature(enable = "neon")]
24791#[cfg(not(target_arch = "arm"))]
24792#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24793#[rustc_legacy_const_generics(2)]
24794#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24795pub unsafe fn vld4_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x4_t) -> int16x4x4_t {
24796 static_assert_uimm_bits!(LANE, 2);
24797 unsafe extern "unadjusted" {
24798 #[cfg_attr(
24799 any(target_arch = "aarch64", target_arch = "arm64ec"),
24800 link_name = "llvm.aarch64.neon.ld4lane.v4i16.p0"
24801 )]
24802 fn _vld4_lane_s16(
24803 a: int16x4_t,
24804 b: int16x4_t,
24805 c: int16x4_t,
24806 d: int16x4_t,
24807 n: i64,
24808 ptr: *const i8,
24809 ) -> int16x4x4_t;
24810 }
24811 _vld4_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24812}
24813#[doc = "Load multiple 4-element structures to four registers"]
24814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s16)"]
24815#[doc = "## Safety"]
24816#[doc = " * Neon intrinsic unsafe"]
24817#[inline(always)]
24818#[target_feature(enable = "neon")]
24819#[cfg(not(target_arch = "arm"))]
24820#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24821#[rustc_legacy_const_generics(2)]
24822#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24823pub unsafe fn vld4q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x4_t) -> int16x8x4_t {
24824 static_assert_uimm_bits!(LANE, 3);
24825 unsafe extern "unadjusted" {
24826 #[cfg_attr(
24827 any(target_arch = "aarch64", target_arch = "arm64ec"),
24828 link_name = "llvm.aarch64.neon.ld4lane.v8i16.p0"
24829 )]
24830 fn _vld4q_lane_s16(
24831 a: int16x8_t,
24832 b: int16x8_t,
24833 c: int16x8_t,
24834 d: int16x8_t,
24835 n: i64,
24836 ptr: *const i8,
24837 ) -> int16x8x4_t;
24838 }
24839 _vld4q_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24840}
24841#[doc = "Load multiple 4-element structures to four registers"]
24842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s32)"]
24843#[doc = "## Safety"]
24844#[doc = " * Neon intrinsic unsafe"]
24845#[inline(always)]
24846#[target_feature(enable = "neon")]
24847#[cfg(not(target_arch = "arm"))]
24848#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24849#[rustc_legacy_const_generics(2)]
24850#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24851pub unsafe fn vld4_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x4_t) -> int32x2x4_t {
24852 static_assert_uimm_bits!(LANE, 1);
24853 unsafe extern "unadjusted" {
24854 #[cfg_attr(
24855 any(target_arch = "aarch64", target_arch = "arm64ec"),
24856 link_name = "llvm.aarch64.neon.ld4lane.v2i32.p0"
24857 )]
24858 fn _vld4_lane_s32(
24859 a: int32x2_t,
24860 b: int32x2_t,
24861 c: int32x2_t,
24862 d: int32x2_t,
24863 n: i64,
24864 ptr: *const i8,
24865 ) -> int32x2x4_t;
24866 }
24867 _vld4_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24868}
24869#[doc = "Load multiple 4-element structures to four registers"]
24870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s32)"]
24871#[doc = "## Safety"]
24872#[doc = " * Neon intrinsic unsafe"]
24873#[inline(always)]
24874#[target_feature(enable = "neon")]
24875#[cfg(not(target_arch = "arm"))]
24876#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24877#[rustc_legacy_const_generics(2)]
24878#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24879pub unsafe fn vld4q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x4_t) -> int32x4x4_t {
24880 static_assert_uimm_bits!(LANE, 2);
24881 unsafe extern "unadjusted" {
24882 #[cfg_attr(
24883 any(target_arch = "aarch64", target_arch = "arm64ec"),
24884 link_name = "llvm.aarch64.neon.ld4lane.v4i32.p0"
24885 )]
24886 fn _vld4q_lane_s32(
24887 a: int32x4_t,
24888 b: int32x4_t,
24889 c: int32x4_t,
24890 d: int32x4_t,
24891 n: i64,
24892 ptr: *const i8,
24893 ) -> int32x4x4_t;
24894 }
24895 _vld4q_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24896}
24897#[doc = "Load multiple 4-element structures to four registers"]
24898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f32)"]
24899#[doc = "## Safety"]
24900#[doc = " * Neon intrinsic unsafe"]
24901#[inline(always)]
24902#[target_feature(enable = "neon,v7")]
24903#[cfg(target_arch = "arm")]
24904#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24905#[rustc_legacy_const_generics(2)]
24906#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24907pub unsafe fn vld4_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x4_t) -> float32x2x4_t {
24908 static_assert_uimm_bits!(LANE, 1);
24909 unsafe extern "unadjusted" {
24910 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v2f32.p0")]
24911 fn _vld4_lane_f32(
24912 ptr: *const i8,
24913 a: float32x2_t,
24914 b: float32x2_t,
24915 c: float32x2_t,
24916 d: float32x2_t,
24917 n: i32,
24918 size: i32,
24919 ) -> float32x2x4_t;
24920 }
24921 _vld4_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
24922}
24923#[doc = "Load multiple 4-element structures to four registers"]
24924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f32)"]
24925#[doc = "## Safety"]
24926#[doc = " * Neon intrinsic unsafe"]
24927#[inline(always)]
24928#[target_feature(enable = "neon,v7")]
24929#[cfg(target_arch = "arm")]
24930#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24931#[rustc_legacy_const_generics(2)]
24932#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24933pub unsafe fn vld4q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x4_t) -> float32x4x4_t {
24934 static_assert_uimm_bits!(LANE, 2);
24935 unsafe extern "unadjusted" {
24936 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4f32.p0")]
24937 fn _vld4q_lane_f32(
24938 ptr: *const i8,
24939 a: float32x4_t,
24940 b: float32x4_t,
24941 c: float32x4_t,
24942 d: float32x4_t,
24943 n: i32,
24944 size: i32,
24945 ) -> float32x4x4_t;
24946 }
24947 _vld4q_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
24948}
24949#[doc = "Load multiple 4-element structures to four registers"]
24950#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s8)"]
24951#[doc = "## Safety"]
24952#[doc = " * Neon intrinsic unsafe"]
24953#[inline(always)]
24954#[target_feature(enable = "neon,v7")]
24955#[cfg(target_arch = "arm")]
24956#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24957#[rustc_legacy_const_generics(2)]
24958#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24959pub unsafe fn vld4_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x4_t) -> int8x8x4_t {
24960 static_assert_uimm_bits!(LANE, 3);
24961 unsafe extern "unadjusted" {
24962 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8i8.p0")]
24963 fn _vld4_lane_s8(
24964 ptr: *const i8,
24965 a: int8x8_t,
24966 b: int8x8_t,
24967 c: int8x8_t,
24968 d: int8x8_t,
24969 n: i32,
24970 size: i32,
24971 ) -> int8x8x4_t;
24972 }
24973 _vld4_lane_s8(a as _, b.0, b.1, b.2, b.3, LANE, 1)
24974}
24975#[doc = "Load multiple 4-element structures to four registers"]
24976#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s16)"]
24977#[doc = "## Safety"]
24978#[doc = " * Neon intrinsic unsafe"]
24979#[inline(always)]
24980#[target_feature(enable = "neon,v7")]
24981#[cfg(target_arch = "arm")]
24982#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24983#[rustc_legacy_const_generics(2)]
24984#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24985pub unsafe fn vld4_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x4_t) -> int16x4x4_t {
24986 static_assert_uimm_bits!(LANE, 2);
24987 unsafe extern "unadjusted" {
24988 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4i16.p0")]
24989 fn _vld4_lane_s16(
24990 ptr: *const i8,
24991 a: int16x4_t,
24992 b: int16x4_t,
24993 c: int16x4_t,
24994 d: int16x4_t,
24995 n: i32,
24996 size: i32,
24997 ) -> int16x4x4_t;
24998 }
24999 _vld4_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
25000}
25001#[doc = "Load multiple 4-element structures to four registers"]
25002#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s16)"]
25003#[doc = "## Safety"]
25004#[doc = " * Neon intrinsic unsafe"]
25005#[inline(always)]
25006#[target_feature(enable = "neon,v7")]
25007#[cfg(target_arch = "arm")]
25008#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
25009#[rustc_legacy_const_generics(2)]
25010#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25011pub unsafe fn vld4q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x4_t) -> int16x8x4_t {
25012 static_assert_uimm_bits!(LANE, 3);
25013 unsafe extern "unadjusted" {
25014 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8i16.p0")]
25015 fn _vld4q_lane_s16(
25016 ptr: *const i8,
25017 a: int16x8_t,
25018 b: int16x8_t,
25019 c: int16x8_t,
25020 d: int16x8_t,
25021 n: i32,
25022 size: i32,
25023 ) -> int16x8x4_t;
25024 }
25025 _vld4q_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
25026}
25027#[doc = "Load multiple 4-element structures to four registers"]
25028#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s32)"]
25029#[doc = "## Safety"]
25030#[doc = " * Neon intrinsic unsafe"]
25031#[inline(always)]
25032#[target_feature(enable = "neon,v7")]
25033#[cfg(target_arch = "arm")]
25034#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
25035#[rustc_legacy_const_generics(2)]
25036#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25037pub unsafe fn vld4_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x4_t) -> int32x2x4_t {
25038 static_assert_uimm_bits!(LANE, 1);
25039 unsafe extern "unadjusted" {
25040 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v2i32.p0")]
25041 fn _vld4_lane_s32(
25042 ptr: *const i8,
25043 a: int32x2_t,
25044 b: int32x2_t,
25045 c: int32x2_t,
25046 d: int32x2_t,
25047 n: i32,
25048 size: i32,
25049 ) -> int32x2x4_t;
25050 }
25051 _vld4_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
25052}
25053#[doc = "Load multiple 4-element structures to four registers"]
25054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s32)"]
25055#[doc = "## Safety"]
25056#[doc = " * Neon intrinsic unsafe"]
25057#[inline(always)]
25058#[target_feature(enable = "neon,v7")]
25059#[cfg(target_arch = "arm")]
25060#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
25061#[rustc_legacy_const_generics(2)]
25062#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25063pub unsafe fn vld4q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x4_t) -> int32x4x4_t {
25064 static_assert_uimm_bits!(LANE, 2);
25065 unsafe extern "unadjusted" {
25066 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4i32.p0")]
25067 fn _vld4q_lane_s32(
25068 ptr: *const i8,
25069 a: int32x4_t,
25070 b: int32x4_t,
25071 c: int32x4_t,
25072 d: int32x4_t,
25073 n: i32,
25074 size: i32,
25075 ) -> int32x4x4_t;
25076 }
25077 _vld4q_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
25078}
25079#[doc = "Load multiple 4-element structures to four registers"]
25080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u8)"]
25081#[doc = "## Safety"]
25082#[doc = " * Neon intrinsic unsafe"]
25083#[inline(always)]
25084#[target_feature(enable = "neon")]
25085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25086#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25087#[cfg_attr(
25088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25089 assert_instr(ld4, LANE = 0)
25090)]
25091#[rustc_legacy_const_generics(2)]
25092#[cfg_attr(
25093 not(target_arch = "arm"),
25094 stable(feature = "neon_intrinsics", since = "1.59.0")
25095)]
25096#[cfg_attr(
25097 target_arch = "arm",
25098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25099)]
25100pub unsafe fn vld4_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x4_t) -> uint8x8x4_t {
25101 static_assert_uimm_bits!(LANE, 3);
25102 transmute(vld4_lane_s8::<LANE>(transmute(a), transmute(b)))
25103}
25104#[doc = "Load multiple 4-element structures to four registers"]
25105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u16)"]
25106#[doc = "## Safety"]
25107#[doc = " * Neon intrinsic unsafe"]
25108#[inline(always)]
25109#[target_feature(enable = "neon")]
25110#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25111#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25112#[cfg_attr(
25113 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25114 assert_instr(ld4, LANE = 0)
25115)]
25116#[rustc_legacy_const_generics(2)]
25117#[cfg_attr(
25118 not(target_arch = "arm"),
25119 stable(feature = "neon_intrinsics", since = "1.59.0")
25120)]
25121#[cfg_attr(
25122 target_arch = "arm",
25123 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25124)]
25125pub unsafe fn vld4_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x4_t) -> uint16x4x4_t {
25126 static_assert_uimm_bits!(LANE, 2);
25127 transmute(vld4_lane_s16::<LANE>(transmute(a), transmute(b)))
25128}
25129#[doc = "Load multiple 4-element structures to four registers"]
25130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_u16)"]
25131#[doc = "## Safety"]
25132#[doc = " * Neon intrinsic unsafe"]
25133#[inline(always)]
25134#[target_feature(enable = "neon")]
25135#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25136#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25137#[cfg_attr(
25138 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25139 assert_instr(ld4, LANE = 0)
25140)]
25141#[rustc_legacy_const_generics(2)]
25142#[cfg_attr(
25143 not(target_arch = "arm"),
25144 stable(feature = "neon_intrinsics", since = "1.59.0")
25145)]
25146#[cfg_attr(
25147 target_arch = "arm",
25148 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25149)]
25150pub unsafe fn vld4q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x4_t) -> uint16x8x4_t {
25151 static_assert_uimm_bits!(LANE, 3);
25152 transmute(vld4q_lane_s16::<LANE>(transmute(a), transmute(b)))
25153}
25154#[doc = "Load multiple 4-element structures to four registers"]
25155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u32)"]
25156#[doc = "## Safety"]
25157#[doc = " * Neon intrinsic unsafe"]
25158#[inline(always)]
25159#[target_feature(enable = "neon")]
25160#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25161#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25162#[cfg_attr(
25163 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25164 assert_instr(ld4, LANE = 0)
25165)]
25166#[rustc_legacy_const_generics(2)]
25167#[cfg_attr(
25168 not(target_arch = "arm"),
25169 stable(feature = "neon_intrinsics", since = "1.59.0")
25170)]
25171#[cfg_attr(
25172 target_arch = "arm",
25173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25174)]
25175pub unsafe fn vld4_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x4_t) -> uint32x2x4_t {
25176 static_assert_uimm_bits!(LANE, 1);
25177 transmute(vld4_lane_s32::<LANE>(transmute(a), transmute(b)))
25178}
25179#[doc = "Load multiple 4-element structures to four registers"]
25180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_u32)"]
25181#[doc = "## Safety"]
25182#[doc = " * Neon intrinsic unsafe"]
25183#[inline(always)]
25184#[target_feature(enable = "neon")]
25185#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25186#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25187#[cfg_attr(
25188 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25189 assert_instr(ld4, LANE = 0)
25190)]
25191#[rustc_legacy_const_generics(2)]
25192#[cfg_attr(
25193 not(target_arch = "arm"),
25194 stable(feature = "neon_intrinsics", since = "1.59.0")
25195)]
25196#[cfg_attr(
25197 target_arch = "arm",
25198 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25199)]
25200pub unsafe fn vld4q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x4_t) -> uint32x4x4_t {
25201 static_assert_uimm_bits!(LANE, 2);
25202 transmute(vld4q_lane_s32::<LANE>(transmute(a), transmute(b)))
25203}
25204#[doc = "Load multiple 4-element structures to four registers"]
25205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_p8)"]
25206#[doc = "## Safety"]
25207#[doc = " * Neon intrinsic unsafe"]
25208#[inline(always)]
25209#[target_feature(enable = "neon")]
25210#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25211#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25212#[cfg_attr(
25213 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25214 assert_instr(ld4, LANE = 0)
25215)]
25216#[rustc_legacy_const_generics(2)]
25217#[cfg_attr(
25218 not(target_arch = "arm"),
25219 stable(feature = "neon_intrinsics", since = "1.59.0")
25220)]
25221#[cfg_attr(
25222 target_arch = "arm",
25223 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25224)]
25225pub unsafe fn vld4_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x4_t) -> poly8x8x4_t {
25226 static_assert_uimm_bits!(LANE, 3);
25227 transmute(vld4_lane_s8::<LANE>(transmute(a), transmute(b)))
25228}
25229#[doc = "Load multiple 4-element structures to four registers"]
25230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_p16)"]
25231#[doc = "## Safety"]
25232#[doc = " * Neon intrinsic unsafe"]
25233#[inline(always)]
25234#[target_feature(enable = "neon")]
25235#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25236#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25237#[cfg_attr(
25238 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25239 assert_instr(ld4, LANE = 0)
25240)]
25241#[rustc_legacy_const_generics(2)]
25242#[cfg_attr(
25243 not(target_arch = "arm"),
25244 stable(feature = "neon_intrinsics", since = "1.59.0")
25245)]
25246#[cfg_attr(
25247 target_arch = "arm",
25248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25249)]
25250pub unsafe fn vld4_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x4_t) -> poly16x4x4_t {
25251 static_assert_uimm_bits!(LANE, 2);
25252 transmute(vld4_lane_s16::<LANE>(transmute(a), transmute(b)))
25253}
25254#[doc = "Load multiple 4-element structures to four registers"]
25255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_p16)"]
25256#[doc = "## Safety"]
25257#[doc = " * Neon intrinsic unsafe"]
25258#[inline(always)]
25259#[target_feature(enable = "neon")]
25260#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25261#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25262#[cfg_attr(
25263 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25264 assert_instr(ld4, LANE = 0)
25265)]
25266#[rustc_legacy_const_generics(2)]
25267#[cfg_attr(
25268 not(target_arch = "arm"),
25269 stable(feature = "neon_intrinsics", since = "1.59.0")
25270)]
25271#[cfg_attr(
25272 target_arch = "arm",
25273 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25274)]
25275pub unsafe fn vld4q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x4_t) -> poly16x8x4_t {
25276 static_assert_uimm_bits!(LANE, 3);
25277 transmute(vld4q_lane_s16::<LANE>(transmute(a), transmute(b)))
25278}
25279#[doc = "Load multiple 4-element structures to four registers"]
25280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p64)"]
25281#[doc = "## Safety"]
25282#[doc = " * Neon intrinsic unsafe"]
25283#[inline(always)]
25284#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
25285#[target_feature(enable = "neon,aes")]
25286#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
25287#[cfg_attr(
25288 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25289 assert_instr(nop)
25290)]
25291#[cfg_attr(
25292 not(target_arch = "arm"),
25293 stable(feature = "neon_intrinsics", since = "1.59.0")
25294)]
25295#[cfg_attr(
25296 target_arch = "arm",
25297 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25298)]
25299pub unsafe fn vld4_p64(a: *const p64) -> poly64x1x4_t {
25300 transmute(vld4_s64(transmute(a)))
25301}
25302#[doc = "Load multiple 4-element structures to four registers"]
25303#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s64)"]
25304#[doc = "## Safety"]
25305#[doc = " * Neon intrinsic unsafe"]
25306#[inline(always)]
25307#[target_feature(enable = "neon")]
25308#[cfg(not(target_arch = "arm"))]
25309#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25310#[cfg_attr(test, assert_instr(nop))]
25311pub unsafe fn vld4_s64(a: *const i64) -> int64x1x4_t {
25312 crate::ptr::read_unaligned(a.cast())
25313}
25314#[doc = "Load multiple 4-element structures to four registers"]
25315#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s64)"]
25316#[doc = "## Safety"]
25317#[doc = " * Neon intrinsic unsafe"]
25318#[inline(always)]
25319#[target_feature(enable = "neon,v7")]
25320#[cfg(target_arch = "arm")]
25321#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25322#[cfg_attr(test, assert_instr(nop))]
25323pub unsafe fn vld4_s64(a: *const i64) -> int64x1x4_t {
25324 unsafe extern "unadjusted" {
25325 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v1i64.p0")]
25326 fn _vld4_s64(ptr: *const i8, size: i32) -> int64x1x4_t;
25327 }
25328 _vld4_s64(a as *const i8, 8)
25329}
25330#[doc = "Load multiple 4-element structures to four registers"]
25331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u64)"]
25332#[doc = "## Safety"]
25333#[doc = " * Neon intrinsic unsafe"]
25334#[inline(always)]
25335#[target_feature(enable = "neon")]
25336#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25337#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
25338#[cfg_attr(
25339 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25340 assert_instr(nop)
25341)]
25342#[cfg_attr(
25343 not(target_arch = "arm"),
25344 stable(feature = "neon_intrinsics", since = "1.59.0")
25345)]
25346#[cfg_attr(
25347 target_arch = "arm",
25348 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25349)]
25350pub unsafe fn vld4_u64(a: *const u64) -> uint64x1x4_t {
25351 transmute(vld4_s64(transmute(a)))
25352}
25353#[doc = "Load multiple 4-element structures to four registers"]
25354#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u8)"]
25355#[doc = "## Safety"]
25356#[doc = " * Neon intrinsic unsafe"]
25357#[inline(always)]
25358#[target_feature(enable = "neon")]
25359#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25360#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25361#[cfg_attr(
25362 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25363 assert_instr(ld4)
25364)]
25365#[cfg_attr(
25366 not(target_arch = "arm"),
25367 stable(feature = "neon_intrinsics", since = "1.59.0")
25368)]
25369#[cfg_attr(
25370 target_arch = "arm",
25371 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25372)]
25373pub unsafe fn vld4_u8(a: *const u8) -> uint8x8x4_t {
25374 transmute(vld4_s8(transmute(a)))
25375}
25376#[doc = "Load multiple 4-element structures to four registers"]
25377#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u8)"]
25378#[doc = "## Safety"]
25379#[doc = " * Neon intrinsic unsafe"]
25380#[inline(always)]
25381#[target_feature(enable = "neon")]
25382#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25383#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25384#[cfg_attr(
25385 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25386 assert_instr(ld4)
25387)]
25388#[cfg_attr(
25389 not(target_arch = "arm"),
25390 stable(feature = "neon_intrinsics", since = "1.59.0")
25391)]
25392#[cfg_attr(
25393 target_arch = "arm",
25394 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25395)]
25396pub unsafe fn vld4q_u8(a: *const u8) -> uint8x16x4_t {
25397 transmute(vld4q_s8(transmute(a)))
25398}
25399#[doc = "Load multiple 4-element structures to four registers"]
25400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u16)"]
25401#[doc = "## Safety"]
25402#[doc = " * Neon intrinsic unsafe"]
25403#[inline(always)]
25404#[target_feature(enable = "neon")]
25405#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25406#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25407#[cfg_attr(
25408 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25409 assert_instr(ld4)
25410)]
25411#[cfg_attr(
25412 not(target_arch = "arm"),
25413 stable(feature = "neon_intrinsics", since = "1.59.0")
25414)]
25415#[cfg_attr(
25416 target_arch = "arm",
25417 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25418)]
25419pub unsafe fn vld4_u16(a: *const u16) -> uint16x4x4_t {
25420 transmute(vld4_s16(transmute(a)))
25421}
25422#[doc = "Load multiple 4-element structures to four registers"]
25423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u16)"]
25424#[doc = "## Safety"]
25425#[doc = " * Neon intrinsic unsafe"]
25426#[inline(always)]
25427#[target_feature(enable = "neon")]
25428#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25429#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25430#[cfg_attr(
25431 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25432 assert_instr(ld4)
25433)]
25434#[cfg_attr(
25435 not(target_arch = "arm"),
25436 stable(feature = "neon_intrinsics", since = "1.59.0")
25437)]
25438#[cfg_attr(
25439 target_arch = "arm",
25440 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25441)]
25442pub unsafe fn vld4q_u16(a: *const u16) -> uint16x8x4_t {
25443 transmute(vld4q_s16(transmute(a)))
25444}
25445#[doc = "Load multiple 4-element structures to four registers"]
25446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u32)"]
25447#[doc = "## Safety"]
25448#[doc = " * Neon intrinsic unsafe"]
25449#[inline(always)]
25450#[target_feature(enable = "neon")]
25451#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25452#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25453#[cfg_attr(
25454 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25455 assert_instr(ld4)
25456)]
25457#[cfg_attr(
25458 not(target_arch = "arm"),
25459 stable(feature = "neon_intrinsics", since = "1.59.0")
25460)]
25461#[cfg_attr(
25462 target_arch = "arm",
25463 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25464)]
25465pub unsafe fn vld4_u32(a: *const u32) -> uint32x2x4_t {
25466 transmute(vld4_s32(transmute(a)))
25467}
25468#[doc = "Load multiple 4-element structures to four registers"]
25469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u32)"]
25470#[doc = "## Safety"]
25471#[doc = " * Neon intrinsic unsafe"]
25472#[inline(always)]
25473#[target_feature(enable = "neon")]
25474#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25475#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25476#[cfg_attr(
25477 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25478 assert_instr(ld4)
25479)]
25480#[cfg_attr(
25481 not(target_arch = "arm"),
25482 stable(feature = "neon_intrinsics", since = "1.59.0")
25483)]
25484#[cfg_attr(
25485 target_arch = "arm",
25486 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25487)]
25488pub unsafe fn vld4q_u32(a: *const u32) -> uint32x4x4_t {
25489 transmute(vld4q_s32(transmute(a)))
25490}
25491#[doc = "Load multiple 4-element structures to four registers"]
25492#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p8)"]
25493#[doc = "## Safety"]
25494#[doc = " * Neon intrinsic unsafe"]
25495#[inline(always)]
25496#[target_feature(enable = "neon")]
25497#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25498#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25499#[cfg_attr(
25500 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25501 assert_instr(ld4)
25502)]
25503#[cfg_attr(
25504 not(target_arch = "arm"),
25505 stable(feature = "neon_intrinsics", since = "1.59.0")
25506)]
25507#[cfg_attr(
25508 target_arch = "arm",
25509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25510)]
25511pub unsafe fn vld4_p8(a: *const p8) -> poly8x8x4_t {
25512 transmute(vld4_s8(transmute(a)))
25513}
25514#[doc = "Load multiple 4-element structures to four registers"]
25515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_p8)"]
25516#[doc = "## Safety"]
25517#[doc = " * Neon intrinsic unsafe"]
25518#[inline(always)]
25519#[target_feature(enable = "neon")]
25520#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25521#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25522#[cfg_attr(
25523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25524 assert_instr(ld4)
25525)]
25526#[cfg_attr(
25527 not(target_arch = "arm"),
25528 stable(feature = "neon_intrinsics", since = "1.59.0")
25529)]
25530#[cfg_attr(
25531 target_arch = "arm",
25532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25533)]
25534pub unsafe fn vld4q_p8(a: *const p8) -> poly8x16x4_t {
25535 transmute(vld4q_s8(transmute(a)))
25536}
25537#[doc = "Load multiple 4-element structures to four registers"]
25538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p16)"]
25539#[doc = "## Safety"]
25540#[doc = " * Neon intrinsic unsafe"]
25541#[inline(always)]
25542#[target_feature(enable = "neon")]
25543#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25544#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25545#[cfg_attr(
25546 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25547 assert_instr(ld4)
25548)]
25549#[cfg_attr(
25550 not(target_arch = "arm"),
25551 stable(feature = "neon_intrinsics", since = "1.59.0")
25552)]
25553#[cfg_attr(
25554 target_arch = "arm",
25555 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25556)]
25557pub unsafe fn vld4_p16(a: *const p16) -> poly16x4x4_t {
25558 transmute(vld4_s16(transmute(a)))
25559}
25560#[doc = "Load multiple 4-element structures to four registers"]
25561#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_p16)"]
25562#[doc = "## Safety"]
25563#[doc = " * Neon intrinsic unsafe"]
25564#[inline(always)]
25565#[target_feature(enable = "neon")]
25566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25567#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25568#[cfg_attr(
25569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25570 assert_instr(ld4)
25571)]
25572#[cfg_attr(
25573 not(target_arch = "arm"),
25574 stable(feature = "neon_intrinsics", since = "1.59.0")
25575)]
25576#[cfg_attr(
25577 target_arch = "arm",
25578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25579)]
25580pub unsafe fn vld4q_p16(a: *const p16) -> poly16x8x4_t {
25581 transmute(vld4q_s16(transmute(a)))
25582}
25583#[doc = "Store SIMD&FP register (immediate offset)"]
25584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vldrq_p128)"]
25585#[doc = "## Safety"]
25586#[doc = " * Neon intrinsic unsafe"]
25587#[inline(always)]
25588#[target_feature(enable = "neon")]
25589#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25590#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
25591#[cfg_attr(
25592 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25593 assert_instr(nop)
25594)]
25595#[cfg_attr(
25596 not(target_arch = "arm"),
25597 stable(feature = "neon_intrinsics", since = "1.59.0")
25598)]
25599#[cfg_attr(
25600 target_arch = "arm",
25601 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25602)]
25603pub unsafe fn vldrq_p128(a: *const p128) -> p128 {
25604 *a
25605}
25606#[doc = "Maximum (vector)"]
25607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_f16)"]
25608#[inline(always)]
25609#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
25610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25611#[cfg_attr(
25612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25613 assert_instr(fmax)
25614)]
25615#[target_feature(enable = "neon,fp16")]
25616#[cfg_attr(
25617 not(target_arch = "arm"),
25618 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
25619)]
25620#[cfg_attr(
25621 target_arch = "arm",
25622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25623)]
25624#[cfg(not(target_arch = "arm64ec"))]
25625pub fn vmax_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
25626 unsafe extern "unadjusted" {
25627 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4f16")]
25628 #[cfg_attr(
25629 any(target_arch = "aarch64", target_arch = "arm64ec"),
25630 link_name = "llvm.aarch64.neon.fmax.v4f16"
25631 )]
25632 fn _vmax_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
25633 }
25634 unsafe { _vmax_f16(a, b) }
25635}
25636#[doc = "Maximum (vector)"]
25637#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_f16)"]
25638#[inline(always)]
25639#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
25640#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25641#[cfg_attr(
25642 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25643 assert_instr(fmax)
25644)]
25645#[target_feature(enable = "neon,fp16")]
25646#[cfg_attr(
25647 not(target_arch = "arm"),
25648 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
25649)]
25650#[cfg_attr(
25651 target_arch = "arm",
25652 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25653)]
25654#[cfg(not(target_arch = "arm64ec"))]
25655pub fn vmaxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
25656 unsafe extern "unadjusted" {
25657 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v8f16")]
25658 #[cfg_attr(
25659 any(target_arch = "aarch64", target_arch = "arm64ec"),
25660 link_name = "llvm.aarch64.neon.fmax.v8f16"
25661 )]
25662 fn _vmaxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
25663 }
25664 unsafe { _vmaxq_f16(a, b) }
25665}
25666#[doc = "Maximum (vector)"]
25667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_f32)"]
25668#[inline(always)]
25669#[target_feature(enable = "neon")]
25670#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25671#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25672#[cfg_attr(
25673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25674 assert_instr(fmax)
25675)]
25676#[cfg_attr(
25677 not(target_arch = "arm"),
25678 stable(feature = "neon_intrinsics", since = "1.59.0")
25679)]
25680#[cfg_attr(
25681 target_arch = "arm",
25682 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25683)]
25684pub fn vmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
25685 unsafe extern "unadjusted" {
25686 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v2f32")]
25687 #[cfg_attr(
25688 any(target_arch = "aarch64", target_arch = "arm64ec"),
25689 link_name = "llvm.aarch64.neon.fmax.v2f32"
25690 )]
25691 fn _vmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
25692 }
25693 unsafe { _vmax_f32(a, b) }
25694}
25695#[doc = "Maximum (vector)"]
25696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_f32)"]
25697#[inline(always)]
25698#[target_feature(enable = "neon")]
25699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25700#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25701#[cfg_attr(
25702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25703 assert_instr(fmax)
25704)]
25705#[cfg_attr(
25706 not(target_arch = "arm"),
25707 stable(feature = "neon_intrinsics", since = "1.59.0")
25708)]
25709#[cfg_attr(
25710 target_arch = "arm",
25711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25712)]
25713pub fn vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
25714 unsafe extern "unadjusted" {
25715 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4f32")]
25716 #[cfg_attr(
25717 any(target_arch = "aarch64", target_arch = "arm64ec"),
25718 link_name = "llvm.aarch64.neon.fmax.v4f32"
25719 )]
25720 fn _vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
25721 }
25722 unsafe { _vmaxq_f32(a, b) }
25723}
25724#[doc = "Maximum (vector)"]
25725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s8)"]
25726#[inline(always)]
25727#[target_feature(enable = "neon")]
25728#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25729#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25730#[cfg_attr(
25731 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25732 assert_instr(smax)
25733)]
25734#[cfg_attr(
25735 not(target_arch = "arm"),
25736 stable(feature = "neon_intrinsics", since = "1.59.0")
25737)]
25738#[cfg_attr(
25739 target_arch = "arm",
25740 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25741)]
25742pub fn vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
25743 unsafe {
25744 let mask: int8x8_t = simd_ge(a, b);
25745 simd_select(mask, a, b)
25746 }
25747}
25748#[doc = "Maximum (vector)"]
25749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s8)"]
25750#[inline(always)]
25751#[target_feature(enable = "neon")]
25752#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25753#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25754#[cfg_attr(
25755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25756 assert_instr(smax)
25757)]
25758#[cfg_attr(
25759 not(target_arch = "arm"),
25760 stable(feature = "neon_intrinsics", since = "1.59.0")
25761)]
25762#[cfg_attr(
25763 target_arch = "arm",
25764 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25765)]
25766pub fn vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
25767 unsafe {
25768 let mask: int8x16_t = simd_ge(a, b);
25769 simd_select(mask, a, b)
25770 }
25771}
25772#[doc = "Maximum (vector)"]
25773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s16)"]
25774#[inline(always)]
25775#[target_feature(enable = "neon")]
25776#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25777#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25778#[cfg_attr(
25779 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25780 assert_instr(smax)
25781)]
25782#[cfg_attr(
25783 not(target_arch = "arm"),
25784 stable(feature = "neon_intrinsics", since = "1.59.0")
25785)]
25786#[cfg_attr(
25787 target_arch = "arm",
25788 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25789)]
25790pub fn vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
25791 unsafe {
25792 let mask: int16x4_t = simd_ge(a, b);
25793 simd_select(mask, a, b)
25794 }
25795}
25796#[doc = "Maximum (vector)"]
25797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s16)"]
25798#[inline(always)]
25799#[target_feature(enable = "neon")]
25800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25802#[cfg_attr(
25803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25804 assert_instr(smax)
25805)]
25806#[cfg_attr(
25807 not(target_arch = "arm"),
25808 stable(feature = "neon_intrinsics", since = "1.59.0")
25809)]
25810#[cfg_attr(
25811 target_arch = "arm",
25812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25813)]
25814pub fn vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
25815 unsafe {
25816 let mask: int16x8_t = simd_ge(a, b);
25817 simd_select(mask, a, b)
25818 }
25819}
25820#[doc = "Maximum (vector)"]
25821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s32)"]
25822#[inline(always)]
25823#[target_feature(enable = "neon")]
25824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25826#[cfg_attr(
25827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25828 assert_instr(smax)
25829)]
25830#[cfg_attr(
25831 not(target_arch = "arm"),
25832 stable(feature = "neon_intrinsics", since = "1.59.0")
25833)]
25834#[cfg_attr(
25835 target_arch = "arm",
25836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25837)]
25838pub fn vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
25839 unsafe {
25840 let mask: int32x2_t = simd_ge(a, b);
25841 simd_select(mask, a, b)
25842 }
25843}
25844#[doc = "Maximum (vector)"]
25845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s32)"]
25846#[inline(always)]
25847#[target_feature(enable = "neon")]
25848#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25849#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25850#[cfg_attr(
25851 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25852 assert_instr(smax)
25853)]
25854#[cfg_attr(
25855 not(target_arch = "arm"),
25856 stable(feature = "neon_intrinsics", since = "1.59.0")
25857)]
25858#[cfg_attr(
25859 target_arch = "arm",
25860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25861)]
25862pub fn vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
25863 unsafe {
25864 let mask: int32x4_t = simd_ge(a, b);
25865 simd_select(mask, a, b)
25866 }
25867}
25868#[doc = "Maximum (vector)"]
25869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u8)"]
25870#[inline(always)]
25871#[target_feature(enable = "neon")]
25872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25873#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25874#[cfg_attr(
25875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25876 assert_instr(umax)
25877)]
25878#[cfg_attr(
25879 not(target_arch = "arm"),
25880 stable(feature = "neon_intrinsics", since = "1.59.0")
25881)]
25882#[cfg_attr(
25883 target_arch = "arm",
25884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25885)]
25886pub fn vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
25887 unsafe {
25888 let mask: uint8x8_t = simd_ge(a, b);
25889 simd_select(mask, a, b)
25890 }
25891}
25892#[doc = "Maximum (vector)"]
25893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u8)"]
25894#[inline(always)]
25895#[target_feature(enable = "neon")]
25896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25897#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25898#[cfg_attr(
25899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25900 assert_instr(umax)
25901)]
25902#[cfg_attr(
25903 not(target_arch = "arm"),
25904 stable(feature = "neon_intrinsics", since = "1.59.0")
25905)]
25906#[cfg_attr(
25907 target_arch = "arm",
25908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25909)]
25910pub fn vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
25911 unsafe {
25912 let mask: uint8x16_t = simd_ge(a, b);
25913 simd_select(mask, a, b)
25914 }
25915}
25916#[doc = "Maximum (vector)"]
25917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u16)"]
25918#[inline(always)]
25919#[target_feature(enable = "neon")]
25920#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25921#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25922#[cfg_attr(
25923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25924 assert_instr(umax)
25925)]
25926#[cfg_attr(
25927 not(target_arch = "arm"),
25928 stable(feature = "neon_intrinsics", since = "1.59.0")
25929)]
25930#[cfg_attr(
25931 target_arch = "arm",
25932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25933)]
25934pub fn vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
25935 unsafe {
25936 let mask: uint16x4_t = simd_ge(a, b);
25937 simd_select(mask, a, b)
25938 }
25939}
25940#[doc = "Maximum (vector)"]
25941#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u16)"]
25942#[inline(always)]
25943#[target_feature(enable = "neon")]
25944#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25945#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25946#[cfg_attr(
25947 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25948 assert_instr(umax)
25949)]
25950#[cfg_attr(
25951 not(target_arch = "arm"),
25952 stable(feature = "neon_intrinsics", since = "1.59.0")
25953)]
25954#[cfg_attr(
25955 target_arch = "arm",
25956 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25957)]
25958pub fn vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
25959 unsafe {
25960 let mask: uint16x8_t = simd_ge(a, b);
25961 simd_select(mask, a, b)
25962 }
25963}
25964#[doc = "Maximum (vector)"]
25965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u32)"]
25966#[inline(always)]
25967#[target_feature(enable = "neon")]
25968#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25969#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25970#[cfg_attr(
25971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25972 assert_instr(umax)
25973)]
25974#[cfg_attr(
25975 not(target_arch = "arm"),
25976 stable(feature = "neon_intrinsics", since = "1.59.0")
25977)]
25978#[cfg_attr(
25979 target_arch = "arm",
25980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25981)]
25982pub fn vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
25983 unsafe {
25984 let mask: uint32x2_t = simd_ge(a, b);
25985 simd_select(mask, a, b)
25986 }
25987}
25988#[doc = "Maximum (vector)"]
25989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u32)"]
25990#[inline(always)]
25991#[target_feature(enable = "neon")]
25992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25993#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25994#[cfg_attr(
25995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25996 assert_instr(umax)
25997)]
25998#[cfg_attr(
25999 not(target_arch = "arm"),
26000 stable(feature = "neon_intrinsics", since = "1.59.0")
26001)]
26002#[cfg_attr(
26003 target_arch = "arm",
26004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26005)]
26006pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
26007 unsafe {
26008 let mask: uint32x4_t = simd_ge(a, b);
26009 simd_select(mask, a, b)
26010 }
26011}
26012#[doc = "Floating-point Maximum Number (vector)"]
26013#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f16)"]
26014#[inline(always)]
26015#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26016#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
26017#[cfg_attr(
26018 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26019 assert_instr(fmaxnm)
26020)]
26021#[target_feature(enable = "neon,fp16")]
26022#[cfg_attr(
26023 not(target_arch = "arm"),
26024 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
26025)]
26026#[cfg_attr(
26027 target_arch = "arm",
26028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26029)]
26030#[cfg(not(target_arch = "arm64ec"))]
26031pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
26032 unsafe { simd_fmax(a, b) }
26033}
26034#[doc = "Floating-point Maximum Number (vector)"]
26035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f16)"]
26036#[inline(always)]
26037#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26038#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
26039#[cfg_attr(
26040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26041 assert_instr(fmaxnm)
26042)]
26043#[target_feature(enable = "neon,fp16")]
26044#[cfg_attr(
26045 not(target_arch = "arm"),
26046 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
26047)]
26048#[cfg_attr(
26049 target_arch = "arm",
26050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26051)]
26052#[cfg(not(target_arch = "arm64ec"))]
26053pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
26054 unsafe { simd_fmax(a, b) }
26055}
26056#[doc = "Floating-point Maximum Number (vector)"]
26057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f32)"]
26058#[inline(always)]
26059#[target_feature(enable = "neon")]
26060#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26061#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
26062#[cfg_attr(
26063 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26064 assert_instr(fmaxnm)
26065)]
26066#[cfg_attr(
26067 not(target_arch = "arm"),
26068 stable(feature = "neon_intrinsics", since = "1.59.0")
26069)]
26070#[cfg_attr(
26071 target_arch = "arm",
26072 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26073)]
26074pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
26075 unsafe { simd_fmax(a, b) }
26076}
26077#[doc = "Floating-point Maximum Number (vector)"]
26078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f32)"]
26079#[inline(always)]
26080#[target_feature(enable = "neon")]
26081#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26082#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
26083#[cfg_attr(
26084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26085 assert_instr(fmaxnm)
26086)]
26087#[cfg_attr(
26088 not(target_arch = "arm"),
26089 stable(feature = "neon_intrinsics", since = "1.59.0")
26090)]
26091#[cfg_attr(
26092 target_arch = "arm",
26093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26094)]
26095pub fn vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
26096 unsafe { simd_fmax(a, b) }
26097}
26098#[doc = "Minimum (vector)"]
26099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f16)"]
26100#[inline(always)]
26101#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
26102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26103#[cfg_attr(
26104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26105 assert_instr(fmin)
26106)]
26107#[target_feature(enable = "neon,fp16")]
26108#[cfg_attr(
26109 not(target_arch = "arm"),
26110 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
26111)]
26112#[cfg_attr(
26113 target_arch = "arm",
26114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26115)]
26116#[cfg(not(target_arch = "arm64ec"))]
26117pub fn vmin_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
26118 unsafe extern "unadjusted" {
26119 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4f16")]
26120 #[cfg_attr(
26121 any(target_arch = "aarch64", target_arch = "arm64ec"),
26122 link_name = "llvm.aarch64.neon.fmin.v4f16"
26123 )]
26124 fn _vmin_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
26125 }
26126 unsafe { _vmin_f16(a, b) }
26127}
26128#[doc = "Minimum (vector)"]
26129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_f16)"]
26130#[inline(always)]
26131#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
26132#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26133#[cfg_attr(
26134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26135 assert_instr(fmin)
26136)]
26137#[target_feature(enable = "neon,fp16")]
26138#[cfg_attr(
26139 not(target_arch = "arm"),
26140 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
26141)]
26142#[cfg_attr(
26143 target_arch = "arm",
26144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26145)]
26146#[cfg(not(target_arch = "arm64ec"))]
26147pub fn vminq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
26148 unsafe extern "unadjusted" {
26149 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v8f16")]
26150 #[cfg_attr(
26151 any(target_arch = "aarch64", target_arch = "arm64ec"),
26152 link_name = "llvm.aarch64.neon.fmin.v8f16"
26153 )]
26154 fn _vminq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
26155 }
26156 unsafe { _vminq_f16(a, b) }
26157}
26158#[doc = "Minimum (vector)"]
26159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f32)"]
26160#[inline(always)]
26161#[target_feature(enable = "neon")]
26162#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26163#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26164#[cfg_attr(
26165 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26166 assert_instr(fmin)
26167)]
26168#[cfg_attr(
26169 not(target_arch = "arm"),
26170 stable(feature = "neon_intrinsics", since = "1.59.0")
26171)]
26172#[cfg_attr(
26173 target_arch = "arm",
26174 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26175)]
26176pub fn vmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
26177 unsafe extern "unadjusted" {
26178 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v2f32")]
26179 #[cfg_attr(
26180 any(target_arch = "aarch64", target_arch = "arm64ec"),
26181 link_name = "llvm.aarch64.neon.fmin.v2f32"
26182 )]
26183 fn _vmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
26184 }
26185 unsafe { _vmin_f32(a, b) }
26186}
26187#[doc = "Minimum (vector)"]
26188#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_f32)"]
26189#[inline(always)]
26190#[target_feature(enable = "neon")]
26191#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26192#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26193#[cfg_attr(
26194 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26195 assert_instr(fmin)
26196)]
26197#[cfg_attr(
26198 not(target_arch = "arm"),
26199 stable(feature = "neon_intrinsics", since = "1.59.0")
26200)]
26201#[cfg_attr(
26202 target_arch = "arm",
26203 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26204)]
26205pub fn vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
26206 unsafe extern "unadjusted" {
26207 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4f32")]
26208 #[cfg_attr(
26209 any(target_arch = "aarch64", target_arch = "arm64ec"),
26210 link_name = "llvm.aarch64.neon.fmin.v4f32"
26211 )]
26212 fn _vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
26213 }
26214 unsafe { _vminq_f32(a, b) }
26215}
26216#[doc = "Minimum (vector)"]
26217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s8)"]
26218#[inline(always)]
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(vmin))]
26222#[cfg_attr(
26223 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26224 assert_instr(smin)
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 fn vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
26235 unsafe {
26236 let mask: int8x8_t = simd_le(a, b);
26237 simd_select(mask, a, b)
26238 }
26239}
26240#[doc = "Minimum (vector)"]
26241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s8)"]
26242#[inline(always)]
26243#[target_feature(enable = "neon")]
26244#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26245#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26246#[cfg_attr(
26247 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26248 assert_instr(smin)
26249)]
26250#[cfg_attr(
26251 not(target_arch = "arm"),
26252 stable(feature = "neon_intrinsics", since = "1.59.0")
26253)]
26254#[cfg_attr(
26255 target_arch = "arm",
26256 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26257)]
26258pub fn vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
26259 unsafe {
26260 let mask: int8x16_t = simd_le(a, b);
26261 simd_select(mask, a, b)
26262 }
26263}
26264#[doc = "Minimum (vector)"]
26265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s16)"]
26266#[inline(always)]
26267#[target_feature(enable = "neon")]
26268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26269#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26270#[cfg_attr(
26271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26272 assert_instr(smin)
26273)]
26274#[cfg_attr(
26275 not(target_arch = "arm"),
26276 stable(feature = "neon_intrinsics", since = "1.59.0")
26277)]
26278#[cfg_attr(
26279 target_arch = "arm",
26280 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26281)]
26282pub fn vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
26283 unsafe {
26284 let mask: int16x4_t = simd_le(a, b);
26285 simd_select(mask, a, b)
26286 }
26287}
26288#[doc = "Minimum (vector)"]
26289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s16)"]
26290#[inline(always)]
26291#[target_feature(enable = "neon")]
26292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26293#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26294#[cfg_attr(
26295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26296 assert_instr(smin)
26297)]
26298#[cfg_attr(
26299 not(target_arch = "arm"),
26300 stable(feature = "neon_intrinsics", since = "1.59.0")
26301)]
26302#[cfg_attr(
26303 target_arch = "arm",
26304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26305)]
26306pub fn vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
26307 unsafe {
26308 let mask: int16x8_t = simd_le(a, b);
26309 simd_select(mask, a, b)
26310 }
26311}
26312#[doc = "Minimum (vector)"]
26313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s32)"]
26314#[inline(always)]
26315#[target_feature(enable = "neon")]
26316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26318#[cfg_attr(
26319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26320 assert_instr(smin)
26321)]
26322#[cfg_attr(
26323 not(target_arch = "arm"),
26324 stable(feature = "neon_intrinsics", since = "1.59.0")
26325)]
26326#[cfg_attr(
26327 target_arch = "arm",
26328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26329)]
26330pub fn vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
26331 unsafe {
26332 let mask: int32x2_t = simd_le(a, b);
26333 simd_select(mask, a, b)
26334 }
26335}
26336#[doc = "Minimum (vector)"]
26337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s32)"]
26338#[inline(always)]
26339#[target_feature(enable = "neon")]
26340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26342#[cfg_attr(
26343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26344 assert_instr(smin)
26345)]
26346#[cfg_attr(
26347 not(target_arch = "arm"),
26348 stable(feature = "neon_intrinsics", since = "1.59.0")
26349)]
26350#[cfg_attr(
26351 target_arch = "arm",
26352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26353)]
26354pub fn vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
26355 unsafe {
26356 let mask: int32x4_t = simd_le(a, b);
26357 simd_select(mask, a, b)
26358 }
26359}
26360#[doc = "Minimum (vector)"]
26361#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u8)"]
26362#[inline(always)]
26363#[target_feature(enable = "neon")]
26364#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26365#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26366#[cfg_attr(
26367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26368 assert_instr(umin)
26369)]
26370#[cfg_attr(
26371 not(target_arch = "arm"),
26372 stable(feature = "neon_intrinsics", since = "1.59.0")
26373)]
26374#[cfg_attr(
26375 target_arch = "arm",
26376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26377)]
26378pub fn vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
26379 unsafe {
26380 let mask: uint8x8_t = simd_le(a, b);
26381 simd_select(mask, a, b)
26382 }
26383}
26384#[doc = "Minimum (vector)"]
26385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u8)"]
26386#[inline(always)]
26387#[target_feature(enable = "neon")]
26388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26389#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26390#[cfg_attr(
26391 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26392 assert_instr(umin)
26393)]
26394#[cfg_attr(
26395 not(target_arch = "arm"),
26396 stable(feature = "neon_intrinsics", since = "1.59.0")
26397)]
26398#[cfg_attr(
26399 target_arch = "arm",
26400 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26401)]
26402pub fn vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
26403 unsafe {
26404 let mask: uint8x16_t = simd_le(a, b);
26405 simd_select(mask, a, b)
26406 }
26407}
26408#[doc = "Minimum (vector)"]
26409#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u16)"]
26410#[inline(always)]
26411#[target_feature(enable = "neon")]
26412#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26413#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26414#[cfg_attr(
26415 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26416 assert_instr(umin)
26417)]
26418#[cfg_attr(
26419 not(target_arch = "arm"),
26420 stable(feature = "neon_intrinsics", since = "1.59.0")
26421)]
26422#[cfg_attr(
26423 target_arch = "arm",
26424 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26425)]
26426pub fn vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
26427 unsafe {
26428 let mask: uint16x4_t = simd_le(a, b);
26429 simd_select(mask, a, b)
26430 }
26431}
26432#[doc = "Minimum (vector)"]
26433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u16)"]
26434#[inline(always)]
26435#[target_feature(enable = "neon")]
26436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26437#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26438#[cfg_attr(
26439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26440 assert_instr(umin)
26441)]
26442#[cfg_attr(
26443 not(target_arch = "arm"),
26444 stable(feature = "neon_intrinsics", since = "1.59.0")
26445)]
26446#[cfg_attr(
26447 target_arch = "arm",
26448 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26449)]
26450pub fn vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
26451 unsafe {
26452 let mask: uint16x8_t = simd_le(a, b);
26453 simd_select(mask, a, b)
26454 }
26455}
26456#[doc = "Minimum (vector)"]
26457#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u32)"]
26458#[inline(always)]
26459#[target_feature(enable = "neon")]
26460#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26461#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26462#[cfg_attr(
26463 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26464 assert_instr(umin)
26465)]
26466#[cfg_attr(
26467 not(target_arch = "arm"),
26468 stable(feature = "neon_intrinsics", since = "1.59.0")
26469)]
26470#[cfg_attr(
26471 target_arch = "arm",
26472 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26473)]
26474pub fn vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
26475 unsafe {
26476 let mask: uint32x2_t = simd_le(a, b);
26477 simd_select(mask, a, b)
26478 }
26479}
26480#[doc = "Minimum (vector)"]
26481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u32)"]
26482#[inline(always)]
26483#[target_feature(enable = "neon")]
26484#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26485#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26486#[cfg_attr(
26487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26488 assert_instr(umin)
26489)]
26490#[cfg_attr(
26491 not(target_arch = "arm"),
26492 stable(feature = "neon_intrinsics", since = "1.59.0")
26493)]
26494#[cfg_attr(
26495 target_arch = "arm",
26496 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26497)]
26498pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
26499 unsafe {
26500 let mask: uint32x4_t = simd_le(a, b);
26501 simd_select(mask, a, b)
26502 }
26503}
26504#[doc = "Floating-point Minimum Number (vector)"]
26505#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f16)"]
26506#[inline(always)]
26507#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26508#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
26509#[cfg_attr(
26510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26511 assert_instr(fminnm)
26512)]
26513#[target_feature(enable = "neon,fp16")]
26514#[cfg_attr(
26515 not(target_arch = "arm"),
26516 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
26517)]
26518#[cfg_attr(
26519 target_arch = "arm",
26520 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26521)]
26522#[cfg(not(target_arch = "arm64ec"))]
26523pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
26524 unsafe { simd_fmin(a, b) }
26525}
26526#[doc = "Floating-point Minimum Number (vector)"]
26527#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f16)"]
26528#[inline(always)]
26529#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26530#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
26531#[cfg_attr(
26532 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26533 assert_instr(fminnm)
26534)]
26535#[target_feature(enable = "neon,fp16")]
26536#[cfg_attr(
26537 not(target_arch = "arm"),
26538 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
26539)]
26540#[cfg_attr(
26541 target_arch = "arm",
26542 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26543)]
26544#[cfg(not(target_arch = "arm64ec"))]
26545pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
26546 unsafe { simd_fmin(a, b) }
26547}
26548#[doc = "Floating-point Minimum Number (vector)"]
26549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f32)"]
26550#[inline(always)]
26551#[target_feature(enable = "neon")]
26552#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26553#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
26554#[cfg_attr(
26555 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26556 assert_instr(fminnm)
26557)]
26558#[cfg_attr(
26559 not(target_arch = "arm"),
26560 stable(feature = "neon_intrinsics", since = "1.59.0")
26561)]
26562#[cfg_attr(
26563 target_arch = "arm",
26564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26565)]
26566pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
26567 unsafe { simd_fmin(a, b) }
26568}
26569#[doc = "Floating-point Minimum Number (vector)"]
26570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f32)"]
26571#[inline(always)]
26572#[target_feature(enable = "neon")]
26573#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26574#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
26575#[cfg_attr(
26576 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26577 assert_instr(fminnm)
26578)]
26579#[cfg_attr(
26580 not(target_arch = "arm"),
26581 stable(feature = "neon_intrinsics", since = "1.59.0")
26582)]
26583#[cfg_attr(
26584 target_arch = "arm",
26585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26586)]
26587pub fn vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
26588 unsafe { simd_fmin(a, b) }
26589}
26590#[doc = "Floating-point multiply-add to accumulator"]
26591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f32)"]
26592#[inline(always)]
26593#[target_feature(enable = "neon")]
26594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26595#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
26596#[cfg_attr(
26597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26598 assert_instr(fmul)
26599)]
26600#[cfg_attr(
26601 not(target_arch = "arm"),
26602 stable(feature = "neon_intrinsics", since = "1.59.0")
26603)]
26604#[cfg_attr(
26605 target_arch = "arm",
26606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26607)]
26608pub fn vmla_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
26609 unsafe { simd_add(a, simd_mul(b, c)) }
26610}
26611#[doc = "Floating-point multiply-add to accumulator"]
26612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_f32)"]
26613#[inline(always)]
26614#[target_feature(enable = "neon")]
26615#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26616#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
26617#[cfg_attr(
26618 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26619 assert_instr(fmul)
26620)]
26621#[cfg_attr(
26622 not(target_arch = "arm"),
26623 stable(feature = "neon_intrinsics", since = "1.59.0")
26624)]
26625#[cfg_attr(
26626 target_arch = "arm",
26627 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26628)]
26629pub fn vmlaq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
26630 unsafe { simd_add(a, simd_mul(b, c)) }
26631}
26632#[doc = "Vector multiply accumulate with scalar"]
26633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_f32)"]
26634#[inline(always)]
26635#[target_feature(enable = "neon")]
26636#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26637#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
26638#[cfg_attr(
26639 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26640 assert_instr(fmul, LANE = 1)
26641)]
26642#[rustc_legacy_const_generics(3)]
26643#[cfg_attr(
26644 not(target_arch = "arm"),
26645 stable(feature = "neon_intrinsics", since = "1.59.0")
26646)]
26647#[cfg_attr(
26648 target_arch = "arm",
26649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26650)]
26651pub fn vmla_lane_f32<const LANE: i32>(
26652 a: float32x2_t,
26653 b: float32x2_t,
26654 c: float32x2_t,
26655) -> float32x2_t {
26656 static_assert_uimm_bits!(LANE, 1);
26657 unsafe { vmla_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
26658}
26659#[doc = "Vector multiply accumulate with scalar"]
26660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_f32)"]
26661#[inline(always)]
26662#[target_feature(enable = "neon")]
26663#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26664#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
26665#[cfg_attr(
26666 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26667 assert_instr(fmul, LANE = 1)
26668)]
26669#[rustc_legacy_const_generics(3)]
26670#[cfg_attr(
26671 not(target_arch = "arm"),
26672 stable(feature = "neon_intrinsics", since = "1.59.0")
26673)]
26674#[cfg_attr(
26675 target_arch = "arm",
26676 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26677)]
26678pub fn vmla_laneq_f32<const LANE: i32>(
26679 a: float32x2_t,
26680 b: float32x2_t,
26681 c: float32x4_t,
26682) -> float32x2_t {
26683 static_assert_uimm_bits!(LANE, 2);
26684 unsafe { vmla_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
26685}
26686#[doc = "Vector multiply accumulate with scalar"]
26687#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_f32)"]
26688#[inline(always)]
26689#[target_feature(enable = "neon")]
26690#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26691#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
26692#[cfg_attr(
26693 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26694 assert_instr(fmul, LANE = 1)
26695)]
26696#[rustc_legacy_const_generics(3)]
26697#[cfg_attr(
26698 not(target_arch = "arm"),
26699 stable(feature = "neon_intrinsics", since = "1.59.0")
26700)]
26701#[cfg_attr(
26702 target_arch = "arm",
26703 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26704)]
26705pub fn vmlaq_lane_f32<const LANE: i32>(
26706 a: float32x4_t,
26707 b: float32x4_t,
26708 c: float32x2_t,
26709) -> float32x4_t {
26710 static_assert_uimm_bits!(LANE, 1);
26711 unsafe {
26712 vmlaq_f32(
26713 a,
26714 b,
26715 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26716 )
26717 }
26718}
26719#[doc = "Vector multiply accumulate with scalar"]
26720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_f32)"]
26721#[inline(always)]
26722#[target_feature(enable = "neon")]
26723#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26724#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
26725#[cfg_attr(
26726 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26727 assert_instr(fmul, LANE = 1)
26728)]
26729#[rustc_legacy_const_generics(3)]
26730#[cfg_attr(
26731 not(target_arch = "arm"),
26732 stable(feature = "neon_intrinsics", since = "1.59.0")
26733)]
26734#[cfg_attr(
26735 target_arch = "arm",
26736 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26737)]
26738pub fn vmlaq_laneq_f32<const LANE: i32>(
26739 a: float32x4_t,
26740 b: float32x4_t,
26741 c: float32x4_t,
26742) -> float32x4_t {
26743 static_assert_uimm_bits!(LANE, 2);
26744 unsafe {
26745 vmlaq_f32(
26746 a,
26747 b,
26748 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26749 )
26750 }
26751}
26752#[doc = "Vector multiply accumulate with scalar"]
26753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_s16)"]
26754#[inline(always)]
26755#[target_feature(enable = "neon")]
26756#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26757#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26758#[cfg_attr(
26759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26760 assert_instr(mla, LANE = 1)
26761)]
26762#[rustc_legacy_const_generics(3)]
26763#[cfg_attr(
26764 not(target_arch = "arm"),
26765 stable(feature = "neon_intrinsics", since = "1.59.0")
26766)]
26767#[cfg_attr(
26768 target_arch = "arm",
26769 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26770)]
26771pub fn vmla_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
26772 static_assert_uimm_bits!(LANE, 2);
26773 unsafe {
26774 vmla_s16(
26775 a,
26776 b,
26777 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26778 )
26779 }
26780}
26781#[doc = "Vector multiply accumulate with scalar"]
26782#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_u16)"]
26783#[inline(always)]
26784#[target_feature(enable = "neon")]
26785#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26786#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26787#[cfg_attr(
26788 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26789 assert_instr(mla, LANE = 1)
26790)]
26791#[rustc_legacy_const_generics(3)]
26792#[cfg_attr(
26793 not(target_arch = "arm"),
26794 stable(feature = "neon_intrinsics", since = "1.59.0")
26795)]
26796#[cfg_attr(
26797 target_arch = "arm",
26798 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26799)]
26800pub fn vmla_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
26801 static_assert_uimm_bits!(LANE, 2);
26802 unsafe {
26803 vmla_u16(
26804 a,
26805 b,
26806 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26807 )
26808 }
26809}
26810#[doc = "Vector multiply accumulate with scalar"]
26811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_s16)"]
26812#[inline(always)]
26813#[target_feature(enable = "neon")]
26814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26815#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26816#[cfg_attr(
26817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26818 assert_instr(mla, LANE = 1)
26819)]
26820#[rustc_legacy_const_generics(3)]
26821#[cfg_attr(
26822 not(target_arch = "arm"),
26823 stable(feature = "neon_intrinsics", since = "1.59.0")
26824)]
26825#[cfg_attr(
26826 target_arch = "arm",
26827 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26828)]
26829pub fn vmla_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x8_t) -> int16x4_t {
26830 static_assert_uimm_bits!(LANE, 3);
26831 unsafe {
26832 vmla_s16(
26833 a,
26834 b,
26835 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26836 )
26837 }
26838}
26839#[doc = "Vector multiply accumulate with scalar"]
26840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_u16)"]
26841#[inline(always)]
26842#[target_feature(enable = "neon")]
26843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26844#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26845#[cfg_attr(
26846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26847 assert_instr(mla, LANE = 1)
26848)]
26849#[rustc_legacy_const_generics(3)]
26850#[cfg_attr(
26851 not(target_arch = "arm"),
26852 stable(feature = "neon_intrinsics", since = "1.59.0")
26853)]
26854#[cfg_attr(
26855 target_arch = "arm",
26856 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26857)]
26858pub fn vmla_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x8_t) -> uint16x4_t {
26859 static_assert_uimm_bits!(LANE, 3);
26860 unsafe {
26861 vmla_u16(
26862 a,
26863 b,
26864 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26865 )
26866 }
26867}
26868#[doc = "Vector multiply accumulate with scalar"]
26869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_s16)"]
26870#[inline(always)]
26871#[target_feature(enable = "neon")]
26872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26873#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26874#[cfg_attr(
26875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26876 assert_instr(mla, LANE = 1)
26877)]
26878#[rustc_legacy_const_generics(3)]
26879#[cfg_attr(
26880 not(target_arch = "arm"),
26881 stable(feature = "neon_intrinsics", since = "1.59.0")
26882)]
26883#[cfg_attr(
26884 target_arch = "arm",
26885 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26886)]
26887pub fn vmlaq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x4_t) -> int16x8_t {
26888 static_assert_uimm_bits!(LANE, 2);
26889 unsafe {
26890 vmlaq_s16(
26891 a,
26892 b,
26893 simd_shuffle!(
26894 c,
26895 c,
26896 [
26897 LANE as u32,
26898 LANE as u32,
26899 LANE as u32,
26900 LANE as u32,
26901 LANE as u32,
26902 LANE as u32,
26903 LANE as u32,
26904 LANE as u32
26905 ]
26906 ),
26907 )
26908 }
26909}
26910#[doc = "Vector multiply accumulate with scalar"]
26911#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_u16)"]
26912#[inline(always)]
26913#[target_feature(enable = "neon")]
26914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26915#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26916#[cfg_attr(
26917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26918 assert_instr(mla, LANE = 1)
26919)]
26920#[rustc_legacy_const_generics(3)]
26921#[cfg_attr(
26922 not(target_arch = "arm"),
26923 stable(feature = "neon_intrinsics", since = "1.59.0")
26924)]
26925#[cfg_attr(
26926 target_arch = "arm",
26927 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26928)]
26929pub fn vmlaq_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x4_t) -> uint16x8_t {
26930 static_assert_uimm_bits!(LANE, 2);
26931 unsafe {
26932 vmlaq_u16(
26933 a,
26934 b,
26935 simd_shuffle!(
26936 c,
26937 c,
26938 [
26939 LANE as u32,
26940 LANE as u32,
26941 LANE as u32,
26942 LANE as u32,
26943 LANE as u32,
26944 LANE as u32,
26945 LANE as u32,
26946 LANE as u32
26947 ]
26948 ),
26949 )
26950 }
26951}
26952#[doc = "Vector multiply accumulate with scalar"]
26953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_s16)"]
26954#[inline(always)]
26955#[target_feature(enable = "neon")]
26956#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26957#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26958#[cfg_attr(
26959 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26960 assert_instr(mla, LANE = 1)
26961)]
26962#[rustc_legacy_const_generics(3)]
26963#[cfg_attr(
26964 not(target_arch = "arm"),
26965 stable(feature = "neon_intrinsics", since = "1.59.0")
26966)]
26967#[cfg_attr(
26968 target_arch = "arm",
26969 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26970)]
26971pub fn vmlaq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
26972 static_assert_uimm_bits!(LANE, 3);
26973 unsafe {
26974 vmlaq_s16(
26975 a,
26976 b,
26977 simd_shuffle!(
26978 c,
26979 c,
26980 [
26981 LANE as u32,
26982 LANE as u32,
26983 LANE as u32,
26984 LANE as u32,
26985 LANE as u32,
26986 LANE as u32,
26987 LANE as u32,
26988 LANE as u32
26989 ]
26990 ),
26991 )
26992 }
26993}
26994#[doc = "Vector multiply accumulate with scalar"]
26995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_u16)"]
26996#[inline(always)]
26997#[target_feature(enable = "neon")]
26998#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26999#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
27000#[cfg_attr(
27001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27002 assert_instr(mla, LANE = 1)
27003)]
27004#[rustc_legacy_const_generics(3)]
27005#[cfg_attr(
27006 not(target_arch = "arm"),
27007 stable(feature = "neon_intrinsics", since = "1.59.0")
27008)]
27009#[cfg_attr(
27010 target_arch = "arm",
27011 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27012)]
27013pub fn vmlaq_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
27014 static_assert_uimm_bits!(LANE, 3);
27015 unsafe {
27016 vmlaq_u16(
27017 a,
27018 b,
27019 simd_shuffle!(
27020 c,
27021 c,
27022 [
27023 LANE as u32,
27024 LANE as u32,
27025 LANE as u32,
27026 LANE as u32,
27027 LANE as u32,
27028 LANE as u32,
27029 LANE as u32,
27030 LANE as u32
27031 ]
27032 ),
27033 )
27034 }
27035}
27036#[doc = "Vector multiply accumulate with scalar"]
27037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_s32)"]
27038#[inline(always)]
27039#[target_feature(enable = "neon")]
27040#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27041#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27042#[cfg_attr(
27043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27044 assert_instr(mla, LANE = 1)
27045)]
27046#[rustc_legacy_const_generics(3)]
27047#[cfg_attr(
27048 not(target_arch = "arm"),
27049 stable(feature = "neon_intrinsics", since = "1.59.0")
27050)]
27051#[cfg_attr(
27052 target_arch = "arm",
27053 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27054)]
27055pub fn vmla_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
27056 static_assert_uimm_bits!(LANE, 1);
27057 unsafe { vmla_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27058}
27059#[doc = "Vector multiply accumulate with scalar"]
27060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_u32)"]
27061#[inline(always)]
27062#[target_feature(enable = "neon")]
27063#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27064#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27065#[cfg_attr(
27066 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27067 assert_instr(mla, LANE = 1)
27068)]
27069#[rustc_legacy_const_generics(3)]
27070#[cfg_attr(
27071 not(target_arch = "arm"),
27072 stable(feature = "neon_intrinsics", since = "1.59.0")
27073)]
27074#[cfg_attr(
27075 target_arch = "arm",
27076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27077)]
27078pub fn vmla_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
27079 static_assert_uimm_bits!(LANE, 1);
27080 unsafe { vmla_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27081}
27082#[doc = "Vector multiply accumulate with scalar"]
27083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_s32)"]
27084#[inline(always)]
27085#[target_feature(enable = "neon")]
27086#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27087#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27088#[cfg_attr(
27089 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27090 assert_instr(mla, LANE = 1)
27091)]
27092#[rustc_legacy_const_generics(3)]
27093#[cfg_attr(
27094 not(target_arch = "arm"),
27095 stable(feature = "neon_intrinsics", since = "1.59.0")
27096)]
27097#[cfg_attr(
27098 target_arch = "arm",
27099 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27100)]
27101pub fn vmla_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x4_t) -> int32x2_t {
27102 static_assert_uimm_bits!(LANE, 2);
27103 unsafe { vmla_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27104}
27105#[doc = "Vector multiply accumulate with scalar"]
27106#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_u32)"]
27107#[inline(always)]
27108#[target_feature(enable = "neon")]
27109#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27110#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27111#[cfg_attr(
27112 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27113 assert_instr(mla, LANE = 1)
27114)]
27115#[rustc_legacy_const_generics(3)]
27116#[cfg_attr(
27117 not(target_arch = "arm"),
27118 stable(feature = "neon_intrinsics", since = "1.59.0")
27119)]
27120#[cfg_attr(
27121 target_arch = "arm",
27122 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27123)]
27124pub fn vmla_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x4_t) -> uint32x2_t {
27125 static_assert_uimm_bits!(LANE, 2);
27126 unsafe { vmla_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27127}
27128#[doc = "Vector multiply accumulate with scalar"]
27129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_s32)"]
27130#[inline(always)]
27131#[target_feature(enable = "neon")]
27132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27133#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27134#[cfg_attr(
27135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27136 assert_instr(mla, LANE = 1)
27137)]
27138#[rustc_legacy_const_generics(3)]
27139#[cfg_attr(
27140 not(target_arch = "arm"),
27141 stable(feature = "neon_intrinsics", since = "1.59.0")
27142)]
27143#[cfg_attr(
27144 target_arch = "arm",
27145 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27146)]
27147pub fn vmlaq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x2_t) -> int32x4_t {
27148 static_assert_uimm_bits!(LANE, 1);
27149 unsafe {
27150 vmlaq_s32(
27151 a,
27152 b,
27153 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27154 )
27155 }
27156}
27157#[doc = "Vector multiply accumulate with scalar"]
27158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_u32)"]
27159#[inline(always)]
27160#[target_feature(enable = "neon")]
27161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27162#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27163#[cfg_attr(
27164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27165 assert_instr(mla, LANE = 1)
27166)]
27167#[rustc_legacy_const_generics(3)]
27168#[cfg_attr(
27169 not(target_arch = "arm"),
27170 stable(feature = "neon_intrinsics", since = "1.59.0")
27171)]
27172#[cfg_attr(
27173 target_arch = "arm",
27174 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27175)]
27176pub fn vmlaq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x2_t) -> uint32x4_t {
27177 static_assert_uimm_bits!(LANE, 1);
27178 unsafe {
27179 vmlaq_u32(
27180 a,
27181 b,
27182 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27183 )
27184 }
27185}
27186#[doc = "Vector multiply accumulate with scalar"]
27187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_s32)"]
27188#[inline(always)]
27189#[target_feature(enable = "neon")]
27190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27191#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27192#[cfg_attr(
27193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27194 assert_instr(mla, LANE = 1)
27195)]
27196#[rustc_legacy_const_generics(3)]
27197#[cfg_attr(
27198 not(target_arch = "arm"),
27199 stable(feature = "neon_intrinsics", since = "1.59.0")
27200)]
27201#[cfg_attr(
27202 target_arch = "arm",
27203 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27204)]
27205pub fn vmlaq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
27206 static_assert_uimm_bits!(LANE, 2);
27207 unsafe {
27208 vmlaq_s32(
27209 a,
27210 b,
27211 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27212 )
27213 }
27214}
27215#[doc = "Vector multiply accumulate with scalar"]
27216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_u32)"]
27217#[inline(always)]
27218#[target_feature(enable = "neon")]
27219#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27220#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27221#[cfg_attr(
27222 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27223 assert_instr(mla, LANE = 1)
27224)]
27225#[rustc_legacy_const_generics(3)]
27226#[cfg_attr(
27227 not(target_arch = "arm"),
27228 stable(feature = "neon_intrinsics", since = "1.59.0")
27229)]
27230#[cfg_attr(
27231 target_arch = "arm",
27232 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27233)]
27234pub fn vmlaq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
27235 static_assert_uimm_bits!(LANE, 2);
27236 unsafe {
27237 vmlaq_u32(
27238 a,
27239 b,
27240 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27241 )
27242 }
27243}
27244#[doc = "Vector multiply accumulate with scalar"]
27245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_f32)"]
27246#[inline(always)]
27247#[target_feature(enable = "neon")]
27248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27249#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
27250#[cfg_attr(
27251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27252 assert_instr(fmul)
27253)]
27254#[cfg_attr(
27255 not(target_arch = "arm"),
27256 stable(feature = "neon_intrinsics", since = "1.59.0")
27257)]
27258#[cfg_attr(
27259 target_arch = "arm",
27260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27261)]
27262pub fn vmla_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
27263 vmla_f32(a, b, vdup_n_f32(c))
27264}
27265#[doc = "Vector multiply accumulate with scalar"]
27266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_f32)"]
27267#[inline(always)]
27268#[target_feature(enable = "neon")]
27269#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27270#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
27271#[cfg_attr(
27272 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27273 assert_instr(fmul)
27274)]
27275#[cfg_attr(
27276 not(target_arch = "arm"),
27277 stable(feature = "neon_intrinsics", since = "1.59.0")
27278)]
27279#[cfg_attr(
27280 target_arch = "arm",
27281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27282)]
27283pub fn vmlaq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
27284 vmlaq_f32(a, b, vdupq_n_f32(c))
27285}
27286#[doc = "Vector multiply accumulate with scalar"]
27287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_s16)"]
27288#[inline(always)]
27289#[target_feature(enable = "neon")]
27290#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27291#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27292#[cfg_attr(
27293 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27294 assert_instr(mla)
27295)]
27296#[cfg_attr(
27297 not(target_arch = "arm"),
27298 stable(feature = "neon_intrinsics", since = "1.59.0")
27299)]
27300#[cfg_attr(
27301 target_arch = "arm",
27302 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27303)]
27304pub fn vmla_n_s16(a: int16x4_t, b: int16x4_t, c: i16) -> int16x4_t {
27305 vmla_s16(a, b, vdup_n_s16(c))
27306}
27307#[doc = "Vector multiply accumulate with scalar"]
27308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_s16)"]
27309#[inline(always)]
27310#[target_feature(enable = "neon")]
27311#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27312#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27313#[cfg_attr(
27314 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27315 assert_instr(mla)
27316)]
27317#[cfg_attr(
27318 not(target_arch = "arm"),
27319 stable(feature = "neon_intrinsics", since = "1.59.0")
27320)]
27321#[cfg_attr(
27322 target_arch = "arm",
27323 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27324)]
27325pub fn vmlaq_n_s16(a: int16x8_t, b: int16x8_t, c: i16) -> int16x8_t {
27326 vmlaq_s16(a, b, vdupq_n_s16(c))
27327}
27328#[doc = "Vector multiply accumulate with scalar"]
27329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_u16)"]
27330#[inline(always)]
27331#[target_feature(enable = "neon")]
27332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27333#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27334#[cfg_attr(
27335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27336 assert_instr(mla)
27337)]
27338#[cfg_attr(
27339 not(target_arch = "arm"),
27340 stable(feature = "neon_intrinsics", since = "1.59.0")
27341)]
27342#[cfg_attr(
27343 target_arch = "arm",
27344 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27345)]
27346pub fn vmla_n_u16(a: uint16x4_t, b: uint16x4_t, c: u16) -> uint16x4_t {
27347 vmla_u16(a, b, vdup_n_u16(c))
27348}
27349#[doc = "Vector multiply accumulate with scalar"]
27350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_u16)"]
27351#[inline(always)]
27352#[target_feature(enable = "neon")]
27353#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27354#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27355#[cfg_attr(
27356 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27357 assert_instr(mla)
27358)]
27359#[cfg_attr(
27360 not(target_arch = "arm"),
27361 stable(feature = "neon_intrinsics", since = "1.59.0")
27362)]
27363#[cfg_attr(
27364 target_arch = "arm",
27365 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27366)]
27367pub fn vmlaq_n_u16(a: uint16x8_t, b: uint16x8_t, c: u16) -> uint16x8_t {
27368 vmlaq_u16(a, b, vdupq_n_u16(c))
27369}
27370#[doc = "Vector multiply accumulate with scalar"]
27371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_s32)"]
27372#[inline(always)]
27373#[target_feature(enable = "neon")]
27374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27375#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27376#[cfg_attr(
27377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27378 assert_instr(mla)
27379)]
27380#[cfg_attr(
27381 not(target_arch = "arm"),
27382 stable(feature = "neon_intrinsics", since = "1.59.0")
27383)]
27384#[cfg_attr(
27385 target_arch = "arm",
27386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27387)]
27388pub fn vmla_n_s32(a: int32x2_t, b: int32x2_t, c: i32) -> int32x2_t {
27389 vmla_s32(a, b, vdup_n_s32(c))
27390}
27391#[doc = "Vector multiply accumulate with scalar"]
27392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_s32)"]
27393#[inline(always)]
27394#[target_feature(enable = "neon")]
27395#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27396#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27397#[cfg_attr(
27398 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27399 assert_instr(mla)
27400)]
27401#[cfg_attr(
27402 not(target_arch = "arm"),
27403 stable(feature = "neon_intrinsics", since = "1.59.0")
27404)]
27405#[cfg_attr(
27406 target_arch = "arm",
27407 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27408)]
27409pub fn vmlaq_n_s32(a: int32x4_t, b: int32x4_t, c: i32) -> int32x4_t {
27410 vmlaq_s32(a, b, vdupq_n_s32(c))
27411}
27412#[doc = "Vector multiply accumulate with scalar"]
27413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_u32)"]
27414#[inline(always)]
27415#[target_feature(enable = "neon")]
27416#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27417#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27418#[cfg_attr(
27419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27420 assert_instr(mla)
27421)]
27422#[cfg_attr(
27423 not(target_arch = "arm"),
27424 stable(feature = "neon_intrinsics", since = "1.59.0")
27425)]
27426#[cfg_attr(
27427 target_arch = "arm",
27428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27429)]
27430pub fn vmla_n_u32(a: uint32x2_t, b: uint32x2_t, c: u32) -> uint32x2_t {
27431 vmla_u32(a, b, vdup_n_u32(c))
27432}
27433#[doc = "Vector multiply accumulate with scalar"]
27434#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_u32)"]
27435#[inline(always)]
27436#[target_feature(enable = "neon")]
27437#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27438#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27439#[cfg_attr(
27440 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27441 assert_instr(mla)
27442)]
27443#[cfg_attr(
27444 not(target_arch = "arm"),
27445 stable(feature = "neon_intrinsics", since = "1.59.0")
27446)]
27447#[cfg_attr(
27448 target_arch = "arm",
27449 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27450)]
27451pub fn vmlaq_n_u32(a: uint32x4_t, b: uint32x4_t, c: u32) -> uint32x4_t {
27452 vmlaq_u32(a, b, vdupq_n_u32(c))
27453}
27454#[doc = "Multiply-add to accumulator"]
27455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s8)"]
27456#[inline(always)]
27457#[target_feature(enable = "neon")]
27458#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27459#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
27460#[cfg_attr(
27461 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27462 assert_instr(mla)
27463)]
27464#[cfg_attr(
27465 not(target_arch = "arm"),
27466 stable(feature = "neon_intrinsics", since = "1.59.0")
27467)]
27468#[cfg_attr(
27469 target_arch = "arm",
27470 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27471)]
27472pub fn vmla_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
27473 unsafe { simd_add(a, simd_mul(b, c)) }
27474}
27475#[doc = "Multiply-add to accumulator"]
27476#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s8)"]
27477#[inline(always)]
27478#[target_feature(enable = "neon")]
27479#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27480#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
27481#[cfg_attr(
27482 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27483 assert_instr(mla)
27484)]
27485#[cfg_attr(
27486 not(target_arch = "arm"),
27487 stable(feature = "neon_intrinsics", since = "1.59.0")
27488)]
27489#[cfg_attr(
27490 target_arch = "arm",
27491 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27492)]
27493pub fn vmlaq_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
27494 unsafe { simd_add(a, simd_mul(b, c)) }
27495}
27496#[doc = "Multiply-add to accumulator"]
27497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s16)"]
27498#[inline(always)]
27499#[target_feature(enable = "neon")]
27500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27501#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27502#[cfg_attr(
27503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27504 assert_instr(mla)
27505)]
27506#[cfg_attr(
27507 not(target_arch = "arm"),
27508 stable(feature = "neon_intrinsics", since = "1.59.0")
27509)]
27510#[cfg_attr(
27511 target_arch = "arm",
27512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27513)]
27514pub fn vmla_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
27515 unsafe { simd_add(a, simd_mul(b, c)) }
27516}
27517#[doc = "Multiply-add to accumulator"]
27518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s16)"]
27519#[inline(always)]
27520#[target_feature(enable = "neon")]
27521#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27522#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27523#[cfg_attr(
27524 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27525 assert_instr(mla)
27526)]
27527#[cfg_attr(
27528 not(target_arch = "arm"),
27529 stable(feature = "neon_intrinsics", since = "1.59.0")
27530)]
27531#[cfg_attr(
27532 target_arch = "arm",
27533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27534)]
27535pub fn vmlaq_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
27536 unsafe { simd_add(a, simd_mul(b, c)) }
27537}
27538#[doc = "Multiply-add to accumulator"]
27539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s32)"]
27540#[inline(always)]
27541#[target_feature(enable = "neon")]
27542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27543#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27544#[cfg_attr(
27545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27546 assert_instr(mla)
27547)]
27548#[cfg_attr(
27549 not(target_arch = "arm"),
27550 stable(feature = "neon_intrinsics", since = "1.59.0")
27551)]
27552#[cfg_attr(
27553 target_arch = "arm",
27554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27555)]
27556pub fn vmla_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
27557 unsafe { simd_add(a, simd_mul(b, c)) }
27558}
27559#[doc = "Multiply-add to accumulator"]
27560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s32)"]
27561#[inline(always)]
27562#[target_feature(enable = "neon")]
27563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27564#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27565#[cfg_attr(
27566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27567 assert_instr(mla)
27568)]
27569#[cfg_attr(
27570 not(target_arch = "arm"),
27571 stable(feature = "neon_intrinsics", since = "1.59.0")
27572)]
27573#[cfg_attr(
27574 target_arch = "arm",
27575 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27576)]
27577pub fn vmlaq_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
27578 unsafe { simd_add(a, simd_mul(b, c)) }
27579}
27580#[doc = "Multiply-add to accumulator"]
27581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u8)"]
27582#[inline(always)]
27583#[target_feature(enable = "neon")]
27584#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27585#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
27586#[cfg_attr(
27587 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27588 assert_instr(mla)
27589)]
27590#[cfg_attr(
27591 not(target_arch = "arm"),
27592 stable(feature = "neon_intrinsics", since = "1.59.0")
27593)]
27594#[cfg_attr(
27595 target_arch = "arm",
27596 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27597)]
27598pub fn vmla_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
27599 unsafe { simd_add(a, simd_mul(b, c)) }
27600}
27601#[doc = "Multiply-add to accumulator"]
27602#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u8)"]
27603#[inline(always)]
27604#[target_feature(enable = "neon")]
27605#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27606#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
27607#[cfg_attr(
27608 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27609 assert_instr(mla)
27610)]
27611#[cfg_attr(
27612 not(target_arch = "arm"),
27613 stable(feature = "neon_intrinsics", since = "1.59.0")
27614)]
27615#[cfg_attr(
27616 target_arch = "arm",
27617 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27618)]
27619pub fn vmlaq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
27620 unsafe { simd_add(a, simd_mul(b, c)) }
27621}
27622#[doc = "Multiply-add to accumulator"]
27623#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u16)"]
27624#[inline(always)]
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("vmla.i16"))]
27628#[cfg_attr(
27629 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27630 assert_instr(mla)
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 fn vmla_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
27641 unsafe { simd_add(a, simd_mul(b, c)) }
27642}
27643#[doc = "Multiply-add to accumulator"]
27644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u16)"]
27645#[inline(always)]
27646#[target_feature(enable = "neon")]
27647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27648#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27649#[cfg_attr(
27650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27651 assert_instr(mla)
27652)]
27653#[cfg_attr(
27654 not(target_arch = "arm"),
27655 stable(feature = "neon_intrinsics", since = "1.59.0")
27656)]
27657#[cfg_attr(
27658 target_arch = "arm",
27659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27660)]
27661pub fn vmlaq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
27662 unsafe { simd_add(a, simd_mul(b, c)) }
27663}
27664#[doc = "Multiply-add to accumulator"]
27665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u32)"]
27666#[inline(always)]
27667#[target_feature(enable = "neon")]
27668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27669#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27670#[cfg_attr(
27671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27672 assert_instr(mla)
27673)]
27674#[cfg_attr(
27675 not(target_arch = "arm"),
27676 stable(feature = "neon_intrinsics", since = "1.59.0")
27677)]
27678#[cfg_attr(
27679 target_arch = "arm",
27680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27681)]
27682pub fn vmla_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
27683 unsafe { simd_add(a, simd_mul(b, c)) }
27684}
27685#[doc = "Multiply-add to accumulator"]
27686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u32)"]
27687#[inline(always)]
27688#[target_feature(enable = "neon")]
27689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27690#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27691#[cfg_attr(
27692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27693 assert_instr(mla)
27694)]
27695#[cfg_attr(
27696 not(target_arch = "arm"),
27697 stable(feature = "neon_intrinsics", since = "1.59.0")
27698)]
27699#[cfg_attr(
27700 target_arch = "arm",
27701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27702)]
27703pub fn vmlaq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
27704 unsafe { simd_add(a, simd_mul(b, c)) }
27705}
27706#[doc = "Vector widening multiply accumulate with scalar"]
27707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_s16)"]
27708#[inline(always)]
27709#[target_feature(enable = "neon")]
27710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27711#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16", LANE = 1))]
27712#[cfg_attr(
27713 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27714 assert_instr(smlal, LANE = 1)
27715)]
27716#[rustc_legacy_const_generics(3)]
27717#[cfg_attr(
27718 not(target_arch = "arm"),
27719 stable(feature = "neon_intrinsics", since = "1.59.0")
27720)]
27721#[cfg_attr(
27722 target_arch = "arm",
27723 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27724)]
27725pub fn vmlal_lane_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
27726 static_assert_uimm_bits!(LANE, 2);
27727 unsafe {
27728 vmlal_s16(
27729 a,
27730 b,
27731 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27732 )
27733 }
27734}
27735#[doc = "Vector widening multiply accumulate with scalar"]
27736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_s16)"]
27737#[inline(always)]
27738#[target_feature(enable = "neon")]
27739#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27740#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16", LANE = 1))]
27741#[cfg_attr(
27742 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27743 assert_instr(smlal, LANE = 1)
27744)]
27745#[rustc_legacy_const_generics(3)]
27746#[cfg_attr(
27747 not(target_arch = "arm"),
27748 stable(feature = "neon_intrinsics", since = "1.59.0")
27749)]
27750#[cfg_attr(
27751 target_arch = "arm",
27752 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27753)]
27754pub fn vmlal_laneq_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x8_t) -> int32x4_t {
27755 static_assert_uimm_bits!(LANE, 3);
27756 unsafe {
27757 vmlal_s16(
27758 a,
27759 b,
27760 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27761 )
27762 }
27763}
27764#[doc = "Vector widening multiply accumulate with scalar"]
27765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_s32)"]
27766#[inline(always)]
27767#[target_feature(enable = "neon")]
27768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27769#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32", LANE = 1))]
27770#[cfg_attr(
27771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27772 assert_instr(smlal, LANE = 1)
27773)]
27774#[rustc_legacy_const_generics(3)]
27775#[cfg_attr(
27776 not(target_arch = "arm"),
27777 stable(feature = "neon_intrinsics", since = "1.59.0")
27778)]
27779#[cfg_attr(
27780 target_arch = "arm",
27781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27782)]
27783pub fn vmlal_lane_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
27784 static_assert_uimm_bits!(LANE, 1);
27785 unsafe { vmlal_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27786}
27787#[doc = "Vector widening multiply accumulate with scalar"]
27788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_s32)"]
27789#[inline(always)]
27790#[target_feature(enable = "neon")]
27791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27792#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32", LANE = 1))]
27793#[cfg_attr(
27794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27795 assert_instr(smlal, LANE = 1)
27796)]
27797#[rustc_legacy_const_generics(3)]
27798#[cfg_attr(
27799 not(target_arch = "arm"),
27800 stable(feature = "neon_intrinsics", since = "1.59.0")
27801)]
27802#[cfg_attr(
27803 target_arch = "arm",
27804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27805)]
27806pub fn vmlal_laneq_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x4_t) -> int64x2_t {
27807 static_assert_uimm_bits!(LANE, 2);
27808 unsafe { vmlal_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27809}
27810#[doc = "Vector widening multiply accumulate with scalar"]
27811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_u16)"]
27812#[inline(always)]
27813#[target_feature(enable = "neon")]
27814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27815#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16", LANE = 1))]
27816#[cfg_attr(
27817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27818 assert_instr(umlal, LANE = 1)
27819)]
27820#[rustc_legacy_const_generics(3)]
27821#[cfg_attr(
27822 not(target_arch = "arm"),
27823 stable(feature = "neon_intrinsics", since = "1.59.0")
27824)]
27825#[cfg_attr(
27826 target_arch = "arm",
27827 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27828)]
27829pub fn vmlal_lane_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
27830 static_assert_uimm_bits!(LANE, 2);
27831 unsafe {
27832 vmlal_u16(
27833 a,
27834 b,
27835 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27836 )
27837 }
27838}
27839#[doc = "Vector widening multiply accumulate with scalar"]
27840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_u16)"]
27841#[inline(always)]
27842#[target_feature(enable = "neon")]
27843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27844#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16", LANE = 1))]
27845#[cfg_attr(
27846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27847 assert_instr(umlal, LANE = 1)
27848)]
27849#[rustc_legacy_const_generics(3)]
27850#[cfg_attr(
27851 not(target_arch = "arm"),
27852 stable(feature = "neon_intrinsics", since = "1.59.0")
27853)]
27854#[cfg_attr(
27855 target_arch = "arm",
27856 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27857)]
27858pub fn vmlal_laneq_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x8_t) -> uint32x4_t {
27859 static_assert_uimm_bits!(LANE, 3);
27860 unsafe {
27861 vmlal_u16(
27862 a,
27863 b,
27864 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27865 )
27866 }
27867}
27868#[doc = "Vector widening multiply accumulate with scalar"]
27869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_u32)"]
27870#[inline(always)]
27871#[target_feature(enable = "neon")]
27872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27873#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32", LANE = 1))]
27874#[cfg_attr(
27875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27876 assert_instr(umlal, LANE = 1)
27877)]
27878#[rustc_legacy_const_generics(3)]
27879#[cfg_attr(
27880 not(target_arch = "arm"),
27881 stable(feature = "neon_intrinsics", since = "1.59.0")
27882)]
27883#[cfg_attr(
27884 target_arch = "arm",
27885 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27886)]
27887pub fn vmlal_lane_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
27888 static_assert_uimm_bits!(LANE, 1);
27889 unsafe { vmlal_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27890}
27891#[doc = "Vector widening multiply accumulate with scalar"]
27892#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_u32)"]
27893#[inline(always)]
27894#[target_feature(enable = "neon")]
27895#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27896#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32", LANE = 1))]
27897#[cfg_attr(
27898 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27899 assert_instr(umlal, LANE = 1)
27900)]
27901#[rustc_legacy_const_generics(3)]
27902#[cfg_attr(
27903 not(target_arch = "arm"),
27904 stable(feature = "neon_intrinsics", since = "1.59.0")
27905)]
27906#[cfg_attr(
27907 target_arch = "arm",
27908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27909)]
27910pub fn vmlal_laneq_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x4_t) -> uint64x2_t {
27911 static_assert_uimm_bits!(LANE, 2);
27912 unsafe { vmlal_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27913}
27914#[doc = "Vector widening multiply accumulate with scalar"]
27915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_s16)"]
27916#[inline(always)]
27917#[target_feature(enable = "neon")]
27918#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27919#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16"))]
27920#[cfg_attr(
27921 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27922 assert_instr(smlal)
27923)]
27924#[cfg_attr(
27925 not(target_arch = "arm"),
27926 stable(feature = "neon_intrinsics", since = "1.59.0")
27927)]
27928#[cfg_attr(
27929 target_arch = "arm",
27930 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27931)]
27932pub fn vmlal_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
27933 vmlal_s16(a, b, vdup_n_s16(c))
27934}
27935#[doc = "Vector widening multiply accumulate with scalar"]
27936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_s32)"]
27937#[inline(always)]
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("vmlal.s32"))]
27941#[cfg_attr(
27942 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27943 assert_instr(smlal)
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 fn vmlal_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
27954 vmlal_s32(a, b, vdup_n_s32(c))
27955}
27956#[doc = "Vector widening multiply accumulate with scalar"]
27957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_u16)"]
27958#[inline(always)]
27959#[target_feature(enable = "neon")]
27960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27961#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16"))]
27962#[cfg_attr(
27963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27964 assert_instr(umlal)
27965)]
27966#[cfg_attr(
27967 not(target_arch = "arm"),
27968 stable(feature = "neon_intrinsics", since = "1.59.0")
27969)]
27970#[cfg_attr(
27971 target_arch = "arm",
27972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27973)]
27974pub fn vmlal_n_u16(a: uint32x4_t, b: uint16x4_t, c: u16) -> uint32x4_t {
27975 vmlal_u16(a, b, vdup_n_u16(c))
27976}
27977#[doc = "Vector widening multiply accumulate with scalar"]
27978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_u32)"]
27979#[inline(always)]
27980#[target_feature(enable = "neon")]
27981#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27982#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32"))]
27983#[cfg_attr(
27984 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27985 assert_instr(umlal)
27986)]
27987#[cfg_attr(
27988 not(target_arch = "arm"),
27989 stable(feature = "neon_intrinsics", since = "1.59.0")
27990)]
27991#[cfg_attr(
27992 target_arch = "arm",
27993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27994)]
27995pub fn vmlal_n_u32(a: uint64x2_t, b: uint32x2_t, c: u32) -> uint64x2_t {
27996 vmlal_u32(a, b, vdup_n_u32(c))
27997}
27998#[doc = "Signed multiply-add long"]
27999#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s8)"]
28000#[inline(always)]
28001#[target_feature(enable = "neon")]
28002#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28003#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s8"))]
28004#[cfg_attr(
28005 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28006 assert_instr(smlal)
28007)]
28008#[cfg_attr(
28009 not(target_arch = "arm"),
28010 stable(feature = "neon_intrinsics", since = "1.59.0")
28011)]
28012#[cfg_attr(
28013 target_arch = "arm",
28014 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28015)]
28016pub fn vmlal_s8(a: int16x8_t, b: int8x8_t, c: int8x8_t) -> int16x8_t {
28017 unsafe { simd_add(a, vmull_s8(b, c)) }
28018}
28019#[doc = "Signed multiply-add long"]
28020#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s16)"]
28021#[inline(always)]
28022#[target_feature(enable = "neon")]
28023#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28024#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16"))]
28025#[cfg_attr(
28026 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28027 assert_instr(smlal)
28028)]
28029#[cfg_attr(
28030 not(target_arch = "arm"),
28031 stable(feature = "neon_intrinsics", since = "1.59.0")
28032)]
28033#[cfg_attr(
28034 target_arch = "arm",
28035 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28036)]
28037pub fn vmlal_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
28038 unsafe { simd_add(a, vmull_s16(b, c)) }
28039}
28040#[doc = "Signed multiply-add long"]
28041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s32)"]
28042#[inline(always)]
28043#[target_feature(enable = "neon")]
28044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28045#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32"))]
28046#[cfg_attr(
28047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28048 assert_instr(smlal)
28049)]
28050#[cfg_attr(
28051 not(target_arch = "arm"),
28052 stable(feature = "neon_intrinsics", since = "1.59.0")
28053)]
28054#[cfg_attr(
28055 target_arch = "arm",
28056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28057)]
28058pub fn vmlal_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
28059 unsafe { simd_add(a, vmull_s32(b, c)) }
28060}
28061#[doc = "Unsigned multiply-add long"]
28062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u8)"]
28063#[inline(always)]
28064#[target_feature(enable = "neon")]
28065#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28066#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u8"))]
28067#[cfg_attr(
28068 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28069 assert_instr(umlal)
28070)]
28071#[cfg_attr(
28072 not(target_arch = "arm"),
28073 stable(feature = "neon_intrinsics", since = "1.59.0")
28074)]
28075#[cfg_attr(
28076 target_arch = "arm",
28077 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28078)]
28079pub fn vmlal_u8(a: uint16x8_t, b: uint8x8_t, c: uint8x8_t) -> uint16x8_t {
28080 unsafe { simd_add(a, vmull_u8(b, c)) }
28081}
28082#[doc = "Unsigned multiply-add long"]
28083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u16)"]
28084#[inline(always)]
28085#[target_feature(enable = "neon")]
28086#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28087#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16"))]
28088#[cfg_attr(
28089 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28090 assert_instr(umlal)
28091)]
28092#[cfg_attr(
28093 not(target_arch = "arm"),
28094 stable(feature = "neon_intrinsics", since = "1.59.0")
28095)]
28096#[cfg_attr(
28097 target_arch = "arm",
28098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28099)]
28100pub fn vmlal_u16(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
28101 unsafe { simd_add(a, vmull_u16(b, c)) }
28102}
28103#[doc = "Unsigned multiply-add long"]
28104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u32)"]
28105#[inline(always)]
28106#[target_feature(enable = "neon")]
28107#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28108#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32"))]
28109#[cfg_attr(
28110 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28111 assert_instr(umlal)
28112)]
28113#[cfg_attr(
28114 not(target_arch = "arm"),
28115 stable(feature = "neon_intrinsics", since = "1.59.0")
28116)]
28117#[cfg_attr(
28118 target_arch = "arm",
28119 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28120)]
28121pub fn vmlal_u32(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
28122 unsafe { simd_add(a, vmull_u32(b, c)) }
28123}
28124#[doc = "Floating-point multiply-subtract from accumulator"]
28125#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_f32)"]
28126#[inline(always)]
28127#[target_feature(enable = "neon")]
28128#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28129#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
28130#[cfg_attr(
28131 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28132 assert_instr(fmul)
28133)]
28134#[cfg_attr(
28135 not(target_arch = "arm"),
28136 stable(feature = "neon_intrinsics", since = "1.59.0")
28137)]
28138#[cfg_attr(
28139 target_arch = "arm",
28140 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28141)]
28142pub fn vmls_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
28143 unsafe { simd_sub(a, simd_mul(b, c)) }
28144}
28145#[doc = "Floating-point multiply-subtract from accumulator"]
28146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_f32)"]
28147#[inline(always)]
28148#[target_feature(enable = "neon")]
28149#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28150#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
28151#[cfg_attr(
28152 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28153 assert_instr(fmul)
28154)]
28155#[cfg_attr(
28156 not(target_arch = "arm"),
28157 stable(feature = "neon_intrinsics", since = "1.59.0")
28158)]
28159#[cfg_attr(
28160 target_arch = "arm",
28161 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28162)]
28163pub fn vmlsq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
28164 unsafe { simd_sub(a, simd_mul(b, c)) }
28165}
28166#[doc = "Vector multiply subtract with scalar"]
28167#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_f32)"]
28168#[inline(always)]
28169#[target_feature(enable = "neon")]
28170#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28171#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
28172#[cfg_attr(
28173 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28174 assert_instr(fmul, LANE = 1)
28175)]
28176#[rustc_legacy_const_generics(3)]
28177#[cfg_attr(
28178 not(target_arch = "arm"),
28179 stable(feature = "neon_intrinsics", since = "1.59.0")
28180)]
28181#[cfg_attr(
28182 target_arch = "arm",
28183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28184)]
28185pub fn vmls_lane_f32<const LANE: i32>(
28186 a: float32x2_t,
28187 b: float32x2_t,
28188 c: float32x2_t,
28189) -> float32x2_t {
28190 static_assert_uimm_bits!(LANE, 1);
28191 unsafe { vmls_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28192}
28193#[doc = "Vector multiply subtract with scalar"]
28194#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_f32)"]
28195#[inline(always)]
28196#[target_feature(enable = "neon")]
28197#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28198#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
28199#[cfg_attr(
28200 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28201 assert_instr(fmul, LANE = 1)
28202)]
28203#[rustc_legacy_const_generics(3)]
28204#[cfg_attr(
28205 not(target_arch = "arm"),
28206 stable(feature = "neon_intrinsics", since = "1.59.0")
28207)]
28208#[cfg_attr(
28209 target_arch = "arm",
28210 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28211)]
28212pub fn vmls_laneq_f32<const LANE: i32>(
28213 a: float32x2_t,
28214 b: float32x2_t,
28215 c: float32x4_t,
28216) -> float32x2_t {
28217 static_assert_uimm_bits!(LANE, 2);
28218 unsafe { vmls_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28219}
28220#[doc = "Vector multiply subtract with scalar"]
28221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_f32)"]
28222#[inline(always)]
28223#[target_feature(enable = "neon")]
28224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28225#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
28226#[cfg_attr(
28227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28228 assert_instr(fmul, LANE = 1)
28229)]
28230#[rustc_legacy_const_generics(3)]
28231#[cfg_attr(
28232 not(target_arch = "arm"),
28233 stable(feature = "neon_intrinsics", since = "1.59.0")
28234)]
28235#[cfg_attr(
28236 target_arch = "arm",
28237 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28238)]
28239pub fn vmlsq_lane_f32<const LANE: i32>(
28240 a: float32x4_t,
28241 b: float32x4_t,
28242 c: float32x2_t,
28243) -> float32x4_t {
28244 static_assert_uimm_bits!(LANE, 1);
28245 unsafe {
28246 vmlsq_f32(
28247 a,
28248 b,
28249 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28250 )
28251 }
28252}
28253#[doc = "Vector multiply subtract with scalar"]
28254#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_f32)"]
28255#[inline(always)]
28256#[target_feature(enable = "neon")]
28257#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28258#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
28259#[cfg_attr(
28260 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28261 assert_instr(fmul, LANE = 1)
28262)]
28263#[rustc_legacy_const_generics(3)]
28264#[cfg_attr(
28265 not(target_arch = "arm"),
28266 stable(feature = "neon_intrinsics", since = "1.59.0")
28267)]
28268#[cfg_attr(
28269 target_arch = "arm",
28270 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28271)]
28272pub fn vmlsq_laneq_f32<const LANE: i32>(
28273 a: float32x4_t,
28274 b: float32x4_t,
28275 c: float32x4_t,
28276) -> float32x4_t {
28277 static_assert_uimm_bits!(LANE, 2);
28278 unsafe {
28279 vmlsq_f32(
28280 a,
28281 b,
28282 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28283 )
28284 }
28285}
28286#[doc = "Vector multiply subtract with scalar"]
28287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_s16)"]
28288#[inline(always)]
28289#[target_feature(enable = "neon")]
28290#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28291#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28292#[cfg_attr(
28293 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28294 assert_instr(mls, LANE = 1)
28295)]
28296#[rustc_legacy_const_generics(3)]
28297#[cfg_attr(
28298 not(target_arch = "arm"),
28299 stable(feature = "neon_intrinsics", since = "1.59.0")
28300)]
28301#[cfg_attr(
28302 target_arch = "arm",
28303 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28304)]
28305pub fn vmls_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
28306 static_assert_uimm_bits!(LANE, 2);
28307 unsafe {
28308 vmls_s16(
28309 a,
28310 b,
28311 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28312 )
28313 }
28314}
28315#[doc = "Vector multiply subtract with scalar"]
28316#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_u16)"]
28317#[inline(always)]
28318#[target_feature(enable = "neon")]
28319#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28320#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28321#[cfg_attr(
28322 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28323 assert_instr(mls, LANE = 1)
28324)]
28325#[rustc_legacy_const_generics(3)]
28326#[cfg_attr(
28327 not(target_arch = "arm"),
28328 stable(feature = "neon_intrinsics", since = "1.59.0")
28329)]
28330#[cfg_attr(
28331 target_arch = "arm",
28332 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28333)]
28334pub fn vmls_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
28335 static_assert_uimm_bits!(LANE, 2);
28336 unsafe {
28337 vmls_u16(
28338 a,
28339 b,
28340 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28341 )
28342 }
28343}
28344#[doc = "Vector multiply subtract with scalar"]
28345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_s16)"]
28346#[inline(always)]
28347#[target_feature(enable = "neon")]
28348#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28349#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28350#[cfg_attr(
28351 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28352 assert_instr(mls, LANE = 1)
28353)]
28354#[rustc_legacy_const_generics(3)]
28355#[cfg_attr(
28356 not(target_arch = "arm"),
28357 stable(feature = "neon_intrinsics", since = "1.59.0")
28358)]
28359#[cfg_attr(
28360 target_arch = "arm",
28361 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28362)]
28363pub fn vmls_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x8_t) -> int16x4_t {
28364 static_assert_uimm_bits!(LANE, 3);
28365 unsafe {
28366 vmls_s16(
28367 a,
28368 b,
28369 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28370 )
28371 }
28372}
28373#[doc = "Vector multiply subtract with scalar"]
28374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_u16)"]
28375#[inline(always)]
28376#[target_feature(enable = "neon")]
28377#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28378#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28379#[cfg_attr(
28380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28381 assert_instr(mls, LANE = 1)
28382)]
28383#[rustc_legacy_const_generics(3)]
28384#[cfg_attr(
28385 not(target_arch = "arm"),
28386 stable(feature = "neon_intrinsics", since = "1.59.0")
28387)]
28388#[cfg_attr(
28389 target_arch = "arm",
28390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28391)]
28392pub fn vmls_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x8_t) -> uint16x4_t {
28393 static_assert_uimm_bits!(LANE, 3);
28394 unsafe {
28395 vmls_u16(
28396 a,
28397 b,
28398 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28399 )
28400 }
28401}
28402#[doc = "Vector multiply subtract with scalar"]
28403#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_s16)"]
28404#[inline(always)]
28405#[target_feature(enable = "neon")]
28406#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28407#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28408#[cfg_attr(
28409 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28410 assert_instr(mls, LANE = 1)
28411)]
28412#[rustc_legacy_const_generics(3)]
28413#[cfg_attr(
28414 not(target_arch = "arm"),
28415 stable(feature = "neon_intrinsics", since = "1.59.0")
28416)]
28417#[cfg_attr(
28418 target_arch = "arm",
28419 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28420)]
28421pub fn vmlsq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x4_t) -> int16x8_t {
28422 static_assert_uimm_bits!(LANE, 2);
28423 unsafe {
28424 vmlsq_s16(
28425 a,
28426 b,
28427 simd_shuffle!(
28428 c,
28429 c,
28430 [
28431 LANE as u32,
28432 LANE as u32,
28433 LANE as u32,
28434 LANE as u32,
28435 LANE as u32,
28436 LANE as u32,
28437 LANE as u32,
28438 LANE as u32
28439 ]
28440 ),
28441 )
28442 }
28443}
28444#[doc = "Vector multiply subtract with scalar"]
28445#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_u16)"]
28446#[inline(always)]
28447#[target_feature(enable = "neon")]
28448#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28449#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28450#[cfg_attr(
28451 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28452 assert_instr(mls, LANE = 1)
28453)]
28454#[rustc_legacy_const_generics(3)]
28455#[cfg_attr(
28456 not(target_arch = "arm"),
28457 stable(feature = "neon_intrinsics", since = "1.59.0")
28458)]
28459#[cfg_attr(
28460 target_arch = "arm",
28461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28462)]
28463pub fn vmlsq_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x4_t) -> uint16x8_t {
28464 static_assert_uimm_bits!(LANE, 2);
28465 unsafe {
28466 vmlsq_u16(
28467 a,
28468 b,
28469 simd_shuffle!(
28470 c,
28471 c,
28472 [
28473 LANE as u32,
28474 LANE as u32,
28475 LANE as u32,
28476 LANE as u32,
28477 LANE as u32,
28478 LANE as u32,
28479 LANE as u32,
28480 LANE as u32
28481 ]
28482 ),
28483 )
28484 }
28485}
28486#[doc = "Vector multiply subtract with scalar"]
28487#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_s16)"]
28488#[inline(always)]
28489#[target_feature(enable = "neon")]
28490#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28491#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28492#[cfg_attr(
28493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28494 assert_instr(mls, LANE = 1)
28495)]
28496#[rustc_legacy_const_generics(3)]
28497#[cfg_attr(
28498 not(target_arch = "arm"),
28499 stable(feature = "neon_intrinsics", since = "1.59.0")
28500)]
28501#[cfg_attr(
28502 target_arch = "arm",
28503 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28504)]
28505pub fn vmlsq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
28506 static_assert_uimm_bits!(LANE, 3);
28507 unsafe {
28508 vmlsq_s16(
28509 a,
28510 b,
28511 simd_shuffle!(
28512 c,
28513 c,
28514 [
28515 LANE as u32,
28516 LANE as u32,
28517 LANE as u32,
28518 LANE as u32,
28519 LANE as u32,
28520 LANE as u32,
28521 LANE as u32,
28522 LANE as u32
28523 ]
28524 ),
28525 )
28526 }
28527}
28528#[doc = "Vector multiply subtract with scalar"]
28529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_u16)"]
28530#[inline(always)]
28531#[target_feature(enable = "neon")]
28532#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28533#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28534#[cfg_attr(
28535 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28536 assert_instr(mls, LANE = 1)
28537)]
28538#[rustc_legacy_const_generics(3)]
28539#[cfg_attr(
28540 not(target_arch = "arm"),
28541 stable(feature = "neon_intrinsics", since = "1.59.0")
28542)]
28543#[cfg_attr(
28544 target_arch = "arm",
28545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28546)]
28547pub fn vmlsq_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
28548 static_assert_uimm_bits!(LANE, 3);
28549 unsafe {
28550 vmlsq_u16(
28551 a,
28552 b,
28553 simd_shuffle!(
28554 c,
28555 c,
28556 [
28557 LANE as u32,
28558 LANE as u32,
28559 LANE as u32,
28560 LANE as u32,
28561 LANE as u32,
28562 LANE as u32,
28563 LANE as u32,
28564 LANE as u32
28565 ]
28566 ),
28567 )
28568 }
28569}
28570#[doc = "Vector multiply subtract with scalar"]
28571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_s32)"]
28572#[inline(always)]
28573#[target_feature(enable = "neon")]
28574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28575#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28576#[cfg_attr(
28577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28578 assert_instr(mls, LANE = 1)
28579)]
28580#[rustc_legacy_const_generics(3)]
28581#[cfg_attr(
28582 not(target_arch = "arm"),
28583 stable(feature = "neon_intrinsics", since = "1.59.0")
28584)]
28585#[cfg_attr(
28586 target_arch = "arm",
28587 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28588)]
28589pub fn vmls_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
28590 static_assert_uimm_bits!(LANE, 1);
28591 unsafe { vmls_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28592}
28593#[doc = "Vector multiply subtract with scalar"]
28594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_u32)"]
28595#[inline(always)]
28596#[target_feature(enable = "neon")]
28597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28598#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28599#[cfg_attr(
28600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28601 assert_instr(mls, LANE = 1)
28602)]
28603#[rustc_legacy_const_generics(3)]
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 vmls_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
28613 static_assert_uimm_bits!(LANE, 1);
28614 unsafe { vmls_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28615}
28616#[doc = "Vector multiply subtract with scalar"]
28617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_s32)"]
28618#[inline(always)]
28619#[target_feature(enable = "neon")]
28620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28621#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28622#[cfg_attr(
28623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28624 assert_instr(mls, LANE = 1)
28625)]
28626#[rustc_legacy_const_generics(3)]
28627#[cfg_attr(
28628 not(target_arch = "arm"),
28629 stable(feature = "neon_intrinsics", since = "1.59.0")
28630)]
28631#[cfg_attr(
28632 target_arch = "arm",
28633 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28634)]
28635pub fn vmls_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x4_t) -> int32x2_t {
28636 static_assert_uimm_bits!(LANE, 2);
28637 unsafe { vmls_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28638}
28639#[doc = "Vector multiply subtract with scalar"]
28640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_u32)"]
28641#[inline(always)]
28642#[target_feature(enable = "neon")]
28643#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28644#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28645#[cfg_attr(
28646 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28647 assert_instr(mls, LANE = 1)
28648)]
28649#[rustc_legacy_const_generics(3)]
28650#[cfg_attr(
28651 not(target_arch = "arm"),
28652 stable(feature = "neon_intrinsics", since = "1.59.0")
28653)]
28654#[cfg_attr(
28655 target_arch = "arm",
28656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28657)]
28658pub fn vmls_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x4_t) -> uint32x2_t {
28659 static_assert_uimm_bits!(LANE, 2);
28660 unsafe { vmls_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28661}
28662#[doc = "Vector multiply subtract with scalar"]
28663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_s32)"]
28664#[inline(always)]
28665#[target_feature(enable = "neon")]
28666#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28667#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28668#[cfg_attr(
28669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28670 assert_instr(mls, LANE = 1)
28671)]
28672#[rustc_legacy_const_generics(3)]
28673#[cfg_attr(
28674 not(target_arch = "arm"),
28675 stable(feature = "neon_intrinsics", since = "1.59.0")
28676)]
28677#[cfg_attr(
28678 target_arch = "arm",
28679 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28680)]
28681pub fn vmlsq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x2_t) -> int32x4_t {
28682 static_assert_uimm_bits!(LANE, 1);
28683 unsafe {
28684 vmlsq_s32(
28685 a,
28686 b,
28687 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28688 )
28689 }
28690}
28691#[doc = "Vector multiply subtract with scalar"]
28692#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_u32)"]
28693#[inline(always)]
28694#[target_feature(enable = "neon")]
28695#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28696#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28697#[cfg_attr(
28698 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28699 assert_instr(mls, LANE = 1)
28700)]
28701#[rustc_legacy_const_generics(3)]
28702#[cfg_attr(
28703 not(target_arch = "arm"),
28704 stable(feature = "neon_intrinsics", since = "1.59.0")
28705)]
28706#[cfg_attr(
28707 target_arch = "arm",
28708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28709)]
28710pub fn vmlsq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x2_t) -> uint32x4_t {
28711 static_assert_uimm_bits!(LANE, 1);
28712 unsafe {
28713 vmlsq_u32(
28714 a,
28715 b,
28716 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28717 )
28718 }
28719}
28720#[doc = "Vector multiply subtract with scalar"]
28721#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_s32)"]
28722#[inline(always)]
28723#[target_feature(enable = "neon")]
28724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28725#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28726#[cfg_attr(
28727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28728 assert_instr(mls, LANE = 1)
28729)]
28730#[rustc_legacy_const_generics(3)]
28731#[cfg_attr(
28732 not(target_arch = "arm"),
28733 stable(feature = "neon_intrinsics", since = "1.59.0")
28734)]
28735#[cfg_attr(
28736 target_arch = "arm",
28737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28738)]
28739pub fn vmlsq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
28740 static_assert_uimm_bits!(LANE, 2);
28741 unsafe {
28742 vmlsq_s32(
28743 a,
28744 b,
28745 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28746 )
28747 }
28748}
28749#[doc = "Vector multiply subtract with scalar"]
28750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_u32)"]
28751#[inline(always)]
28752#[target_feature(enable = "neon")]
28753#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28754#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28755#[cfg_attr(
28756 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28757 assert_instr(mls, LANE = 1)
28758)]
28759#[rustc_legacy_const_generics(3)]
28760#[cfg_attr(
28761 not(target_arch = "arm"),
28762 stable(feature = "neon_intrinsics", since = "1.59.0")
28763)]
28764#[cfg_attr(
28765 target_arch = "arm",
28766 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28767)]
28768pub fn vmlsq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
28769 static_assert_uimm_bits!(LANE, 2);
28770 unsafe {
28771 vmlsq_u32(
28772 a,
28773 b,
28774 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28775 )
28776 }
28777}
28778#[doc = "Vector multiply subtract with scalar"]
28779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_f32)"]
28780#[inline(always)]
28781#[target_feature(enable = "neon")]
28782#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28783#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
28784#[cfg_attr(
28785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28786 assert_instr(fmul)
28787)]
28788#[cfg_attr(
28789 not(target_arch = "arm"),
28790 stable(feature = "neon_intrinsics", since = "1.59.0")
28791)]
28792#[cfg_attr(
28793 target_arch = "arm",
28794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28795)]
28796pub fn vmls_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
28797 vmls_f32(a, b, vdup_n_f32(c))
28798}
28799#[doc = "Vector multiply subtract with scalar"]
28800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_f32)"]
28801#[inline(always)]
28802#[target_feature(enable = "neon")]
28803#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28804#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
28805#[cfg_attr(
28806 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28807 assert_instr(fmul)
28808)]
28809#[cfg_attr(
28810 not(target_arch = "arm"),
28811 stable(feature = "neon_intrinsics", since = "1.59.0")
28812)]
28813#[cfg_attr(
28814 target_arch = "arm",
28815 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28816)]
28817pub fn vmlsq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
28818 vmlsq_f32(a, b, vdupq_n_f32(c))
28819}
28820#[doc = "Vector multiply subtract with scalar"]
28821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_s16)"]
28822#[inline(always)]
28823#[target_feature(enable = "neon")]
28824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28825#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
28826#[cfg_attr(
28827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28828 assert_instr(mls)
28829)]
28830#[cfg_attr(
28831 not(target_arch = "arm"),
28832 stable(feature = "neon_intrinsics", since = "1.59.0")
28833)]
28834#[cfg_attr(
28835 target_arch = "arm",
28836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28837)]
28838pub fn vmls_n_s16(a: int16x4_t, b: int16x4_t, c: i16) -> int16x4_t {
28839 vmls_s16(a, b, vdup_n_s16(c))
28840}
28841#[doc = "Vector multiply subtract with scalar"]
28842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_s16)"]
28843#[inline(always)]
28844#[target_feature(enable = "neon")]
28845#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28846#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
28847#[cfg_attr(
28848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28849 assert_instr(mls)
28850)]
28851#[cfg_attr(
28852 not(target_arch = "arm"),
28853 stable(feature = "neon_intrinsics", since = "1.59.0")
28854)]
28855#[cfg_attr(
28856 target_arch = "arm",
28857 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28858)]
28859pub fn vmlsq_n_s16(a: int16x8_t, b: int16x8_t, c: i16) -> int16x8_t {
28860 vmlsq_s16(a, b, vdupq_n_s16(c))
28861}
28862#[doc = "Vector multiply subtract with scalar"]
28863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_u16)"]
28864#[inline(always)]
28865#[target_feature(enable = "neon")]
28866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28867#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
28868#[cfg_attr(
28869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28870 assert_instr(mls)
28871)]
28872#[cfg_attr(
28873 not(target_arch = "arm"),
28874 stable(feature = "neon_intrinsics", since = "1.59.0")
28875)]
28876#[cfg_attr(
28877 target_arch = "arm",
28878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28879)]
28880pub fn vmls_n_u16(a: uint16x4_t, b: uint16x4_t, c: u16) -> uint16x4_t {
28881 vmls_u16(a, b, vdup_n_u16(c))
28882}
28883#[doc = "Vector multiply subtract with scalar"]
28884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_u16)"]
28885#[inline(always)]
28886#[target_feature(enable = "neon")]
28887#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28888#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
28889#[cfg_attr(
28890 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28891 assert_instr(mls)
28892)]
28893#[cfg_attr(
28894 not(target_arch = "arm"),
28895 stable(feature = "neon_intrinsics", since = "1.59.0")
28896)]
28897#[cfg_attr(
28898 target_arch = "arm",
28899 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28900)]
28901pub fn vmlsq_n_u16(a: uint16x8_t, b: uint16x8_t, c: u16) -> uint16x8_t {
28902 vmlsq_u16(a, b, vdupq_n_u16(c))
28903}
28904#[doc = "Vector multiply subtract with scalar"]
28905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_s32)"]
28906#[inline(always)]
28907#[target_feature(enable = "neon")]
28908#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28909#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
28910#[cfg_attr(
28911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28912 assert_instr(mls)
28913)]
28914#[cfg_attr(
28915 not(target_arch = "arm"),
28916 stable(feature = "neon_intrinsics", since = "1.59.0")
28917)]
28918#[cfg_attr(
28919 target_arch = "arm",
28920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28921)]
28922pub fn vmls_n_s32(a: int32x2_t, b: int32x2_t, c: i32) -> int32x2_t {
28923 vmls_s32(a, b, vdup_n_s32(c))
28924}
28925#[doc = "Vector multiply subtract with scalar"]
28926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_s32)"]
28927#[inline(always)]
28928#[target_feature(enable = "neon")]
28929#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28930#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
28931#[cfg_attr(
28932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28933 assert_instr(mls)
28934)]
28935#[cfg_attr(
28936 not(target_arch = "arm"),
28937 stable(feature = "neon_intrinsics", since = "1.59.0")
28938)]
28939#[cfg_attr(
28940 target_arch = "arm",
28941 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28942)]
28943pub fn vmlsq_n_s32(a: int32x4_t, b: int32x4_t, c: i32) -> int32x4_t {
28944 vmlsq_s32(a, b, vdupq_n_s32(c))
28945}
28946#[doc = "Vector multiply subtract with scalar"]
28947#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_u32)"]
28948#[inline(always)]
28949#[target_feature(enable = "neon")]
28950#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28951#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
28952#[cfg_attr(
28953 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28954 assert_instr(mls)
28955)]
28956#[cfg_attr(
28957 not(target_arch = "arm"),
28958 stable(feature = "neon_intrinsics", since = "1.59.0")
28959)]
28960#[cfg_attr(
28961 target_arch = "arm",
28962 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28963)]
28964pub fn vmls_n_u32(a: uint32x2_t, b: uint32x2_t, c: u32) -> uint32x2_t {
28965 vmls_u32(a, b, vdup_n_u32(c))
28966}
28967#[doc = "Vector multiply subtract with scalar"]
28968#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_u32)"]
28969#[inline(always)]
28970#[target_feature(enable = "neon")]
28971#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28972#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
28973#[cfg_attr(
28974 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28975 assert_instr(mls)
28976)]
28977#[cfg_attr(
28978 not(target_arch = "arm"),
28979 stable(feature = "neon_intrinsics", since = "1.59.0")
28980)]
28981#[cfg_attr(
28982 target_arch = "arm",
28983 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28984)]
28985pub fn vmlsq_n_u32(a: uint32x4_t, b: uint32x4_t, c: u32) -> uint32x4_t {
28986 vmlsq_u32(a, b, vdupq_n_u32(c))
28987}
28988#[doc = "Multiply-subtract from accumulator"]
28989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s8)"]
28990#[inline(always)]
28991#[target_feature(enable = "neon")]
28992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28993#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
28994#[cfg_attr(
28995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28996 assert_instr(mls)
28997)]
28998#[cfg_attr(
28999 not(target_arch = "arm"),
29000 stable(feature = "neon_intrinsics", since = "1.59.0")
29001)]
29002#[cfg_attr(
29003 target_arch = "arm",
29004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29005)]
29006pub fn vmls_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
29007 unsafe { simd_sub(a, simd_mul(b, c)) }
29008}
29009#[doc = "Multiply-subtract from accumulator"]
29010#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s8)"]
29011#[inline(always)]
29012#[target_feature(enable = "neon")]
29013#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29014#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
29015#[cfg_attr(
29016 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29017 assert_instr(mls)
29018)]
29019#[cfg_attr(
29020 not(target_arch = "arm"),
29021 stable(feature = "neon_intrinsics", since = "1.59.0")
29022)]
29023#[cfg_attr(
29024 target_arch = "arm",
29025 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29026)]
29027pub fn vmlsq_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
29028 unsafe { simd_sub(a, simd_mul(b, c)) }
29029}
29030#[doc = "Multiply-subtract from accumulator"]
29031#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s16)"]
29032#[inline(always)]
29033#[target_feature(enable = "neon")]
29034#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29035#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
29036#[cfg_attr(
29037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29038 assert_instr(mls)
29039)]
29040#[cfg_attr(
29041 not(target_arch = "arm"),
29042 stable(feature = "neon_intrinsics", since = "1.59.0")
29043)]
29044#[cfg_attr(
29045 target_arch = "arm",
29046 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29047)]
29048pub fn vmls_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
29049 unsafe { simd_sub(a, simd_mul(b, c)) }
29050}
29051#[doc = "Multiply-subtract from accumulator"]
29052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s16)"]
29053#[inline(always)]
29054#[target_feature(enable = "neon")]
29055#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29056#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
29057#[cfg_attr(
29058 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29059 assert_instr(mls)
29060)]
29061#[cfg_attr(
29062 not(target_arch = "arm"),
29063 stable(feature = "neon_intrinsics", since = "1.59.0")
29064)]
29065#[cfg_attr(
29066 target_arch = "arm",
29067 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29068)]
29069pub fn vmlsq_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
29070 unsafe { simd_sub(a, simd_mul(b, c)) }
29071}
29072#[doc = "Multiply-subtract from accumulator"]
29073#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s32)"]
29074#[inline(always)]
29075#[target_feature(enable = "neon")]
29076#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29077#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
29078#[cfg_attr(
29079 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29080 assert_instr(mls)
29081)]
29082#[cfg_attr(
29083 not(target_arch = "arm"),
29084 stable(feature = "neon_intrinsics", since = "1.59.0")
29085)]
29086#[cfg_attr(
29087 target_arch = "arm",
29088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29089)]
29090pub fn vmls_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
29091 unsafe { simd_sub(a, simd_mul(b, c)) }
29092}
29093#[doc = "Multiply-subtract from accumulator"]
29094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s32)"]
29095#[inline(always)]
29096#[target_feature(enable = "neon")]
29097#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29098#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
29099#[cfg_attr(
29100 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29101 assert_instr(mls)
29102)]
29103#[cfg_attr(
29104 not(target_arch = "arm"),
29105 stable(feature = "neon_intrinsics", since = "1.59.0")
29106)]
29107#[cfg_attr(
29108 target_arch = "arm",
29109 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29110)]
29111pub fn vmlsq_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
29112 unsafe { simd_sub(a, simd_mul(b, c)) }
29113}
29114#[doc = "Multiply-subtract from accumulator"]
29115#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u8)"]
29116#[inline(always)]
29117#[target_feature(enable = "neon")]
29118#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29119#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
29120#[cfg_attr(
29121 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29122 assert_instr(mls)
29123)]
29124#[cfg_attr(
29125 not(target_arch = "arm"),
29126 stable(feature = "neon_intrinsics", since = "1.59.0")
29127)]
29128#[cfg_attr(
29129 target_arch = "arm",
29130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29131)]
29132pub fn vmls_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
29133 unsafe { simd_sub(a, simd_mul(b, c)) }
29134}
29135#[doc = "Multiply-subtract from accumulator"]
29136#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u8)"]
29137#[inline(always)]
29138#[target_feature(enable = "neon")]
29139#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29140#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
29141#[cfg_attr(
29142 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29143 assert_instr(mls)
29144)]
29145#[cfg_attr(
29146 not(target_arch = "arm"),
29147 stable(feature = "neon_intrinsics", since = "1.59.0")
29148)]
29149#[cfg_attr(
29150 target_arch = "arm",
29151 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29152)]
29153pub fn vmlsq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
29154 unsafe { simd_sub(a, simd_mul(b, c)) }
29155}
29156#[doc = "Multiply-subtract from accumulator"]
29157#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u16)"]
29158#[inline(always)]
29159#[target_feature(enable = "neon")]
29160#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29161#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
29162#[cfg_attr(
29163 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29164 assert_instr(mls)
29165)]
29166#[cfg_attr(
29167 not(target_arch = "arm"),
29168 stable(feature = "neon_intrinsics", since = "1.59.0")
29169)]
29170#[cfg_attr(
29171 target_arch = "arm",
29172 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29173)]
29174pub fn vmls_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
29175 unsafe { simd_sub(a, simd_mul(b, c)) }
29176}
29177#[doc = "Multiply-subtract from accumulator"]
29178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u16)"]
29179#[inline(always)]
29180#[target_feature(enable = "neon")]
29181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29182#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
29183#[cfg_attr(
29184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29185 assert_instr(mls)
29186)]
29187#[cfg_attr(
29188 not(target_arch = "arm"),
29189 stable(feature = "neon_intrinsics", since = "1.59.0")
29190)]
29191#[cfg_attr(
29192 target_arch = "arm",
29193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29194)]
29195pub fn vmlsq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
29196 unsafe { simd_sub(a, simd_mul(b, c)) }
29197}
29198#[doc = "Multiply-subtract from accumulator"]
29199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u32)"]
29200#[inline(always)]
29201#[target_feature(enable = "neon")]
29202#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29203#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
29204#[cfg_attr(
29205 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29206 assert_instr(mls)
29207)]
29208#[cfg_attr(
29209 not(target_arch = "arm"),
29210 stable(feature = "neon_intrinsics", since = "1.59.0")
29211)]
29212#[cfg_attr(
29213 target_arch = "arm",
29214 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29215)]
29216pub fn vmls_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
29217 unsafe { simd_sub(a, simd_mul(b, c)) }
29218}
29219#[doc = "Multiply-subtract from accumulator"]
29220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u32)"]
29221#[inline(always)]
29222#[target_feature(enable = "neon")]
29223#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29224#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
29225#[cfg_attr(
29226 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29227 assert_instr(mls)
29228)]
29229#[cfg_attr(
29230 not(target_arch = "arm"),
29231 stable(feature = "neon_intrinsics", since = "1.59.0")
29232)]
29233#[cfg_attr(
29234 target_arch = "arm",
29235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29236)]
29237pub fn vmlsq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
29238 unsafe { simd_sub(a, simd_mul(b, c)) }
29239}
29240#[doc = "Vector widening multiply subtract with scalar"]
29241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_s16)"]
29242#[inline(always)]
29243#[target_feature(enable = "neon")]
29244#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29245#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16", LANE = 1))]
29246#[cfg_attr(
29247 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29248 assert_instr(smlsl, LANE = 1)
29249)]
29250#[rustc_legacy_const_generics(3)]
29251#[cfg_attr(
29252 not(target_arch = "arm"),
29253 stable(feature = "neon_intrinsics", since = "1.59.0")
29254)]
29255#[cfg_attr(
29256 target_arch = "arm",
29257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29258)]
29259pub fn vmlsl_lane_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
29260 static_assert_uimm_bits!(LANE, 2);
29261 unsafe {
29262 vmlsl_s16(
29263 a,
29264 b,
29265 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29266 )
29267 }
29268}
29269#[doc = "Vector widening multiply subtract with scalar"]
29270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_s16)"]
29271#[inline(always)]
29272#[target_feature(enable = "neon")]
29273#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29274#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16", LANE = 1))]
29275#[cfg_attr(
29276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29277 assert_instr(smlsl, LANE = 1)
29278)]
29279#[rustc_legacy_const_generics(3)]
29280#[cfg_attr(
29281 not(target_arch = "arm"),
29282 stable(feature = "neon_intrinsics", since = "1.59.0")
29283)]
29284#[cfg_attr(
29285 target_arch = "arm",
29286 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29287)]
29288pub fn vmlsl_laneq_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x8_t) -> int32x4_t {
29289 static_assert_uimm_bits!(LANE, 3);
29290 unsafe {
29291 vmlsl_s16(
29292 a,
29293 b,
29294 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29295 )
29296 }
29297}
29298#[doc = "Vector widening multiply subtract with scalar"]
29299#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_s32)"]
29300#[inline(always)]
29301#[target_feature(enable = "neon")]
29302#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29303#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32", LANE = 1))]
29304#[cfg_attr(
29305 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29306 assert_instr(smlsl, LANE = 1)
29307)]
29308#[rustc_legacy_const_generics(3)]
29309#[cfg_attr(
29310 not(target_arch = "arm"),
29311 stable(feature = "neon_intrinsics", since = "1.59.0")
29312)]
29313#[cfg_attr(
29314 target_arch = "arm",
29315 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29316)]
29317pub fn vmlsl_lane_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
29318 static_assert_uimm_bits!(LANE, 1);
29319 unsafe { vmlsl_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29320}
29321#[doc = "Vector widening multiply subtract with scalar"]
29322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_s32)"]
29323#[inline(always)]
29324#[target_feature(enable = "neon")]
29325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29326#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32", LANE = 1))]
29327#[cfg_attr(
29328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29329 assert_instr(smlsl, LANE = 1)
29330)]
29331#[rustc_legacy_const_generics(3)]
29332#[cfg_attr(
29333 not(target_arch = "arm"),
29334 stable(feature = "neon_intrinsics", since = "1.59.0")
29335)]
29336#[cfg_attr(
29337 target_arch = "arm",
29338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29339)]
29340pub fn vmlsl_laneq_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x4_t) -> int64x2_t {
29341 static_assert_uimm_bits!(LANE, 2);
29342 unsafe { vmlsl_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29343}
29344#[doc = "Vector widening multiply subtract with scalar"]
29345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_u16)"]
29346#[inline(always)]
29347#[target_feature(enable = "neon")]
29348#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29349#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16", LANE = 1))]
29350#[cfg_attr(
29351 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29352 assert_instr(umlsl, LANE = 1)
29353)]
29354#[rustc_legacy_const_generics(3)]
29355#[cfg_attr(
29356 not(target_arch = "arm"),
29357 stable(feature = "neon_intrinsics", since = "1.59.0")
29358)]
29359#[cfg_attr(
29360 target_arch = "arm",
29361 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29362)]
29363pub fn vmlsl_lane_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
29364 static_assert_uimm_bits!(LANE, 2);
29365 unsafe {
29366 vmlsl_u16(
29367 a,
29368 b,
29369 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29370 )
29371 }
29372}
29373#[doc = "Vector widening multiply subtract with scalar"]
29374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_u16)"]
29375#[inline(always)]
29376#[target_feature(enable = "neon")]
29377#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29378#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16", LANE = 1))]
29379#[cfg_attr(
29380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29381 assert_instr(umlsl, LANE = 1)
29382)]
29383#[rustc_legacy_const_generics(3)]
29384#[cfg_attr(
29385 not(target_arch = "arm"),
29386 stable(feature = "neon_intrinsics", since = "1.59.0")
29387)]
29388#[cfg_attr(
29389 target_arch = "arm",
29390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29391)]
29392pub fn vmlsl_laneq_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x8_t) -> uint32x4_t {
29393 static_assert_uimm_bits!(LANE, 3);
29394 unsafe {
29395 vmlsl_u16(
29396 a,
29397 b,
29398 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29399 )
29400 }
29401}
29402#[doc = "Vector widening multiply subtract with scalar"]
29403#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_u32)"]
29404#[inline(always)]
29405#[target_feature(enable = "neon")]
29406#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29407#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32", LANE = 1))]
29408#[cfg_attr(
29409 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29410 assert_instr(umlsl, LANE = 1)
29411)]
29412#[rustc_legacy_const_generics(3)]
29413#[cfg_attr(
29414 not(target_arch = "arm"),
29415 stable(feature = "neon_intrinsics", since = "1.59.0")
29416)]
29417#[cfg_attr(
29418 target_arch = "arm",
29419 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29420)]
29421pub fn vmlsl_lane_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
29422 static_assert_uimm_bits!(LANE, 1);
29423 unsafe { vmlsl_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29424}
29425#[doc = "Vector widening multiply subtract with scalar"]
29426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_u32)"]
29427#[inline(always)]
29428#[target_feature(enable = "neon")]
29429#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29430#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32", LANE = 1))]
29431#[cfg_attr(
29432 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29433 assert_instr(umlsl, LANE = 1)
29434)]
29435#[rustc_legacy_const_generics(3)]
29436#[cfg_attr(
29437 not(target_arch = "arm"),
29438 stable(feature = "neon_intrinsics", since = "1.59.0")
29439)]
29440#[cfg_attr(
29441 target_arch = "arm",
29442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29443)]
29444pub fn vmlsl_laneq_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x4_t) -> uint64x2_t {
29445 static_assert_uimm_bits!(LANE, 2);
29446 unsafe { vmlsl_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29447}
29448#[doc = "Vector widening multiply subtract with scalar"]
29449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_s16)"]
29450#[inline(always)]
29451#[target_feature(enable = "neon")]
29452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29453#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16"))]
29454#[cfg_attr(
29455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29456 assert_instr(smlsl)
29457)]
29458#[cfg_attr(
29459 not(target_arch = "arm"),
29460 stable(feature = "neon_intrinsics", since = "1.59.0")
29461)]
29462#[cfg_attr(
29463 target_arch = "arm",
29464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29465)]
29466pub fn vmlsl_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
29467 vmlsl_s16(a, b, vdup_n_s16(c))
29468}
29469#[doc = "Vector widening multiply subtract with scalar"]
29470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_s32)"]
29471#[inline(always)]
29472#[target_feature(enable = "neon")]
29473#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29474#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32"))]
29475#[cfg_attr(
29476 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29477 assert_instr(smlsl)
29478)]
29479#[cfg_attr(
29480 not(target_arch = "arm"),
29481 stable(feature = "neon_intrinsics", since = "1.59.0")
29482)]
29483#[cfg_attr(
29484 target_arch = "arm",
29485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29486)]
29487pub fn vmlsl_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
29488 vmlsl_s32(a, b, vdup_n_s32(c))
29489}
29490#[doc = "Vector widening multiply subtract with scalar"]
29491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_u16)"]
29492#[inline(always)]
29493#[target_feature(enable = "neon")]
29494#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29495#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16"))]
29496#[cfg_attr(
29497 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29498 assert_instr(umlsl)
29499)]
29500#[cfg_attr(
29501 not(target_arch = "arm"),
29502 stable(feature = "neon_intrinsics", since = "1.59.0")
29503)]
29504#[cfg_attr(
29505 target_arch = "arm",
29506 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29507)]
29508pub fn vmlsl_n_u16(a: uint32x4_t, b: uint16x4_t, c: u16) -> uint32x4_t {
29509 vmlsl_u16(a, b, vdup_n_u16(c))
29510}
29511#[doc = "Vector widening multiply subtract with scalar"]
29512#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_u32)"]
29513#[inline(always)]
29514#[target_feature(enable = "neon")]
29515#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29516#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32"))]
29517#[cfg_attr(
29518 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29519 assert_instr(umlsl)
29520)]
29521#[cfg_attr(
29522 not(target_arch = "arm"),
29523 stable(feature = "neon_intrinsics", since = "1.59.0")
29524)]
29525#[cfg_attr(
29526 target_arch = "arm",
29527 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29528)]
29529pub fn vmlsl_n_u32(a: uint64x2_t, b: uint32x2_t, c: u32) -> uint64x2_t {
29530 vmlsl_u32(a, b, vdup_n_u32(c))
29531}
29532#[doc = "Signed multiply-subtract long"]
29533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s8)"]
29534#[inline(always)]
29535#[target_feature(enable = "neon")]
29536#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29537#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s8"))]
29538#[cfg_attr(
29539 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29540 assert_instr(smlsl)
29541)]
29542#[cfg_attr(
29543 not(target_arch = "arm"),
29544 stable(feature = "neon_intrinsics", since = "1.59.0")
29545)]
29546#[cfg_attr(
29547 target_arch = "arm",
29548 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29549)]
29550pub fn vmlsl_s8(a: int16x8_t, b: int8x8_t, c: int8x8_t) -> int16x8_t {
29551 unsafe { simd_sub(a, vmull_s8(b, c)) }
29552}
29553#[doc = "Signed multiply-subtract long"]
29554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s16)"]
29555#[inline(always)]
29556#[target_feature(enable = "neon")]
29557#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29558#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16"))]
29559#[cfg_attr(
29560 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29561 assert_instr(smlsl)
29562)]
29563#[cfg_attr(
29564 not(target_arch = "arm"),
29565 stable(feature = "neon_intrinsics", since = "1.59.0")
29566)]
29567#[cfg_attr(
29568 target_arch = "arm",
29569 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29570)]
29571pub fn vmlsl_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
29572 unsafe { simd_sub(a, vmull_s16(b, c)) }
29573}
29574#[doc = "Signed multiply-subtract long"]
29575#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s32)"]
29576#[inline(always)]
29577#[target_feature(enable = "neon")]
29578#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29579#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32"))]
29580#[cfg_attr(
29581 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29582 assert_instr(smlsl)
29583)]
29584#[cfg_attr(
29585 not(target_arch = "arm"),
29586 stable(feature = "neon_intrinsics", since = "1.59.0")
29587)]
29588#[cfg_attr(
29589 target_arch = "arm",
29590 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29591)]
29592pub fn vmlsl_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
29593 unsafe { simd_sub(a, vmull_s32(b, c)) }
29594}
29595#[doc = "Unsigned multiply-subtract long"]
29596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u8)"]
29597#[inline(always)]
29598#[target_feature(enable = "neon")]
29599#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29600#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u8"))]
29601#[cfg_attr(
29602 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29603 assert_instr(umlsl)
29604)]
29605#[cfg_attr(
29606 not(target_arch = "arm"),
29607 stable(feature = "neon_intrinsics", since = "1.59.0")
29608)]
29609#[cfg_attr(
29610 target_arch = "arm",
29611 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29612)]
29613pub fn vmlsl_u8(a: uint16x8_t, b: uint8x8_t, c: uint8x8_t) -> uint16x8_t {
29614 unsafe { simd_sub(a, vmull_u8(b, c)) }
29615}
29616#[doc = "Unsigned multiply-subtract long"]
29617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u16)"]
29618#[inline(always)]
29619#[target_feature(enable = "neon")]
29620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29621#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16"))]
29622#[cfg_attr(
29623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29624 assert_instr(umlsl)
29625)]
29626#[cfg_attr(
29627 not(target_arch = "arm"),
29628 stable(feature = "neon_intrinsics", since = "1.59.0")
29629)]
29630#[cfg_attr(
29631 target_arch = "arm",
29632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29633)]
29634pub fn vmlsl_u16(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
29635 unsafe { simd_sub(a, vmull_u16(b, c)) }
29636}
29637#[doc = "Unsigned multiply-subtract long"]
29638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u32)"]
29639#[inline(always)]
29640#[target_feature(enable = "neon")]
29641#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29642#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32"))]
29643#[cfg_attr(
29644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29645 assert_instr(umlsl)
29646)]
29647#[cfg_attr(
29648 not(target_arch = "arm"),
29649 stable(feature = "neon_intrinsics", since = "1.59.0")
29650)]
29651#[cfg_attr(
29652 target_arch = "arm",
29653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29654)]
29655pub fn vmlsl_u32(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
29656 unsafe { simd_sub(a, vmull_u32(b, c)) }
29657}
29658#[doc = "8-bit integer matrix multiply-accumulate"]
29659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmmlaq_s32)"]
29660#[inline(always)]
29661#[target_feature(enable = "neon,i8mm")]
29662#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
29663#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
29664#[cfg_attr(
29665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29666 assert_instr(smmla)
29667)]
29668#[cfg_attr(
29669 not(target_arch = "arm"),
29670 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
29671)]
29672#[cfg_attr(
29673 target_arch = "arm",
29674 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29675)]
29676pub fn vmmlaq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t {
29677 unsafe extern "unadjusted" {
29678 #[cfg_attr(
29679 any(target_arch = "aarch64", target_arch = "arm64ec"),
29680 link_name = "llvm.aarch64.neon.smmla.v4i32.v16i8"
29681 )]
29682 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.smmla.v4i32.v16i8")]
29683 fn _vmmlaq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t;
29684 }
29685 unsafe { _vmmlaq_s32(a, b, c) }
29686}
29687#[doc = "8-bit integer matrix multiply-accumulate"]
29688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmmlaq_u32)"]
29689#[inline(always)]
29690#[target_feature(enable = "neon,i8mm")]
29691#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
29692#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
29693#[cfg_attr(
29694 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29695 assert_instr(ummla)
29696)]
29697#[cfg_attr(
29698 not(target_arch = "arm"),
29699 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
29700)]
29701#[cfg_attr(
29702 target_arch = "arm",
29703 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29704)]
29705pub fn vmmlaq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t {
29706 unsafe extern "unadjusted" {
29707 #[cfg_attr(
29708 any(target_arch = "aarch64", target_arch = "arm64ec"),
29709 link_name = "llvm.aarch64.neon.ummla.v4i32.v16i8"
29710 )]
29711 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.ummla.v4i32.v16i8")]
29712 fn _vmmlaq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t;
29713 }
29714 unsafe { _vmmlaq_u32(a, b, c) }
29715}
29716#[doc = "Duplicate element to vector"]
29717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_f16)"]
29718#[inline(always)]
29719#[target_feature(enable = "neon")]
29720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29721#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
29722#[cfg_attr(
29723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29724 assert_instr(dup)
29725)]
29726#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
29727#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
29728#[cfg(not(target_arch = "arm64ec"))]
29729pub fn vmov_n_f16(a: f16) -> float16x4_t {
29730 vdup_n_f16(a)
29731}
29732#[doc = "Duplicate element to vector"]
29733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_f16)"]
29734#[inline(always)]
29735#[target_feature(enable = "neon")]
29736#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29737#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
29738#[cfg_attr(
29739 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29740 assert_instr(dup)
29741)]
29742#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
29743#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
29744#[cfg(not(target_arch = "arm64ec"))]
29745pub fn vmovq_n_f16(a: f16) -> float16x8_t {
29746 vdupq_n_f16(a)
29747}
29748#[doc = "Duplicate vector element to vector or scalar"]
29749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_f32)"]
29750#[inline(always)]
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("vdup.32"))]
29754#[cfg_attr(
29755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29756 assert_instr(dup)
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 vmov_n_f32(value: f32) -> float32x2_t {
29767 vdup_n_f32(value)
29768}
29769#[doc = "Duplicate vector element to vector or scalar"]
29770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_p16)"]
29771#[inline(always)]
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("vdup.16"))]
29775#[cfg_attr(
29776 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29777 assert_instr(dup)
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 vmov_n_p16(value: p16) -> poly16x4_t {
29788 vdup_n_p16(value)
29789}
29790#[doc = "Duplicate vector element to vector or scalar"]
29791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_p8)"]
29792#[inline(always)]
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("vdup.8"))]
29796#[cfg_attr(
29797 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29798 assert_instr(dup)
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 vmov_n_p8(value: p8) -> poly8x8_t {
29809 vdup_n_p8(value)
29810}
29811#[doc = "Duplicate vector element to vector or scalar"]
29812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s16)"]
29813#[inline(always)]
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("vdup.16"))]
29817#[cfg_attr(
29818 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29819 assert_instr(dup)
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 vmov_n_s16(value: i16) -> int16x4_t {
29830 vdup_n_s16(value)
29831}
29832#[doc = "Duplicate vector element to vector or scalar"]
29833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s32)"]
29834#[inline(always)]
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("vdup.32"))]
29838#[cfg_attr(
29839 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29840 assert_instr(dup)
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 vmov_n_s32(value: i32) -> int32x2_t {
29851 vdup_n_s32(value)
29852}
29853#[doc = "Duplicate vector element to vector or scalar"]
29854#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s64)"]
29855#[inline(always)]
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("vmov"))]
29859#[cfg_attr(
29860 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29861 assert_instr(fmov)
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 vmov_n_s64(value: i64) -> int64x1_t {
29872 vdup_n_s64(value)
29873}
29874#[doc = "Duplicate vector element to vector or scalar"]
29875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s8)"]
29876#[inline(always)]
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("vdup.8"))]
29880#[cfg_attr(
29881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29882 assert_instr(dup)
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 vmov_n_s8(value: i8) -> int8x8_t {
29893 vdup_n_s8(value)
29894}
29895#[doc = "Duplicate vector element to vector or scalar"]
29896#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u16)"]
29897#[inline(always)]
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("vdup.16"))]
29901#[cfg_attr(
29902 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29903 assert_instr(dup)
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 vmov_n_u16(value: u16) -> uint16x4_t {
29914 vdup_n_u16(value)
29915}
29916#[doc = "Duplicate vector element to vector or scalar"]
29917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u32)"]
29918#[inline(always)]
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("vdup.32"))]
29922#[cfg_attr(
29923 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29924 assert_instr(dup)
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 vmov_n_u32(value: u32) -> uint32x2_t {
29935 vdup_n_u32(value)
29936}
29937#[doc = "Duplicate vector element to vector or scalar"]
29938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u64)"]
29939#[inline(always)]
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("vmov"))]
29943#[cfg_attr(
29944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29945 assert_instr(fmov)
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 vmov_n_u64(value: u64) -> uint64x1_t {
29956 vdup_n_u64(value)
29957}
29958#[doc = "Duplicate vector element to vector or scalar"]
29959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u8)"]
29960#[inline(always)]
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("vdup.8"))]
29964#[cfg_attr(
29965 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29966 assert_instr(dup)
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 vmov_n_u8(value: u8) -> uint8x8_t {
29977 vdup_n_u8(value)
29978}
29979#[doc = "Duplicate vector element to vector or scalar"]
29980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_f32)"]
29981#[inline(always)]
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("vdup.32"))]
29985#[cfg_attr(
29986 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29987 assert_instr(dup)
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 vmovq_n_f32(value: f32) -> float32x4_t {
29998 vdupq_n_f32(value)
29999}
30000#[doc = "Duplicate vector element to vector or scalar"]
30001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_p16)"]
30002#[inline(always)]
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("vdup.16"))]
30006#[cfg_attr(
30007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30008 assert_instr(dup)
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 vmovq_n_p16(value: p16) -> poly16x8_t {
30019 vdupq_n_p16(value)
30020}
30021#[doc = "Duplicate vector element to vector or scalar"]
30022#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_p8)"]
30023#[inline(always)]
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("vdup.8"))]
30027#[cfg_attr(
30028 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30029 assert_instr(dup)
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 vmovq_n_p8(value: p8) -> poly8x16_t {
30040 vdupq_n_p8(value)
30041}
30042#[doc = "Duplicate vector element to vector or scalar"]
30043#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s16)"]
30044#[inline(always)]
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("vdup.16"))]
30048#[cfg_attr(
30049 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30050 assert_instr(dup)
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 vmovq_n_s16(value: i16) -> int16x8_t {
30061 vdupq_n_s16(value)
30062}
30063#[doc = "Duplicate vector element to vector or scalar"]
30064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s32)"]
30065#[inline(always)]
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("vdup.32"))]
30069#[cfg_attr(
30070 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30071 assert_instr(dup)
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 vmovq_n_s32(value: i32) -> int32x4_t {
30082 vdupq_n_s32(value)
30083}
30084#[doc = "Duplicate vector element to vector or scalar"]
30085#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s64)"]
30086#[inline(always)]
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("vmov"))]
30090#[cfg_attr(
30091 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30092 assert_instr(dup)
30093)]
30094#[cfg_attr(
30095 not(target_arch = "arm"),
30096 stable(feature = "neon_intrinsics", since = "1.59.0")
30097)]
30098#[cfg_attr(
30099 target_arch = "arm",
30100 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30101)]
30102pub fn vmovq_n_s64(value: i64) -> int64x2_t {
30103 vdupq_n_s64(value)
30104}
30105#[doc = "Duplicate vector element to vector or scalar"]
30106#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s8)"]
30107#[inline(always)]
30108#[target_feature(enable = "neon")]
30109#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30110#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
30111#[cfg_attr(
30112 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30113 assert_instr(dup)
30114)]
30115#[cfg_attr(
30116 not(target_arch = "arm"),
30117 stable(feature = "neon_intrinsics", since = "1.59.0")
30118)]
30119#[cfg_attr(
30120 target_arch = "arm",
30121 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30122)]
30123pub fn vmovq_n_s8(value: i8) -> int8x16_t {
30124 vdupq_n_s8(value)
30125}
30126#[doc = "Duplicate vector element to vector or scalar"]
30127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u16)"]
30128#[inline(always)]
30129#[target_feature(enable = "neon")]
30130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30131#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
30132#[cfg_attr(
30133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30134 assert_instr(dup)
30135)]
30136#[cfg_attr(
30137 not(target_arch = "arm"),
30138 stable(feature = "neon_intrinsics", since = "1.59.0")
30139)]
30140#[cfg_attr(
30141 target_arch = "arm",
30142 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30143)]
30144pub fn vmovq_n_u16(value: u16) -> uint16x8_t {
30145 vdupq_n_u16(value)
30146}
30147#[doc = "Duplicate vector element to vector or scalar"]
30148#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u32)"]
30149#[inline(always)]
30150#[target_feature(enable = "neon")]
30151#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30152#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
30153#[cfg_attr(
30154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30155 assert_instr(dup)
30156)]
30157#[cfg_attr(
30158 not(target_arch = "arm"),
30159 stable(feature = "neon_intrinsics", since = "1.59.0")
30160)]
30161#[cfg_attr(
30162 target_arch = "arm",
30163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30164)]
30165pub fn vmovq_n_u32(value: u32) -> uint32x4_t {
30166 vdupq_n_u32(value)
30167}
30168#[doc = "Duplicate vector element to vector or scalar"]
30169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u64)"]
30170#[inline(always)]
30171#[target_feature(enable = "neon")]
30172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30173#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
30174#[cfg_attr(
30175 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30176 assert_instr(dup)
30177)]
30178#[cfg_attr(
30179 not(target_arch = "arm"),
30180 stable(feature = "neon_intrinsics", since = "1.59.0")
30181)]
30182#[cfg_attr(
30183 target_arch = "arm",
30184 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30185)]
30186pub fn vmovq_n_u64(value: u64) -> uint64x2_t {
30187 vdupq_n_u64(value)
30188}
30189#[doc = "Duplicate vector element to vector or scalar"]
30190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u8)"]
30191#[inline(always)]
30192#[target_feature(enable = "neon")]
30193#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30194#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
30195#[cfg_attr(
30196 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30197 assert_instr(dup)
30198)]
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 vmovq_n_u8(value: u8) -> uint8x16_t {
30208 vdupq_n_u8(value)
30209}
30210#[doc = "Vector long move."]
30211#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s16)"]
30212#[inline(always)]
30213#[target_feature(enable = "neon")]
30214#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30216#[cfg_attr(
30217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30218 assert_instr(sxtl)
30219)]
30220#[cfg_attr(
30221 not(target_arch = "arm"),
30222 stable(feature = "neon_intrinsics", since = "1.59.0")
30223)]
30224#[cfg_attr(
30225 target_arch = "arm",
30226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30227)]
30228pub fn vmovl_s16(a: int16x4_t) -> int32x4_t {
30229 unsafe { simd_cast(a) }
30230}
30231#[doc = "Vector long move."]
30232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s32)"]
30233#[inline(always)]
30234#[target_feature(enable = "neon")]
30235#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30236#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30237#[cfg_attr(
30238 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30239 assert_instr(sxtl)
30240)]
30241#[cfg_attr(
30242 not(target_arch = "arm"),
30243 stable(feature = "neon_intrinsics", since = "1.59.0")
30244)]
30245#[cfg_attr(
30246 target_arch = "arm",
30247 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30248)]
30249pub fn vmovl_s32(a: int32x2_t) -> int64x2_t {
30250 unsafe { simd_cast(a) }
30251}
30252#[doc = "Vector long move."]
30253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s8)"]
30254#[inline(always)]
30255#[target_feature(enable = "neon")]
30256#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30257#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30258#[cfg_attr(
30259 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30260 assert_instr(sxtl)
30261)]
30262#[cfg_attr(
30263 not(target_arch = "arm"),
30264 stable(feature = "neon_intrinsics", since = "1.59.0")
30265)]
30266#[cfg_attr(
30267 target_arch = "arm",
30268 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30269)]
30270pub fn vmovl_s8(a: int8x8_t) -> int16x8_t {
30271 unsafe { simd_cast(a) }
30272}
30273#[doc = "Vector long move."]
30274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u16)"]
30275#[inline(always)]
30276#[target_feature(enable = "neon")]
30277#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30278#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30279#[cfg_attr(
30280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30281 assert_instr(uxtl)
30282)]
30283#[cfg_attr(
30284 not(target_arch = "arm"),
30285 stable(feature = "neon_intrinsics", since = "1.59.0")
30286)]
30287#[cfg_attr(
30288 target_arch = "arm",
30289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30290)]
30291pub fn vmovl_u16(a: uint16x4_t) -> uint32x4_t {
30292 unsafe { simd_cast(a) }
30293}
30294#[doc = "Vector long move."]
30295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u32)"]
30296#[inline(always)]
30297#[target_feature(enable = "neon")]
30298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30299#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30300#[cfg_attr(
30301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30302 assert_instr(uxtl)
30303)]
30304#[cfg_attr(
30305 not(target_arch = "arm"),
30306 stable(feature = "neon_intrinsics", since = "1.59.0")
30307)]
30308#[cfg_attr(
30309 target_arch = "arm",
30310 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30311)]
30312pub fn vmovl_u32(a: uint32x2_t) -> uint64x2_t {
30313 unsafe { simd_cast(a) }
30314}
30315#[doc = "Vector long move."]
30316#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u8)"]
30317#[inline(always)]
30318#[target_feature(enable = "neon")]
30319#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30320#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30321#[cfg_attr(
30322 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30323 assert_instr(uxtl)
30324)]
30325#[cfg_attr(
30326 not(target_arch = "arm"),
30327 stable(feature = "neon_intrinsics", since = "1.59.0")
30328)]
30329#[cfg_attr(
30330 target_arch = "arm",
30331 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30332)]
30333pub fn vmovl_u8(a: uint8x8_t) -> uint16x8_t {
30334 unsafe { simd_cast(a) }
30335}
30336#[doc = "Vector narrow integer."]
30337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s16)"]
30338#[inline(always)]
30339#[target_feature(enable = "neon")]
30340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30342#[cfg_attr(
30343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30344 assert_instr(xtn)
30345)]
30346#[cfg_attr(
30347 not(target_arch = "arm"),
30348 stable(feature = "neon_intrinsics", since = "1.59.0")
30349)]
30350#[cfg_attr(
30351 target_arch = "arm",
30352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30353)]
30354pub fn vmovn_s16(a: int16x8_t) -> int8x8_t {
30355 unsafe { simd_cast(a) }
30356}
30357#[doc = "Vector narrow integer."]
30358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s32)"]
30359#[inline(always)]
30360#[target_feature(enable = "neon")]
30361#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30362#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30363#[cfg_attr(
30364 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30365 assert_instr(xtn)
30366)]
30367#[cfg_attr(
30368 not(target_arch = "arm"),
30369 stable(feature = "neon_intrinsics", since = "1.59.0")
30370)]
30371#[cfg_attr(
30372 target_arch = "arm",
30373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30374)]
30375pub fn vmovn_s32(a: int32x4_t) -> int16x4_t {
30376 unsafe { simd_cast(a) }
30377}
30378#[doc = "Vector narrow integer."]
30379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s64)"]
30380#[inline(always)]
30381#[target_feature(enable = "neon")]
30382#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30383#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30384#[cfg_attr(
30385 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30386 assert_instr(xtn)
30387)]
30388#[cfg_attr(
30389 not(target_arch = "arm"),
30390 stable(feature = "neon_intrinsics", since = "1.59.0")
30391)]
30392#[cfg_attr(
30393 target_arch = "arm",
30394 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30395)]
30396pub fn vmovn_s64(a: int64x2_t) -> int32x2_t {
30397 unsafe { simd_cast(a) }
30398}
30399#[doc = "Vector narrow integer."]
30400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u16)"]
30401#[inline(always)]
30402#[target_feature(enable = "neon")]
30403#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30404#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30405#[cfg_attr(
30406 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30407 assert_instr(xtn)
30408)]
30409#[cfg_attr(
30410 not(target_arch = "arm"),
30411 stable(feature = "neon_intrinsics", since = "1.59.0")
30412)]
30413#[cfg_attr(
30414 target_arch = "arm",
30415 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30416)]
30417pub fn vmovn_u16(a: uint16x8_t) -> uint8x8_t {
30418 unsafe { simd_cast(a) }
30419}
30420#[doc = "Vector narrow integer."]
30421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u32)"]
30422#[inline(always)]
30423#[target_feature(enable = "neon")]
30424#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30425#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30426#[cfg_attr(
30427 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30428 assert_instr(xtn)
30429)]
30430#[cfg_attr(
30431 not(target_arch = "arm"),
30432 stable(feature = "neon_intrinsics", since = "1.59.0")
30433)]
30434#[cfg_attr(
30435 target_arch = "arm",
30436 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30437)]
30438pub fn vmovn_u32(a: uint32x4_t) -> uint16x4_t {
30439 unsafe { simd_cast(a) }
30440}
30441#[doc = "Vector narrow integer."]
30442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u64)"]
30443#[inline(always)]
30444#[target_feature(enable = "neon")]
30445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30446#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30447#[cfg_attr(
30448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30449 assert_instr(xtn)
30450)]
30451#[cfg_attr(
30452 not(target_arch = "arm"),
30453 stable(feature = "neon_intrinsics", since = "1.59.0")
30454)]
30455#[cfg_attr(
30456 target_arch = "arm",
30457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30458)]
30459pub fn vmovn_u64(a: uint64x2_t) -> uint32x2_t {
30460 unsafe { simd_cast(a) }
30461}
30462#[doc = "Multiply"]
30463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_f16)"]
30464#[inline(always)]
30465#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
30466#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f16"))]
30467#[cfg_attr(
30468 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30469 assert_instr(fmul)
30470)]
30471#[target_feature(enable = "neon,fp16")]
30472#[cfg_attr(
30473 not(target_arch = "arm"),
30474 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
30475)]
30476#[cfg_attr(
30477 target_arch = "arm",
30478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30479)]
30480#[cfg(not(target_arch = "arm64ec"))]
30481pub fn vmul_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
30482 unsafe { simd_mul(a, b) }
30483}
30484#[doc = "Multiply"]
30485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_f16)"]
30486#[inline(always)]
30487#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
30488#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f16"))]
30489#[cfg_attr(
30490 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30491 assert_instr(fmul)
30492)]
30493#[target_feature(enable = "neon,fp16")]
30494#[cfg_attr(
30495 not(target_arch = "arm"),
30496 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
30497)]
30498#[cfg_attr(
30499 target_arch = "arm",
30500 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30501)]
30502#[cfg(not(target_arch = "arm64ec"))]
30503pub fn vmulq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
30504 unsafe { simd_mul(a, b) }
30505}
30506#[doc = "Multiply"]
30507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_f32)"]
30508#[inline(always)]
30509#[target_feature(enable = "neon")]
30510#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30511#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f32"))]
30512#[cfg_attr(
30513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30514 assert_instr(fmul)
30515)]
30516#[cfg_attr(
30517 not(target_arch = "arm"),
30518 stable(feature = "neon_intrinsics", since = "1.59.0")
30519)]
30520#[cfg_attr(
30521 target_arch = "arm",
30522 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30523)]
30524pub fn vmul_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
30525 unsafe { simd_mul(a, b) }
30526}
30527#[doc = "Multiply"]
30528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_f32)"]
30529#[inline(always)]
30530#[target_feature(enable = "neon")]
30531#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30532#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f32"))]
30533#[cfg_attr(
30534 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30535 assert_instr(fmul)
30536)]
30537#[cfg_attr(
30538 not(target_arch = "arm"),
30539 stable(feature = "neon_intrinsics", since = "1.59.0")
30540)]
30541#[cfg_attr(
30542 target_arch = "arm",
30543 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30544)]
30545pub fn vmulq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
30546 unsafe { simd_mul(a, b) }
30547}
30548#[doc = "Multiply"]
30549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_f16)"]
30550#[inline(always)]
30551#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
30552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30553#[cfg_attr(
30554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30555 assert_instr(fmul, LANE = 1)
30556)]
30557#[rustc_legacy_const_generics(2)]
30558#[target_feature(enable = "neon,fp16")]
30559#[cfg_attr(
30560 not(target_arch = "arm"),
30561 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
30562)]
30563#[cfg_attr(
30564 target_arch = "arm",
30565 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30566)]
30567#[cfg(not(target_arch = "arm64ec"))]
30568pub fn vmul_lane_f16<const LANE: i32>(a: float16x4_t, v: float16x4_t) -> float16x4_t {
30569 static_assert_uimm_bits!(LANE, 2);
30570 unsafe {
30571 simd_mul(
30572 a,
30573 simd_shuffle!(v, v, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30574 )
30575 }
30576}
30577#[doc = "Multiply"]
30578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_f16)"]
30579#[inline(always)]
30580#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
30581#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30582#[cfg_attr(
30583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30584 assert_instr(fmul, LANE = 1)
30585)]
30586#[rustc_legacy_const_generics(2)]
30587#[target_feature(enable = "neon,fp16")]
30588#[cfg_attr(
30589 not(target_arch = "arm"),
30590 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
30591)]
30592#[cfg_attr(
30593 target_arch = "arm",
30594 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30595)]
30596#[cfg(not(target_arch = "arm64ec"))]
30597pub fn vmulq_lane_f16<const LANE: i32>(a: float16x8_t, v: float16x4_t) -> float16x8_t {
30598 static_assert_uimm_bits!(LANE, 2);
30599 unsafe {
30600 simd_mul(
30601 a,
30602 simd_shuffle!(
30603 v,
30604 v,
30605 [
30606 LANE as u32,
30607 LANE as u32,
30608 LANE as u32,
30609 LANE as u32,
30610 LANE as u32,
30611 LANE as u32,
30612 LANE as u32,
30613 LANE as u32
30614 ]
30615 ),
30616 )
30617 }
30618}
30619#[doc = "Floating-point multiply"]
30620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_f32)"]
30621#[inline(always)]
30622#[target_feature(enable = "neon")]
30623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30624#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
30625#[cfg_attr(
30626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30627 assert_instr(fmul, LANE = 0)
30628)]
30629#[rustc_legacy_const_generics(2)]
30630#[cfg_attr(
30631 not(target_arch = "arm"),
30632 stable(feature = "neon_intrinsics", since = "1.59.0")
30633)]
30634#[cfg_attr(
30635 target_arch = "arm",
30636 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30637)]
30638pub fn vmul_lane_f32<const LANE: i32>(a: float32x2_t, b: float32x2_t) -> float32x2_t {
30639 static_assert_uimm_bits!(LANE, 1);
30640 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
30641}
30642#[doc = "Floating-point multiply"]
30643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_f32)"]
30644#[inline(always)]
30645#[target_feature(enable = "neon")]
30646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30647#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
30648#[cfg_attr(
30649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30650 assert_instr(fmul, LANE = 0)
30651)]
30652#[rustc_legacy_const_generics(2)]
30653#[cfg_attr(
30654 not(target_arch = "arm"),
30655 stable(feature = "neon_intrinsics", since = "1.59.0")
30656)]
30657#[cfg_attr(
30658 target_arch = "arm",
30659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30660)]
30661pub fn vmul_laneq_f32<const LANE: i32>(a: float32x2_t, b: float32x4_t) -> float32x2_t {
30662 static_assert_uimm_bits!(LANE, 2);
30663 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
30664}
30665#[doc = "Floating-point multiply"]
30666#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_f32)"]
30667#[inline(always)]
30668#[target_feature(enable = "neon")]
30669#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30670#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
30671#[cfg_attr(
30672 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30673 assert_instr(fmul, LANE = 0)
30674)]
30675#[rustc_legacy_const_generics(2)]
30676#[cfg_attr(
30677 not(target_arch = "arm"),
30678 stable(feature = "neon_intrinsics", since = "1.59.0")
30679)]
30680#[cfg_attr(
30681 target_arch = "arm",
30682 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30683)]
30684pub fn vmulq_lane_f32<const LANE: i32>(a: float32x4_t, b: float32x2_t) -> float32x4_t {
30685 static_assert_uimm_bits!(LANE, 1);
30686 unsafe {
30687 simd_mul(
30688 a,
30689 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30690 )
30691 }
30692}
30693#[doc = "Floating-point multiply"]
30694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_f32)"]
30695#[inline(always)]
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(vmul, LANE = 0))]
30699#[cfg_attr(
30700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30701 assert_instr(fmul, LANE = 0)
30702)]
30703#[rustc_legacy_const_generics(2)]
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 vmulq_laneq_f32<const LANE: i32>(a: float32x4_t, b: float32x4_t) -> float32x4_t {
30713 static_assert_uimm_bits!(LANE, 2);
30714 unsafe {
30715 simd_mul(
30716 a,
30717 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30718 )
30719 }
30720}
30721#[doc = "Multiply"]
30722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_s16)"]
30723#[inline(always)]
30724#[target_feature(enable = "neon")]
30725#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30726#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30727#[cfg_attr(
30728 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30729 assert_instr(mul, LANE = 1)
30730)]
30731#[rustc_legacy_const_generics(2)]
30732#[cfg_attr(
30733 not(target_arch = "arm"),
30734 stable(feature = "neon_intrinsics", since = "1.59.0")
30735)]
30736#[cfg_attr(
30737 target_arch = "arm",
30738 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30739)]
30740pub fn vmul_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
30741 static_assert_uimm_bits!(LANE, 2);
30742 unsafe {
30743 simd_mul(
30744 a,
30745 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30746 )
30747 }
30748}
30749#[doc = "Multiply"]
30750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_s16)"]
30751#[inline(always)]
30752#[target_feature(enable = "neon")]
30753#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30754#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30755#[cfg_attr(
30756 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30757 assert_instr(mul, LANE = 1)
30758)]
30759#[rustc_legacy_const_generics(2)]
30760#[cfg_attr(
30761 not(target_arch = "arm"),
30762 stable(feature = "neon_intrinsics", since = "1.59.0")
30763)]
30764#[cfg_attr(
30765 target_arch = "arm",
30766 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30767)]
30768pub fn vmulq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x4_t) -> int16x8_t {
30769 static_assert_uimm_bits!(LANE, 2);
30770 unsafe {
30771 simd_mul(
30772 a,
30773 simd_shuffle!(
30774 b,
30775 b,
30776 [
30777 LANE as u32,
30778 LANE as u32,
30779 LANE as u32,
30780 LANE as u32,
30781 LANE as u32,
30782 LANE as u32,
30783 LANE as u32,
30784 LANE as u32
30785 ]
30786 ),
30787 )
30788 }
30789}
30790#[doc = "Multiply"]
30791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_s32)"]
30792#[inline(always)]
30793#[target_feature(enable = "neon")]
30794#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30795#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30796#[cfg_attr(
30797 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30798 assert_instr(mul, LANE = 1)
30799)]
30800#[rustc_legacy_const_generics(2)]
30801#[cfg_attr(
30802 not(target_arch = "arm"),
30803 stable(feature = "neon_intrinsics", since = "1.59.0")
30804)]
30805#[cfg_attr(
30806 target_arch = "arm",
30807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30808)]
30809pub fn vmul_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
30810 static_assert_uimm_bits!(LANE, 1);
30811 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
30812}
30813#[doc = "Multiply"]
30814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_s32)"]
30815#[inline(always)]
30816#[target_feature(enable = "neon")]
30817#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30818#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30819#[cfg_attr(
30820 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30821 assert_instr(mul, LANE = 1)
30822)]
30823#[rustc_legacy_const_generics(2)]
30824#[cfg_attr(
30825 not(target_arch = "arm"),
30826 stable(feature = "neon_intrinsics", since = "1.59.0")
30827)]
30828#[cfg_attr(
30829 target_arch = "arm",
30830 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30831)]
30832pub fn vmulq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x2_t) -> int32x4_t {
30833 static_assert_uimm_bits!(LANE, 1);
30834 unsafe {
30835 simd_mul(
30836 a,
30837 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30838 )
30839 }
30840}
30841#[doc = "Multiply"]
30842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_u16)"]
30843#[inline(always)]
30844#[target_feature(enable = "neon")]
30845#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30846#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30847#[cfg_attr(
30848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30849 assert_instr(mul, LANE = 1)
30850)]
30851#[rustc_legacy_const_generics(2)]
30852#[cfg_attr(
30853 not(target_arch = "arm"),
30854 stable(feature = "neon_intrinsics", since = "1.59.0")
30855)]
30856#[cfg_attr(
30857 target_arch = "arm",
30858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30859)]
30860pub fn vmul_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
30861 static_assert_uimm_bits!(LANE, 2);
30862 unsafe {
30863 simd_mul(
30864 a,
30865 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30866 )
30867 }
30868}
30869#[doc = "Multiply"]
30870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_u16)"]
30871#[inline(always)]
30872#[target_feature(enable = "neon")]
30873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30874#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30875#[cfg_attr(
30876 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30877 assert_instr(mul, LANE = 1)
30878)]
30879#[rustc_legacy_const_generics(2)]
30880#[cfg_attr(
30881 not(target_arch = "arm"),
30882 stable(feature = "neon_intrinsics", since = "1.59.0")
30883)]
30884#[cfg_attr(
30885 target_arch = "arm",
30886 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30887)]
30888pub fn vmulq_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x4_t) -> uint16x8_t {
30889 static_assert_uimm_bits!(LANE, 2);
30890 unsafe {
30891 simd_mul(
30892 a,
30893 simd_shuffle!(
30894 b,
30895 b,
30896 [
30897 LANE as u32,
30898 LANE as u32,
30899 LANE as u32,
30900 LANE as u32,
30901 LANE as u32,
30902 LANE as u32,
30903 LANE as u32,
30904 LANE as u32
30905 ]
30906 ),
30907 )
30908 }
30909}
30910#[doc = "Multiply"]
30911#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_u32)"]
30912#[inline(always)]
30913#[target_feature(enable = "neon")]
30914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30915#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30916#[cfg_attr(
30917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30918 assert_instr(mul, LANE = 1)
30919)]
30920#[rustc_legacy_const_generics(2)]
30921#[cfg_attr(
30922 not(target_arch = "arm"),
30923 stable(feature = "neon_intrinsics", since = "1.59.0")
30924)]
30925#[cfg_attr(
30926 target_arch = "arm",
30927 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30928)]
30929pub fn vmul_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
30930 static_assert_uimm_bits!(LANE, 1);
30931 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
30932}
30933#[doc = "Multiply"]
30934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_u32)"]
30935#[inline(always)]
30936#[target_feature(enable = "neon")]
30937#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30938#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30939#[cfg_attr(
30940 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30941 assert_instr(mul, LANE = 1)
30942)]
30943#[rustc_legacy_const_generics(2)]
30944#[cfg_attr(
30945 not(target_arch = "arm"),
30946 stable(feature = "neon_intrinsics", since = "1.59.0")
30947)]
30948#[cfg_attr(
30949 target_arch = "arm",
30950 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30951)]
30952pub fn vmulq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x2_t) -> uint32x4_t {
30953 static_assert_uimm_bits!(LANE, 1);
30954 unsafe {
30955 simd_mul(
30956 a,
30957 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30958 )
30959 }
30960}
30961#[doc = "Multiply"]
30962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_s16)"]
30963#[inline(always)]
30964#[target_feature(enable = "neon")]
30965#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30966#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30967#[cfg_attr(
30968 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30969 assert_instr(mul, LANE = 1)
30970)]
30971#[rustc_legacy_const_generics(2)]
30972#[cfg_attr(
30973 not(target_arch = "arm"),
30974 stable(feature = "neon_intrinsics", since = "1.59.0")
30975)]
30976#[cfg_attr(
30977 target_arch = "arm",
30978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30979)]
30980pub fn vmul_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
30981 static_assert_uimm_bits!(LANE, 3);
30982 unsafe {
30983 simd_mul(
30984 a,
30985 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30986 )
30987 }
30988}
30989#[doc = "Multiply"]
30990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_s16)"]
30991#[inline(always)]
30992#[target_feature(enable = "neon")]
30993#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30994#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30995#[cfg_attr(
30996 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30997 assert_instr(mul, LANE = 1)
30998)]
30999#[rustc_legacy_const_generics(2)]
31000#[cfg_attr(
31001 not(target_arch = "arm"),
31002 stable(feature = "neon_intrinsics", since = "1.59.0")
31003)]
31004#[cfg_attr(
31005 target_arch = "arm",
31006 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31007)]
31008pub fn vmulq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
31009 static_assert_uimm_bits!(LANE, 3);
31010 unsafe {
31011 simd_mul(
31012 a,
31013 simd_shuffle!(
31014 b,
31015 b,
31016 [
31017 LANE as u32,
31018 LANE as u32,
31019 LANE as u32,
31020 LANE as u32,
31021 LANE as u32,
31022 LANE as u32,
31023 LANE as u32,
31024 LANE as u32
31025 ]
31026 ),
31027 )
31028 }
31029}
31030#[doc = "Multiply"]
31031#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_s32)"]
31032#[inline(always)]
31033#[target_feature(enable = "neon")]
31034#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31035#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
31036#[cfg_attr(
31037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31038 assert_instr(mul, LANE = 1)
31039)]
31040#[rustc_legacy_const_generics(2)]
31041#[cfg_attr(
31042 not(target_arch = "arm"),
31043 stable(feature = "neon_intrinsics", since = "1.59.0")
31044)]
31045#[cfg_attr(
31046 target_arch = "arm",
31047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31048)]
31049pub fn vmul_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
31050 static_assert_uimm_bits!(LANE, 2);
31051 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31052}
31053#[doc = "Multiply"]
31054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_s32)"]
31055#[inline(always)]
31056#[target_feature(enable = "neon")]
31057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
31059#[cfg_attr(
31060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31061 assert_instr(mul, LANE = 1)
31062)]
31063#[rustc_legacy_const_generics(2)]
31064#[cfg_attr(
31065 not(target_arch = "arm"),
31066 stable(feature = "neon_intrinsics", since = "1.59.0")
31067)]
31068#[cfg_attr(
31069 target_arch = "arm",
31070 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31071)]
31072pub fn vmulq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
31073 static_assert_uimm_bits!(LANE, 2);
31074 unsafe {
31075 simd_mul(
31076 a,
31077 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31078 )
31079 }
31080}
31081#[doc = "Multiply"]
31082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_u16)"]
31083#[inline(always)]
31084#[target_feature(enable = "neon")]
31085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31086#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
31087#[cfg_attr(
31088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31089 assert_instr(mul, LANE = 1)
31090)]
31091#[rustc_legacy_const_generics(2)]
31092#[cfg_attr(
31093 not(target_arch = "arm"),
31094 stable(feature = "neon_intrinsics", since = "1.59.0")
31095)]
31096#[cfg_attr(
31097 target_arch = "arm",
31098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31099)]
31100pub fn vmul_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x8_t) -> uint16x4_t {
31101 static_assert_uimm_bits!(LANE, 3);
31102 unsafe {
31103 simd_mul(
31104 a,
31105 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31106 )
31107 }
31108}
31109#[doc = "Multiply"]
31110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_u16)"]
31111#[inline(always)]
31112#[target_feature(enable = "neon")]
31113#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31114#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
31115#[cfg_attr(
31116 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31117 assert_instr(mul, LANE = 1)
31118)]
31119#[rustc_legacy_const_generics(2)]
31120#[cfg_attr(
31121 not(target_arch = "arm"),
31122 stable(feature = "neon_intrinsics", since = "1.59.0")
31123)]
31124#[cfg_attr(
31125 target_arch = "arm",
31126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31127)]
31128pub fn vmulq_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
31129 static_assert_uimm_bits!(LANE, 3);
31130 unsafe {
31131 simd_mul(
31132 a,
31133 simd_shuffle!(
31134 b,
31135 b,
31136 [
31137 LANE as u32,
31138 LANE as u32,
31139 LANE as u32,
31140 LANE as u32,
31141 LANE as u32,
31142 LANE as u32,
31143 LANE as u32,
31144 LANE as u32
31145 ]
31146 ),
31147 )
31148 }
31149}
31150#[doc = "Multiply"]
31151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_u32)"]
31152#[inline(always)]
31153#[target_feature(enable = "neon")]
31154#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31155#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
31156#[cfg_attr(
31157 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31158 assert_instr(mul, LANE = 1)
31159)]
31160#[rustc_legacy_const_generics(2)]
31161#[cfg_attr(
31162 not(target_arch = "arm"),
31163 stable(feature = "neon_intrinsics", since = "1.59.0")
31164)]
31165#[cfg_attr(
31166 target_arch = "arm",
31167 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31168)]
31169pub fn vmul_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x4_t) -> uint32x2_t {
31170 static_assert_uimm_bits!(LANE, 2);
31171 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31172}
31173#[doc = "Multiply"]
31174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_u32)"]
31175#[inline(always)]
31176#[target_feature(enable = "neon")]
31177#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31178#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
31179#[cfg_attr(
31180 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31181 assert_instr(mul, LANE = 1)
31182)]
31183#[rustc_legacy_const_generics(2)]
31184#[cfg_attr(
31185 not(target_arch = "arm"),
31186 stable(feature = "neon_intrinsics", since = "1.59.0")
31187)]
31188#[cfg_attr(
31189 target_arch = "arm",
31190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31191)]
31192pub fn vmulq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
31193 static_assert_uimm_bits!(LANE, 2);
31194 unsafe {
31195 simd_mul(
31196 a,
31197 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31198 )
31199 }
31200}
31201#[doc = "Vector multiply by scalar"]
31202#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_f16)"]
31203#[inline(always)]
31204#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
31205#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31206#[cfg_attr(
31207 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31208 assert_instr(fmul)
31209)]
31210#[target_feature(enable = "neon,fp16")]
31211#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
31212#[cfg(not(target_arch = "arm64ec"))]
31213pub fn vmul_n_f16(a: float16x4_t, b: f16) -> float16x4_t {
31214 unsafe { simd_mul(a, vdup_n_f16(b)) }
31215}
31216#[doc = "Vector multiply by scalar"]
31217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_f16)"]
31218#[inline(always)]
31219#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
31220#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31221#[cfg_attr(
31222 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31223 assert_instr(fmul)
31224)]
31225#[target_feature(enable = "neon,fp16")]
31226#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
31227#[cfg(not(target_arch = "arm64ec"))]
31228pub fn vmulq_n_f16(a: float16x8_t, b: f16) -> float16x8_t {
31229 unsafe { simd_mul(a, vdupq_n_f16(b)) }
31230}
31231#[doc = "Vector multiply by scalar"]
31232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_f32)"]
31233#[inline(always)]
31234#[target_feature(enable = "neon")]
31235#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31236#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31237#[cfg_attr(
31238 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31239 assert_instr(fmul)
31240)]
31241#[cfg_attr(
31242 not(target_arch = "arm"),
31243 stable(feature = "neon_intrinsics", since = "1.59.0")
31244)]
31245#[cfg_attr(
31246 target_arch = "arm",
31247 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31248)]
31249pub fn vmul_n_f32(a: float32x2_t, b: f32) -> float32x2_t {
31250 unsafe { simd_mul(a, vdup_n_f32(b)) }
31251}
31252#[doc = "Vector multiply by scalar"]
31253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_f32)"]
31254#[inline(always)]
31255#[target_feature(enable = "neon")]
31256#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31257#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31258#[cfg_attr(
31259 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31260 assert_instr(fmul)
31261)]
31262#[cfg_attr(
31263 not(target_arch = "arm"),
31264 stable(feature = "neon_intrinsics", since = "1.59.0")
31265)]
31266#[cfg_attr(
31267 target_arch = "arm",
31268 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31269)]
31270pub fn vmulq_n_f32(a: float32x4_t, b: f32) -> float32x4_t {
31271 unsafe { simd_mul(a, vdupq_n_f32(b)) }
31272}
31273#[doc = "Vector multiply by scalar"]
31274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_s16)"]
31275#[inline(always)]
31276#[target_feature(enable = "neon")]
31277#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31278#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31279#[cfg_attr(
31280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31281 assert_instr(mul)
31282)]
31283#[cfg_attr(
31284 not(target_arch = "arm"),
31285 stable(feature = "neon_intrinsics", since = "1.59.0")
31286)]
31287#[cfg_attr(
31288 target_arch = "arm",
31289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31290)]
31291pub fn vmul_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
31292 unsafe { simd_mul(a, vdup_n_s16(b)) }
31293}
31294#[doc = "Vector multiply by scalar"]
31295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_s16)"]
31296#[inline(always)]
31297#[target_feature(enable = "neon")]
31298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31299#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31300#[cfg_attr(
31301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31302 assert_instr(mul)
31303)]
31304#[cfg_attr(
31305 not(target_arch = "arm"),
31306 stable(feature = "neon_intrinsics", since = "1.59.0")
31307)]
31308#[cfg_attr(
31309 target_arch = "arm",
31310 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31311)]
31312pub fn vmulq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
31313 unsafe { simd_mul(a, vdupq_n_s16(b)) }
31314}
31315#[doc = "Vector multiply by scalar"]
31316#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_s32)"]
31317#[inline(always)]
31318#[target_feature(enable = "neon")]
31319#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31320#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31321#[cfg_attr(
31322 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31323 assert_instr(mul)
31324)]
31325#[cfg_attr(
31326 not(target_arch = "arm"),
31327 stable(feature = "neon_intrinsics", since = "1.59.0")
31328)]
31329#[cfg_attr(
31330 target_arch = "arm",
31331 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31332)]
31333pub fn vmul_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
31334 unsafe { simd_mul(a, vdup_n_s32(b)) }
31335}
31336#[doc = "Vector multiply by scalar"]
31337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_s32)"]
31338#[inline(always)]
31339#[target_feature(enable = "neon")]
31340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31342#[cfg_attr(
31343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31344 assert_instr(mul)
31345)]
31346#[cfg_attr(
31347 not(target_arch = "arm"),
31348 stable(feature = "neon_intrinsics", since = "1.59.0")
31349)]
31350#[cfg_attr(
31351 target_arch = "arm",
31352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31353)]
31354pub fn vmulq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
31355 unsafe { simd_mul(a, vdupq_n_s32(b)) }
31356}
31357#[doc = "Vector multiply by scalar"]
31358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_u16)"]
31359#[inline(always)]
31360#[target_feature(enable = "neon")]
31361#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31362#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31363#[cfg_attr(
31364 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31365 assert_instr(mul)
31366)]
31367#[cfg_attr(
31368 not(target_arch = "arm"),
31369 stable(feature = "neon_intrinsics", since = "1.59.0")
31370)]
31371#[cfg_attr(
31372 target_arch = "arm",
31373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31374)]
31375pub fn vmul_n_u16(a: uint16x4_t, b: u16) -> uint16x4_t {
31376 unsafe { simd_mul(a, vdup_n_u16(b)) }
31377}
31378#[doc = "Vector multiply by scalar"]
31379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_u16)"]
31380#[inline(always)]
31381#[target_feature(enable = "neon")]
31382#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31383#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31384#[cfg_attr(
31385 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31386 assert_instr(mul)
31387)]
31388#[cfg_attr(
31389 not(target_arch = "arm"),
31390 stable(feature = "neon_intrinsics", since = "1.59.0")
31391)]
31392#[cfg_attr(
31393 target_arch = "arm",
31394 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31395)]
31396pub fn vmulq_n_u16(a: uint16x8_t, b: u16) -> uint16x8_t {
31397 unsafe { simd_mul(a, vdupq_n_u16(b)) }
31398}
31399#[doc = "Vector multiply by scalar"]
31400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_u32)"]
31401#[inline(always)]
31402#[target_feature(enable = "neon")]
31403#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31404#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31405#[cfg_attr(
31406 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31407 assert_instr(mul)
31408)]
31409#[cfg_attr(
31410 not(target_arch = "arm"),
31411 stable(feature = "neon_intrinsics", since = "1.59.0")
31412)]
31413#[cfg_attr(
31414 target_arch = "arm",
31415 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31416)]
31417pub fn vmul_n_u32(a: uint32x2_t, b: u32) -> uint32x2_t {
31418 unsafe { simd_mul(a, vdup_n_u32(b)) }
31419}
31420#[doc = "Vector multiply by scalar"]
31421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_u32)"]
31422#[inline(always)]
31423#[target_feature(enable = "neon")]
31424#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31425#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31426#[cfg_attr(
31427 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31428 assert_instr(mul)
31429)]
31430#[cfg_attr(
31431 not(target_arch = "arm"),
31432 stable(feature = "neon_intrinsics", since = "1.59.0")
31433)]
31434#[cfg_attr(
31435 target_arch = "arm",
31436 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31437)]
31438pub fn vmulq_n_u32(a: uint32x4_t, b: u32) -> uint32x4_t {
31439 unsafe { simd_mul(a, vdupq_n_u32(b)) }
31440}
31441#[doc = "Polynomial multiply"]
31442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_p8)"]
31443#[inline(always)]
31444#[target_feature(enable = "neon")]
31445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31446#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31447#[cfg_attr(
31448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31449 assert_instr(pmul)
31450)]
31451#[cfg_attr(
31452 not(target_arch = "arm"),
31453 stable(feature = "neon_intrinsics", since = "1.59.0")
31454)]
31455#[cfg_attr(
31456 target_arch = "arm",
31457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31458)]
31459pub fn vmul_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
31460 unsafe extern "unadjusted" {
31461 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulp.v8i8")]
31462 #[cfg_attr(
31463 any(target_arch = "aarch64", target_arch = "arm64ec"),
31464 link_name = "llvm.aarch64.neon.pmul.v8i8"
31465 )]
31466 fn _vmul_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t;
31467 }
31468 unsafe { _vmul_p8(a, b) }
31469}
31470#[doc = "Polynomial multiply"]
31471#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_p8)"]
31472#[inline(always)]
31473#[target_feature(enable = "neon")]
31474#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31475#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31476#[cfg_attr(
31477 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31478 assert_instr(pmul)
31479)]
31480#[cfg_attr(
31481 not(target_arch = "arm"),
31482 stable(feature = "neon_intrinsics", since = "1.59.0")
31483)]
31484#[cfg_attr(
31485 target_arch = "arm",
31486 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31487)]
31488pub fn vmulq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
31489 unsafe extern "unadjusted" {
31490 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulp.v16i8")]
31491 #[cfg_attr(
31492 any(target_arch = "aarch64", target_arch = "arm64ec"),
31493 link_name = "llvm.aarch64.neon.pmul.v16i8"
31494 )]
31495 fn _vmulq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t;
31496 }
31497 unsafe { _vmulq_p8(a, b) }
31498}
31499#[doc = "Multiply"]
31500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s16)"]
31501#[inline(always)]
31502#[target_feature(enable = "neon")]
31503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31504#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
31505#[cfg_attr(
31506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31507 assert_instr(mul)
31508)]
31509#[cfg_attr(
31510 not(target_arch = "arm"),
31511 stable(feature = "neon_intrinsics", since = "1.59.0")
31512)]
31513#[cfg_attr(
31514 target_arch = "arm",
31515 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31516)]
31517pub fn vmul_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
31518 unsafe { simd_mul(a, b) }
31519}
31520#[doc = "Multiply"]
31521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s16)"]
31522#[inline(always)]
31523#[target_feature(enable = "neon")]
31524#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31525#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
31526#[cfg_attr(
31527 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31528 assert_instr(mul)
31529)]
31530#[cfg_attr(
31531 not(target_arch = "arm"),
31532 stable(feature = "neon_intrinsics", since = "1.59.0")
31533)]
31534#[cfg_attr(
31535 target_arch = "arm",
31536 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31537)]
31538pub fn vmulq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
31539 unsafe { simd_mul(a, b) }
31540}
31541#[doc = "Multiply"]
31542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u16)"]
31543#[inline(always)]
31544#[target_feature(enable = "neon")]
31545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31546#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
31547#[cfg_attr(
31548 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31549 assert_instr(mul)
31550)]
31551#[cfg_attr(
31552 not(target_arch = "arm"),
31553 stable(feature = "neon_intrinsics", since = "1.59.0")
31554)]
31555#[cfg_attr(
31556 target_arch = "arm",
31557 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31558)]
31559pub fn vmul_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
31560 unsafe { simd_mul(a, b) }
31561}
31562#[doc = "Multiply"]
31563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u16)"]
31564#[inline(always)]
31565#[target_feature(enable = "neon")]
31566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31567#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
31568#[cfg_attr(
31569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31570 assert_instr(mul)
31571)]
31572#[cfg_attr(
31573 not(target_arch = "arm"),
31574 stable(feature = "neon_intrinsics", since = "1.59.0")
31575)]
31576#[cfg_attr(
31577 target_arch = "arm",
31578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31579)]
31580pub fn vmulq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
31581 unsafe { simd_mul(a, b) }
31582}
31583#[doc = "Multiply"]
31584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s32)"]
31585#[inline(always)]
31586#[target_feature(enable = "neon")]
31587#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31588#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
31589#[cfg_attr(
31590 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31591 assert_instr(mul)
31592)]
31593#[cfg_attr(
31594 not(target_arch = "arm"),
31595 stable(feature = "neon_intrinsics", since = "1.59.0")
31596)]
31597#[cfg_attr(
31598 target_arch = "arm",
31599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31600)]
31601pub fn vmul_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
31602 unsafe { simd_mul(a, b) }
31603}
31604#[doc = "Multiply"]
31605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s32)"]
31606#[inline(always)]
31607#[target_feature(enable = "neon")]
31608#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31609#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
31610#[cfg_attr(
31611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31612 assert_instr(mul)
31613)]
31614#[cfg_attr(
31615 not(target_arch = "arm"),
31616 stable(feature = "neon_intrinsics", since = "1.59.0")
31617)]
31618#[cfg_attr(
31619 target_arch = "arm",
31620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31621)]
31622pub fn vmulq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
31623 unsafe { simd_mul(a, b) }
31624}
31625#[doc = "Multiply"]
31626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u32)"]
31627#[inline(always)]
31628#[target_feature(enable = "neon")]
31629#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31630#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
31631#[cfg_attr(
31632 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31633 assert_instr(mul)
31634)]
31635#[cfg_attr(
31636 not(target_arch = "arm"),
31637 stable(feature = "neon_intrinsics", since = "1.59.0")
31638)]
31639#[cfg_attr(
31640 target_arch = "arm",
31641 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31642)]
31643pub fn vmul_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
31644 unsafe { simd_mul(a, b) }
31645}
31646#[doc = "Multiply"]
31647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u32)"]
31648#[inline(always)]
31649#[target_feature(enable = "neon")]
31650#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31651#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
31652#[cfg_attr(
31653 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31654 assert_instr(mul)
31655)]
31656#[cfg_attr(
31657 not(target_arch = "arm"),
31658 stable(feature = "neon_intrinsics", since = "1.59.0")
31659)]
31660#[cfg_attr(
31661 target_arch = "arm",
31662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31663)]
31664pub fn vmulq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
31665 unsafe { simd_mul(a, b) }
31666}
31667#[doc = "Multiply"]
31668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s8)"]
31669#[inline(always)]
31670#[target_feature(enable = "neon")]
31671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31672#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
31673#[cfg_attr(
31674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31675 assert_instr(mul)
31676)]
31677#[cfg_attr(
31678 not(target_arch = "arm"),
31679 stable(feature = "neon_intrinsics", since = "1.59.0")
31680)]
31681#[cfg_attr(
31682 target_arch = "arm",
31683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31684)]
31685pub fn vmul_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
31686 unsafe { simd_mul(a, b) }
31687}
31688#[doc = "Multiply"]
31689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s8)"]
31690#[inline(always)]
31691#[target_feature(enable = "neon")]
31692#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31693#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
31694#[cfg_attr(
31695 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31696 assert_instr(mul)
31697)]
31698#[cfg_attr(
31699 not(target_arch = "arm"),
31700 stable(feature = "neon_intrinsics", since = "1.59.0")
31701)]
31702#[cfg_attr(
31703 target_arch = "arm",
31704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31705)]
31706pub fn vmulq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
31707 unsafe { simd_mul(a, b) }
31708}
31709#[doc = "Multiply"]
31710#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u8)"]
31711#[inline(always)]
31712#[target_feature(enable = "neon")]
31713#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31714#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
31715#[cfg_attr(
31716 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31717 assert_instr(mul)
31718)]
31719#[cfg_attr(
31720 not(target_arch = "arm"),
31721 stable(feature = "neon_intrinsics", since = "1.59.0")
31722)]
31723#[cfg_attr(
31724 target_arch = "arm",
31725 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31726)]
31727pub fn vmul_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
31728 unsafe { simd_mul(a, b) }
31729}
31730#[doc = "Multiply"]
31731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u8)"]
31732#[inline(always)]
31733#[target_feature(enable = "neon")]
31734#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31735#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
31736#[cfg_attr(
31737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31738 assert_instr(mul)
31739)]
31740#[cfg_attr(
31741 not(target_arch = "arm"),
31742 stable(feature = "neon_intrinsics", since = "1.59.0")
31743)]
31744#[cfg_attr(
31745 target_arch = "arm",
31746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31747)]
31748pub fn vmulq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
31749 unsafe { simd_mul(a, b) }
31750}
31751#[doc = "Vector long multiply by scalar"]
31752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_s16)"]
31753#[inline(always)]
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(vmull, LANE = 1))]
31757#[cfg_attr(
31758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31759 assert_instr(smull, LANE = 1)
31760)]
31761#[rustc_legacy_const_generics(2)]
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 vmull_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int32x4_t {
31771 static_assert_uimm_bits!(LANE, 2);
31772 unsafe {
31773 vmull_s16(
31774 a,
31775 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31776 )
31777 }
31778}
31779#[doc = "Vector long multiply by scalar"]
31780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_s16)"]
31781#[inline(always)]
31782#[target_feature(enable = "neon")]
31783#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31784#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31785#[cfg_attr(
31786 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31787 assert_instr(smull, LANE = 1)
31788)]
31789#[rustc_legacy_const_generics(2)]
31790#[cfg_attr(
31791 not(target_arch = "arm"),
31792 stable(feature = "neon_intrinsics", since = "1.59.0")
31793)]
31794#[cfg_attr(
31795 target_arch = "arm",
31796 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31797)]
31798pub fn vmull_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int32x4_t {
31799 static_assert_uimm_bits!(LANE, 3);
31800 unsafe {
31801 vmull_s16(
31802 a,
31803 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31804 )
31805 }
31806}
31807#[doc = "Vector long multiply by scalar"]
31808#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_s32)"]
31809#[inline(always)]
31810#[target_feature(enable = "neon")]
31811#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31812#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31813#[cfg_attr(
31814 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31815 assert_instr(smull, LANE = 1)
31816)]
31817#[rustc_legacy_const_generics(2)]
31818#[cfg_attr(
31819 not(target_arch = "arm"),
31820 stable(feature = "neon_intrinsics", since = "1.59.0")
31821)]
31822#[cfg_attr(
31823 target_arch = "arm",
31824 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31825)]
31826pub fn vmull_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int64x2_t {
31827 static_assert_uimm_bits!(LANE, 1);
31828 unsafe { vmull_s32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31829}
31830#[doc = "Vector long multiply by scalar"]
31831#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_s32)"]
31832#[inline(always)]
31833#[target_feature(enable = "neon")]
31834#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31835#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31836#[cfg_attr(
31837 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31838 assert_instr(smull, LANE = 1)
31839)]
31840#[rustc_legacy_const_generics(2)]
31841#[cfg_attr(
31842 not(target_arch = "arm"),
31843 stable(feature = "neon_intrinsics", since = "1.59.0")
31844)]
31845#[cfg_attr(
31846 target_arch = "arm",
31847 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31848)]
31849pub fn vmull_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int64x2_t {
31850 static_assert_uimm_bits!(LANE, 2);
31851 unsafe { vmull_s32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31852}
31853#[doc = "Vector long multiply by scalar"]
31854#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_u16)"]
31855#[inline(always)]
31856#[target_feature(enable = "neon")]
31857#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31858#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31859#[cfg_attr(
31860 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31861 assert_instr(umull, LANE = 1)
31862)]
31863#[rustc_legacy_const_generics(2)]
31864#[cfg_attr(
31865 not(target_arch = "arm"),
31866 stable(feature = "neon_intrinsics", since = "1.59.0")
31867)]
31868#[cfg_attr(
31869 target_arch = "arm",
31870 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31871)]
31872pub fn vmull_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
31873 static_assert_uimm_bits!(LANE, 2);
31874 unsafe {
31875 vmull_u16(
31876 a,
31877 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31878 )
31879 }
31880}
31881#[doc = "Vector long multiply by scalar"]
31882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_u16)"]
31883#[inline(always)]
31884#[target_feature(enable = "neon")]
31885#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31886#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31887#[cfg_attr(
31888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31889 assert_instr(umull, LANE = 1)
31890)]
31891#[rustc_legacy_const_generics(2)]
31892#[cfg_attr(
31893 not(target_arch = "arm"),
31894 stable(feature = "neon_intrinsics", since = "1.59.0")
31895)]
31896#[cfg_attr(
31897 target_arch = "arm",
31898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31899)]
31900pub fn vmull_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x8_t) -> uint32x4_t {
31901 static_assert_uimm_bits!(LANE, 3);
31902 unsafe {
31903 vmull_u16(
31904 a,
31905 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31906 )
31907 }
31908}
31909#[doc = "Vector long multiply by scalar"]
31910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_u32)"]
31911#[inline(always)]
31912#[target_feature(enable = "neon")]
31913#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31914#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31915#[cfg_attr(
31916 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31917 assert_instr(umull, LANE = 1)
31918)]
31919#[rustc_legacy_const_generics(2)]
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 vmull_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
31929 static_assert_uimm_bits!(LANE, 1);
31930 unsafe { vmull_u32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31931}
31932#[doc = "Vector long multiply by scalar"]
31933#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_u32)"]
31934#[inline(always)]
31935#[target_feature(enable = "neon")]
31936#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31937#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31938#[cfg_attr(
31939 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31940 assert_instr(umull, LANE = 1)
31941)]
31942#[rustc_legacy_const_generics(2)]
31943#[cfg_attr(
31944 not(target_arch = "arm"),
31945 stable(feature = "neon_intrinsics", since = "1.59.0")
31946)]
31947#[cfg_attr(
31948 target_arch = "arm",
31949 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31950)]
31951pub fn vmull_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x4_t) -> uint64x2_t {
31952 static_assert_uimm_bits!(LANE, 2);
31953 unsafe { vmull_u32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31954}
31955#[doc = "Vector long multiply with scalar"]
31956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_s16)"]
31957#[inline(always)]
31958#[target_feature(enable = "neon")]
31959#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31960#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
31961#[cfg_attr(
31962 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31963 assert_instr(smull)
31964)]
31965#[cfg_attr(
31966 not(target_arch = "arm"),
31967 stable(feature = "neon_intrinsics", since = "1.59.0")
31968)]
31969#[cfg_attr(
31970 target_arch = "arm",
31971 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31972)]
31973pub fn vmull_n_s16(a: int16x4_t, b: i16) -> int32x4_t {
31974 vmull_s16(a, vdup_n_s16(b))
31975}
31976#[doc = "Vector long multiply with scalar"]
31977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_s32)"]
31978#[inline(always)]
31979#[target_feature(enable = "neon")]
31980#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31981#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
31982#[cfg_attr(
31983 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31984 assert_instr(smull)
31985)]
31986#[cfg_attr(
31987 not(target_arch = "arm"),
31988 stable(feature = "neon_intrinsics", since = "1.59.0")
31989)]
31990#[cfg_attr(
31991 target_arch = "arm",
31992 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31993)]
31994pub fn vmull_n_s32(a: int32x2_t, b: i32) -> int64x2_t {
31995 vmull_s32(a, vdup_n_s32(b))
31996}
31997#[doc = "Vector long multiply with scalar"]
31998#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_u16)"]
31999#[inline(always)]
32000#[target_feature(enable = "neon")]
32001#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32002#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
32003#[cfg_attr(
32004 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32005 assert_instr(umull)
32006)]
32007#[cfg_attr(
32008 not(target_arch = "arm"),
32009 stable(feature = "neon_intrinsics", since = "1.59.0")
32010)]
32011#[cfg_attr(
32012 target_arch = "arm",
32013 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32014)]
32015pub fn vmull_n_u16(a: uint16x4_t, b: u16) -> uint32x4_t {
32016 vmull_u16(a, vdup_n_u16(b))
32017}
32018#[doc = "Vector long multiply with scalar"]
32019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_u32)"]
32020#[inline(always)]
32021#[target_feature(enable = "neon")]
32022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32023#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
32024#[cfg_attr(
32025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32026 assert_instr(umull)
32027)]
32028#[cfg_attr(
32029 not(target_arch = "arm"),
32030 stable(feature = "neon_intrinsics", since = "1.59.0")
32031)]
32032#[cfg_attr(
32033 target_arch = "arm",
32034 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32035)]
32036pub fn vmull_n_u32(a: uint32x2_t, b: u32) -> uint64x2_t {
32037 vmull_u32(a, vdup_n_u32(b))
32038}
32039#[doc = "Polynomial multiply long"]
32040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_p8)"]
32041#[inline(always)]
32042#[target_feature(enable = "neon")]
32043#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32044#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.p8"))]
32045#[cfg_attr(
32046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32047 assert_instr(pmull)
32048)]
32049#[cfg_attr(
32050 not(target_arch = "arm"),
32051 stable(feature = "neon_intrinsics", since = "1.59.0")
32052)]
32053#[cfg_attr(
32054 target_arch = "arm",
32055 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32056)]
32057pub fn vmull_p8(a: poly8x8_t, b: poly8x8_t) -> poly16x8_t {
32058 unsafe extern "unadjusted" {
32059 #[cfg_attr(
32060 any(target_arch = "aarch64", target_arch = "arm64ec"),
32061 link_name = "llvm.aarch64.neon.pmull.v8i16"
32062 )]
32063 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmullp.v8i16")]
32064 fn _vmull_p8(a: poly8x8_t, b: poly8x8_t) -> poly16x8_t;
32065 }
32066 unsafe { _vmull_p8(a, b) }
32067}
32068#[doc = "Signed multiply long"]
32069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s16)"]
32070#[inline(always)]
32071#[target_feature(enable = "neon")]
32072#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32073#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s16"))]
32074#[cfg_attr(
32075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32076 assert_instr(smull)
32077)]
32078#[cfg_attr(
32079 not(target_arch = "arm"),
32080 stable(feature = "neon_intrinsics", since = "1.59.0")
32081)]
32082#[cfg_attr(
32083 target_arch = "arm",
32084 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32085)]
32086pub fn vmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
32087 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32088}
32089#[doc = "Signed multiply long"]
32090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s32)"]
32091#[inline(always)]
32092#[target_feature(enable = "neon")]
32093#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32094#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s32"))]
32095#[cfg_attr(
32096 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32097 assert_instr(smull)
32098)]
32099#[cfg_attr(
32100 not(target_arch = "arm"),
32101 stable(feature = "neon_intrinsics", since = "1.59.0")
32102)]
32103#[cfg_attr(
32104 target_arch = "arm",
32105 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32106)]
32107pub fn vmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
32108 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32109}
32110#[doc = "Signed multiply long"]
32111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s8)"]
32112#[inline(always)]
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("vmull.s8"))]
32116#[cfg_attr(
32117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32118 assert_instr(smull)
32119)]
32120#[cfg_attr(
32121 not(target_arch = "arm"),
32122 stable(feature = "neon_intrinsics", since = "1.59.0")
32123)]
32124#[cfg_attr(
32125 target_arch = "arm",
32126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32127)]
32128pub fn vmull_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
32129 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32130}
32131#[doc = "Unsigned multiply long"]
32132#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u8)"]
32133#[inline(always)]
32134#[target_feature(enable = "neon")]
32135#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32136#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u8"))]
32137#[cfg_attr(
32138 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32139 assert_instr(umull)
32140)]
32141#[cfg_attr(
32142 not(target_arch = "arm"),
32143 stable(feature = "neon_intrinsics", since = "1.59.0")
32144)]
32145#[cfg_attr(
32146 target_arch = "arm",
32147 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32148)]
32149pub fn vmull_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
32150 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32151}
32152#[doc = "Unsigned multiply long"]
32153#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u16)"]
32154#[inline(always)]
32155#[target_feature(enable = "neon")]
32156#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32157#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u16"))]
32158#[cfg_attr(
32159 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32160 assert_instr(umull)
32161)]
32162#[cfg_attr(
32163 not(target_arch = "arm"),
32164 stable(feature = "neon_intrinsics", since = "1.59.0")
32165)]
32166#[cfg_attr(
32167 target_arch = "arm",
32168 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32169)]
32170pub fn vmull_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
32171 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32172}
32173#[doc = "Unsigned multiply long"]
32174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u32)"]
32175#[inline(always)]
32176#[target_feature(enable = "neon")]
32177#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32178#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u32"))]
32179#[cfg_attr(
32180 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32181 assert_instr(umull)
32182)]
32183#[cfg_attr(
32184 not(target_arch = "arm"),
32185 stable(feature = "neon_intrinsics", since = "1.59.0")
32186)]
32187#[cfg_attr(
32188 target_arch = "arm",
32189 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32190)]
32191pub fn vmull_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
32192 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32193}
32194#[doc = "Vector bitwise not."]
32195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_p8)"]
32196#[inline(always)]
32197#[target_feature(enable = "neon")]
32198#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32199#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32200#[cfg_attr(
32201 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32202 assert_instr(mvn)
32203)]
32204#[cfg_attr(
32205 not(target_arch = "arm"),
32206 stable(feature = "neon_intrinsics", since = "1.59.0")
32207)]
32208#[cfg_attr(
32209 target_arch = "arm",
32210 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32211)]
32212pub fn vmvn_p8(a: poly8x8_t) -> poly8x8_t {
32213 let b = poly8x8_t::splat(255);
32214 unsafe { simd_xor(a, b) }
32215}
32216#[doc = "Vector bitwise not."]
32217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s16)"]
32218#[inline(always)]
32219#[target_feature(enable = "neon")]
32220#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32221#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32222#[cfg_attr(
32223 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32224 assert_instr(mvn)
32225)]
32226#[cfg_attr(
32227 not(target_arch = "arm"),
32228 stable(feature = "neon_intrinsics", since = "1.59.0")
32229)]
32230#[cfg_attr(
32231 target_arch = "arm",
32232 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32233)]
32234pub fn vmvn_s16(a: int16x4_t) -> int16x4_t {
32235 let b = int16x4_t::splat(-1);
32236 unsafe { simd_xor(a, b) }
32237}
32238#[doc = "Vector bitwise not."]
32239#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s32)"]
32240#[inline(always)]
32241#[target_feature(enable = "neon")]
32242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32243#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32244#[cfg_attr(
32245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32246 assert_instr(mvn)
32247)]
32248#[cfg_attr(
32249 not(target_arch = "arm"),
32250 stable(feature = "neon_intrinsics", since = "1.59.0")
32251)]
32252#[cfg_attr(
32253 target_arch = "arm",
32254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32255)]
32256pub fn vmvn_s32(a: int32x2_t) -> int32x2_t {
32257 let b = int32x2_t::splat(-1);
32258 unsafe { simd_xor(a, b) }
32259}
32260#[doc = "Vector bitwise not."]
32261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s8)"]
32262#[inline(always)]
32263#[target_feature(enable = "neon")]
32264#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32265#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32266#[cfg_attr(
32267 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32268 assert_instr(mvn)
32269)]
32270#[cfg_attr(
32271 not(target_arch = "arm"),
32272 stable(feature = "neon_intrinsics", since = "1.59.0")
32273)]
32274#[cfg_attr(
32275 target_arch = "arm",
32276 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32277)]
32278pub fn vmvn_s8(a: int8x8_t) -> int8x8_t {
32279 let b = int8x8_t::splat(-1);
32280 unsafe { simd_xor(a, b) }
32281}
32282#[doc = "Vector bitwise not."]
32283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u16)"]
32284#[inline(always)]
32285#[target_feature(enable = "neon")]
32286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32287#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32288#[cfg_attr(
32289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32290 assert_instr(mvn)
32291)]
32292#[cfg_attr(
32293 not(target_arch = "arm"),
32294 stable(feature = "neon_intrinsics", since = "1.59.0")
32295)]
32296#[cfg_attr(
32297 target_arch = "arm",
32298 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32299)]
32300pub fn vmvn_u16(a: uint16x4_t) -> uint16x4_t {
32301 let b = uint16x4_t::splat(65_535);
32302 unsafe { simd_xor(a, b) }
32303}
32304#[doc = "Vector bitwise not."]
32305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u32)"]
32306#[inline(always)]
32307#[target_feature(enable = "neon")]
32308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32310#[cfg_attr(
32311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32312 assert_instr(mvn)
32313)]
32314#[cfg_attr(
32315 not(target_arch = "arm"),
32316 stable(feature = "neon_intrinsics", since = "1.59.0")
32317)]
32318#[cfg_attr(
32319 target_arch = "arm",
32320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32321)]
32322pub fn vmvn_u32(a: uint32x2_t) -> uint32x2_t {
32323 let b = uint32x2_t::splat(4_294_967_295);
32324 unsafe { simd_xor(a, b) }
32325}
32326#[doc = "Vector bitwise not."]
32327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u8)"]
32328#[inline(always)]
32329#[target_feature(enable = "neon")]
32330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32331#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32332#[cfg_attr(
32333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32334 assert_instr(mvn)
32335)]
32336#[cfg_attr(
32337 not(target_arch = "arm"),
32338 stable(feature = "neon_intrinsics", since = "1.59.0")
32339)]
32340#[cfg_attr(
32341 target_arch = "arm",
32342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32343)]
32344pub fn vmvn_u8(a: uint8x8_t) -> uint8x8_t {
32345 let b = uint8x8_t::splat(255);
32346 unsafe { simd_xor(a, b) }
32347}
32348#[doc = "Vector bitwise not."]
32349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_p8)"]
32350#[inline(always)]
32351#[target_feature(enable = "neon")]
32352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32354#[cfg_attr(
32355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32356 assert_instr(mvn)
32357)]
32358#[cfg_attr(
32359 not(target_arch = "arm"),
32360 stable(feature = "neon_intrinsics", since = "1.59.0")
32361)]
32362#[cfg_attr(
32363 target_arch = "arm",
32364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32365)]
32366pub fn vmvnq_p8(a: poly8x16_t) -> poly8x16_t {
32367 let b = poly8x16_t::splat(255);
32368 unsafe { simd_xor(a, b) }
32369}
32370#[doc = "Vector bitwise not."]
32371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s16)"]
32372#[inline(always)]
32373#[target_feature(enable = "neon")]
32374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32376#[cfg_attr(
32377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32378 assert_instr(mvn)
32379)]
32380#[cfg_attr(
32381 not(target_arch = "arm"),
32382 stable(feature = "neon_intrinsics", since = "1.59.0")
32383)]
32384#[cfg_attr(
32385 target_arch = "arm",
32386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32387)]
32388pub fn vmvnq_s16(a: int16x8_t) -> int16x8_t {
32389 let b = int16x8_t::splat(-1);
32390 unsafe { simd_xor(a, b) }
32391}
32392#[doc = "Vector bitwise not."]
32393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s32)"]
32394#[inline(always)]
32395#[target_feature(enable = "neon")]
32396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32397#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32398#[cfg_attr(
32399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32400 assert_instr(mvn)
32401)]
32402#[cfg_attr(
32403 not(target_arch = "arm"),
32404 stable(feature = "neon_intrinsics", since = "1.59.0")
32405)]
32406#[cfg_attr(
32407 target_arch = "arm",
32408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32409)]
32410pub fn vmvnq_s32(a: int32x4_t) -> int32x4_t {
32411 let b = int32x4_t::splat(-1);
32412 unsafe { simd_xor(a, b) }
32413}
32414#[doc = "Vector bitwise not."]
32415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s8)"]
32416#[inline(always)]
32417#[target_feature(enable = "neon")]
32418#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32419#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32420#[cfg_attr(
32421 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32422 assert_instr(mvn)
32423)]
32424#[cfg_attr(
32425 not(target_arch = "arm"),
32426 stable(feature = "neon_intrinsics", since = "1.59.0")
32427)]
32428#[cfg_attr(
32429 target_arch = "arm",
32430 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32431)]
32432pub fn vmvnq_s8(a: int8x16_t) -> int8x16_t {
32433 let b = int8x16_t::splat(-1);
32434 unsafe { simd_xor(a, b) }
32435}
32436#[doc = "Vector bitwise not."]
32437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u16)"]
32438#[inline(always)]
32439#[target_feature(enable = "neon")]
32440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32442#[cfg_attr(
32443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32444 assert_instr(mvn)
32445)]
32446#[cfg_attr(
32447 not(target_arch = "arm"),
32448 stable(feature = "neon_intrinsics", since = "1.59.0")
32449)]
32450#[cfg_attr(
32451 target_arch = "arm",
32452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32453)]
32454pub fn vmvnq_u16(a: uint16x8_t) -> uint16x8_t {
32455 let b = uint16x8_t::splat(65_535);
32456 unsafe { simd_xor(a, b) }
32457}
32458#[doc = "Vector bitwise not."]
32459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u32)"]
32460#[inline(always)]
32461#[target_feature(enable = "neon")]
32462#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32464#[cfg_attr(
32465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32466 assert_instr(mvn)
32467)]
32468#[cfg_attr(
32469 not(target_arch = "arm"),
32470 stable(feature = "neon_intrinsics", since = "1.59.0")
32471)]
32472#[cfg_attr(
32473 target_arch = "arm",
32474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32475)]
32476pub fn vmvnq_u32(a: uint32x4_t) -> uint32x4_t {
32477 let b = uint32x4_t::splat(4_294_967_295);
32478 unsafe { simd_xor(a, b) }
32479}
32480#[doc = "Vector bitwise not."]
32481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u8)"]
32482#[inline(always)]
32483#[target_feature(enable = "neon")]
32484#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32485#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32486#[cfg_attr(
32487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32488 assert_instr(mvn)
32489)]
32490#[cfg_attr(
32491 not(target_arch = "arm"),
32492 stable(feature = "neon_intrinsics", since = "1.59.0")
32493)]
32494#[cfg_attr(
32495 target_arch = "arm",
32496 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32497)]
32498pub fn vmvnq_u8(a: uint8x16_t) -> uint8x16_t {
32499 let b = uint8x16_t::splat(255);
32500 unsafe { simd_xor(a, b) }
32501}
32502#[doc = "Negate"]
32503#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_f16)"]
32504#[inline(always)]
32505#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32506#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f16"))]
32507#[cfg_attr(
32508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32509 assert_instr(fneg)
32510)]
32511#[target_feature(enable = "neon,fp16")]
32512#[cfg_attr(
32513 not(target_arch = "arm"),
32514 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
32515)]
32516#[cfg_attr(
32517 target_arch = "arm",
32518 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32519)]
32520#[cfg(not(target_arch = "arm64ec"))]
32521pub fn vneg_f16(a: float16x4_t) -> float16x4_t {
32522 unsafe { simd_neg(a) }
32523}
32524#[doc = "Negate"]
32525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_f16)"]
32526#[inline(always)]
32527#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32528#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f16"))]
32529#[cfg_attr(
32530 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32531 assert_instr(fneg)
32532)]
32533#[target_feature(enable = "neon,fp16")]
32534#[cfg_attr(
32535 not(target_arch = "arm"),
32536 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
32537)]
32538#[cfg_attr(
32539 target_arch = "arm",
32540 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32541)]
32542#[cfg(not(target_arch = "arm64ec"))]
32543pub fn vnegq_f16(a: float16x8_t) -> float16x8_t {
32544 unsafe { simd_neg(a) }
32545}
32546#[doc = "Negate"]
32547#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_f32)"]
32548#[inline(always)]
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("vneg.f32"))]
32552#[cfg_attr(
32553 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32554 assert_instr(fneg)
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 vneg_f32(a: float32x2_t) -> float32x2_t {
32565 unsafe { simd_neg(a) }
32566}
32567#[doc = "Negate"]
32568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_f32)"]
32569#[inline(always)]
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("vneg.f32"))]
32573#[cfg_attr(
32574 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32575 assert_instr(fneg)
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 vnegq_f32(a: float32x4_t) -> float32x4_t {
32586 unsafe { simd_neg(a) }
32587}
32588#[doc = "Negate"]
32589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s8)"]
32590#[inline(always)]
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("vneg.s8"))]
32594#[cfg_attr(
32595 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32596 assert_instr(neg)
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 vneg_s8(a: int8x8_t) -> int8x8_t {
32607 unsafe { simd_neg(a) }
32608}
32609#[doc = "Negate"]
32610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s8)"]
32611#[inline(always)]
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("vneg.s8"))]
32615#[cfg_attr(
32616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32617 assert_instr(neg)
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 vnegq_s8(a: int8x16_t) -> int8x16_t {
32628 unsafe { simd_neg(a) }
32629}
32630#[doc = "Negate"]
32631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s16)"]
32632#[inline(always)]
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("vneg.s16"))]
32636#[cfg_attr(
32637 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32638 assert_instr(neg)
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 vneg_s16(a: int16x4_t) -> int16x4_t {
32649 unsafe { simd_neg(a) }
32650}
32651#[doc = "Negate"]
32652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s16)"]
32653#[inline(always)]
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("vneg.s16"))]
32657#[cfg_attr(
32658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32659 assert_instr(neg)
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 vnegq_s16(a: int16x8_t) -> int16x8_t {
32670 unsafe { simd_neg(a) }
32671}
32672#[doc = "Negate"]
32673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s32)"]
32674#[inline(always)]
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("vneg.s32"))]
32678#[cfg_attr(
32679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32680 assert_instr(neg)
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 vneg_s32(a: int32x2_t) -> int32x2_t {
32691 unsafe { simd_neg(a) }
32692}
32693#[doc = "Negate"]
32694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s32)"]
32695#[inline(always)]
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("vneg.s32"))]
32699#[cfg_attr(
32700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32701 assert_instr(neg)
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 vnegq_s32(a: int32x4_t) -> int32x4_t {
32712 unsafe { simd_neg(a) }
32713}
32714#[doc = "Vector bitwise inclusive OR NOT"]
32715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s16)"]
32716#[inline(always)]
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(vorn))]
32720#[cfg_attr(
32721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32722 assert_instr(orn)
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 vorn_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
32733 let c = int16x4_t::splat(-1);
32734 unsafe { simd_or(simd_xor(b, c), a) }
32735}
32736#[doc = "Vector bitwise inclusive OR NOT"]
32737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s32)"]
32738#[inline(always)]
32739#[target_feature(enable = "neon")]
32740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32741#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32742#[cfg_attr(
32743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32744 assert_instr(orn)
32745)]
32746#[cfg_attr(
32747 not(target_arch = "arm"),
32748 stable(feature = "neon_intrinsics", since = "1.59.0")
32749)]
32750#[cfg_attr(
32751 target_arch = "arm",
32752 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32753)]
32754pub fn vorn_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
32755 let c = int32x2_t::splat(-1);
32756 unsafe { simd_or(simd_xor(b, c), a) }
32757}
32758#[doc = "Vector bitwise inclusive OR NOT"]
32759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s64)"]
32760#[inline(always)]
32761#[target_feature(enable = "neon")]
32762#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32763#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32764#[cfg_attr(
32765 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32766 assert_instr(orn)
32767)]
32768#[cfg_attr(
32769 not(target_arch = "arm"),
32770 stable(feature = "neon_intrinsics", since = "1.59.0")
32771)]
32772#[cfg_attr(
32773 target_arch = "arm",
32774 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32775)]
32776pub fn vorn_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
32777 let c = int64x1_t::splat(-1);
32778 unsafe { simd_or(simd_xor(b, c), a) }
32779}
32780#[doc = "Vector bitwise inclusive OR NOT"]
32781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s8)"]
32782#[inline(always)]
32783#[target_feature(enable = "neon")]
32784#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32785#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32786#[cfg_attr(
32787 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32788 assert_instr(orn)
32789)]
32790#[cfg_attr(
32791 not(target_arch = "arm"),
32792 stable(feature = "neon_intrinsics", since = "1.59.0")
32793)]
32794#[cfg_attr(
32795 target_arch = "arm",
32796 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32797)]
32798pub fn vorn_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
32799 let c = int8x8_t::splat(-1);
32800 unsafe { simd_or(simd_xor(b, c), a) }
32801}
32802#[doc = "Vector bitwise inclusive OR NOT"]
32803#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s16)"]
32804#[inline(always)]
32805#[target_feature(enable = "neon")]
32806#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32807#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32808#[cfg_attr(
32809 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32810 assert_instr(orn)
32811)]
32812#[cfg_attr(
32813 not(target_arch = "arm"),
32814 stable(feature = "neon_intrinsics", since = "1.59.0")
32815)]
32816#[cfg_attr(
32817 target_arch = "arm",
32818 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32819)]
32820pub fn vornq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
32821 let c = int16x8_t::splat(-1);
32822 unsafe { simd_or(simd_xor(b, c), a) }
32823}
32824#[doc = "Vector bitwise inclusive OR NOT"]
32825#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s32)"]
32826#[inline(always)]
32827#[target_feature(enable = "neon")]
32828#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32829#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32830#[cfg_attr(
32831 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32832 assert_instr(orn)
32833)]
32834#[cfg_attr(
32835 not(target_arch = "arm"),
32836 stable(feature = "neon_intrinsics", since = "1.59.0")
32837)]
32838#[cfg_attr(
32839 target_arch = "arm",
32840 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32841)]
32842pub fn vornq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
32843 let c = int32x4_t::splat(-1);
32844 unsafe { simd_or(simd_xor(b, c), a) }
32845}
32846#[doc = "Vector bitwise inclusive OR NOT"]
32847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s64)"]
32848#[inline(always)]
32849#[target_feature(enable = "neon")]
32850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32851#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32852#[cfg_attr(
32853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32854 assert_instr(orn)
32855)]
32856#[cfg_attr(
32857 not(target_arch = "arm"),
32858 stable(feature = "neon_intrinsics", since = "1.59.0")
32859)]
32860#[cfg_attr(
32861 target_arch = "arm",
32862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32863)]
32864pub fn vornq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
32865 let c = int64x2_t::splat(-1);
32866 unsafe { simd_or(simd_xor(b, c), a) }
32867}
32868#[doc = "Vector bitwise inclusive OR NOT"]
32869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s8)"]
32870#[inline(always)]
32871#[target_feature(enable = "neon")]
32872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32873#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32874#[cfg_attr(
32875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32876 assert_instr(orn)
32877)]
32878#[cfg_attr(
32879 not(target_arch = "arm"),
32880 stable(feature = "neon_intrinsics", since = "1.59.0")
32881)]
32882#[cfg_attr(
32883 target_arch = "arm",
32884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32885)]
32886pub fn vornq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
32887 let c = int8x16_t::splat(-1);
32888 unsafe { simd_or(simd_xor(b, c), a) }
32889}
32890#[doc = "Vector bitwise inclusive OR NOT"]
32891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u16)"]
32892#[inline(always)]
32893#[target_feature(enable = "neon")]
32894#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32895#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32896#[cfg_attr(
32897 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32898 assert_instr(orn)
32899)]
32900#[cfg_attr(
32901 not(target_arch = "arm"),
32902 stable(feature = "neon_intrinsics", since = "1.59.0")
32903)]
32904#[cfg_attr(
32905 target_arch = "arm",
32906 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32907)]
32908pub fn vorn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
32909 let c = int16x4_t::splat(-1);
32910 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32911}
32912#[doc = "Vector bitwise inclusive OR NOT"]
32913#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u32)"]
32914#[inline(always)]
32915#[target_feature(enable = "neon")]
32916#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32917#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32918#[cfg_attr(
32919 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32920 assert_instr(orn)
32921)]
32922#[cfg_attr(
32923 not(target_arch = "arm"),
32924 stable(feature = "neon_intrinsics", since = "1.59.0")
32925)]
32926#[cfg_attr(
32927 target_arch = "arm",
32928 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32929)]
32930pub fn vorn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
32931 let c = int32x2_t::splat(-1);
32932 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32933}
32934#[doc = "Vector bitwise inclusive OR NOT"]
32935#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u64)"]
32936#[inline(always)]
32937#[target_feature(enable = "neon")]
32938#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32940#[cfg_attr(
32941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32942 assert_instr(orn)
32943)]
32944#[cfg_attr(
32945 not(target_arch = "arm"),
32946 stable(feature = "neon_intrinsics", since = "1.59.0")
32947)]
32948#[cfg_attr(
32949 target_arch = "arm",
32950 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32951)]
32952pub fn vorn_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
32953 let c = int64x1_t::splat(-1);
32954 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32955}
32956#[doc = "Vector bitwise inclusive OR NOT"]
32957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u8)"]
32958#[inline(always)]
32959#[target_feature(enable = "neon")]
32960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32961#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32962#[cfg_attr(
32963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32964 assert_instr(orn)
32965)]
32966#[cfg_attr(
32967 not(target_arch = "arm"),
32968 stable(feature = "neon_intrinsics", since = "1.59.0")
32969)]
32970#[cfg_attr(
32971 target_arch = "arm",
32972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32973)]
32974pub fn vorn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
32975 let c = int8x8_t::splat(-1);
32976 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32977}
32978#[doc = "Vector bitwise inclusive OR NOT"]
32979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u16)"]
32980#[inline(always)]
32981#[target_feature(enable = "neon")]
32982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32983#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32984#[cfg_attr(
32985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32986 assert_instr(orn)
32987)]
32988#[cfg_attr(
32989 not(target_arch = "arm"),
32990 stable(feature = "neon_intrinsics", since = "1.59.0")
32991)]
32992#[cfg_attr(
32993 target_arch = "arm",
32994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32995)]
32996pub fn vornq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
32997 let c = int16x8_t::splat(-1);
32998 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32999}
33000#[doc = "Vector bitwise inclusive OR NOT"]
33001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u32)"]
33002#[inline(always)]
33003#[target_feature(enable = "neon")]
33004#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33005#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
33006#[cfg_attr(
33007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33008 assert_instr(orn)
33009)]
33010#[cfg_attr(
33011 not(target_arch = "arm"),
33012 stable(feature = "neon_intrinsics", since = "1.59.0")
33013)]
33014#[cfg_attr(
33015 target_arch = "arm",
33016 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33017)]
33018pub fn vornq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
33019 let c = int32x4_t::splat(-1);
33020 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
33021}
33022#[doc = "Vector bitwise inclusive OR NOT"]
33023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u64)"]
33024#[inline(always)]
33025#[target_feature(enable = "neon")]
33026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33027#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
33028#[cfg_attr(
33029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33030 assert_instr(orn)
33031)]
33032#[cfg_attr(
33033 not(target_arch = "arm"),
33034 stable(feature = "neon_intrinsics", since = "1.59.0")
33035)]
33036#[cfg_attr(
33037 target_arch = "arm",
33038 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33039)]
33040pub fn vornq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
33041 let c = int64x2_t::splat(-1);
33042 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
33043}
33044#[doc = "Vector bitwise inclusive OR NOT"]
33045#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u8)"]
33046#[inline(always)]
33047#[target_feature(enable = "neon")]
33048#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33049#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
33050#[cfg_attr(
33051 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33052 assert_instr(orn)
33053)]
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 vornq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
33063 let c = int8x16_t::splat(-1);
33064 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
33065}
33066#[doc = "Vector bitwise or (immediate, inclusive)"]
33067#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s8)"]
33068#[inline(always)]
33069#[target_feature(enable = "neon")]
33070#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33071#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33072#[cfg_attr(
33073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33074 assert_instr(orr)
33075)]
33076#[cfg_attr(
33077 not(target_arch = "arm"),
33078 stable(feature = "neon_intrinsics", since = "1.59.0")
33079)]
33080#[cfg_attr(
33081 target_arch = "arm",
33082 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33083)]
33084pub fn vorr_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
33085 unsafe { simd_or(a, b) }
33086}
33087#[doc = "Vector bitwise or (immediate, inclusive)"]
33088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s8)"]
33089#[inline(always)]
33090#[target_feature(enable = "neon")]
33091#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33092#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33093#[cfg_attr(
33094 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33095 assert_instr(orr)
33096)]
33097#[cfg_attr(
33098 not(target_arch = "arm"),
33099 stable(feature = "neon_intrinsics", since = "1.59.0")
33100)]
33101#[cfg_attr(
33102 target_arch = "arm",
33103 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33104)]
33105pub fn vorrq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
33106 unsafe { simd_or(a, b) }
33107}
33108#[doc = "Vector bitwise or (immediate, inclusive)"]
33109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s16)"]
33110#[inline(always)]
33111#[target_feature(enable = "neon")]
33112#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33113#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33114#[cfg_attr(
33115 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33116 assert_instr(orr)
33117)]
33118#[cfg_attr(
33119 not(target_arch = "arm"),
33120 stable(feature = "neon_intrinsics", since = "1.59.0")
33121)]
33122#[cfg_attr(
33123 target_arch = "arm",
33124 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33125)]
33126pub fn vorr_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
33127 unsafe { simd_or(a, b) }
33128}
33129#[doc = "Vector bitwise or (immediate, inclusive)"]
33130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s16)"]
33131#[inline(always)]
33132#[target_feature(enable = "neon")]
33133#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33134#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33135#[cfg_attr(
33136 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33137 assert_instr(orr)
33138)]
33139#[cfg_attr(
33140 not(target_arch = "arm"),
33141 stable(feature = "neon_intrinsics", since = "1.59.0")
33142)]
33143#[cfg_attr(
33144 target_arch = "arm",
33145 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33146)]
33147pub fn vorrq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
33148 unsafe { simd_or(a, b) }
33149}
33150#[doc = "Vector bitwise or (immediate, inclusive)"]
33151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s32)"]
33152#[inline(always)]
33153#[target_feature(enable = "neon")]
33154#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33155#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33156#[cfg_attr(
33157 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33158 assert_instr(orr)
33159)]
33160#[cfg_attr(
33161 not(target_arch = "arm"),
33162 stable(feature = "neon_intrinsics", since = "1.59.0")
33163)]
33164#[cfg_attr(
33165 target_arch = "arm",
33166 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33167)]
33168pub fn vorr_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
33169 unsafe { simd_or(a, b) }
33170}
33171#[doc = "Vector bitwise or (immediate, inclusive)"]
33172#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s32)"]
33173#[inline(always)]
33174#[target_feature(enable = "neon")]
33175#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33176#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33177#[cfg_attr(
33178 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33179 assert_instr(orr)
33180)]
33181#[cfg_attr(
33182 not(target_arch = "arm"),
33183 stable(feature = "neon_intrinsics", since = "1.59.0")
33184)]
33185#[cfg_attr(
33186 target_arch = "arm",
33187 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33188)]
33189pub fn vorrq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
33190 unsafe { simd_or(a, b) }
33191}
33192#[doc = "Vector bitwise or (immediate, inclusive)"]
33193#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s64)"]
33194#[inline(always)]
33195#[target_feature(enable = "neon")]
33196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33197#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33198#[cfg_attr(
33199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33200 assert_instr(orr)
33201)]
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 vorr_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
33211 unsafe { simd_or(a, b) }
33212}
33213#[doc = "Vector bitwise or (immediate, inclusive)"]
33214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s64)"]
33215#[inline(always)]
33216#[target_feature(enable = "neon")]
33217#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33218#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33219#[cfg_attr(
33220 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33221 assert_instr(orr)
33222)]
33223#[cfg_attr(
33224 not(target_arch = "arm"),
33225 stable(feature = "neon_intrinsics", since = "1.59.0")
33226)]
33227#[cfg_attr(
33228 target_arch = "arm",
33229 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33230)]
33231pub fn vorrq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
33232 unsafe { simd_or(a, b) }
33233}
33234#[doc = "Vector bitwise or (immediate, inclusive)"]
33235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u8)"]
33236#[inline(always)]
33237#[target_feature(enable = "neon")]
33238#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33239#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33240#[cfg_attr(
33241 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33242 assert_instr(orr)
33243)]
33244#[cfg_attr(
33245 not(target_arch = "arm"),
33246 stable(feature = "neon_intrinsics", since = "1.59.0")
33247)]
33248#[cfg_attr(
33249 target_arch = "arm",
33250 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33251)]
33252pub fn vorr_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
33253 unsafe { simd_or(a, b) }
33254}
33255#[doc = "Vector bitwise or (immediate, inclusive)"]
33256#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u8)"]
33257#[inline(always)]
33258#[target_feature(enable = "neon")]
33259#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33260#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33261#[cfg_attr(
33262 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33263 assert_instr(orr)
33264)]
33265#[cfg_attr(
33266 not(target_arch = "arm"),
33267 stable(feature = "neon_intrinsics", since = "1.59.0")
33268)]
33269#[cfg_attr(
33270 target_arch = "arm",
33271 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33272)]
33273pub fn vorrq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
33274 unsafe { simd_or(a, b) }
33275}
33276#[doc = "Vector bitwise or (immediate, inclusive)"]
33277#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u16)"]
33278#[inline(always)]
33279#[target_feature(enable = "neon")]
33280#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33281#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33282#[cfg_attr(
33283 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33284 assert_instr(orr)
33285)]
33286#[cfg_attr(
33287 not(target_arch = "arm"),
33288 stable(feature = "neon_intrinsics", since = "1.59.0")
33289)]
33290#[cfg_attr(
33291 target_arch = "arm",
33292 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33293)]
33294pub fn vorr_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
33295 unsafe { simd_or(a, b) }
33296}
33297#[doc = "Vector bitwise or (immediate, inclusive)"]
33298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u16)"]
33299#[inline(always)]
33300#[target_feature(enable = "neon")]
33301#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33302#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33303#[cfg_attr(
33304 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33305 assert_instr(orr)
33306)]
33307#[cfg_attr(
33308 not(target_arch = "arm"),
33309 stable(feature = "neon_intrinsics", since = "1.59.0")
33310)]
33311#[cfg_attr(
33312 target_arch = "arm",
33313 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33314)]
33315pub fn vorrq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
33316 unsafe { simd_or(a, b) }
33317}
33318#[doc = "Vector bitwise or (immediate, inclusive)"]
33319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u32)"]
33320#[inline(always)]
33321#[target_feature(enable = "neon")]
33322#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33323#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33324#[cfg_attr(
33325 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33326 assert_instr(orr)
33327)]
33328#[cfg_attr(
33329 not(target_arch = "arm"),
33330 stable(feature = "neon_intrinsics", since = "1.59.0")
33331)]
33332#[cfg_attr(
33333 target_arch = "arm",
33334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33335)]
33336pub fn vorr_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
33337 unsafe { simd_or(a, b) }
33338}
33339#[doc = "Vector bitwise or (immediate, inclusive)"]
33340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u32)"]
33341#[inline(always)]
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(vorr))]
33345#[cfg_attr(
33346 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33347 assert_instr(orr)
33348)]
33349#[cfg_attr(
33350 not(target_arch = "arm"),
33351 stable(feature = "neon_intrinsics", since = "1.59.0")
33352)]
33353#[cfg_attr(
33354 target_arch = "arm",
33355 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33356)]
33357pub fn vorrq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
33358 unsafe { simd_or(a, b) }
33359}
33360#[doc = "Vector bitwise or (immediate, inclusive)"]
33361#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u64)"]
33362#[inline(always)]
33363#[target_feature(enable = "neon")]
33364#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33365#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33366#[cfg_attr(
33367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33368 assert_instr(orr)
33369)]
33370#[cfg_attr(
33371 not(target_arch = "arm"),
33372 stable(feature = "neon_intrinsics", since = "1.59.0")
33373)]
33374#[cfg_attr(
33375 target_arch = "arm",
33376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33377)]
33378pub fn vorr_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
33379 unsafe { simd_or(a, b) }
33380}
33381#[doc = "Vector bitwise or (immediate, inclusive)"]
33382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u64)"]
33383#[inline(always)]
33384#[target_feature(enable = "neon")]
33385#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33386#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33387#[cfg_attr(
33388 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33389 assert_instr(orr)
33390)]
33391#[cfg_attr(
33392 not(target_arch = "arm"),
33393 stable(feature = "neon_intrinsics", since = "1.59.0")
33394)]
33395#[cfg_attr(
33396 target_arch = "arm",
33397 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33398)]
33399pub fn vorrq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
33400 unsafe { simd_or(a, b) }
33401}
33402#[doc = "Signed Add and Accumulate Long Pairwise."]
33403#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s8)"]
33404#[inline(always)]
33405#[target_feature(enable = "neon")]
33406#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33407#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s8"))]
33408#[cfg_attr(
33409 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33410 assert_instr(sadalp)
33411)]
33412#[cfg_attr(
33413 not(target_arch = "arm"),
33414 stable(feature = "neon_intrinsics", since = "1.59.0")
33415)]
33416#[cfg_attr(
33417 target_arch = "arm",
33418 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33419)]
33420pub fn vpadal_s8(a: int16x4_t, b: int8x8_t) -> int16x4_t {
33421 let x: int16x4_t;
33422 #[cfg(target_arch = "arm")]
33423 {
33424 x = priv_vpadal_s8(a, b);
33425 }
33426 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33427 unsafe {
33428 x = simd_add(vpaddl_s8(b), a);
33429 };
33430 x
33431}
33432#[doc = "Signed Add and Accumulate Long Pairwise."]
33433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s8)"]
33434#[inline(always)]
33435#[target_feature(enable = "neon")]
33436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33437#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s8"))]
33438#[cfg_attr(
33439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33440 assert_instr(sadalp)
33441)]
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 vpadalq_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
33451 let x: int16x8_t;
33452 #[cfg(target_arch = "arm")]
33453 {
33454 x = priv_vpadalq_s8(a, b);
33455 }
33456 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33457 unsafe {
33458 x = simd_add(vpaddlq_s8(b), a);
33459 };
33460 x
33461}
33462#[doc = "Signed Add and Accumulate Long Pairwise."]
33463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s16)"]
33464#[inline(always)]
33465#[target_feature(enable = "neon")]
33466#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33467#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s16"))]
33468#[cfg_attr(
33469 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33470 assert_instr(sadalp)
33471)]
33472#[cfg_attr(
33473 not(target_arch = "arm"),
33474 stable(feature = "neon_intrinsics", since = "1.59.0")
33475)]
33476#[cfg_attr(
33477 target_arch = "arm",
33478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33479)]
33480pub fn vpadal_s16(a: int32x2_t, b: int16x4_t) -> int32x2_t {
33481 let x: int32x2_t;
33482 #[cfg(target_arch = "arm")]
33483 {
33484 x = priv_vpadal_s16(a, b);
33485 }
33486 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33487 unsafe {
33488 x = simd_add(vpaddl_s16(b), a);
33489 };
33490 x
33491}
33492#[doc = "Signed Add and Accumulate Long Pairwise."]
33493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s16)"]
33494#[inline(always)]
33495#[target_feature(enable = "neon")]
33496#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33497#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s16"))]
33498#[cfg_attr(
33499 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33500 assert_instr(sadalp)
33501)]
33502#[cfg_attr(
33503 not(target_arch = "arm"),
33504 stable(feature = "neon_intrinsics", since = "1.59.0")
33505)]
33506#[cfg_attr(
33507 target_arch = "arm",
33508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33509)]
33510pub fn vpadalq_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
33511 let x: int32x4_t;
33512 #[cfg(target_arch = "arm")]
33513 {
33514 x = priv_vpadalq_s16(a, b);
33515 }
33516 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33517 unsafe {
33518 x = simd_add(vpaddlq_s16(b), a);
33519 };
33520 x
33521}
33522#[doc = "Signed Add and Accumulate Long Pairwise."]
33523#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s32)"]
33524#[inline(always)]
33525#[target_feature(enable = "neon")]
33526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33527#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s32"))]
33528#[cfg_attr(
33529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33530 assert_instr(sadalp)
33531)]
33532#[cfg_attr(
33533 not(target_arch = "arm"),
33534 stable(feature = "neon_intrinsics", since = "1.59.0")
33535)]
33536#[cfg_attr(
33537 target_arch = "arm",
33538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33539)]
33540pub fn vpadal_s32(a: int64x1_t, b: int32x2_t) -> int64x1_t {
33541 let x: int64x1_t;
33542 #[cfg(target_arch = "arm")]
33543 {
33544 x = priv_vpadal_s32(a, b);
33545 }
33546 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33547 unsafe {
33548 x = simd_add(vpaddl_s32(b), a);
33549 };
33550 x
33551}
33552#[doc = "Signed Add and Accumulate Long Pairwise."]
33553#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s32)"]
33554#[inline(always)]
33555#[target_feature(enable = "neon")]
33556#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33557#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s32"))]
33558#[cfg_attr(
33559 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33560 assert_instr(sadalp)
33561)]
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 vpadalq_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
33571 let x: int64x2_t;
33572 #[cfg(target_arch = "arm")]
33573 {
33574 x = priv_vpadalq_s32(a, b);
33575 }
33576 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33577 unsafe {
33578 x = simd_add(vpaddlq_s32(b), a);
33579 };
33580 x
33581}
33582#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u8)"]
33584#[inline(always)]
33585#[target_feature(enable = "neon")]
33586#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33587#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u8"))]
33588#[cfg_attr(
33589 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33590 assert_instr(uadalp)
33591)]
33592#[cfg_attr(
33593 not(target_arch = "arm"),
33594 stable(feature = "neon_intrinsics", since = "1.59.0")
33595)]
33596#[cfg_attr(
33597 target_arch = "arm",
33598 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33599)]
33600pub fn vpadal_u8(a: uint16x4_t, b: uint8x8_t) -> uint16x4_t {
33601 let x: uint16x4_t;
33602 #[cfg(target_arch = "arm")]
33603 {
33604 x = priv_vpadal_u8(a, b);
33605 }
33606 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33607 unsafe {
33608 x = simd_add(vpaddl_u8(b), a);
33609 };
33610 x
33611}
33612#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33613#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u8)"]
33614#[inline(always)]
33615#[target_feature(enable = "neon")]
33616#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33617#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u8"))]
33618#[cfg_attr(
33619 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33620 assert_instr(uadalp)
33621)]
33622#[cfg_attr(
33623 not(target_arch = "arm"),
33624 stable(feature = "neon_intrinsics", since = "1.59.0")
33625)]
33626#[cfg_attr(
33627 target_arch = "arm",
33628 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33629)]
33630pub fn vpadalq_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
33631 let x: uint16x8_t;
33632 #[cfg(target_arch = "arm")]
33633 {
33634 x = priv_vpadalq_u8(a, b);
33635 }
33636 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33637 unsafe {
33638 x = simd_add(vpaddlq_u8(b), a);
33639 };
33640 x
33641}
33642#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u16)"]
33644#[inline(always)]
33645#[target_feature(enable = "neon")]
33646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33647#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u16"))]
33648#[cfg_attr(
33649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33650 assert_instr(uadalp)
33651)]
33652#[cfg_attr(
33653 not(target_arch = "arm"),
33654 stable(feature = "neon_intrinsics", since = "1.59.0")
33655)]
33656#[cfg_attr(
33657 target_arch = "arm",
33658 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33659)]
33660pub fn vpadal_u16(a: uint32x2_t, b: uint16x4_t) -> uint32x2_t {
33661 let x: uint32x2_t;
33662 #[cfg(target_arch = "arm")]
33663 {
33664 x = priv_vpadal_u16(a, b);
33665 }
33666 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33667 unsafe {
33668 x = simd_add(vpaddl_u16(b), a);
33669 };
33670 x
33671}
33672#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u16)"]
33674#[inline(always)]
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("vpadal.u16"))]
33678#[cfg_attr(
33679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33680 assert_instr(uadalp)
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 vpadalq_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
33691 let x: uint32x4_t;
33692 #[cfg(target_arch = "arm")]
33693 {
33694 x = priv_vpadalq_u16(a, b);
33695 }
33696 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33697 unsafe {
33698 x = simd_add(vpaddlq_u16(b), a);
33699 };
33700 x
33701}
33702#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33703#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u32)"]
33704#[inline(always)]
33705#[target_feature(enable = "neon")]
33706#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33707#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u32"))]
33708#[cfg_attr(
33709 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33710 assert_instr(uadalp)
33711)]
33712#[cfg_attr(
33713 not(target_arch = "arm"),
33714 stable(feature = "neon_intrinsics", since = "1.59.0")
33715)]
33716#[cfg_attr(
33717 target_arch = "arm",
33718 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33719)]
33720pub fn vpadal_u32(a: uint64x1_t, b: uint32x2_t) -> uint64x1_t {
33721 let x: uint64x1_t;
33722 #[cfg(target_arch = "arm")]
33723 {
33724 x = priv_vpadal_u32(a, b);
33725 }
33726 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33727 unsafe {
33728 x = simd_add(vpaddl_u32(b), a);
33729 };
33730 x
33731}
33732#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u32)"]
33734#[inline(always)]
33735#[target_feature(enable = "neon")]
33736#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33737#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u32"))]
33738#[cfg_attr(
33739 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33740 assert_instr(uadalp)
33741)]
33742#[cfg_attr(
33743 not(target_arch = "arm"),
33744 stable(feature = "neon_intrinsics", since = "1.59.0")
33745)]
33746#[cfg_attr(
33747 target_arch = "arm",
33748 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33749)]
33750pub fn vpadalq_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
33751 let x: uint64x2_t;
33752 #[cfg(target_arch = "arm")]
33753 {
33754 x = priv_vpadalq_u32(a, b);
33755 }
33756 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33757 unsafe {
33758 x = simd_add(vpaddlq_u32(b), a);
33759 };
33760 x
33761}
33762#[doc = "Floating-point add pairwise"]
33763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_f16)"]
33764#[inline(always)]
33765#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
33766#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33767#[cfg_attr(
33768 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33769 assert_instr(faddp)
33770)]
33771#[target_feature(enable = "neon,fp16")]
33772#[cfg_attr(
33773 not(target_arch = "arm"),
33774 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
33775)]
33776#[cfg_attr(
33777 target_arch = "arm",
33778 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33779)]
33780#[cfg(not(target_arch = "arm64ec"))]
33781pub fn vpadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
33782 unsafe extern "unadjusted" {
33783 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v4f16")]
33784 #[cfg_attr(
33785 any(target_arch = "aarch64", target_arch = "arm64ec"),
33786 link_name = "llvm.aarch64.neon.faddp.v4f16"
33787 )]
33788 fn _vpadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
33789 }
33790 unsafe { _vpadd_f16(a, b) }
33791}
33792#[doc = "Floating-point add pairwise"]
33793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_f32)"]
33794#[inline(always)]
33795#[target_feature(enable = "neon")]
33796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33798#[cfg_attr(
33799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33800 assert_instr(faddp)
33801)]
33802#[cfg_attr(
33803 not(target_arch = "arm"),
33804 stable(feature = "neon_intrinsics", since = "1.59.0")
33805)]
33806#[cfg_attr(
33807 target_arch = "arm",
33808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33809)]
33810pub fn vpadd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
33811 unsafe extern "unadjusted" {
33812 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v2f32")]
33813 #[cfg_attr(
33814 any(target_arch = "aarch64", target_arch = "arm64ec"),
33815 link_name = "llvm.aarch64.neon.faddp.v2f32"
33816 )]
33817 fn _vpadd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
33818 }
33819 unsafe { _vpadd_f32(a, b) }
33820}
33821#[doc = "Add pairwise."]
33822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s8)"]
33823#[inline(always)]
33824#[target_feature(enable = "neon")]
33825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33826#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33827#[cfg_attr(
33828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33829 assert_instr(addp)
33830)]
33831#[cfg_attr(
33832 not(target_arch = "arm"),
33833 stable(feature = "neon_intrinsics", since = "1.59.0")
33834)]
33835#[cfg_attr(
33836 target_arch = "arm",
33837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33838)]
33839pub fn vpadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
33840 unsafe extern "unadjusted" {
33841 #[cfg_attr(
33842 any(target_arch = "aarch64", target_arch = "arm64ec"),
33843 link_name = "llvm.aarch64.neon.addp.v8i8"
33844 )]
33845 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v8i8")]
33846 fn _vpadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
33847 }
33848 unsafe { _vpadd_s8(a, b) }
33849}
33850#[doc = "Add pairwise."]
33851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s16)"]
33852#[inline(always)]
33853#[target_feature(enable = "neon")]
33854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33855#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33856#[cfg_attr(
33857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33858 assert_instr(addp)
33859)]
33860#[cfg_attr(
33861 not(target_arch = "arm"),
33862 stable(feature = "neon_intrinsics", since = "1.59.0")
33863)]
33864#[cfg_attr(
33865 target_arch = "arm",
33866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33867)]
33868pub fn vpadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
33869 unsafe extern "unadjusted" {
33870 #[cfg_attr(
33871 any(target_arch = "aarch64", target_arch = "arm64ec"),
33872 link_name = "llvm.aarch64.neon.addp.v4i16"
33873 )]
33874 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v4i16")]
33875 fn _vpadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
33876 }
33877 unsafe { _vpadd_s16(a, b) }
33878}
33879#[doc = "Add pairwise."]
33880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s32)"]
33881#[inline(always)]
33882#[target_feature(enable = "neon")]
33883#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33884#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33885#[cfg_attr(
33886 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33887 assert_instr(addp)
33888)]
33889#[cfg_attr(
33890 not(target_arch = "arm"),
33891 stable(feature = "neon_intrinsics", since = "1.59.0")
33892)]
33893#[cfg_attr(
33894 target_arch = "arm",
33895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33896)]
33897pub fn vpadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
33898 unsafe extern "unadjusted" {
33899 #[cfg_attr(
33900 any(target_arch = "aarch64", target_arch = "arm64ec"),
33901 link_name = "llvm.aarch64.neon.addp.v2i32"
33902 )]
33903 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v2i32")]
33904 fn _vpadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
33905 }
33906 unsafe { _vpadd_s32(a, b) }
33907}
33908#[doc = "Add pairwise."]
33909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u8)"]
33910#[inline(always)]
33911#[cfg(target_endian = "little")]
33912#[target_feature(enable = "neon")]
33913#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33914#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33915#[cfg_attr(
33916 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33917 assert_instr(addp)
33918)]
33919#[cfg_attr(
33920 not(target_arch = "arm"),
33921 stable(feature = "neon_intrinsics", since = "1.59.0")
33922)]
33923#[cfg_attr(
33924 target_arch = "arm",
33925 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33926)]
33927pub fn vpadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
33928 unsafe { transmute(vpadd_s8(transmute(a), transmute(b))) }
33929}
33930#[doc = "Add pairwise."]
33931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u8)"]
33932#[inline(always)]
33933#[cfg(target_endian = "big")]
33934#[target_feature(enable = "neon")]
33935#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33936#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33937#[cfg_attr(
33938 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33939 assert_instr(addp)
33940)]
33941#[cfg_attr(
33942 not(target_arch = "arm"),
33943 stable(feature = "neon_intrinsics", since = "1.59.0")
33944)]
33945#[cfg_attr(
33946 target_arch = "arm",
33947 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33948)]
33949pub fn vpadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
33950 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
33951 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
33952 unsafe {
33953 let ret_val: uint8x8_t = transmute(vpadd_s8(transmute(a), transmute(b)));
33954 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
33955 }
33956}
33957#[doc = "Add pairwise."]
33958#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u16)"]
33959#[inline(always)]
33960#[cfg(target_endian = "little")]
33961#[target_feature(enable = "neon")]
33962#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33963#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33964#[cfg_attr(
33965 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33966 assert_instr(addp)
33967)]
33968#[cfg_attr(
33969 not(target_arch = "arm"),
33970 stable(feature = "neon_intrinsics", since = "1.59.0")
33971)]
33972#[cfg_attr(
33973 target_arch = "arm",
33974 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33975)]
33976pub fn vpadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
33977 unsafe { transmute(vpadd_s16(transmute(a), transmute(b))) }
33978}
33979#[doc = "Add pairwise."]
33980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u16)"]
33981#[inline(always)]
33982#[cfg(target_endian = "big")]
33983#[target_feature(enable = "neon")]
33984#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33985#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33986#[cfg_attr(
33987 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33988 assert_instr(addp)
33989)]
33990#[cfg_attr(
33991 not(target_arch = "arm"),
33992 stable(feature = "neon_intrinsics", since = "1.59.0")
33993)]
33994#[cfg_attr(
33995 target_arch = "arm",
33996 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33997)]
33998pub fn vpadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
33999 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
34000 let b: uint16x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
34001 unsafe {
34002 let ret_val: uint16x4_t = transmute(vpadd_s16(transmute(a), transmute(b)));
34003 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
34004 }
34005}
34006#[doc = "Add pairwise."]
34007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u32)"]
34008#[inline(always)]
34009#[cfg(target_endian = "little")]
34010#[target_feature(enable = "neon")]
34011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34012#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
34013#[cfg_attr(
34014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34015 assert_instr(addp)
34016)]
34017#[cfg_attr(
34018 not(target_arch = "arm"),
34019 stable(feature = "neon_intrinsics", since = "1.59.0")
34020)]
34021#[cfg_attr(
34022 target_arch = "arm",
34023 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34024)]
34025pub fn vpadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
34026 unsafe { transmute(vpadd_s32(transmute(a), transmute(b))) }
34027}
34028#[doc = "Add pairwise."]
34029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u32)"]
34030#[inline(always)]
34031#[cfg(target_endian = "big")]
34032#[target_feature(enable = "neon")]
34033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34034#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
34035#[cfg_attr(
34036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34037 assert_instr(addp)
34038)]
34039#[cfg_attr(
34040 not(target_arch = "arm"),
34041 stable(feature = "neon_intrinsics", since = "1.59.0")
34042)]
34043#[cfg_attr(
34044 target_arch = "arm",
34045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34046)]
34047pub fn vpadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
34048 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
34049 let b: uint32x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
34050 unsafe {
34051 let ret_val: uint32x2_t = transmute(vpadd_s32(transmute(a), transmute(b)));
34052 simd_shuffle!(ret_val, ret_val, [1, 0])
34053 }
34054}
34055#[doc = "Signed Add and Accumulate Long Pairwise."]
34056#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s8)"]
34057#[inline(always)]
34058#[target_feature(enable = "neon")]
34059#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34060#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s8"))]
34061#[cfg_attr(
34062 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34063 assert_instr(saddlp)
34064)]
34065#[cfg_attr(
34066 not(target_arch = "arm"),
34067 stable(feature = "neon_intrinsics", since = "1.59.0")
34068)]
34069#[cfg_attr(
34070 target_arch = "arm",
34071 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34072)]
34073pub fn vpaddl_s8(a: int8x8_t) -> int16x4_t {
34074 unsafe extern "unadjusted" {
34075 #[cfg_attr(
34076 any(target_arch = "aarch64", target_arch = "arm64ec"),
34077 link_name = "llvm.aarch64.neon.saddlp.v4i16.v8i8"
34078 )]
34079 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v4i16.v8i8")]
34080 fn _vpaddl_s8(a: int8x8_t) -> int16x4_t;
34081 }
34082 unsafe { _vpaddl_s8(a) }
34083}
34084#[doc = "Signed Add and Accumulate Long Pairwise."]
34085#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s8)"]
34086#[inline(always)]
34087#[target_feature(enable = "neon")]
34088#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34089#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s8"))]
34090#[cfg_attr(
34091 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34092 assert_instr(saddlp)
34093)]
34094#[cfg_attr(
34095 not(target_arch = "arm"),
34096 stable(feature = "neon_intrinsics", since = "1.59.0")
34097)]
34098#[cfg_attr(
34099 target_arch = "arm",
34100 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34101)]
34102pub fn vpaddlq_s8(a: int8x16_t) -> int16x8_t {
34103 unsafe extern "unadjusted" {
34104 #[cfg_attr(
34105 any(target_arch = "aarch64", target_arch = "arm64ec"),
34106 link_name = "llvm.aarch64.neon.saddlp.v8i16.v16i8"
34107 )]
34108 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v8i16.v16i8")]
34109 fn _vpaddlq_s8(a: int8x16_t) -> int16x8_t;
34110 }
34111 unsafe { _vpaddlq_s8(a) }
34112}
34113#[doc = "Signed Add and Accumulate Long Pairwise."]
34114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s16)"]
34115#[inline(always)]
34116#[target_feature(enable = "neon")]
34117#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34118#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s16"))]
34119#[cfg_attr(
34120 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34121 assert_instr(saddlp)
34122)]
34123#[cfg_attr(
34124 not(target_arch = "arm"),
34125 stable(feature = "neon_intrinsics", since = "1.59.0")
34126)]
34127#[cfg_attr(
34128 target_arch = "arm",
34129 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34130)]
34131pub fn vpaddl_s16(a: int16x4_t) -> int32x2_t {
34132 unsafe extern "unadjusted" {
34133 #[cfg_attr(
34134 any(target_arch = "aarch64", target_arch = "arm64ec"),
34135 link_name = "llvm.aarch64.neon.saddlp.v2i32.v4i16"
34136 )]
34137 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v2i32.v4i16")]
34138 fn _vpaddl_s16(a: int16x4_t) -> int32x2_t;
34139 }
34140 unsafe { _vpaddl_s16(a) }
34141}
34142#[doc = "Signed Add and Accumulate Long Pairwise."]
34143#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s16)"]
34144#[inline(always)]
34145#[target_feature(enable = "neon")]
34146#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34147#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s16"))]
34148#[cfg_attr(
34149 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34150 assert_instr(saddlp)
34151)]
34152#[cfg_attr(
34153 not(target_arch = "arm"),
34154 stable(feature = "neon_intrinsics", since = "1.59.0")
34155)]
34156#[cfg_attr(
34157 target_arch = "arm",
34158 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34159)]
34160pub fn vpaddlq_s16(a: int16x8_t) -> int32x4_t {
34161 unsafe extern "unadjusted" {
34162 #[cfg_attr(
34163 any(target_arch = "aarch64", target_arch = "arm64ec"),
34164 link_name = "llvm.aarch64.neon.saddlp.v4i32.v8i16"
34165 )]
34166 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v4i32.v8i16")]
34167 fn _vpaddlq_s16(a: int16x8_t) -> int32x4_t;
34168 }
34169 unsafe { _vpaddlq_s16(a) }
34170}
34171#[doc = "Signed Add and Accumulate Long Pairwise."]
34172#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s32)"]
34173#[inline(always)]
34174#[target_feature(enable = "neon")]
34175#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34176#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s32"))]
34177#[cfg_attr(
34178 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34179 assert_instr(saddlp)
34180)]
34181#[cfg_attr(
34182 not(target_arch = "arm"),
34183 stable(feature = "neon_intrinsics", since = "1.59.0")
34184)]
34185#[cfg_attr(
34186 target_arch = "arm",
34187 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34188)]
34189pub fn vpaddl_s32(a: int32x2_t) -> int64x1_t {
34190 unsafe extern "unadjusted" {
34191 #[cfg_attr(
34192 any(target_arch = "aarch64", target_arch = "arm64ec"),
34193 link_name = "llvm.aarch64.neon.saddlp.v1i64.v2i32"
34194 )]
34195 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v1i64.v2i32")]
34196 fn _vpaddl_s32(a: int32x2_t) -> int64x1_t;
34197 }
34198 unsafe { _vpaddl_s32(a) }
34199}
34200#[doc = "Signed Add and Accumulate Long Pairwise."]
34201#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s32)"]
34202#[inline(always)]
34203#[target_feature(enable = "neon")]
34204#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34205#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s32"))]
34206#[cfg_attr(
34207 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34208 assert_instr(saddlp)
34209)]
34210#[cfg_attr(
34211 not(target_arch = "arm"),
34212 stable(feature = "neon_intrinsics", since = "1.59.0")
34213)]
34214#[cfg_attr(
34215 target_arch = "arm",
34216 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34217)]
34218pub fn vpaddlq_s32(a: int32x4_t) -> int64x2_t {
34219 unsafe extern "unadjusted" {
34220 #[cfg_attr(
34221 any(target_arch = "aarch64", target_arch = "arm64ec"),
34222 link_name = "llvm.aarch64.neon.saddlp.v2i64.v4i32"
34223 )]
34224 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v2i64.v4i32")]
34225 fn _vpaddlq_s32(a: int32x4_t) -> int64x2_t;
34226 }
34227 unsafe { _vpaddlq_s32(a) }
34228}
34229#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u8)"]
34231#[inline(always)]
34232#[target_feature(enable = "neon")]
34233#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34234#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u8"))]
34235#[cfg_attr(
34236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34237 assert_instr(uaddlp)
34238)]
34239#[cfg_attr(
34240 not(target_arch = "arm"),
34241 stable(feature = "neon_intrinsics", since = "1.59.0")
34242)]
34243#[cfg_attr(
34244 target_arch = "arm",
34245 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34246)]
34247pub fn vpaddl_u8(a: uint8x8_t) -> uint16x4_t {
34248 unsafe extern "unadjusted" {
34249 #[cfg_attr(
34250 any(target_arch = "aarch64", target_arch = "arm64ec"),
34251 link_name = "llvm.aarch64.neon.uaddlp.v4i16.v8i8"
34252 )]
34253 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v4i16.v8i8")]
34254 fn _vpaddl_u8(a: uint8x8_t) -> uint16x4_t;
34255 }
34256 unsafe { _vpaddl_u8(a) }
34257}
34258#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u8)"]
34260#[inline(always)]
34261#[target_feature(enable = "neon")]
34262#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34263#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u8"))]
34264#[cfg_attr(
34265 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34266 assert_instr(uaddlp)
34267)]
34268#[cfg_attr(
34269 not(target_arch = "arm"),
34270 stable(feature = "neon_intrinsics", since = "1.59.0")
34271)]
34272#[cfg_attr(
34273 target_arch = "arm",
34274 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34275)]
34276pub fn vpaddlq_u8(a: uint8x16_t) -> uint16x8_t {
34277 unsafe extern "unadjusted" {
34278 #[cfg_attr(
34279 any(target_arch = "aarch64", target_arch = "arm64ec"),
34280 link_name = "llvm.aarch64.neon.uaddlp.v8i16.v16i8"
34281 )]
34282 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v8i16.v16i8")]
34283 fn _vpaddlq_u8(a: uint8x16_t) -> uint16x8_t;
34284 }
34285 unsafe { _vpaddlq_u8(a) }
34286}
34287#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u16)"]
34289#[inline(always)]
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("vpaddl.u16"))]
34293#[cfg_attr(
34294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34295 assert_instr(uaddlp)
34296)]
34297#[cfg_attr(
34298 not(target_arch = "arm"),
34299 stable(feature = "neon_intrinsics", since = "1.59.0")
34300)]
34301#[cfg_attr(
34302 target_arch = "arm",
34303 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34304)]
34305pub fn vpaddl_u16(a: uint16x4_t) -> uint32x2_t {
34306 unsafe extern "unadjusted" {
34307 #[cfg_attr(
34308 any(target_arch = "aarch64", target_arch = "arm64ec"),
34309 link_name = "llvm.aarch64.neon.uaddlp.v2i32.v4i16"
34310 )]
34311 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v2i32.v4i16")]
34312 fn _vpaddl_u16(a: uint16x4_t) -> uint32x2_t;
34313 }
34314 unsafe { _vpaddl_u16(a) }
34315}
34316#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u16)"]
34318#[inline(always)]
34319#[target_feature(enable = "neon")]
34320#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34321#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u16"))]
34322#[cfg_attr(
34323 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34324 assert_instr(uaddlp)
34325)]
34326#[cfg_attr(
34327 not(target_arch = "arm"),
34328 stable(feature = "neon_intrinsics", since = "1.59.0")
34329)]
34330#[cfg_attr(
34331 target_arch = "arm",
34332 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34333)]
34334pub fn vpaddlq_u16(a: uint16x8_t) -> uint32x4_t {
34335 unsafe extern "unadjusted" {
34336 #[cfg_attr(
34337 any(target_arch = "aarch64", target_arch = "arm64ec"),
34338 link_name = "llvm.aarch64.neon.uaddlp.v4i32.v8i16"
34339 )]
34340 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v4i32.v8i16")]
34341 fn _vpaddlq_u16(a: uint16x8_t) -> uint32x4_t;
34342 }
34343 unsafe { _vpaddlq_u16(a) }
34344}
34345#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u32)"]
34347#[inline(always)]
34348#[target_feature(enable = "neon")]
34349#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34350#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u32"))]
34351#[cfg_attr(
34352 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34353 assert_instr(uaddlp)
34354)]
34355#[cfg_attr(
34356 not(target_arch = "arm"),
34357 stable(feature = "neon_intrinsics", since = "1.59.0")
34358)]
34359#[cfg_attr(
34360 target_arch = "arm",
34361 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34362)]
34363pub fn vpaddl_u32(a: uint32x2_t) -> uint64x1_t {
34364 unsafe extern "unadjusted" {
34365 #[cfg_attr(
34366 any(target_arch = "aarch64", target_arch = "arm64ec"),
34367 link_name = "llvm.aarch64.neon.uaddlp.v1i64.v2i32"
34368 )]
34369 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v1i64.v2i32")]
34370 fn _vpaddl_u32(a: uint32x2_t) -> uint64x1_t;
34371 }
34372 unsafe { _vpaddl_u32(a) }
34373}
34374#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u32)"]
34376#[inline(always)]
34377#[target_feature(enable = "neon")]
34378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34379#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u32"))]
34380#[cfg_attr(
34381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34382 assert_instr(uaddlp)
34383)]
34384#[cfg_attr(
34385 not(target_arch = "arm"),
34386 stable(feature = "neon_intrinsics", since = "1.59.0")
34387)]
34388#[cfg_attr(
34389 target_arch = "arm",
34390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34391)]
34392pub fn vpaddlq_u32(a: uint32x4_t) -> uint64x2_t {
34393 unsafe extern "unadjusted" {
34394 #[cfg_attr(
34395 any(target_arch = "aarch64", target_arch = "arm64ec"),
34396 link_name = "llvm.aarch64.neon.uaddlp.v2i64.v4i32"
34397 )]
34398 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v2i64.v4i32")]
34399 fn _vpaddlq_u32(a: uint32x4_t) -> uint64x2_t;
34400 }
34401 unsafe { _vpaddlq_u32(a) }
34402}
34403#[doc = "Folding maximum of adjacent pairs"]
34404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_f32)"]
34405#[inline(always)]
34406#[target_feature(enable = "neon")]
34407#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34408#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34409#[cfg_attr(
34410 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34411 assert_instr(fmaxp)
34412)]
34413#[cfg_attr(
34414 not(target_arch = "arm"),
34415 stable(feature = "neon_intrinsics", since = "1.59.0")
34416)]
34417#[cfg_attr(
34418 target_arch = "arm",
34419 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34420)]
34421pub fn vpmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
34422 unsafe extern "unadjusted" {
34423 #[cfg_attr(
34424 any(target_arch = "aarch64", target_arch = "arm64ec"),
34425 link_name = "llvm.aarch64.neon.fmaxp.v2f32"
34426 )]
34427 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v2f32")]
34428 fn _vpmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
34429 }
34430 unsafe { _vpmax_f32(a, b) }
34431}
34432#[doc = "Folding maximum of adjacent pairs"]
34433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s8)"]
34434#[inline(always)]
34435#[target_feature(enable = "neon")]
34436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34437#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34438#[cfg_attr(
34439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34440 assert_instr(smaxp)
34441)]
34442#[cfg_attr(
34443 not(target_arch = "arm"),
34444 stable(feature = "neon_intrinsics", since = "1.59.0")
34445)]
34446#[cfg_attr(
34447 target_arch = "arm",
34448 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34449)]
34450pub fn vpmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
34451 unsafe extern "unadjusted" {
34452 #[cfg_attr(
34453 any(target_arch = "aarch64", target_arch = "arm64ec"),
34454 link_name = "llvm.aarch64.neon.smaxp.v8i8"
34455 )]
34456 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v8i8")]
34457 fn _vpmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
34458 }
34459 unsafe { _vpmax_s8(a, b) }
34460}
34461#[doc = "Folding maximum of adjacent pairs"]
34462#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s16)"]
34463#[inline(always)]
34464#[target_feature(enable = "neon")]
34465#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34466#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34467#[cfg_attr(
34468 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34469 assert_instr(smaxp)
34470)]
34471#[cfg_attr(
34472 not(target_arch = "arm"),
34473 stable(feature = "neon_intrinsics", since = "1.59.0")
34474)]
34475#[cfg_attr(
34476 target_arch = "arm",
34477 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34478)]
34479pub fn vpmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
34480 unsafe extern "unadjusted" {
34481 #[cfg_attr(
34482 any(target_arch = "aarch64", target_arch = "arm64ec"),
34483 link_name = "llvm.aarch64.neon.smaxp.v4i16"
34484 )]
34485 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v4i16")]
34486 fn _vpmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
34487 }
34488 unsafe { _vpmax_s16(a, b) }
34489}
34490#[doc = "Folding maximum of adjacent pairs"]
34491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s32)"]
34492#[inline(always)]
34493#[target_feature(enable = "neon")]
34494#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34495#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34496#[cfg_attr(
34497 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34498 assert_instr(smaxp)
34499)]
34500#[cfg_attr(
34501 not(target_arch = "arm"),
34502 stable(feature = "neon_intrinsics", since = "1.59.0")
34503)]
34504#[cfg_attr(
34505 target_arch = "arm",
34506 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34507)]
34508pub fn vpmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
34509 unsafe extern "unadjusted" {
34510 #[cfg_attr(
34511 any(target_arch = "aarch64", target_arch = "arm64ec"),
34512 link_name = "llvm.aarch64.neon.smaxp.v2i32"
34513 )]
34514 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v2i32")]
34515 fn _vpmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
34516 }
34517 unsafe { _vpmax_s32(a, b) }
34518}
34519#[doc = "Folding maximum of adjacent pairs"]
34520#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u8)"]
34521#[inline(always)]
34522#[target_feature(enable = "neon")]
34523#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34524#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34525#[cfg_attr(
34526 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34527 assert_instr(umaxp)
34528)]
34529#[cfg_attr(
34530 not(target_arch = "arm"),
34531 stable(feature = "neon_intrinsics", since = "1.59.0")
34532)]
34533#[cfg_attr(
34534 target_arch = "arm",
34535 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34536)]
34537pub fn vpmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
34538 unsafe extern "unadjusted" {
34539 #[cfg_attr(
34540 any(target_arch = "aarch64", target_arch = "arm64ec"),
34541 link_name = "llvm.aarch64.neon.umaxp.v8i8"
34542 )]
34543 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v8i8")]
34544 fn _vpmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
34545 }
34546 unsafe { _vpmax_u8(a, b) }
34547}
34548#[doc = "Folding maximum of adjacent pairs"]
34549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u16)"]
34550#[inline(always)]
34551#[target_feature(enable = "neon")]
34552#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34553#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34554#[cfg_attr(
34555 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34556 assert_instr(umaxp)
34557)]
34558#[cfg_attr(
34559 not(target_arch = "arm"),
34560 stable(feature = "neon_intrinsics", since = "1.59.0")
34561)]
34562#[cfg_attr(
34563 target_arch = "arm",
34564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34565)]
34566pub fn vpmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
34567 unsafe extern "unadjusted" {
34568 #[cfg_attr(
34569 any(target_arch = "aarch64", target_arch = "arm64ec"),
34570 link_name = "llvm.aarch64.neon.umaxp.v4i16"
34571 )]
34572 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v4i16")]
34573 fn _vpmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
34574 }
34575 unsafe { _vpmax_u16(a, b) }
34576}
34577#[doc = "Folding maximum of adjacent pairs"]
34578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u32)"]
34579#[inline(always)]
34580#[target_feature(enable = "neon")]
34581#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34582#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34583#[cfg_attr(
34584 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34585 assert_instr(umaxp)
34586)]
34587#[cfg_attr(
34588 not(target_arch = "arm"),
34589 stable(feature = "neon_intrinsics", since = "1.59.0")
34590)]
34591#[cfg_attr(
34592 target_arch = "arm",
34593 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34594)]
34595pub fn vpmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
34596 unsafe extern "unadjusted" {
34597 #[cfg_attr(
34598 any(target_arch = "aarch64", target_arch = "arm64ec"),
34599 link_name = "llvm.aarch64.neon.umaxp.v2i32"
34600 )]
34601 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v2i32")]
34602 fn _vpmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
34603 }
34604 unsafe { _vpmax_u32(a, b) }
34605}
34606#[doc = "Folding minimum of adjacent pairs"]
34607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_f32)"]
34608#[inline(always)]
34609#[target_feature(enable = "neon")]
34610#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34611#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34612#[cfg_attr(
34613 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34614 assert_instr(fminp)
34615)]
34616#[cfg_attr(
34617 not(target_arch = "arm"),
34618 stable(feature = "neon_intrinsics", since = "1.59.0")
34619)]
34620#[cfg_attr(
34621 target_arch = "arm",
34622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34623)]
34624pub fn vpmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
34625 unsafe extern "unadjusted" {
34626 #[cfg_attr(
34627 any(target_arch = "aarch64", target_arch = "arm64ec"),
34628 link_name = "llvm.aarch64.neon.fminp.v2f32"
34629 )]
34630 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v2f32")]
34631 fn _vpmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
34632 }
34633 unsafe { _vpmin_f32(a, b) }
34634}
34635#[doc = "Folding minimum of adjacent pairs"]
34636#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s8)"]
34637#[inline(always)]
34638#[target_feature(enable = "neon")]
34639#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34640#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34641#[cfg_attr(
34642 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34643 assert_instr(sminp)
34644)]
34645#[cfg_attr(
34646 not(target_arch = "arm"),
34647 stable(feature = "neon_intrinsics", since = "1.59.0")
34648)]
34649#[cfg_attr(
34650 target_arch = "arm",
34651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34652)]
34653pub fn vpmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
34654 unsafe extern "unadjusted" {
34655 #[cfg_attr(
34656 any(target_arch = "aarch64", target_arch = "arm64ec"),
34657 link_name = "llvm.aarch64.neon.sminp.v8i8"
34658 )]
34659 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v8i8")]
34660 fn _vpmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
34661 }
34662 unsafe { _vpmin_s8(a, b) }
34663}
34664#[doc = "Folding minimum of adjacent pairs"]
34665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s16)"]
34666#[inline(always)]
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(vpmin))]
34670#[cfg_attr(
34671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34672 assert_instr(sminp)
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 vpmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
34683 unsafe extern "unadjusted" {
34684 #[cfg_attr(
34685 any(target_arch = "aarch64", target_arch = "arm64ec"),
34686 link_name = "llvm.aarch64.neon.sminp.v4i16"
34687 )]
34688 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v4i16")]
34689 fn _vpmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
34690 }
34691 unsafe { _vpmin_s16(a, b) }
34692}
34693#[doc = "Folding minimum of adjacent pairs"]
34694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s32)"]
34695#[inline(always)]
34696#[target_feature(enable = "neon")]
34697#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34698#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34699#[cfg_attr(
34700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34701 assert_instr(sminp)
34702)]
34703#[cfg_attr(
34704 not(target_arch = "arm"),
34705 stable(feature = "neon_intrinsics", since = "1.59.0")
34706)]
34707#[cfg_attr(
34708 target_arch = "arm",
34709 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34710)]
34711pub fn vpmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
34712 unsafe extern "unadjusted" {
34713 #[cfg_attr(
34714 any(target_arch = "aarch64", target_arch = "arm64ec"),
34715 link_name = "llvm.aarch64.neon.sminp.v2i32"
34716 )]
34717 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v2i32")]
34718 fn _vpmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
34719 }
34720 unsafe { _vpmin_s32(a, b) }
34721}
34722#[doc = "Folding minimum of adjacent pairs"]
34723#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u8)"]
34724#[inline(always)]
34725#[target_feature(enable = "neon")]
34726#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34727#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34728#[cfg_attr(
34729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34730 assert_instr(uminp)
34731)]
34732#[cfg_attr(
34733 not(target_arch = "arm"),
34734 stable(feature = "neon_intrinsics", since = "1.59.0")
34735)]
34736#[cfg_attr(
34737 target_arch = "arm",
34738 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34739)]
34740pub fn vpmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
34741 unsafe extern "unadjusted" {
34742 #[cfg_attr(
34743 any(target_arch = "aarch64", target_arch = "arm64ec"),
34744 link_name = "llvm.aarch64.neon.uminp.v8i8"
34745 )]
34746 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v8i8")]
34747 fn _vpmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
34748 }
34749 unsafe { _vpmin_u8(a, b) }
34750}
34751#[doc = "Folding minimum of adjacent pairs"]
34752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u16)"]
34753#[inline(always)]
34754#[target_feature(enable = "neon")]
34755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34756#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34757#[cfg_attr(
34758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34759 assert_instr(uminp)
34760)]
34761#[cfg_attr(
34762 not(target_arch = "arm"),
34763 stable(feature = "neon_intrinsics", since = "1.59.0")
34764)]
34765#[cfg_attr(
34766 target_arch = "arm",
34767 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34768)]
34769pub fn vpmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
34770 unsafe extern "unadjusted" {
34771 #[cfg_attr(
34772 any(target_arch = "aarch64", target_arch = "arm64ec"),
34773 link_name = "llvm.aarch64.neon.uminp.v4i16"
34774 )]
34775 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v4i16")]
34776 fn _vpmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
34777 }
34778 unsafe { _vpmin_u16(a, b) }
34779}
34780#[doc = "Folding minimum of adjacent pairs"]
34781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u32)"]
34782#[inline(always)]
34783#[target_feature(enable = "neon")]
34784#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34785#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34786#[cfg_attr(
34787 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34788 assert_instr(uminp)
34789)]
34790#[cfg_attr(
34791 not(target_arch = "arm"),
34792 stable(feature = "neon_intrinsics", since = "1.59.0")
34793)]
34794#[cfg_attr(
34795 target_arch = "arm",
34796 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34797)]
34798pub fn vpmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
34799 unsafe extern "unadjusted" {
34800 #[cfg_attr(
34801 any(target_arch = "aarch64", target_arch = "arm64ec"),
34802 link_name = "llvm.aarch64.neon.uminp.v2i32"
34803 )]
34804 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v2i32")]
34805 fn _vpmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
34806 }
34807 unsafe { _vpmin_u32(a, b) }
34808}
34809#[doc = "Signed saturating Absolute value"]
34810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s8)"]
34811#[inline(always)]
34812#[target_feature(enable = "neon")]
34813#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34814#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s8"))]
34815#[cfg_attr(
34816 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34817 assert_instr(sqabs)
34818)]
34819#[cfg_attr(
34820 not(target_arch = "arm"),
34821 stable(feature = "neon_intrinsics", since = "1.59.0")
34822)]
34823#[cfg_attr(
34824 target_arch = "arm",
34825 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34826)]
34827pub fn vqabs_s8(a: int8x8_t) -> int8x8_t {
34828 unsafe extern "unadjusted" {
34829 #[cfg_attr(
34830 any(target_arch = "aarch64", target_arch = "arm64ec"),
34831 link_name = "llvm.aarch64.neon.sqabs.v8i8"
34832 )]
34833 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v8i8")]
34834 fn _vqabs_s8(a: int8x8_t) -> int8x8_t;
34835 }
34836 unsafe { _vqabs_s8(a) }
34837}
34838#[doc = "Signed saturating Absolute value"]
34839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s8)"]
34840#[inline(always)]
34841#[target_feature(enable = "neon")]
34842#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34843#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s8"))]
34844#[cfg_attr(
34845 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34846 assert_instr(sqabs)
34847)]
34848#[cfg_attr(
34849 not(target_arch = "arm"),
34850 stable(feature = "neon_intrinsics", since = "1.59.0")
34851)]
34852#[cfg_attr(
34853 target_arch = "arm",
34854 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34855)]
34856pub fn vqabsq_s8(a: int8x16_t) -> int8x16_t {
34857 unsafe extern "unadjusted" {
34858 #[cfg_attr(
34859 any(target_arch = "aarch64", target_arch = "arm64ec"),
34860 link_name = "llvm.aarch64.neon.sqabs.v16i8"
34861 )]
34862 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v16i8")]
34863 fn _vqabsq_s8(a: int8x16_t) -> int8x16_t;
34864 }
34865 unsafe { _vqabsq_s8(a) }
34866}
34867#[doc = "Signed saturating Absolute value"]
34868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s16)"]
34869#[inline(always)]
34870#[target_feature(enable = "neon")]
34871#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34872#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s16"))]
34873#[cfg_attr(
34874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34875 assert_instr(sqabs)
34876)]
34877#[cfg_attr(
34878 not(target_arch = "arm"),
34879 stable(feature = "neon_intrinsics", since = "1.59.0")
34880)]
34881#[cfg_attr(
34882 target_arch = "arm",
34883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34884)]
34885pub fn vqabs_s16(a: int16x4_t) -> int16x4_t {
34886 unsafe extern "unadjusted" {
34887 #[cfg_attr(
34888 any(target_arch = "aarch64", target_arch = "arm64ec"),
34889 link_name = "llvm.aarch64.neon.sqabs.v4i16"
34890 )]
34891 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v4i16")]
34892 fn _vqabs_s16(a: int16x4_t) -> int16x4_t;
34893 }
34894 unsafe { _vqabs_s16(a) }
34895}
34896#[doc = "Signed saturating Absolute value"]
34897#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s16)"]
34898#[inline(always)]
34899#[target_feature(enable = "neon")]
34900#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34901#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s16"))]
34902#[cfg_attr(
34903 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34904 assert_instr(sqabs)
34905)]
34906#[cfg_attr(
34907 not(target_arch = "arm"),
34908 stable(feature = "neon_intrinsics", since = "1.59.0")
34909)]
34910#[cfg_attr(
34911 target_arch = "arm",
34912 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34913)]
34914pub fn vqabsq_s16(a: int16x8_t) -> int16x8_t {
34915 unsafe extern "unadjusted" {
34916 #[cfg_attr(
34917 any(target_arch = "aarch64", target_arch = "arm64ec"),
34918 link_name = "llvm.aarch64.neon.sqabs.v8i16"
34919 )]
34920 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v8i16")]
34921 fn _vqabsq_s16(a: int16x8_t) -> int16x8_t;
34922 }
34923 unsafe { _vqabsq_s16(a) }
34924}
34925#[doc = "Signed saturating Absolute value"]
34926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s32)"]
34927#[inline(always)]
34928#[target_feature(enable = "neon")]
34929#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34930#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s32"))]
34931#[cfg_attr(
34932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34933 assert_instr(sqabs)
34934)]
34935#[cfg_attr(
34936 not(target_arch = "arm"),
34937 stable(feature = "neon_intrinsics", since = "1.59.0")
34938)]
34939#[cfg_attr(
34940 target_arch = "arm",
34941 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34942)]
34943pub fn vqabs_s32(a: int32x2_t) -> int32x2_t {
34944 unsafe extern "unadjusted" {
34945 #[cfg_attr(
34946 any(target_arch = "aarch64", target_arch = "arm64ec"),
34947 link_name = "llvm.aarch64.neon.sqabs.v2i32"
34948 )]
34949 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v2i32")]
34950 fn _vqabs_s32(a: int32x2_t) -> int32x2_t;
34951 }
34952 unsafe { _vqabs_s32(a) }
34953}
34954#[doc = "Signed saturating Absolute value"]
34955#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s32)"]
34956#[inline(always)]
34957#[target_feature(enable = "neon")]
34958#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34959#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s32"))]
34960#[cfg_attr(
34961 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34962 assert_instr(sqabs)
34963)]
34964#[cfg_attr(
34965 not(target_arch = "arm"),
34966 stable(feature = "neon_intrinsics", since = "1.59.0")
34967)]
34968#[cfg_attr(
34969 target_arch = "arm",
34970 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34971)]
34972pub fn vqabsq_s32(a: int32x4_t) -> int32x4_t {
34973 unsafe extern "unadjusted" {
34974 #[cfg_attr(
34975 any(target_arch = "aarch64", target_arch = "arm64ec"),
34976 link_name = "llvm.aarch64.neon.sqabs.v4i32"
34977 )]
34978 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v4i32")]
34979 fn _vqabsq_s32(a: int32x4_t) -> int32x4_t;
34980 }
34981 unsafe { _vqabsq_s32(a) }
34982}
34983#[doc = "Saturating add"]
34984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s8)"]
34985#[inline(always)]
34986#[target_feature(enable = "neon")]
34987#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34988#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s8"))]
34989#[cfg_attr(
34990 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34991 assert_instr(sqadd)
34992)]
34993#[cfg_attr(
34994 not(target_arch = "arm"),
34995 stable(feature = "neon_intrinsics", since = "1.59.0")
34996)]
34997#[cfg_attr(
34998 target_arch = "arm",
34999 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35000)]
35001pub fn vqadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
35002 unsafe { simd_saturating_add(a, b) }
35003}
35004#[doc = "Saturating add"]
35005#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s8)"]
35006#[inline(always)]
35007#[target_feature(enable = "neon")]
35008#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35009#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s8"))]
35010#[cfg_attr(
35011 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35012 assert_instr(sqadd)
35013)]
35014#[cfg_attr(
35015 not(target_arch = "arm"),
35016 stable(feature = "neon_intrinsics", since = "1.59.0")
35017)]
35018#[cfg_attr(
35019 target_arch = "arm",
35020 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35021)]
35022pub fn vqaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
35023 unsafe { simd_saturating_add(a, b) }
35024}
35025#[doc = "Saturating add"]
35026#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s16)"]
35027#[inline(always)]
35028#[target_feature(enable = "neon")]
35029#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35030#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s16"))]
35031#[cfg_attr(
35032 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35033 assert_instr(sqadd)
35034)]
35035#[cfg_attr(
35036 not(target_arch = "arm"),
35037 stable(feature = "neon_intrinsics", since = "1.59.0")
35038)]
35039#[cfg_attr(
35040 target_arch = "arm",
35041 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35042)]
35043pub fn vqadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
35044 unsafe { simd_saturating_add(a, b) }
35045}
35046#[doc = "Saturating add"]
35047#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s16)"]
35048#[inline(always)]
35049#[target_feature(enable = "neon")]
35050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35051#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s16"))]
35052#[cfg_attr(
35053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35054 assert_instr(sqadd)
35055)]
35056#[cfg_attr(
35057 not(target_arch = "arm"),
35058 stable(feature = "neon_intrinsics", since = "1.59.0")
35059)]
35060#[cfg_attr(
35061 target_arch = "arm",
35062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35063)]
35064pub fn vqaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
35065 unsafe { simd_saturating_add(a, b) }
35066}
35067#[doc = "Saturating add"]
35068#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s32)"]
35069#[inline(always)]
35070#[target_feature(enable = "neon")]
35071#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35072#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s32"))]
35073#[cfg_attr(
35074 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35075 assert_instr(sqadd)
35076)]
35077#[cfg_attr(
35078 not(target_arch = "arm"),
35079 stable(feature = "neon_intrinsics", since = "1.59.0")
35080)]
35081#[cfg_attr(
35082 target_arch = "arm",
35083 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35084)]
35085pub fn vqadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
35086 unsafe { simd_saturating_add(a, b) }
35087}
35088#[doc = "Saturating add"]
35089#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s32)"]
35090#[inline(always)]
35091#[target_feature(enable = "neon")]
35092#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35093#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s32"))]
35094#[cfg_attr(
35095 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35096 assert_instr(sqadd)
35097)]
35098#[cfg_attr(
35099 not(target_arch = "arm"),
35100 stable(feature = "neon_intrinsics", since = "1.59.0")
35101)]
35102#[cfg_attr(
35103 target_arch = "arm",
35104 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35105)]
35106pub fn vqaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
35107 unsafe { simd_saturating_add(a, b) }
35108}
35109#[doc = "Saturating add"]
35110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s64)"]
35111#[inline(always)]
35112#[target_feature(enable = "neon")]
35113#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35114#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s64"))]
35115#[cfg_attr(
35116 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35117 assert_instr(sqadd)
35118)]
35119#[cfg_attr(
35120 not(target_arch = "arm"),
35121 stable(feature = "neon_intrinsics", since = "1.59.0")
35122)]
35123#[cfg_attr(
35124 target_arch = "arm",
35125 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35126)]
35127pub fn vqadd_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
35128 unsafe { simd_saturating_add(a, b) }
35129}
35130#[doc = "Saturating add"]
35131#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s64)"]
35132#[inline(always)]
35133#[target_feature(enable = "neon")]
35134#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35135#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s64"))]
35136#[cfg_attr(
35137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35138 assert_instr(sqadd)
35139)]
35140#[cfg_attr(
35141 not(target_arch = "arm"),
35142 stable(feature = "neon_intrinsics", since = "1.59.0")
35143)]
35144#[cfg_attr(
35145 target_arch = "arm",
35146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35147)]
35148pub fn vqaddq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
35149 unsafe { simd_saturating_add(a, b) }
35150}
35151#[doc = "Saturating add"]
35152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u8)"]
35153#[inline(always)]
35154#[target_feature(enable = "neon")]
35155#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35156#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u8"))]
35157#[cfg_attr(
35158 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35159 assert_instr(uqadd)
35160)]
35161#[cfg_attr(
35162 not(target_arch = "arm"),
35163 stable(feature = "neon_intrinsics", since = "1.59.0")
35164)]
35165#[cfg_attr(
35166 target_arch = "arm",
35167 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35168)]
35169pub fn vqadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
35170 unsafe { simd_saturating_add(a, b) }
35171}
35172#[doc = "Saturating add"]
35173#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u8)"]
35174#[inline(always)]
35175#[target_feature(enable = "neon")]
35176#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35177#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u8"))]
35178#[cfg_attr(
35179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35180 assert_instr(uqadd)
35181)]
35182#[cfg_attr(
35183 not(target_arch = "arm"),
35184 stable(feature = "neon_intrinsics", since = "1.59.0")
35185)]
35186#[cfg_attr(
35187 target_arch = "arm",
35188 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35189)]
35190pub fn vqaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
35191 unsafe { simd_saturating_add(a, b) }
35192}
35193#[doc = "Saturating add"]
35194#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u16)"]
35195#[inline(always)]
35196#[target_feature(enable = "neon")]
35197#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35198#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u16"))]
35199#[cfg_attr(
35200 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35201 assert_instr(uqadd)
35202)]
35203#[cfg_attr(
35204 not(target_arch = "arm"),
35205 stable(feature = "neon_intrinsics", since = "1.59.0")
35206)]
35207#[cfg_attr(
35208 target_arch = "arm",
35209 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35210)]
35211pub fn vqadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
35212 unsafe { simd_saturating_add(a, b) }
35213}
35214#[doc = "Saturating add"]
35215#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u16)"]
35216#[inline(always)]
35217#[target_feature(enable = "neon")]
35218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35219#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u16"))]
35220#[cfg_attr(
35221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35222 assert_instr(uqadd)
35223)]
35224#[cfg_attr(
35225 not(target_arch = "arm"),
35226 stable(feature = "neon_intrinsics", since = "1.59.0")
35227)]
35228#[cfg_attr(
35229 target_arch = "arm",
35230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35231)]
35232pub fn vqaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
35233 unsafe { simd_saturating_add(a, b) }
35234}
35235#[doc = "Saturating add"]
35236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u32)"]
35237#[inline(always)]
35238#[target_feature(enable = "neon")]
35239#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35240#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u32"))]
35241#[cfg_attr(
35242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35243 assert_instr(uqadd)
35244)]
35245#[cfg_attr(
35246 not(target_arch = "arm"),
35247 stable(feature = "neon_intrinsics", since = "1.59.0")
35248)]
35249#[cfg_attr(
35250 target_arch = "arm",
35251 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35252)]
35253pub fn vqadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
35254 unsafe { simd_saturating_add(a, b) }
35255}
35256#[doc = "Saturating add"]
35257#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u32)"]
35258#[inline(always)]
35259#[target_feature(enable = "neon")]
35260#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35261#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u32"))]
35262#[cfg_attr(
35263 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35264 assert_instr(uqadd)
35265)]
35266#[cfg_attr(
35267 not(target_arch = "arm"),
35268 stable(feature = "neon_intrinsics", since = "1.59.0")
35269)]
35270#[cfg_attr(
35271 target_arch = "arm",
35272 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35273)]
35274pub fn vqaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
35275 unsafe { simd_saturating_add(a, b) }
35276}
35277#[doc = "Saturating add"]
35278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u64)"]
35279#[inline(always)]
35280#[target_feature(enable = "neon")]
35281#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35282#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u64"))]
35283#[cfg_attr(
35284 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35285 assert_instr(uqadd)
35286)]
35287#[cfg_attr(
35288 not(target_arch = "arm"),
35289 stable(feature = "neon_intrinsics", since = "1.59.0")
35290)]
35291#[cfg_attr(
35292 target_arch = "arm",
35293 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35294)]
35295pub fn vqadd_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
35296 unsafe { simd_saturating_add(a, b) }
35297}
35298#[doc = "Saturating add"]
35299#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u64)"]
35300#[inline(always)]
35301#[target_feature(enable = "neon")]
35302#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35303#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u64"))]
35304#[cfg_attr(
35305 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35306 assert_instr(uqadd)
35307)]
35308#[cfg_attr(
35309 not(target_arch = "arm"),
35310 stable(feature = "neon_intrinsics", since = "1.59.0")
35311)]
35312#[cfg_attr(
35313 target_arch = "arm",
35314 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35315)]
35316pub fn vqaddq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
35317 unsafe { simd_saturating_add(a, b) }
35318}
35319#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
35320#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_lane_s16)"]
35321#[inline(always)]
35322#[target_feature(enable = "neon")]
35323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35324#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal, N = 2))]
35325#[cfg_attr(
35326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35327 assert_instr(sqdmlal, N = 2)
35328)]
35329#[rustc_legacy_const_generics(3)]
35330#[cfg_attr(
35331 not(target_arch = "arm"),
35332 stable(feature = "neon_intrinsics", since = "1.59.0")
35333)]
35334#[cfg_attr(
35335 target_arch = "arm",
35336 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35337)]
35338pub fn vqdmlal_lane_s16<const N: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
35339 static_assert_uimm_bits!(N, 2);
35340 vqaddq_s32(a, vqdmull_lane_s16::<N>(b, c))
35341}
35342#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
35343#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_lane_s32)"]
35344#[inline(always)]
35345#[target_feature(enable = "neon")]
35346#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35347#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal, N = 1))]
35348#[cfg_attr(
35349 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35350 assert_instr(sqdmlal, N = 1)
35351)]
35352#[rustc_legacy_const_generics(3)]
35353#[cfg_attr(
35354 not(target_arch = "arm"),
35355 stable(feature = "neon_intrinsics", since = "1.59.0")
35356)]
35357#[cfg_attr(
35358 target_arch = "arm",
35359 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35360)]
35361pub fn vqdmlal_lane_s32<const N: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
35362 static_assert_uimm_bits!(N, 1);
35363 vqaddq_s64(a, vqdmull_lane_s32::<N>(b, c))
35364}
35365#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
35366#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_n_s16)"]
35367#[inline(always)]
35368#[target_feature(enable = "neon")]
35369#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35370#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
35371#[cfg_attr(
35372 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35373 assert_instr(sqdmlal)
35374)]
35375#[cfg_attr(
35376 not(target_arch = "arm"),
35377 stable(feature = "neon_intrinsics", since = "1.59.0")
35378)]
35379#[cfg_attr(
35380 target_arch = "arm",
35381 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35382)]
35383pub fn vqdmlal_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
35384 vqaddq_s32(a, vqdmull_n_s16(b, c))
35385}
35386#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
35387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_n_s32)"]
35388#[inline(always)]
35389#[target_feature(enable = "neon")]
35390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35391#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
35392#[cfg_attr(
35393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35394 assert_instr(sqdmlal)
35395)]
35396#[cfg_attr(
35397 not(target_arch = "arm"),
35398 stable(feature = "neon_intrinsics", since = "1.59.0")
35399)]
35400#[cfg_attr(
35401 target_arch = "arm",
35402 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35403)]
35404pub fn vqdmlal_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
35405 vqaddq_s64(a, vqdmull_n_s32(b, c))
35406}
35407#[doc = "Signed saturating doubling multiply-add long"]
35408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_s16)"]
35409#[inline(always)]
35410#[target_feature(enable = "neon")]
35411#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35412#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
35413#[cfg_attr(
35414 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35415 assert_instr(sqdmlal)
35416)]
35417#[cfg_attr(
35418 not(target_arch = "arm"),
35419 stable(feature = "neon_intrinsics", since = "1.59.0")
35420)]
35421#[cfg_attr(
35422 target_arch = "arm",
35423 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35424)]
35425pub fn vqdmlal_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
35426 vqaddq_s32(a, vqdmull_s16(b, c))
35427}
35428#[doc = "Signed saturating doubling multiply-add long"]
35429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_s32)"]
35430#[inline(always)]
35431#[target_feature(enable = "neon")]
35432#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35433#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
35434#[cfg_attr(
35435 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35436 assert_instr(sqdmlal)
35437)]
35438#[cfg_attr(
35439 not(target_arch = "arm"),
35440 stable(feature = "neon_intrinsics", since = "1.59.0")
35441)]
35442#[cfg_attr(
35443 target_arch = "arm",
35444 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35445)]
35446pub fn vqdmlal_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
35447 vqaddq_s64(a, vqdmull_s32(b, c))
35448}
35449#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
35450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_lane_s16)"]
35451#[inline(always)]
35452#[target_feature(enable = "neon")]
35453#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35454#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl, N = 2))]
35455#[cfg_attr(
35456 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35457 assert_instr(sqdmlsl, N = 2)
35458)]
35459#[rustc_legacy_const_generics(3)]
35460#[cfg_attr(
35461 not(target_arch = "arm"),
35462 stable(feature = "neon_intrinsics", since = "1.59.0")
35463)]
35464#[cfg_attr(
35465 target_arch = "arm",
35466 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35467)]
35468pub fn vqdmlsl_lane_s16<const N: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
35469 static_assert_uimm_bits!(N, 2);
35470 vqsubq_s32(a, vqdmull_lane_s16::<N>(b, c))
35471}
35472#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
35473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_lane_s32)"]
35474#[inline(always)]
35475#[target_feature(enable = "neon")]
35476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35477#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl, N = 1))]
35478#[cfg_attr(
35479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35480 assert_instr(sqdmlsl, N = 1)
35481)]
35482#[rustc_legacy_const_generics(3)]
35483#[cfg_attr(
35484 not(target_arch = "arm"),
35485 stable(feature = "neon_intrinsics", since = "1.59.0")
35486)]
35487#[cfg_attr(
35488 target_arch = "arm",
35489 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35490)]
35491pub fn vqdmlsl_lane_s32<const N: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
35492 static_assert_uimm_bits!(N, 1);
35493 vqsubq_s64(a, vqdmull_lane_s32::<N>(b, c))
35494}
35495#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
35496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_n_s16)"]
35497#[inline(always)]
35498#[target_feature(enable = "neon")]
35499#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35500#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
35501#[cfg_attr(
35502 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35503 assert_instr(sqdmlsl)
35504)]
35505#[cfg_attr(
35506 not(target_arch = "arm"),
35507 stable(feature = "neon_intrinsics", since = "1.59.0")
35508)]
35509#[cfg_attr(
35510 target_arch = "arm",
35511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35512)]
35513pub fn vqdmlsl_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
35514 vqsubq_s32(a, vqdmull_n_s16(b, c))
35515}
35516#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
35517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_n_s32)"]
35518#[inline(always)]
35519#[target_feature(enable = "neon")]
35520#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35521#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
35522#[cfg_attr(
35523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35524 assert_instr(sqdmlsl)
35525)]
35526#[cfg_attr(
35527 not(target_arch = "arm"),
35528 stable(feature = "neon_intrinsics", since = "1.59.0")
35529)]
35530#[cfg_attr(
35531 target_arch = "arm",
35532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35533)]
35534pub fn vqdmlsl_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
35535 vqsubq_s64(a, vqdmull_n_s32(b, c))
35536}
35537#[doc = "Signed saturating doubling multiply-subtract long"]
35538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_s16)"]
35539#[inline(always)]
35540#[target_feature(enable = "neon")]
35541#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35542#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
35543#[cfg_attr(
35544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35545 assert_instr(sqdmlsl)
35546)]
35547#[cfg_attr(
35548 not(target_arch = "arm"),
35549 stable(feature = "neon_intrinsics", since = "1.59.0")
35550)]
35551#[cfg_attr(
35552 target_arch = "arm",
35553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35554)]
35555pub fn vqdmlsl_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
35556 vqsubq_s32(a, vqdmull_s16(b, c))
35557}
35558#[doc = "Signed saturating doubling multiply-subtract long"]
35559#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_s32)"]
35560#[inline(always)]
35561#[target_feature(enable = "neon")]
35562#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35563#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
35564#[cfg_attr(
35565 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35566 assert_instr(sqdmlsl)
35567)]
35568#[cfg_attr(
35569 not(target_arch = "arm"),
35570 stable(feature = "neon_intrinsics", since = "1.59.0")
35571)]
35572#[cfg_attr(
35573 target_arch = "arm",
35574 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35575)]
35576pub fn vqdmlsl_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
35577 vqsubq_s64(a, vqdmull_s32(b, c))
35578}
35579#[doc = "Vector saturating doubling multiply high by scalar"]
35580#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_laneq_s16)"]
35581#[inline(always)]
35582#[target_feature(enable = "neon")]
35583#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35584#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
35585#[cfg_attr(
35586 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35587 assert_instr(sqdmulh, LANE = 0)
35588)]
35589#[rustc_legacy_const_generics(2)]
35590#[cfg_attr(
35591 not(target_arch = "arm"),
35592 stable(feature = "neon_intrinsics", since = "1.59.0")
35593)]
35594#[cfg_attr(
35595 target_arch = "arm",
35596 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35597)]
35598pub fn vqdmulh_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
35599 static_assert_uimm_bits!(LANE, 3);
35600 unsafe { vqdmulh_s16(a, vdup_n_s16(simd_extract!(b, LANE as u32))) }
35601}
35602#[doc = "Vector saturating doubling multiply high by scalar"]
35603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_laneq_s16)"]
35604#[inline(always)]
35605#[target_feature(enable = "neon")]
35606#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35607#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
35608#[cfg_attr(
35609 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35610 assert_instr(sqdmulh, LANE = 0)
35611)]
35612#[rustc_legacy_const_generics(2)]
35613#[cfg_attr(
35614 not(target_arch = "arm"),
35615 stable(feature = "neon_intrinsics", since = "1.59.0")
35616)]
35617#[cfg_attr(
35618 target_arch = "arm",
35619 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35620)]
35621pub fn vqdmulhq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
35622 static_assert_uimm_bits!(LANE, 3);
35623 unsafe { vqdmulhq_s16(a, vdupq_n_s16(simd_extract!(b, LANE as u32))) }
35624}
35625#[doc = "Vector saturating doubling multiply high by scalar"]
35626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_laneq_s32)"]
35627#[inline(always)]
35628#[target_feature(enable = "neon")]
35629#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35630#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
35631#[cfg_attr(
35632 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35633 assert_instr(sqdmulh, LANE = 0)
35634)]
35635#[rustc_legacy_const_generics(2)]
35636#[cfg_attr(
35637 not(target_arch = "arm"),
35638 stable(feature = "neon_intrinsics", since = "1.59.0")
35639)]
35640#[cfg_attr(
35641 target_arch = "arm",
35642 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35643)]
35644pub fn vqdmulh_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
35645 static_assert_uimm_bits!(LANE, 2);
35646 unsafe { vqdmulh_s32(a, vdup_n_s32(simd_extract!(b, LANE as u32))) }
35647}
35648#[doc = "Vector saturating doubling multiply high by scalar"]
35649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_laneq_s32)"]
35650#[inline(always)]
35651#[target_feature(enable = "neon")]
35652#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35653#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
35654#[cfg_attr(
35655 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35656 assert_instr(sqdmulh, LANE = 0)
35657)]
35658#[rustc_legacy_const_generics(2)]
35659#[cfg_attr(
35660 not(target_arch = "arm"),
35661 stable(feature = "neon_intrinsics", since = "1.59.0")
35662)]
35663#[cfg_attr(
35664 target_arch = "arm",
35665 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35666)]
35667pub fn vqdmulhq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
35668 static_assert_uimm_bits!(LANE, 2);
35669 unsafe { vqdmulhq_s32(a, vdupq_n_s32(simd_extract!(b, LANE as u32))) }
35670}
35671#[doc = "Vector saturating doubling multiply high with scalar"]
35672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_n_s16)"]
35673#[inline(always)]
35674#[target_feature(enable = "neon")]
35675#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35676#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35677#[cfg_attr(
35678 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35679 assert_instr(sqdmulh)
35680)]
35681#[cfg_attr(
35682 not(target_arch = "arm"),
35683 stable(feature = "neon_intrinsics", since = "1.59.0")
35684)]
35685#[cfg_attr(
35686 target_arch = "arm",
35687 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35688)]
35689pub fn vqdmulh_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
35690 let b: int16x4_t = vdup_n_s16(b);
35691 vqdmulh_s16(a, b)
35692}
35693#[doc = "Vector saturating doubling multiply high with scalar"]
35694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_n_s16)"]
35695#[inline(always)]
35696#[target_feature(enable = "neon")]
35697#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35698#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35699#[cfg_attr(
35700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35701 assert_instr(sqdmulh)
35702)]
35703#[cfg_attr(
35704 not(target_arch = "arm"),
35705 stable(feature = "neon_intrinsics", since = "1.59.0")
35706)]
35707#[cfg_attr(
35708 target_arch = "arm",
35709 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35710)]
35711pub fn vqdmulhq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
35712 let b: int16x8_t = vdupq_n_s16(b);
35713 vqdmulhq_s16(a, b)
35714}
35715#[doc = "Vector saturating doubling multiply high with scalar"]
35716#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_n_s32)"]
35717#[inline(always)]
35718#[target_feature(enable = "neon")]
35719#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35720#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35721#[cfg_attr(
35722 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35723 assert_instr(sqdmulh)
35724)]
35725#[cfg_attr(
35726 not(target_arch = "arm"),
35727 stable(feature = "neon_intrinsics", since = "1.59.0")
35728)]
35729#[cfg_attr(
35730 target_arch = "arm",
35731 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35732)]
35733pub fn vqdmulh_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
35734 let b: int32x2_t = vdup_n_s32(b);
35735 vqdmulh_s32(a, b)
35736}
35737#[doc = "Vector saturating doubling multiply high with scalar"]
35738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_n_s32)"]
35739#[inline(always)]
35740#[target_feature(enable = "neon")]
35741#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35742#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35743#[cfg_attr(
35744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35745 assert_instr(sqdmulh)
35746)]
35747#[cfg_attr(
35748 not(target_arch = "arm"),
35749 stable(feature = "neon_intrinsics", since = "1.59.0")
35750)]
35751#[cfg_attr(
35752 target_arch = "arm",
35753 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35754)]
35755pub fn vqdmulhq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
35756 let b: int32x4_t = vdupq_n_s32(b);
35757 vqdmulhq_s32(a, b)
35758}
35759#[doc = "Signed saturating doubling multiply returning high half"]
35760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_s16)"]
35761#[inline(always)]
35762#[target_feature(enable = "neon")]
35763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35764#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35765#[cfg_attr(
35766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35767 assert_instr(sqdmulh)
35768)]
35769#[cfg_attr(
35770 not(target_arch = "arm"),
35771 stable(feature = "neon_intrinsics", since = "1.59.0")
35772)]
35773#[cfg_attr(
35774 target_arch = "arm",
35775 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35776)]
35777pub fn vqdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
35778 unsafe extern "unadjusted" {
35779 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v4i16")]
35780 #[cfg_attr(
35781 any(target_arch = "aarch64", target_arch = "arm64ec"),
35782 link_name = "llvm.aarch64.neon.sqdmulh.v4i16"
35783 )]
35784 fn _vqdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
35785 }
35786 unsafe { _vqdmulh_s16(a, b) }
35787}
35788#[doc = "Signed saturating doubling multiply returning high half"]
35789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_s16)"]
35790#[inline(always)]
35791#[target_feature(enable = "neon")]
35792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35793#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35794#[cfg_attr(
35795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35796 assert_instr(sqdmulh)
35797)]
35798#[cfg_attr(
35799 not(target_arch = "arm"),
35800 stable(feature = "neon_intrinsics", since = "1.59.0")
35801)]
35802#[cfg_attr(
35803 target_arch = "arm",
35804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35805)]
35806pub fn vqdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
35807 unsafe extern "unadjusted" {
35808 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v8i16")]
35809 #[cfg_attr(
35810 any(target_arch = "aarch64", target_arch = "arm64ec"),
35811 link_name = "llvm.aarch64.neon.sqdmulh.v8i16"
35812 )]
35813 fn _vqdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
35814 }
35815 unsafe { _vqdmulhq_s16(a, b) }
35816}
35817#[doc = "Signed saturating doubling multiply returning high half"]
35818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_s32)"]
35819#[inline(always)]
35820#[target_feature(enable = "neon")]
35821#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35822#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35823#[cfg_attr(
35824 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35825 assert_instr(sqdmulh)
35826)]
35827#[cfg_attr(
35828 not(target_arch = "arm"),
35829 stable(feature = "neon_intrinsics", since = "1.59.0")
35830)]
35831#[cfg_attr(
35832 target_arch = "arm",
35833 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35834)]
35835pub fn vqdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
35836 unsafe extern "unadjusted" {
35837 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v2i32")]
35838 #[cfg_attr(
35839 any(target_arch = "aarch64", target_arch = "arm64ec"),
35840 link_name = "llvm.aarch64.neon.sqdmulh.v2i32"
35841 )]
35842 fn _vqdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
35843 }
35844 unsafe { _vqdmulh_s32(a, b) }
35845}
35846#[doc = "Signed saturating doubling multiply returning high half"]
35847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_s32)"]
35848#[inline(always)]
35849#[target_feature(enable = "neon")]
35850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35851#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35852#[cfg_attr(
35853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35854 assert_instr(sqdmulh)
35855)]
35856#[cfg_attr(
35857 not(target_arch = "arm"),
35858 stable(feature = "neon_intrinsics", since = "1.59.0")
35859)]
35860#[cfg_attr(
35861 target_arch = "arm",
35862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35863)]
35864pub fn vqdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
35865 unsafe extern "unadjusted" {
35866 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v4i32")]
35867 #[cfg_attr(
35868 any(target_arch = "aarch64", target_arch = "arm64ec"),
35869 link_name = "llvm.aarch64.neon.sqdmulh.v4i32"
35870 )]
35871 fn _vqdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
35872 }
35873 unsafe { _vqdmulhq_s32(a, b) }
35874}
35875#[doc = "Vector saturating doubling long multiply by scalar"]
35876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_lane_s16)"]
35877#[inline(always)]
35878#[target_feature(enable = "neon")]
35879#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35880#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull, N = 2))]
35881#[cfg_attr(
35882 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35883 assert_instr(sqdmull, N = 2)
35884)]
35885#[rustc_legacy_const_generics(2)]
35886#[cfg_attr(
35887 not(target_arch = "arm"),
35888 stable(feature = "neon_intrinsics", since = "1.59.0")
35889)]
35890#[cfg_attr(
35891 target_arch = "arm",
35892 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35893)]
35894pub fn vqdmull_lane_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int32x4_t {
35895 static_assert_uimm_bits!(N, 2);
35896 unsafe {
35897 let b: int16x4_t = simd_shuffle!(b, b, [N as u32, N as u32, N as u32, N as u32]);
35898 vqdmull_s16(a, b)
35899 }
35900}
35901#[doc = "Vector saturating doubling long multiply by scalar"]
35902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_lane_s32)"]
35903#[inline(always)]
35904#[target_feature(enable = "neon")]
35905#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35906#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull, N = 1))]
35907#[cfg_attr(
35908 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35909 assert_instr(sqdmull, N = 1)
35910)]
35911#[rustc_legacy_const_generics(2)]
35912#[cfg_attr(
35913 not(target_arch = "arm"),
35914 stable(feature = "neon_intrinsics", since = "1.59.0")
35915)]
35916#[cfg_attr(
35917 target_arch = "arm",
35918 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35919)]
35920pub fn vqdmull_lane_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int64x2_t {
35921 static_assert_uimm_bits!(N, 1);
35922 unsafe {
35923 let b: int32x2_t = simd_shuffle!(b, b, [N as u32, N as u32]);
35924 vqdmull_s32(a, b)
35925 }
35926}
35927#[doc = "Vector saturating doubling long multiply with scalar"]
35928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_n_s16)"]
35929#[inline(always)]
35930#[target_feature(enable = "neon")]
35931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
35933#[cfg_attr(
35934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35935 assert_instr(sqdmull)
35936)]
35937#[cfg_attr(
35938 not(target_arch = "arm"),
35939 stable(feature = "neon_intrinsics", since = "1.59.0")
35940)]
35941#[cfg_attr(
35942 target_arch = "arm",
35943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35944)]
35945pub fn vqdmull_n_s16(a: int16x4_t, b: i16) -> int32x4_t {
35946 vqdmull_s16(a, vdup_n_s16(b))
35947}
35948#[doc = "Vector saturating doubling long multiply with scalar"]
35949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_n_s32)"]
35950#[inline(always)]
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(vqdmull))]
35954#[cfg_attr(
35955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35956 assert_instr(sqdmull)
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 vqdmull_n_s32(a: int32x2_t, b: i32) -> int64x2_t {
35967 vqdmull_s32(a, vdup_n_s32(b))
35968}
35969#[doc = "Signed saturating doubling multiply long"]
35970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_s16)"]
35971#[inline(always)]
35972#[target_feature(enable = "neon")]
35973#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35974#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
35975#[cfg_attr(
35976 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35977 assert_instr(sqdmull)
35978)]
35979#[cfg_attr(
35980 not(target_arch = "arm"),
35981 stable(feature = "neon_intrinsics", since = "1.59.0")
35982)]
35983#[cfg_attr(
35984 target_arch = "arm",
35985 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35986)]
35987pub fn vqdmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
35988 unsafe extern "unadjusted" {
35989 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmull.v4i32")]
35990 #[cfg_attr(
35991 any(target_arch = "aarch64", target_arch = "arm64ec"),
35992 link_name = "llvm.aarch64.neon.sqdmull.v4i32"
35993 )]
35994 fn _vqdmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t;
35995 }
35996 unsafe { _vqdmull_s16(a, b) }
35997}
35998#[doc = "Signed saturating doubling multiply long"]
35999#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_s32)"]
36000#[inline(always)]
36001#[target_feature(enable = "neon")]
36002#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36003#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
36004#[cfg_attr(
36005 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36006 assert_instr(sqdmull)
36007)]
36008#[cfg_attr(
36009 not(target_arch = "arm"),
36010 stable(feature = "neon_intrinsics", since = "1.59.0")
36011)]
36012#[cfg_attr(
36013 target_arch = "arm",
36014 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36015)]
36016pub fn vqdmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
36017 unsafe extern "unadjusted" {
36018 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmull.v2i64")]
36019 #[cfg_attr(
36020 any(target_arch = "aarch64", target_arch = "arm64ec"),
36021 link_name = "llvm.aarch64.neon.sqdmull.v2i64"
36022 )]
36023 fn _vqdmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t;
36024 }
36025 unsafe { _vqdmull_s32(a, b) }
36026}
36027#[doc = "Signed saturating extract narrow"]
36028#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s16)"]
36029#[inline(always)]
36030#[target_feature(enable = "neon")]
36031#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36032#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
36033#[cfg_attr(
36034 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36035 assert_instr(sqxtn)
36036)]
36037#[cfg_attr(
36038 not(target_arch = "arm"),
36039 stable(feature = "neon_intrinsics", since = "1.59.0")
36040)]
36041#[cfg_attr(
36042 target_arch = "arm",
36043 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36044)]
36045pub fn vqmovn_s16(a: int16x8_t) -> int8x8_t {
36046 unsafe extern "unadjusted" {
36047 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v8i8")]
36048 #[cfg_attr(
36049 any(target_arch = "aarch64", target_arch = "arm64ec"),
36050 link_name = "llvm.aarch64.neon.sqxtn.v8i8"
36051 )]
36052 fn _vqmovn_s16(a: int16x8_t) -> int8x8_t;
36053 }
36054 unsafe { _vqmovn_s16(a) }
36055}
36056#[doc = "Signed saturating extract narrow"]
36057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s32)"]
36058#[inline(always)]
36059#[target_feature(enable = "neon")]
36060#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36061#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
36062#[cfg_attr(
36063 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36064 assert_instr(sqxtn)
36065)]
36066#[cfg_attr(
36067 not(target_arch = "arm"),
36068 stable(feature = "neon_intrinsics", since = "1.59.0")
36069)]
36070#[cfg_attr(
36071 target_arch = "arm",
36072 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36073)]
36074pub fn vqmovn_s32(a: int32x4_t) -> int16x4_t {
36075 unsafe extern "unadjusted" {
36076 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v4i16")]
36077 #[cfg_attr(
36078 any(target_arch = "aarch64", target_arch = "arm64ec"),
36079 link_name = "llvm.aarch64.neon.sqxtn.v4i16"
36080 )]
36081 fn _vqmovn_s32(a: int32x4_t) -> int16x4_t;
36082 }
36083 unsafe { _vqmovn_s32(a) }
36084}
36085#[doc = "Signed saturating extract narrow"]
36086#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s64)"]
36087#[inline(always)]
36088#[target_feature(enable = "neon")]
36089#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36090#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
36091#[cfg_attr(
36092 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36093 assert_instr(sqxtn)
36094)]
36095#[cfg_attr(
36096 not(target_arch = "arm"),
36097 stable(feature = "neon_intrinsics", since = "1.59.0")
36098)]
36099#[cfg_attr(
36100 target_arch = "arm",
36101 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36102)]
36103pub fn vqmovn_s64(a: int64x2_t) -> int32x2_t {
36104 unsafe extern "unadjusted" {
36105 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v2i32")]
36106 #[cfg_attr(
36107 any(target_arch = "aarch64", target_arch = "arm64ec"),
36108 link_name = "llvm.aarch64.neon.sqxtn.v2i32"
36109 )]
36110 fn _vqmovn_s64(a: int64x2_t) -> int32x2_t;
36111 }
36112 unsafe { _vqmovn_s64(a) }
36113}
36114#[doc = "Unsigned saturating extract narrow"]
36115#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u16)"]
36116#[inline(always)]
36117#[target_feature(enable = "neon")]
36118#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36119#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
36120#[cfg_attr(
36121 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36122 assert_instr(uqxtn)
36123)]
36124#[cfg_attr(
36125 not(target_arch = "arm"),
36126 stable(feature = "neon_intrinsics", since = "1.59.0")
36127)]
36128#[cfg_attr(
36129 target_arch = "arm",
36130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36131)]
36132pub fn vqmovn_u16(a: uint16x8_t) -> uint8x8_t {
36133 unsafe extern "unadjusted" {
36134 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v8i8")]
36135 #[cfg_attr(
36136 any(target_arch = "aarch64", target_arch = "arm64ec"),
36137 link_name = "llvm.aarch64.neon.uqxtn.v8i8"
36138 )]
36139 fn _vqmovn_u16(a: uint16x8_t) -> uint8x8_t;
36140 }
36141 unsafe { _vqmovn_u16(a) }
36142}
36143#[doc = "Unsigned saturating extract narrow"]
36144#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u32)"]
36145#[inline(always)]
36146#[target_feature(enable = "neon")]
36147#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36148#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
36149#[cfg_attr(
36150 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36151 assert_instr(uqxtn)
36152)]
36153#[cfg_attr(
36154 not(target_arch = "arm"),
36155 stable(feature = "neon_intrinsics", since = "1.59.0")
36156)]
36157#[cfg_attr(
36158 target_arch = "arm",
36159 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36160)]
36161pub fn vqmovn_u32(a: uint32x4_t) -> uint16x4_t {
36162 unsafe extern "unadjusted" {
36163 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v4i16")]
36164 #[cfg_attr(
36165 any(target_arch = "aarch64", target_arch = "arm64ec"),
36166 link_name = "llvm.aarch64.neon.uqxtn.v4i16"
36167 )]
36168 fn _vqmovn_u32(a: uint32x4_t) -> uint16x4_t;
36169 }
36170 unsafe { _vqmovn_u32(a) }
36171}
36172#[doc = "Unsigned saturating extract narrow"]
36173#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u64)"]
36174#[inline(always)]
36175#[target_feature(enable = "neon")]
36176#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36177#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
36178#[cfg_attr(
36179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36180 assert_instr(uqxtn)
36181)]
36182#[cfg_attr(
36183 not(target_arch = "arm"),
36184 stable(feature = "neon_intrinsics", since = "1.59.0")
36185)]
36186#[cfg_attr(
36187 target_arch = "arm",
36188 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36189)]
36190pub fn vqmovn_u64(a: uint64x2_t) -> uint32x2_t {
36191 unsafe extern "unadjusted" {
36192 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v2i32")]
36193 #[cfg_attr(
36194 any(target_arch = "aarch64", target_arch = "arm64ec"),
36195 link_name = "llvm.aarch64.neon.uqxtn.v2i32"
36196 )]
36197 fn _vqmovn_u64(a: uint64x2_t) -> uint32x2_t;
36198 }
36199 unsafe { _vqmovn_u64(a) }
36200}
36201#[doc = "Signed saturating extract unsigned narrow"]
36202#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s16)"]
36203#[inline(always)]
36204#[target_feature(enable = "neon")]
36205#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36206#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
36207#[cfg_attr(
36208 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36209 assert_instr(sqxtun)
36210)]
36211#[cfg_attr(
36212 not(target_arch = "arm"),
36213 stable(feature = "neon_intrinsics", since = "1.59.0")
36214)]
36215#[cfg_attr(
36216 target_arch = "arm",
36217 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36218)]
36219pub fn vqmovun_s16(a: int16x8_t) -> uint8x8_t {
36220 unsafe extern "unadjusted" {
36221 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v8i8")]
36222 #[cfg_attr(
36223 any(target_arch = "aarch64", target_arch = "arm64ec"),
36224 link_name = "llvm.aarch64.neon.sqxtun.v8i8"
36225 )]
36226 fn _vqmovun_s16(a: int16x8_t) -> uint8x8_t;
36227 }
36228 unsafe { _vqmovun_s16(a) }
36229}
36230#[doc = "Signed saturating extract unsigned narrow"]
36231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s32)"]
36232#[inline(always)]
36233#[target_feature(enable = "neon")]
36234#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36235#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
36236#[cfg_attr(
36237 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36238 assert_instr(sqxtun)
36239)]
36240#[cfg_attr(
36241 not(target_arch = "arm"),
36242 stable(feature = "neon_intrinsics", since = "1.59.0")
36243)]
36244#[cfg_attr(
36245 target_arch = "arm",
36246 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36247)]
36248pub fn vqmovun_s32(a: int32x4_t) -> uint16x4_t {
36249 unsafe extern "unadjusted" {
36250 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v4i16")]
36251 #[cfg_attr(
36252 any(target_arch = "aarch64", target_arch = "arm64ec"),
36253 link_name = "llvm.aarch64.neon.sqxtun.v4i16"
36254 )]
36255 fn _vqmovun_s32(a: int32x4_t) -> uint16x4_t;
36256 }
36257 unsafe { _vqmovun_s32(a) }
36258}
36259#[doc = "Signed saturating extract unsigned narrow"]
36260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s64)"]
36261#[inline(always)]
36262#[target_feature(enable = "neon")]
36263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36264#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
36265#[cfg_attr(
36266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36267 assert_instr(sqxtun)
36268)]
36269#[cfg_attr(
36270 not(target_arch = "arm"),
36271 stable(feature = "neon_intrinsics", since = "1.59.0")
36272)]
36273#[cfg_attr(
36274 target_arch = "arm",
36275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36276)]
36277pub fn vqmovun_s64(a: int64x2_t) -> uint32x2_t {
36278 unsafe extern "unadjusted" {
36279 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v2i32")]
36280 #[cfg_attr(
36281 any(target_arch = "aarch64", target_arch = "arm64ec"),
36282 link_name = "llvm.aarch64.neon.sqxtun.v2i32"
36283 )]
36284 fn _vqmovun_s64(a: int64x2_t) -> uint32x2_t;
36285 }
36286 unsafe { _vqmovun_s64(a) }
36287}
36288#[doc = "Signed saturating negate"]
36289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s8)"]
36290#[inline(always)]
36291#[target_feature(enable = "neon")]
36292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36293#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s8"))]
36294#[cfg_attr(
36295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36296 assert_instr(sqneg)
36297)]
36298#[cfg_attr(
36299 not(target_arch = "arm"),
36300 stable(feature = "neon_intrinsics", since = "1.59.0")
36301)]
36302#[cfg_attr(
36303 target_arch = "arm",
36304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36305)]
36306pub fn vqneg_s8(a: int8x8_t) -> int8x8_t {
36307 unsafe extern "unadjusted" {
36308 #[cfg_attr(
36309 any(target_arch = "aarch64", target_arch = "arm64ec"),
36310 link_name = "llvm.aarch64.neon.sqneg.v8i8"
36311 )]
36312 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v8i8")]
36313 fn _vqneg_s8(a: int8x8_t) -> int8x8_t;
36314 }
36315 unsafe { _vqneg_s8(a) }
36316}
36317#[doc = "Signed saturating negate"]
36318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s8)"]
36319#[inline(always)]
36320#[target_feature(enable = "neon")]
36321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36322#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s8"))]
36323#[cfg_attr(
36324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36325 assert_instr(sqneg)
36326)]
36327#[cfg_attr(
36328 not(target_arch = "arm"),
36329 stable(feature = "neon_intrinsics", since = "1.59.0")
36330)]
36331#[cfg_attr(
36332 target_arch = "arm",
36333 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36334)]
36335pub fn vqnegq_s8(a: int8x16_t) -> int8x16_t {
36336 unsafe extern "unadjusted" {
36337 #[cfg_attr(
36338 any(target_arch = "aarch64", target_arch = "arm64ec"),
36339 link_name = "llvm.aarch64.neon.sqneg.v16i8"
36340 )]
36341 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v16i8")]
36342 fn _vqnegq_s8(a: int8x16_t) -> int8x16_t;
36343 }
36344 unsafe { _vqnegq_s8(a) }
36345}
36346#[doc = "Signed saturating negate"]
36347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s16)"]
36348#[inline(always)]
36349#[target_feature(enable = "neon")]
36350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36351#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s16"))]
36352#[cfg_attr(
36353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36354 assert_instr(sqneg)
36355)]
36356#[cfg_attr(
36357 not(target_arch = "arm"),
36358 stable(feature = "neon_intrinsics", since = "1.59.0")
36359)]
36360#[cfg_attr(
36361 target_arch = "arm",
36362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36363)]
36364pub fn vqneg_s16(a: int16x4_t) -> int16x4_t {
36365 unsafe extern "unadjusted" {
36366 #[cfg_attr(
36367 any(target_arch = "aarch64", target_arch = "arm64ec"),
36368 link_name = "llvm.aarch64.neon.sqneg.v4i16"
36369 )]
36370 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v4i16")]
36371 fn _vqneg_s16(a: int16x4_t) -> int16x4_t;
36372 }
36373 unsafe { _vqneg_s16(a) }
36374}
36375#[doc = "Signed saturating negate"]
36376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s16)"]
36377#[inline(always)]
36378#[target_feature(enable = "neon")]
36379#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36380#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s16"))]
36381#[cfg_attr(
36382 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36383 assert_instr(sqneg)
36384)]
36385#[cfg_attr(
36386 not(target_arch = "arm"),
36387 stable(feature = "neon_intrinsics", since = "1.59.0")
36388)]
36389#[cfg_attr(
36390 target_arch = "arm",
36391 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36392)]
36393pub fn vqnegq_s16(a: int16x8_t) -> int16x8_t {
36394 unsafe extern "unadjusted" {
36395 #[cfg_attr(
36396 any(target_arch = "aarch64", target_arch = "arm64ec"),
36397 link_name = "llvm.aarch64.neon.sqneg.v8i16"
36398 )]
36399 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v8i16")]
36400 fn _vqnegq_s16(a: int16x8_t) -> int16x8_t;
36401 }
36402 unsafe { _vqnegq_s16(a) }
36403}
36404#[doc = "Signed saturating negate"]
36405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s32)"]
36406#[inline(always)]
36407#[target_feature(enable = "neon")]
36408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36409#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s32"))]
36410#[cfg_attr(
36411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36412 assert_instr(sqneg)
36413)]
36414#[cfg_attr(
36415 not(target_arch = "arm"),
36416 stable(feature = "neon_intrinsics", since = "1.59.0")
36417)]
36418#[cfg_attr(
36419 target_arch = "arm",
36420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36421)]
36422pub fn vqneg_s32(a: int32x2_t) -> int32x2_t {
36423 unsafe extern "unadjusted" {
36424 #[cfg_attr(
36425 any(target_arch = "aarch64", target_arch = "arm64ec"),
36426 link_name = "llvm.aarch64.neon.sqneg.v2i32"
36427 )]
36428 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v2i32")]
36429 fn _vqneg_s32(a: int32x2_t) -> int32x2_t;
36430 }
36431 unsafe { _vqneg_s32(a) }
36432}
36433#[doc = "Signed saturating negate"]
36434#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s32)"]
36435#[inline(always)]
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("vqneg.s32"))]
36439#[cfg_attr(
36440 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36441 assert_instr(sqneg)
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 vqnegq_s32(a: int32x4_t) -> int32x4_t {
36452 unsafe extern "unadjusted" {
36453 #[cfg_attr(
36454 any(target_arch = "aarch64", target_arch = "arm64ec"),
36455 link_name = "llvm.aarch64.neon.sqneg.v4i32"
36456 )]
36457 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v4i32")]
36458 fn _vqnegq_s32(a: int32x4_t) -> int32x4_t;
36459 }
36460 unsafe { _vqnegq_s32(a) }
36461}
36462#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_lane_s16)"]
36464#[inline(always)]
36465#[target_feature(enable = "neon")]
36466#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36467#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36468#[cfg_attr(
36469 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36470 assert_instr(sqrdmulh, LANE = 1)
36471)]
36472#[rustc_legacy_const_generics(2)]
36473#[cfg_attr(
36474 not(target_arch = "arm"),
36475 stable(feature = "neon_intrinsics", since = "1.59.0")
36476)]
36477#[cfg_attr(
36478 target_arch = "arm",
36479 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36480)]
36481pub fn vqrdmulh_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
36482 static_assert_uimm_bits!(LANE, 2);
36483 unsafe {
36484 let b: int16x4_t =
36485 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
36486 vqrdmulh_s16(a, b)
36487 }
36488}
36489#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_lane_s32)"]
36491#[inline(always)]
36492#[target_feature(enable = "neon")]
36493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36494#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36495#[cfg_attr(
36496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36497 assert_instr(sqrdmulh, LANE = 1)
36498)]
36499#[rustc_legacy_const_generics(2)]
36500#[cfg_attr(
36501 not(target_arch = "arm"),
36502 stable(feature = "neon_intrinsics", since = "1.59.0")
36503)]
36504#[cfg_attr(
36505 target_arch = "arm",
36506 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36507)]
36508pub fn vqrdmulh_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
36509 static_assert_uimm_bits!(LANE, 1);
36510 unsafe {
36511 let b: int32x2_t = simd_shuffle!(b, b, [LANE as u32, LANE as u32]);
36512 vqrdmulh_s32(a, b)
36513 }
36514}
36515#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36516#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_laneq_s16)"]
36517#[inline(always)]
36518#[target_feature(enable = "neon")]
36519#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36520#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36521#[cfg_attr(
36522 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36523 assert_instr(sqrdmulh, LANE = 1)
36524)]
36525#[rustc_legacy_const_generics(2)]
36526#[cfg_attr(
36527 not(target_arch = "arm"),
36528 stable(feature = "neon_intrinsics", since = "1.59.0")
36529)]
36530#[cfg_attr(
36531 target_arch = "arm",
36532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36533)]
36534pub fn vqrdmulh_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
36535 static_assert_uimm_bits!(LANE, 3);
36536 unsafe {
36537 let b: int16x4_t =
36538 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
36539 vqrdmulh_s16(a, b)
36540 }
36541}
36542#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_laneq_s32)"]
36544#[inline(always)]
36545#[target_feature(enable = "neon")]
36546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36547#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36548#[cfg_attr(
36549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36550 assert_instr(sqrdmulh, LANE = 1)
36551)]
36552#[rustc_legacy_const_generics(2)]
36553#[cfg_attr(
36554 not(target_arch = "arm"),
36555 stable(feature = "neon_intrinsics", since = "1.59.0")
36556)]
36557#[cfg_attr(
36558 target_arch = "arm",
36559 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36560)]
36561pub fn vqrdmulh_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
36562 static_assert_uimm_bits!(LANE, 2);
36563 unsafe {
36564 let b: int32x2_t = simd_shuffle!(b, b, [LANE as u32, LANE as u32]);
36565 vqrdmulh_s32(a, b)
36566 }
36567}
36568#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_lane_s16)"]
36570#[inline(always)]
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(vqrdmulh, LANE = 1))]
36574#[cfg_attr(
36575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36576 assert_instr(sqrdmulh, LANE = 1)
36577)]
36578#[rustc_legacy_const_generics(2)]
36579#[cfg_attr(
36580 not(target_arch = "arm"),
36581 stable(feature = "neon_intrinsics", since = "1.59.0")
36582)]
36583#[cfg_attr(
36584 target_arch = "arm",
36585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36586)]
36587pub fn vqrdmulhq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x4_t) -> int16x8_t {
36588 static_assert_uimm_bits!(LANE, 2);
36589 unsafe {
36590 let b: int16x8_t = simd_shuffle!(
36591 b,
36592 b,
36593 [
36594 LANE as u32,
36595 LANE as u32,
36596 LANE as u32,
36597 LANE as u32,
36598 LANE as u32,
36599 LANE as u32,
36600 LANE as u32,
36601 LANE as u32
36602 ]
36603 );
36604 vqrdmulhq_s16(a, b)
36605 }
36606}
36607#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_lane_s32)"]
36609#[inline(always)]
36610#[target_feature(enable = "neon")]
36611#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36612#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36613#[cfg_attr(
36614 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36615 assert_instr(sqrdmulh, LANE = 1)
36616)]
36617#[rustc_legacy_const_generics(2)]
36618#[cfg_attr(
36619 not(target_arch = "arm"),
36620 stable(feature = "neon_intrinsics", since = "1.59.0")
36621)]
36622#[cfg_attr(
36623 target_arch = "arm",
36624 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36625)]
36626pub fn vqrdmulhq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x2_t) -> int32x4_t {
36627 static_assert_uimm_bits!(LANE, 1);
36628 unsafe {
36629 let b: int32x4_t =
36630 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
36631 vqrdmulhq_s32(a, b)
36632 }
36633}
36634#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_laneq_s16)"]
36636#[inline(always)]
36637#[target_feature(enable = "neon")]
36638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36640#[cfg_attr(
36641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36642 assert_instr(sqrdmulh, LANE = 1)
36643)]
36644#[rustc_legacy_const_generics(2)]
36645#[cfg_attr(
36646 not(target_arch = "arm"),
36647 stable(feature = "neon_intrinsics", since = "1.59.0")
36648)]
36649#[cfg_attr(
36650 target_arch = "arm",
36651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36652)]
36653pub fn vqrdmulhq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
36654 static_assert_uimm_bits!(LANE, 3);
36655 unsafe {
36656 let b: int16x8_t = simd_shuffle!(
36657 b,
36658 b,
36659 [
36660 LANE as u32,
36661 LANE as u32,
36662 LANE as u32,
36663 LANE as u32,
36664 LANE as u32,
36665 LANE as u32,
36666 LANE as u32,
36667 LANE as u32
36668 ]
36669 );
36670 vqrdmulhq_s16(a, b)
36671 }
36672}
36673#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_laneq_s32)"]
36675#[inline(always)]
36676#[target_feature(enable = "neon")]
36677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36678#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36679#[cfg_attr(
36680 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36681 assert_instr(sqrdmulh, LANE = 1)
36682)]
36683#[rustc_legacy_const_generics(2)]
36684#[cfg_attr(
36685 not(target_arch = "arm"),
36686 stable(feature = "neon_intrinsics", since = "1.59.0")
36687)]
36688#[cfg_attr(
36689 target_arch = "arm",
36690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36691)]
36692pub fn vqrdmulhq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
36693 static_assert_uimm_bits!(LANE, 2);
36694 unsafe {
36695 let b: int32x4_t =
36696 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
36697 vqrdmulhq_s32(a, b)
36698 }
36699}
36700#[doc = "Vector saturating rounding doubling multiply high with scalar"]
36701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_n_s16)"]
36702#[inline(always)]
36703#[target_feature(enable = "neon")]
36704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36705#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36706#[cfg_attr(
36707 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36708 assert_instr(sqrdmulh)
36709)]
36710#[cfg_attr(
36711 not(target_arch = "arm"),
36712 stable(feature = "neon_intrinsics", since = "1.59.0")
36713)]
36714#[cfg_attr(
36715 target_arch = "arm",
36716 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36717)]
36718pub fn vqrdmulh_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
36719 vqrdmulh_s16(a, vdup_n_s16(b))
36720}
36721#[doc = "Vector saturating rounding doubling multiply high with scalar"]
36722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_n_s16)"]
36723#[inline(always)]
36724#[target_feature(enable = "neon")]
36725#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36726#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36727#[cfg_attr(
36728 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36729 assert_instr(sqrdmulh)
36730)]
36731#[cfg_attr(
36732 not(target_arch = "arm"),
36733 stable(feature = "neon_intrinsics", since = "1.59.0")
36734)]
36735#[cfg_attr(
36736 target_arch = "arm",
36737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36738)]
36739pub fn vqrdmulhq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
36740 vqrdmulhq_s16(a, vdupq_n_s16(b))
36741}
36742#[doc = "Vector saturating rounding doubling multiply high with scalar"]
36743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_n_s32)"]
36744#[inline(always)]
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(vqrdmulh))]
36748#[cfg_attr(
36749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36750 assert_instr(sqrdmulh)
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 vqrdmulh_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
36761 vqrdmulh_s32(a, vdup_n_s32(b))
36762}
36763#[doc = "Vector saturating rounding doubling multiply high with scalar"]
36764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_n_s32)"]
36765#[inline(always)]
36766#[target_feature(enable = "neon")]
36767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36768#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36769#[cfg_attr(
36770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36771 assert_instr(sqrdmulh)
36772)]
36773#[cfg_attr(
36774 not(target_arch = "arm"),
36775 stable(feature = "neon_intrinsics", since = "1.59.0")
36776)]
36777#[cfg_attr(
36778 target_arch = "arm",
36779 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36780)]
36781pub fn vqrdmulhq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
36782 vqrdmulhq_s32(a, vdupq_n_s32(b))
36783}
36784#[doc = "Signed saturating rounding doubling multiply returning high half"]
36785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_s16)"]
36786#[inline(always)]
36787#[target_feature(enable = "neon")]
36788#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36789#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36790#[cfg_attr(
36791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36792 assert_instr(sqrdmulh)
36793)]
36794#[cfg_attr(
36795 not(target_arch = "arm"),
36796 stable(feature = "neon_intrinsics", since = "1.59.0")
36797)]
36798#[cfg_attr(
36799 target_arch = "arm",
36800 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36801)]
36802pub fn vqrdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
36803 unsafe extern "unadjusted" {
36804 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v4i16")]
36805 #[cfg_attr(
36806 any(target_arch = "aarch64", target_arch = "arm64ec"),
36807 link_name = "llvm.aarch64.neon.sqrdmulh.v4i16"
36808 )]
36809 fn _vqrdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
36810 }
36811 unsafe { _vqrdmulh_s16(a, b) }
36812}
36813#[doc = "Signed saturating rounding doubling multiply returning high half"]
36814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_s16)"]
36815#[inline(always)]
36816#[target_feature(enable = "neon")]
36817#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36818#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36819#[cfg_attr(
36820 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36821 assert_instr(sqrdmulh)
36822)]
36823#[cfg_attr(
36824 not(target_arch = "arm"),
36825 stable(feature = "neon_intrinsics", since = "1.59.0")
36826)]
36827#[cfg_attr(
36828 target_arch = "arm",
36829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36830)]
36831pub fn vqrdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
36832 unsafe extern "unadjusted" {
36833 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v8i16")]
36834 #[cfg_attr(
36835 any(target_arch = "aarch64", target_arch = "arm64ec"),
36836 link_name = "llvm.aarch64.neon.sqrdmulh.v8i16"
36837 )]
36838 fn _vqrdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
36839 }
36840 unsafe { _vqrdmulhq_s16(a, b) }
36841}
36842#[doc = "Signed saturating rounding doubling multiply returning high half"]
36843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_s32)"]
36844#[inline(always)]
36845#[target_feature(enable = "neon")]
36846#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36847#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36848#[cfg_attr(
36849 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36850 assert_instr(sqrdmulh)
36851)]
36852#[cfg_attr(
36853 not(target_arch = "arm"),
36854 stable(feature = "neon_intrinsics", since = "1.59.0")
36855)]
36856#[cfg_attr(
36857 target_arch = "arm",
36858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36859)]
36860pub fn vqrdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
36861 unsafe extern "unadjusted" {
36862 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v2i32")]
36863 #[cfg_attr(
36864 any(target_arch = "aarch64", target_arch = "arm64ec"),
36865 link_name = "llvm.aarch64.neon.sqrdmulh.v2i32"
36866 )]
36867 fn _vqrdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
36868 }
36869 unsafe { _vqrdmulh_s32(a, b) }
36870}
36871#[doc = "Signed saturating rounding doubling multiply returning high half"]
36872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_s32)"]
36873#[inline(always)]
36874#[target_feature(enable = "neon")]
36875#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36876#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36877#[cfg_attr(
36878 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36879 assert_instr(sqrdmulh)
36880)]
36881#[cfg_attr(
36882 not(target_arch = "arm"),
36883 stable(feature = "neon_intrinsics", since = "1.59.0")
36884)]
36885#[cfg_attr(
36886 target_arch = "arm",
36887 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36888)]
36889pub fn vqrdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
36890 unsafe extern "unadjusted" {
36891 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v4i32")]
36892 #[cfg_attr(
36893 any(target_arch = "aarch64", target_arch = "arm64ec"),
36894 link_name = "llvm.aarch64.neon.sqrdmulh.v4i32"
36895 )]
36896 fn _vqrdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
36897 }
36898 unsafe { _vqrdmulhq_s32(a, b) }
36899}
36900#[doc = "Signed saturating rounding shift left"]
36901#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s8)"]
36902#[inline(always)]
36903#[target_feature(enable = "neon")]
36904#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36905#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
36906#[cfg_attr(
36907 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36908 assert_instr(sqrshl)
36909)]
36910#[cfg_attr(
36911 not(target_arch = "arm"),
36912 stable(feature = "neon_intrinsics", since = "1.59.0")
36913)]
36914#[cfg_attr(
36915 target_arch = "arm",
36916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36917)]
36918pub fn vqrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
36919 unsafe extern "unadjusted" {
36920 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v8i8")]
36921 #[cfg_attr(
36922 any(target_arch = "aarch64", target_arch = "arm64ec"),
36923 link_name = "llvm.aarch64.neon.sqrshl.v8i8"
36924 )]
36925 fn _vqrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
36926 }
36927 unsafe { _vqrshl_s8(a, b) }
36928}
36929#[doc = "Signed saturating rounding shift left"]
36930#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s8)"]
36931#[inline(always)]
36932#[target_feature(enable = "neon")]
36933#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36934#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
36935#[cfg_attr(
36936 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36937 assert_instr(sqrshl)
36938)]
36939#[cfg_attr(
36940 not(target_arch = "arm"),
36941 stable(feature = "neon_intrinsics", since = "1.59.0")
36942)]
36943#[cfg_attr(
36944 target_arch = "arm",
36945 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36946)]
36947pub fn vqrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
36948 unsafe extern "unadjusted" {
36949 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v16i8")]
36950 #[cfg_attr(
36951 any(target_arch = "aarch64", target_arch = "arm64ec"),
36952 link_name = "llvm.aarch64.neon.sqrshl.v16i8"
36953 )]
36954 fn _vqrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
36955 }
36956 unsafe { _vqrshlq_s8(a, b) }
36957}
36958#[doc = "Signed saturating rounding shift left"]
36959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s16)"]
36960#[inline(always)]
36961#[target_feature(enable = "neon")]
36962#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36963#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
36964#[cfg_attr(
36965 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36966 assert_instr(sqrshl)
36967)]
36968#[cfg_attr(
36969 not(target_arch = "arm"),
36970 stable(feature = "neon_intrinsics", since = "1.59.0")
36971)]
36972#[cfg_attr(
36973 target_arch = "arm",
36974 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36975)]
36976pub fn vqrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
36977 unsafe extern "unadjusted" {
36978 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v4i16")]
36979 #[cfg_attr(
36980 any(target_arch = "aarch64", target_arch = "arm64ec"),
36981 link_name = "llvm.aarch64.neon.sqrshl.v4i16"
36982 )]
36983 fn _vqrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
36984 }
36985 unsafe { _vqrshl_s16(a, b) }
36986}
36987#[doc = "Signed saturating rounding shift left"]
36988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s16)"]
36989#[inline(always)]
36990#[target_feature(enable = "neon")]
36991#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36992#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
36993#[cfg_attr(
36994 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36995 assert_instr(sqrshl)
36996)]
36997#[cfg_attr(
36998 not(target_arch = "arm"),
36999 stable(feature = "neon_intrinsics", since = "1.59.0")
37000)]
37001#[cfg_attr(
37002 target_arch = "arm",
37003 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37004)]
37005pub fn vqrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
37006 unsafe extern "unadjusted" {
37007 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v8i16")]
37008 #[cfg_attr(
37009 any(target_arch = "aarch64", target_arch = "arm64ec"),
37010 link_name = "llvm.aarch64.neon.sqrshl.v8i16"
37011 )]
37012 fn _vqrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
37013 }
37014 unsafe { _vqrshlq_s16(a, b) }
37015}
37016#[doc = "Signed saturating rounding shift left"]
37017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s32)"]
37018#[inline(always)]
37019#[target_feature(enable = "neon")]
37020#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37021#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37022#[cfg_attr(
37023 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37024 assert_instr(sqrshl)
37025)]
37026#[cfg_attr(
37027 not(target_arch = "arm"),
37028 stable(feature = "neon_intrinsics", since = "1.59.0")
37029)]
37030#[cfg_attr(
37031 target_arch = "arm",
37032 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37033)]
37034pub fn vqrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
37035 unsafe extern "unadjusted" {
37036 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v2i32")]
37037 #[cfg_attr(
37038 any(target_arch = "aarch64", target_arch = "arm64ec"),
37039 link_name = "llvm.aarch64.neon.sqrshl.v2i32"
37040 )]
37041 fn _vqrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
37042 }
37043 unsafe { _vqrshl_s32(a, b) }
37044}
37045#[doc = "Signed saturating rounding shift left"]
37046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s32)"]
37047#[inline(always)]
37048#[target_feature(enable = "neon")]
37049#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37050#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37051#[cfg_attr(
37052 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37053 assert_instr(sqrshl)
37054)]
37055#[cfg_attr(
37056 not(target_arch = "arm"),
37057 stable(feature = "neon_intrinsics", since = "1.59.0")
37058)]
37059#[cfg_attr(
37060 target_arch = "arm",
37061 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37062)]
37063pub fn vqrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
37064 unsafe extern "unadjusted" {
37065 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v4i32")]
37066 #[cfg_attr(
37067 any(target_arch = "aarch64", target_arch = "arm64ec"),
37068 link_name = "llvm.aarch64.neon.sqrshl.v4i32"
37069 )]
37070 fn _vqrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
37071 }
37072 unsafe { _vqrshlq_s32(a, b) }
37073}
37074#[doc = "Signed saturating rounding shift left"]
37075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s64)"]
37076#[inline(always)]
37077#[target_feature(enable = "neon")]
37078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37079#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37080#[cfg_attr(
37081 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37082 assert_instr(sqrshl)
37083)]
37084#[cfg_attr(
37085 not(target_arch = "arm"),
37086 stable(feature = "neon_intrinsics", since = "1.59.0")
37087)]
37088#[cfg_attr(
37089 target_arch = "arm",
37090 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37091)]
37092pub fn vqrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
37093 unsafe extern "unadjusted" {
37094 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v1i64")]
37095 #[cfg_attr(
37096 any(target_arch = "aarch64", target_arch = "arm64ec"),
37097 link_name = "llvm.aarch64.neon.sqrshl.v1i64"
37098 )]
37099 fn _vqrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
37100 }
37101 unsafe { _vqrshl_s64(a, b) }
37102}
37103#[doc = "Signed saturating rounding shift left"]
37104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s64)"]
37105#[inline(always)]
37106#[target_feature(enable = "neon")]
37107#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37108#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37109#[cfg_attr(
37110 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37111 assert_instr(sqrshl)
37112)]
37113#[cfg_attr(
37114 not(target_arch = "arm"),
37115 stable(feature = "neon_intrinsics", since = "1.59.0")
37116)]
37117#[cfg_attr(
37118 target_arch = "arm",
37119 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37120)]
37121pub fn vqrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
37122 unsafe extern "unadjusted" {
37123 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v2i64")]
37124 #[cfg_attr(
37125 any(target_arch = "aarch64", target_arch = "arm64ec"),
37126 link_name = "llvm.aarch64.neon.sqrshl.v2i64"
37127 )]
37128 fn _vqrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
37129 }
37130 unsafe { _vqrshlq_s64(a, b) }
37131}
37132#[doc = "Unsigned signed saturating rounding shift left"]
37133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u8)"]
37134#[inline(always)]
37135#[target_feature(enable = "neon")]
37136#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37137#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37138#[cfg_attr(
37139 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37140 assert_instr(uqrshl)
37141)]
37142#[cfg_attr(
37143 not(target_arch = "arm"),
37144 stable(feature = "neon_intrinsics", since = "1.59.0")
37145)]
37146#[cfg_attr(
37147 target_arch = "arm",
37148 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37149)]
37150pub fn vqrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
37151 unsafe extern "unadjusted" {
37152 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v8i8")]
37153 #[cfg_attr(
37154 any(target_arch = "aarch64", target_arch = "arm64ec"),
37155 link_name = "llvm.aarch64.neon.uqrshl.v8i8"
37156 )]
37157 fn _vqrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
37158 }
37159 unsafe { _vqrshl_u8(a, b) }
37160}
37161#[doc = "Unsigned signed saturating rounding shift left"]
37162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u8)"]
37163#[inline(always)]
37164#[target_feature(enable = "neon")]
37165#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37166#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37167#[cfg_attr(
37168 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37169 assert_instr(uqrshl)
37170)]
37171#[cfg_attr(
37172 not(target_arch = "arm"),
37173 stable(feature = "neon_intrinsics", since = "1.59.0")
37174)]
37175#[cfg_attr(
37176 target_arch = "arm",
37177 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37178)]
37179pub fn vqrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
37180 unsafe extern "unadjusted" {
37181 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v16i8")]
37182 #[cfg_attr(
37183 any(target_arch = "aarch64", target_arch = "arm64ec"),
37184 link_name = "llvm.aarch64.neon.uqrshl.v16i8"
37185 )]
37186 fn _vqrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
37187 }
37188 unsafe { _vqrshlq_u8(a, b) }
37189}
37190#[doc = "Unsigned signed saturating rounding shift left"]
37191#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u16)"]
37192#[inline(always)]
37193#[target_feature(enable = "neon")]
37194#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37195#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37196#[cfg_attr(
37197 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37198 assert_instr(uqrshl)
37199)]
37200#[cfg_attr(
37201 not(target_arch = "arm"),
37202 stable(feature = "neon_intrinsics", since = "1.59.0")
37203)]
37204#[cfg_attr(
37205 target_arch = "arm",
37206 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37207)]
37208pub fn vqrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
37209 unsafe extern "unadjusted" {
37210 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v4i16")]
37211 #[cfg_attr(
37212 any(target_arch = "aarch64", target_arch = "arm64ec"),
37213 link_name = "llvm.aarch64.neon.uqrshl.v4i16"
37214 )]
37215 fn _vqrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
37216 }
37217 unsafe { _vqrshl_u16(a, b) }
37218}
37219#[doc = "Unsigned signed saturating rounding shift left"]
37220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u16)"]
37221#[inline(always)]
37222#[target_feature(enable = "neon")]
37223#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37224#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37225#[cfg_attr(
37226 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37227 assert_instr(uqrshl)
37228)]
37229#[cfg_attr(
37230 not(target_arch = "arm"),
37231 stable(feature = "neon_intrinsics", since = "1.59.0")
37232)]
37233#[cfg_attr(
37234 target_arch = "arm",
37235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37236)]
37237pub fn vqrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
37238 unsafe extern "unadjusted" {
37239 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v8i16")]
37240 #[cfg_attr(
37241 any(target_arch = "aarch64", target_arch = "arm64ec"),
37242 link_name = "llvm.aarch64.neon.uqrshl.v8i16"
37243 )]
37244 fn _vqrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
37245 }
37246 unsafe { _vqrshlq_u16(a, b) }
37247}
37248#[doc = "Unsigned signed saturating rounding shift left"]
37249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u32)"]
37250#[inline(always)]
37251#[target_feature(enable = "neon")]
37252#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37253#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37254#[cfg_attr(
37255 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37256 assert_instr(uqrshl)
37257)]
37258#[cfg_attr(
37259 not(target_arch = "arm"),
37260 stable(feature = "neon_intrinsics", since = "1.59.0")
37261)]
37262#[cfg_attr(
37263 target_arch = "arm",
37264 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37265)]
37266pub fn vqrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
37267 unsafe extern "unadjusted" {
37268 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v2i32")]
37269 #[cfg_attr(
37270 any(target_arch = "aarch64", target_arch = "arm64ec"),
37271 link_name = "llvm.aarch64.neon.uqrshl.v2i32"
37272 )]
37273 fn _vqrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
37274 }
37275 unsafe { _vqrshl_u32(a, b) }
37276}
37277#[doc = "Unsigned signed saturating rounding shift left"]
37278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u32)"]
37279#[inline(always)]
37280#[target_feature(enable = "neon")]
37281#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37282#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37283#[cfg_attr(
37284 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37285 assert_instr(uqrshl)
37286)]
37287#[cfg_attr(
37288 not(target_arch = "arm"),
37289 stable(feature = "neon_intrinsics", since = "1.59.0")
37290)]
37291#[cfg_attr(
37292 target_arch = "arm",
37293 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37294)]
37295pub fn vqrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
37296 unsafe extern "unadjusted" {
37297 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v4i32")]
37298 #[cfg_attr(
37299 any(target_arch = "aarch64", target_arch = "arm64ec"),
37300 link_name = "llvm.aarch64.neon.uqrshl.v4i32"
37301 )]
37302 fn _vqrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
37303 }
37304 unsafe { _vqrshlq_u32(a, b) }
37305}
37306#[doc = "Unsigned signed saturating rounding shift left"]
37307#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u64)"]
37308#[inline(always)]
37309#[target_feature(enable = "neon")]
37310#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37311#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37312#[cfg_attr(
37313 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37314 assert_instr(uqrshl)
37315)]
37316#[cfg_attr(
37317 not(target_arch = "arm"),
37318 stable(feature = "neon_intrinsics", since = "1.59.0")
37319)]
37320#[cfg_attr(
37321 target_arch = "arm",
37322 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37323)]
37324pub fn vqrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
37325 unsafe extern "unadjusted" {
37326 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v1i64")]
37327 #[cfg_attr(
37328 any(target_arch = "aarch64", target_arch = "arm64ec"),
37329 link_name = "llvm.aarch64.neon.uqrshl.v1i64"
37330 )]
37331 fn _vqrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
37332 }
37333 unsafe { _vqrshl_u64(a, b) }
37334}
37335#[doc = "Unsigned signed saturating rounding shift left"]
37336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u64)"]
37337#[inline(always)]
37338#[target_feature(enable = "neon")]
37339#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37340#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37341#[cfg_attr(
37342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37343 assert_instr(uqrshl)
37344)]
37345#[cfg_attr(
37346 not(target_arch = "arm"),
37347 stable(feature = "neon_intrinsics", since = "1.59.0")
37348)]
37349#[cfg_attr(
37350 target_arch = "arm",
37351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37352)]
37353pub fn vqrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
37354 unsafe extern "unadjusted" {
37355 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v2i64")]
37356 #[cfg_attr(
37357 any(target_arch = "aarch64", target_arch = "arm64ec"),
37358 link_name = "llvm.aarch64.neon.uqrshl.v2i64"
37359 )]
37360 fn _vqrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
37361 }
37362 unsafe { _vqrshlq_u64(a, b) }
37363}
37364#[doc = "Signed saturating rounded shift right narrow"]
37365#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]
37366#[inline(always)]
37367#[cfg(target_arch = "arm")]
37368#[target_feature(enable = "neon,v7")]
37369#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37370#[rustc_legacy_const_generics(1)]
37371#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37372pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
37373 static_assert!(N >= 1 && N <= 8);
37374 unsafe extern "unadjusted" {
37375 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v8i8")]
37376 fn _vqrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
37377 }
37378 unsafe { _vqrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
37379}
37380#[doc = "Signed saturating rounded shift right narrow"]
37381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]
37382#[inline(always)]
37383#[cfg(target_arch = "arm")]
37384#[target_feature(enable = "neon,v7")]
37385#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37386#[rustc_legacy_const_generics(1)]
37387#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37388pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
37389 static_assert!(N >= 1 && N <= 16);
37390 unsafe extern "unadjusted" {
37391 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v4i16")]
37392 fn _vqrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
37393 }
37394 unsafe { _vqrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
37395}
37396#[doc = "Signed saturating rounded shift right narrow"]
37397#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]
37398#[inline(always)]
37399#[cfg(target_arch = "arm")]
37400#[target_feature(enable = "neon,v7")]
37401#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37402#[rustc_legacy_const_generics(1)]
37403#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37404pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
37405 static_assert!(N >= 1 && N <= 32);
37406 unsafe extern "unadjusted" {
37407 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v2i32")]
37408 fn _vqrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
37409 }
37410 unsafe { _vqrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
37411}
37412#[doc = "Signed saturating rounded shift right narrow"]
37413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]
37414#[inline(always)]
37415#[target_feature(enable = "neon")]
37416#[cfg(not(target_arch = "arm"))]
37417#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
37418#[rustc_legacy_const_generics(1)]
37419#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37420pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
37421 static_assert!(N >= 1 && N <= 8);
37422 unsafe extern "unadjusted" {
37423 #[cfg_attr(
37424 any(target_arch = "aarch64", target_arch = "arm64ec"),
37425 link_name = "llvm.aarch64.neon.sqrshrn.v8i8"
37426 )]
37427 fn _vqrshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
37428 }
37429 unsafe { _vqrshrn_n_s16(a, N) }
37430}
37431#[doc = "Signed saturating rounded shift right narrow"]
37432#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]
37433#[inline(always)]
37434#[target_feature(enable = "neon")]
37435#[cfg(not(target_arch = "arm"))]
37436#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
37437#[rustc_legacy_const_generics(1)]
37438#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37439pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
37440 static_assert!(N >= 1 && N <= 16);
37441 unsafe extern "unadjusted" {
37442 #[cfg_attr(
37443 any(target_arch = "aarch64", target_arch = "arm64ec"),
37444 link_name = "llvm.aarch64.neon.sqrshrn.v4i16"
37445 )]
37446 fn _vqrshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
37447 }
37448 unsafe { _vqrshrn_n_s32(a, N) }
37449}
37450#[doc = "Signed saturating rounded shift right narrow"]
37451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]
37452#[inline(always)]
37453#[target_feature(enable = "neon")]
37454#[cfg(not(target_arch = "arm"))]
37455#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
37456#[rustc_legacy_const_generics(1)]
37457#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37458pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
37459 static_assert!(N >= 1 && N <= 32);
37460 unsafe extern "unadjusted" {
37461 #[cfg_attr(
37462 any(target_arch = "aarch64", target_arch = "arm64ec"),
37463 link_name = "llvm.aarch64.neon.sqrshrn.v2i32"
37464 )]
37465 fn _vqrshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
37466 }
37467 unsafe { _vqrshrn_n_s64(a, N) }
37468}
37469#[doc = "Unsigned signed saturating rounded shift right narrow"]
37470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u16)"]
37471#[inline(always)]
37472#[cfg(target_arch = "arm")]
37473#[target_feature(enable = "neon,v7")]
37474#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37475#[rustc_legacy_const_generics(1)]
37476#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37477pub fn vqrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
37478 static_assert!(N >= 1 && N <= 8);
37479 unsafe extern "unadjusted" {
37480 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v8i8")]
37481 fn _vqrshrn_n_u16(a: uint16x8_t, n: uint16x8_t) -> uint8x8_t;
37482 }
37483 unsafe {
37484 _vqrshrn_n_u16(
37485 a,
37486 const {
37487 uint16x8_t([
37488 -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16,
37489 -N as u16,
37490 ])
37491 },
37492 )
37493 }
37494}
37495#[doc = "Unsigned signed saturating rounded shift right narrow"]
37496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u32)"]
37497#[inline(always)]
37498#[cfg(target_arch = "arm")]
37499#[target_feature(enable = "neon,v7")]
37500#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37501#[rustc_legacy_const_generics(1)]
37502#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37503pub fn vqrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
37504 static_assert!(N >= 1 && N <= 16);
37505 unsafe extern "unadjusted" {
37506 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v4i16")]
37507 fn _vqrshrn_n_u32(a: uint32x4_t, n: uint32x4_t) -> uint16x4_t;
37508 }
37509 unsafe {
37510 _vqrshrn_n_u32(
37511 a,
37512 const { uint32x4_t([-N as u32, -N as u32, -N as u32, -N as u32]) },
37513 )
37514 }
37515}
37516#[doc = "Unsigned signed saturating rounded shift right narrow"]
37517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u64)"]
37518#[inline(always)]
37519#[cfg(target_arch = "arm")]
37520#[target_feature(enable = "neon,v7")]
37521#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37522#[rustc_legacy_const_generics(1)]
37523#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37524pub fn vqrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
37525 static_assert!(N >= 1 && N <= 32);
37526 unsafe extern "unadjusted" {
37527 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v2i32")]
37528 fn _vqrshrn_n_u64(a: uint64x2_t, n: uint64x2_t) -> uint32x2_t;
37529 }
37530 unsafe { _vqrshrn_n_u64(a, const { uint64x2_t([-N as u64, -N as u64]) }) }
37531}
37532#[doc = "Unsigned signed saturating rounded shift right narrow"]
37533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u16)"]
37534#[inline(always)]
37535#[target_feature(enable = "neon")]
37536#[cfg(not(target_arch = "arm"))]
37537#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
37538#[rustc_legacy_const_generics(1)]
37539#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37540pub fn vqrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
37541 static_assert!(N >= 1 && N <= 8);
37542 unsafe extern "unadjusted" {
37543 #[cfg_attr(
37544 any(target_arch = "aarch64", target_arch = "arm64ec"),
37545 link_name = "llvm.aarch64.neon.uqrshrn.v8i8"
37546 )]
37547 fn _vqrshrn_n_u16(a: uint16x8_t, n: i32) -> uint8x8_t;
37548 }
37549 unsafe { _vqrshrn_n_u16(a, N) }
37550}
37551#[doc = "Unsigned signed saturating rounded shift right narrow"]
37552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u32)"]
37553#[inline(always)]
37554#[target_feature(enable = "neon")]
37555#[cfg(not(target_arch = "arm"))]
37556#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
37557#[rustc_legacy_const_generics(1)]
37558#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37559pub fn vqrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
37560 static_assert!(N >= 1 && N <= 16);
37561 unsafe extern "unadjusted" {
37562 #[cfg_attr(
37563 any(target_arch = "aarch64", target_arch = "arm64ec"),
37564 link_name = "llvm.aarch64.neon.uqrshrn.v4i16"
37565 )]
37566 fn _vqrshrn_n_u32(a: uint32x4_t, n: i32) -> uint16x4_t;
37567 }
37568 unsafe { _vqrshrn_n_u32(a, N) }
37569}
37570#[doc = "Unsigned signed saturating rounded shift right narrow"]
37571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u64)"]
37572#[inline(always)]
37573#[target_feature(enable = "neon")]
37574#[cfg(not(target_arch = "arm"))]
37575#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
37576#[rustc_legacy_const_generics(1)]
37577#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37578pub fn vqrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
37579 static_assert!(N >= 1 && N <= 32);
37580 unsafe extern "unadjusted" {
37581 #[cfg_attr(
37582 any(target_arch = "aarch64", target_arch = "arm64ec"),
37583 link_name = "llvm.aarch64.neon.uqrshrn.v2i32"
37584 )]
37585 fn _vqrshrn_n_u64(a: uint64x2_t, n: i32) -> uint32x2_t;
37586 }
37587 unsafe { _vqrshrn_n_u64(a, N) }
37588}
37589#[doc = "Signed saturating rounded shift right unsigned narrow"]
37590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]
37591#[inline(always)]
37592#[cfg(target_arch = "arm")]
37593#[target_feature(enable = "neon,v7")]
37594#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
37595#[rustc_legacy_const_generics(1)]
37596#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37597pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
37598 static_assert!(N >= 1 && N <= 8);
37599 unsafe extern "unadjusted" {
37600 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v8i8")]
37601 fn _vqrshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
37602 }
37603 unsafe { _vqrshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
37604}
37605#[doc = "Signed saturating rounded shift right unsigned narrow"]
37606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]
37607#[inline(always)]
37608#[cfg(target_arch = "arm")]
37609#[target_feature(enable = "neon,v7")]
37610#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
37611#[rustc_legacy_const_generics(1)]
37612#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37613pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
37614 static_assert!(N >= 1 && N <= 16);
37615 unsafe extern "unadjusted" {
37616 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v4i16")]
37617 fn _vqrshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
37618 }
37619 unsafe { _vqrshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
37620}
37621#[doc = "Signed saturating rounded shift right unsigned narrow"]
37622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]
37623#[inline(always)]
37624#[cfg(target_arch = "arm")]
37625#[target_feature(enable = "neon,v7")]
37626#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
37627#[rustc_legacy_const_generics(1)]
37628#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37629pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
37630 static_assert!(N >= 1 && N <= 32);
37631 unsafe extern "unadjusted" {
37632 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v2i32")]
37633 fn _vqrshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
37634 }
37635 unsafe { _vqrshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
37636}
37637#[doc = "Signed saturating rounded shift right unsigned narrow"]
37638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]
37639#[inline(always)]
37640#[target_feature(enable = "neon")]
37641#[cfg(not(target_arch = "arm"))]
37642#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
37643#[rustc_legacy_const_generics(1)]
37644#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37645pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
37646 static_assert!(N >= 1 && N <= 8);
37647 unsafe extern "unadjusted" {
37648 #[cfg_attr(
37649 any(target_arch = "aarch64", target_arch = "arm64ec"),
37650 link_name = "llvm.aarch64.neon.sqrshrun.v8i8"
37651 )]
37652 fn _vqrshrun_n_s16(a: int16x8_t, n: i32) -> uint8x8_t;
37653 }
37654 unsafe { _vqrshrun_n_s16(a, N) }
37655}
37656#[doc = "Signed saturating rounded shift right unsigned narrow"]
37657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]
37658#[inline(always)]
37659#[target_feature(enable = "neon")]
37660#[cfg(not(target_arch = "arm"))]
37661#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
37662#[rustc_legacy_const_generics(1)]
37663#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37664pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
37665 static_assert!(N >= 1 && N <= 16);
37666 unsafe extern "unadjusted" {
37667 #[cfg_attr(
37668 any(target_arch = "aarch64", target_arch = "arm64ec"),
37669 link_name = "llvm.aarch64.neon.sqrshrun.v4i16"
37670 )]
37671 fn _vqrshrun_n_s32(a: int32x4_t, n: i32) -> uint16x4_t;
37672 }
37673 unsafe { _vqrshrun_n_s32(a, N) }
37674}
37675#[doc = "Signed saturating rounded shift right unsigned narrow"]
37676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]
37677#[inline(always)]
37678#[target_feature(enable = "neon")]
37679#[cfg(not(target_arch = "arm"))]
37680#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
37681#[rustc_legacy_const_generics(1)]
37682#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37683pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
37684 static_assert!(N >= 1 && N <= 32);
37685 unsafe extern "unadjusted" {
37686 #[cfg_attr(
37687 any(target_arch = "aarch64", target_arch = "arm64ec"),
37688 link_name = "llvm.aarch64.neon.sqrshrun.v2i32"
37689 )]
37690 fn _vqrshrun_n_s64(a: int64x2_t, n: i32) -> uint32x2_t;
37691 }
37692 unsafe { _vqrshrun_n_s64(a, N) }
37693}
37694#[doc = "Signed saturating shift left"]
37695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s8)"]
37696#[inline(always)]
37697#[target_feature(enable = "neon")]
37698#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37699#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37700#[cfg_attr(
37701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37702 assert_instr(sqshl, N = 2)
37703)]
37704#[rustc_legacy_const_generics(1)]
37705#[cfg_attr(
37706 not(target_arch = "arm"),
37707 stable(feature = "neon_intrinsics", since = "1.59.0")
37708)]
37709#[cfg_attr(
37710 target_arch = "arm",
37711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37712)]
37713pub fn vqshl_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
37714 static_assert_uimm_bits!(N, 3);
37715 vqshl_s8(a, vdup_n_s8(N as _))
37716}
37717#[doc = "Signed saturating shift left"]
37718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s8)"]
37719#[inline(always)]
37720#[target_feature(enable = "neon")]
37721#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37722#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37723#[cfg_attr(
37724 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37725 assert_instr(sqshl, N = 2)
37726)]
37727#[rustc_legacy_const_generics(1)]
37728#[cfg_attr(
37729 not(target_arch = "arm"),
37730 stable(feature = "neon_intrinsics", since = "1.59.0")
37731)]
37732#[cfg_attr(
37733 target_arch = "arm",
37734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37735)]
37736pub fn vqshlq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
37737 static_assert_uimm_bits!(N, 3);
37738 vqshlq_s8(a, vdupq_n_s8(N as _))
37739}
37740#[doc = "Signed saturating shift left"]
37741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s16)"]
37742#[inline(always)]
37743#[target_feature(enable = "neon")]
37744#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37745#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37746#[cfg_attr(
37747 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37748 assert_instr(sqshl, N = 2)
37749)]
37750#[rustc_legacy_const_generics(1)]
37751#[cfg_attr(
37752 not(target_arch = "arm"),
37753 stable(feature = "neon_intrinsics", since = "1.59.0")
37754)]
37755#[cfg_attr(
37756 target_arch = "arm",
37757 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37758)]
37759pub fn vqshl_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
37760 static_assert_uimm_bits!(N, 4);
37761 vqshl_s16(a, vdup_n_s16(N as _))
37762}
37763#[doc = "Signed saturating shift left"]
37764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s16)"]
37765#[inline(always)]
37766#[target_feature(enable = "neon")]
37767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37768#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37769#[cfg_attr(
37770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37771 assert_instr(sqshl, N = 2)
37772)]
37773#[rustc_legacy_const_generics(1)]
37774#[cfg_attr(
37775 not(target_arch = "arm"),
37776 stable(feature = "neon_intrinsics", since = "1.59.0")
37777)]
37778#[cfg_attr(
37779 target_arch = "arm",
37780 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37781)]
37782pub fn vqshlq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
37783 static_assert_uimm_bits!(N, 4);
37784 vqshlq_s16(a, vdupq_n_s16(N as _))
37785}
37786#[doc = "Signed saturating shift left"]
37787#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s32)"]
37788#[inline(always)]
37789#[target_feature(enable = "neon")]
37790#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37791#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37792#[cfg_attr(
37793 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37794 assert_instr(sqshl, N = 2)
37795)]
37796#[rustc_legacy_const_generics(1)]
37797#[cfg_attr(
37798 not(target_arch = "arm"),
37799 stable(feature = "neon_intrinsics", since = "1.59.0")
37800)]
37801#[cfg_attr(
37802 target_arch = "arm",
37803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37804)]
37805pub fn vqshl_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
37806 static_assert_uimm_bits!(N, 5);
37807 vqshl_s32(a, vdup_n_s32(N as _))
37808}
37809#[doc = "Signed saturating shift left"]
37810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s32)"]
37811#[inline(always)]
37812#[target_feature(enable = "neon")]
37813#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37814#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37815#[cfg_attr(
37816 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37817 assert_instr(sqshl, N = 2)
37818)]
37819#[rustc_legacy_const_generics(1)]
37820#[cfg_attr(
37821 not(target_arch = "arm"),
37822 stable(feature = "neon_intrinsics", since = "1.59.0")
37823)]
37824#[cfg_attr(
37825 target_arch = "arm",
37826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37827)]
37828pub fn vqshlq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
37829 static_assert_uimm_bits!(N, 5);
37830 vqshlq_s32(a, vdupq_n_s32(N as _))
37831}
37832#[doc = "Signed saturating shift left"]
37833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s64)"]
37834#[inline(always)]
37835#[target_feature(enable = "neon")]
37836#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37837#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37838#[cfg_attr(
37839 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37840 assert_instr(sqshl, N = 2)
37841)]
37842#[rustc_legacy_const_generics(1)]
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 vqshl_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
37852 static_assert_uimm_bits!(N, 6);
37853 vqshl_s64(a, vdup_n_s64(N as _))
37854}
37855#[doc = "Signed saturating shift left"]
37856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s64)"]
37857#[inline(always)]
37858#[target_feature(enable = "neon")]
37859#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37860#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37861#[cfg_attr(
37862 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37863 assert_instr(sqshl, N = 2)
37864)]
37865#[rustc_legacy_const_generics(1)]
37866#[cfg_attr(
37867 not(target_arch = "arm"),
37868 stable(feature = "neon_intrinsics", since = "1.59.0")
37869)]
37870#[cfg_attr(
37871 target_arch = "arm",
37872 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37873)]
37874pub fn vqshlq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
37875 static_assert_uimm_bits!(N, 6);
37876 vqshlq_s64(a, vdupq_n_s64(N as _))
37877}
37878#[doc = "Unsigned saturating shift left"]
37879#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u8)"]
37880#[inline(always)]
37881#[target_feature(enable = "neon")]
37882#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37883#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37884#[cfg_attr(
37885 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37886 assert_instr(uqshl, N = 2)
37887)]
37888#[rustc_legacy_const_generics(1)]
37889#[cfg_attr(
37890 not(target_arch = "arm"),
37891 stable(feature = "neon_intrinsics", since = "1.59.0")
37892)]
37893#[cfg_attr(
37894 target_arch = "arm",
37895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37896)]
37897pub fn vqshl_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
37898 static_assert_uimm_bits!(N, 3);
37899 vqshl_u8(a, vdup_n_s8(N as _))
37900}
37901#[doc = "Unsigned saturating shift left"]
37902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u8)"]
37903#[inline(always)]
37904#[target_feature(enable = "neon")]
37905#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37906#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37907#[cfg_attr(
37908 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37909 assert_instr(uqshl, N = 2)
37910)]
37911#[rustc_legacy_const_generics(1)]
37912#[cfg_attr(
37913 not(target_arch = "arm"),
37914 stable(feature = "neon_intrinsics", since = "1.59.0")
37915)]
37916#[cfg_attr(
37917 target_arch = "arm",
37918 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37919)]
37920pub fn vqshlq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
37921 static_assert_uimm_bits!(N, 3);
37922 vqshlq_u8(a, vdupq_n_s8(N as _))
37923}
37924#[doc = "Unsigned saturating shift left"]
37925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u16)"]
37926#[inline(always)]
37927#[target_feature(enable = "neon")]
37928#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37929#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37930#[cfg_attr(
37931 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37932 assert_instr(uqshl, N = 2)
37933)]
37934#[rustc_legacy_const_generics(1)]
37935#[cfg_attr(
37936 not(target_arch = "arm"),
37937 stable(feature = "neon_intrinsics", since = "1.59.0")
37938)]
37939#[cfg_attr(
37940 target_arch = "arm",
37941 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37942)]
37943pub fn vqshl_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
37944 static_assert_uimm_bits!(N, 4);
37945 vqshl_u16(a, vdup_n_s16(N as _))
37946}
37947#[doc = "Unsigned saturating shift left"]
37948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u16)"]
37949#[inline(always)]
37950#[target_feature(enable = "neon")]
37951#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37952#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37953#[cfg_attr(
37954 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37955 assert_instr(uqshl, N = 2)
37956)]
37957#[rustc_legacy_const_generics(1)]
37958#[cfg_attr(
37959 not(target_arch = "arm"),
37960 stable(feature = "neon_intrinsics", since = "1.59.0")
37961)]
37962#[cfg_attr(
37963 target_arch = "arm",
37964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37965)]
37966pub fn vqshlq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
37967 static_assert_uimm_bits!(N, 4);
37968 vqshlq_u16(a, vdupq_n_s16(N as _))
37969}
37970#[doc = "Unsigned saturating shift left"]
37971#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u32)"]
37972#[inline(always)]
37973#[target_feature(enable = "neon")]
37974#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37975#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37976#[cfg_attr(
37977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37978 assert_instr(uqshl, N = 2)
37979)]
37980#[rustc_legacy_const_generics(1)]
37981#[cfg_attr(
37982 not(target_arch = "arm"),
37983 stable(feature = "neon_intrinsics", since = "1.59.0")
37984)]
37985#[cfg_attr(
37986 target_arch = "arm",
37987 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37988)]
37989pub fn vqshl_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
37990 static_assert_uimm_bits!(N, 5);
37991 vqshl_u32(a, vdup_n_s32(N as _))
37992}
37993#[doc = "Unsigned saturating shift left"]
37994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u32)"]
37995#[inline(always)]
37996#[target_feature(enable = "neon")]
37997#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37998#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37999#[cfg_attr(
38000 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38001 assert_instr(uqshl, N = 2)
38002)]
38003#[rustc_legacy_const_generics(1)]
38004#[cfg_attr(
38005 not(target_arch = "arm"),
38006 stable(feature = "neon_intrinsics", since = "1.59.0")
38007)]
38008#[cfg_attr(
38009 target_arch = "arm",
38010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38011)]
38012pub fn vqshlq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
38013 static_assert_uimm_bits!(N, 5);
38014 vqshlq_u32(a, vdupq_n_s32(N as _))
38015}
38016#[doc = "Unsigned saturating shift left"]
38017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u64)"]
38018#[inline(always)]
38019#[target_feature(enable = "neon")]
38020#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38021#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
38022#[cfg_attr(
38023 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38024 assert_instr(uqshl, N = 2)
38025)]
38026#[rustc_legacy_const_generics(1)]
38027#[cfg_attr(
38028 not(target_arch = "arm"),
38029 stable(feature = "neon_intrinsics", since = "1.59.0")
38030)]
38031#[cfg_attr(
38032 target_arch = "arm",
38033 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38034)]
38035pub fn vqshl_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
38036 static_assert_uimm_bits!(N, 6);
38037 vqshl_u64(a, vdup_n_s64(N as _))
38038}
38039#[doc = "Unsigned saturating shift left"]
38040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u64)"]
38041#[inline(always)]
38042#[target_feature(enable = "neon")]
38043#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38044#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
38045#[cfg_attr(
38046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38047 assert_instr(uqshl, N = 2)
38048)]
38049#[rustc_legacy_const_generics(1)]
38050#[cfg_attr(
38051 not(target_arch = "arm"),
38052 stable(feature = "neon_intrinsics", since = "1.59.0")
38053)]
38054#[cfg_attr(
38055 target_arch = "arm",
38056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38057)]
38058pub fn vqshlq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
38059 static_assert_uimm_bits!(N, 6);
38060 vqshlq_u64(a, vdupq_n_s64(N as _))
38061}
38062#[doc = "Signed saturating shift left"]
38063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s8)"]
38064#[inline(always)]
38065#[target_feature(enable = "neon")]
38066#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38067#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38068#[cfg_attr(
38069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38070 assert_instr(sqshl)
38071)]
38072#[cfg_attr(
38073 not(target_arch = "arm"),
38074 stable(feature = "neon_intrinsics", since = "1.59.0")
38075)]
38076#[cfg_attr(
38077 target_arch = "arm",
38078 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38079)]
38080pub fn vqshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
38081 unsafe extern "unadjusted" {
38082 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v8i8")]
38083 #[cfg_attr(
38084 any(target_arch = "aarch64", target_arch = "arm64ec"),
38085 link_name = "llvm.aarch64.neon.sqshl.v8i8"
38086 )]
38087 fn _vqshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
38088 }
38089 unsafe { _vqshl_s8(a, b) }
38090}
38091#[doc = "Signed saturating shift left"]
38092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s8)"]
38093#[inline(always)]
38094#[target_feature(enable = "neon")]
38095#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38096#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38097#[cfg_attr(
38098 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38099 assert_instr(sqshl)
38100)]
38101#[cfg_attr(
38102 not(target_arch = "arm"),
38103 stable(feature = "neon_intrinsics", since = "1.59.0")
38104)]
38105#[cfg_attr(
38106 target_arch = "arm",
38107 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38108)]
38109pub fn vqshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
38110 unsafe extern "unadjusted" {
38111 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v16i8")]
38112 #[cfg_attr(
38113 any(target_arch = "aarch64", target_arch = "arm64ec"),
38114 link_name = "llvm.aarch64.neon.sqshl.v16i8"
38115 )]
38116 fn _vqshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
38117 }
38118 unsafe { _vqshlq_s8(a, b) }
38119}
38120#[doc = "Signed saturating shift left"]
38121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s16)"]
38122#[inline(always)]
38123#[target_feature(enable = "neon")]
38124#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38125#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38126#[cfg_attr(
38127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38128 assert_instr(sqshl)
38129)]
38130#[cfg_attr(
38131 not(target_arch = "arm"),
38132 stable(feature = "neon_intrinsics", since = "1.59.0")
38133)]
38134#[cfg_attr(
38135 target_arch = "arm",
38136 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38137)]
38138pub fn vqshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
38139 unsafe extern "unadjusted" {
38140 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v4i16")]
38141 #[cfg_attr(
38142 any(target_arch = "aarch64", target_arch = "arm64ec"),
38143 link_name = "llvm.aarch64.neon.sqshl.v4i16"
38144 )]
38145 fn _vqshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
38146 }
38147 unsafe { _vqshl_s16(a, b) }
38148}
38149#[doc = "Signed saturating shift left"]
38150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s16)"]
38151#[inline(always)]
38152#[target_feature(enable = "neon")]
38153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38154#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38155#[cfg_attr(
38156 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38157 assert_instr(sqshl)
38158)]
38159#[cfg_attr(
38160 not(target_arch = "arm"),
38161 stable(feature = "neon_intrinsics", since = "1.59.0")
38162)]
38163#[cfg_attr(
38164 target_arch = "arm",
38165 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38166)]
38167pub fn vqshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
38168 unsafe extern "unadjusted" {
38169 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v8i16")]
38170 #[cfg_attr(
38171 any(target_arch = "aarch64", target_arch = "arm64ec"),
38172 link_name = "llvm.aarch64.neon.sqshl.v8i16"
38173 )]
38174 fn _vqshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
38175 }
38176 unsafe { _vqshlq_s16(a, b) }
38177}
38178#[doc = "Signed saturating shift left"]
38179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s32)"]
38180#[inline(always)]
38181#[target_feature(enable = "neon")]
38182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38184#[cfg_attr(
38185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38186 assert_instr(sqshl)
38187)]
38188#[cfg_attr(
38189 not(target_arch = "arm"),
38190 stable(feature = "neon_intrinsics", since = "1.59.0")
38191)]
38192#[cfg_attr(
38193 target_arch = "arm",
38194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38195)]
38196pub fn vqshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
38197 unsafe extern "unadjusted" {
38198 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v2i32")]
38199 #[cfg_attr(
38200 any(target_arch = "aarch64", target_arch = "arm64ec"),
38201 link_name = "llvm.aarch64.neon.sqshl.v2i32"
38202 )]
38203 fn _vqshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
38204 }
38205 unsafe { _vqshl_s32(a, b) }
38206}
38207#[doc = "Signed saturating shift left"]
38208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s32)"]
38209#[inline(always)]
38210#[target_feature(enable = "neon")]
38211#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38212#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38213#[cfg_attr(
38214 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38215 assert_instr(sqshl)
38216)]
38217#[cfg_attr(
38218 not(target_arch = "arm"),
38219 stable(feature = "neon_intrinsics", since = "1.59.0")
38220)]
38221#[cfg_attr(
38222 target_arch = "arm",
38223 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38224)]
38225pub fn vqshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
38226 unsafe extern "unadjusted" {
38227 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v4i32")]
38228 #[cfg_attr(
38229 any(target_arch = "aarch64", target_arch = "arm64ec"),
38230 link_name = "llvm.aarch64.neon.sqshl.v4i32"
38231 )]
38232 fn _vqshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
38233 }
38234 unsafe { _vqshlq_s32(a, b) }
38235}
38236#[doc = "Signed saturating shift left"]
38237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s64)"]
38238#[inline(always)]
38239#[target_feature(enable = "neon")]
38240#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38241#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38242#[cfg_attr(
38243 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38244 assert_instr(sqshl)
38245)]
38246#[cfg_attr(
38247 not(target_arch = "arm"),
38248 stable(feature = "neon_intrinsics", since = "1.59.0")
38249)]
38250#[cfg_attr(
38251 target_arch = "arm",
38252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38253)]
38254pub fn vqshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
38255 unsafe extern "unadjusted" {
38256 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v1i64")]
38257 #[cfg_attr(
38258 any(target_arch = "aarch64", target_arch = "arm64ec"),
38259 link_name = "llvm.aarch64.neon.sqshl.v1i64"
38260 )]
38261 fn _vqshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
38262 }
38263 unsafe { _vqshl_s64(a, b) }
38264}
38265#[doc = "Signed saturating shift left"]
38266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s64)"]
38267#[inline(always)]
38268#[target_feature(enable = "neon")]
38269#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38270#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38271#[cfg_attr(
38272 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38273 assert_instr(sqshl)
38274)]
38275#[cfg_attr(
38276 not(target_arch = "arm"),
38277 stable(feature = "neon_intrinsics", since = "1.59.0")
38278)]
38279#[cfg_attr(
38280 target_arch = "arm",
38281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38282)]
38283pub fn vqshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
38284 unsafe extern "unadjusted" {
38285 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v2i64")]
38286 #[cfg_attr(
38287 any(target_arch = "aarch64", target_arch = "arm64ec"),
38288 link_name = "llvm.aarch64.neon.sqshl.v2i64"
38289 )]
38290 fn _vqshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
38291 }
38292 unsafe { _vqshlq_s64(a, b) }
38293}
38294#[doc = "Unsigned saturating shift left"]
38295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u8)"]
38296#[inline(always)]
38297#[target_feature(enable = "neon")]
38298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38299#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38300#[cfg_attr(
38301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38302 assert_instr(uqshl)
38303)]
38304#[cfg_attr(
38305 not(target_arch = "arm"),
38306 stable(feature = "neon_intrinsics", since = "1.59.0")
38307)]
38308#[cfg_attr(
38309 target_arch = "arm",
38310 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38311)]
38312pub fn vqshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
38313 unsafe extern "unadjusted" {
38314 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v8i8")]
38315 #[cfg_attr(
38316 any(target_arch = "aarch64", target_arch = "arm64ec"),
38317 link_name = "llvm.aarch64.neon.uqshl.v8i8"
38318 )]
38319 fn _vqshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
38320 }
38321 unsafe { _vqshl_u8(a, b) }
38322}
38323#[doc = "Unsigned saturating shift left"]
38324#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u8)"]
38325#[inline(always)]
38326#[target_feature(enable = "neon")]
38327#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38328#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38329#[cfg_attr(
38330 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38331 assert_instr(uqshl)
38332)]
38333#[cfg_attr(
38334 not(target_arch = "arm"),
38335 stable(feature = "neon_intrinsics", since = "1.59.0")
38336)]
38337#[cfg_attr(
38338 target_arch = "arm",
38339 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38340)]
38341pub fn vqshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
38342 unsafe extern "unadjusted" {
38343 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v16i8")]
38344 #[cfg_attr(
38345 any(target_arch = "aarch64", target_arch = "arm64ec"),
38346 link_name = "llvm.aarch64.neon.uqshl.v16i8"
38347 )]
38348 fn _vqshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
38349 }
38350 unsafe { _vqshlq_u8(a, b) }
38351}
38352#[doc = "Unsigned saturating shift left"]
38353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u16)"]
38354#[inline(always)]
38355#[target_feature(enable = "neon")]
38356#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38357#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38358#[cfg_attr(
38359 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38360 assert_instr(uqshl)
38361)]
38362#[cfg_attr(
38363 not(target_arch = "arm"),
38364 stable(feature = "neon_intrinsics", since = "1.59.0")
38365)]
38366#[cfg_attr(
38367 target_arch = "arm",
38368 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38369)]
38370pub fn vqshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
38371 unsafe extern "unadjusted" {
38372 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v4i16")]
38373 #[cfg_attr(
38374 any(target_arch = "aarch64", target_arch = "arm64ec"),
38375 link_name = "llvm.aarch64.neon.uqshl.v4i16"
38376 )]
38377 fn _vqshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
38378 }
38379 unsafe { _vqshl_u16(a, b) }
38380}
38381#[doc = "Unsigned saturating shift left"]
38382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u16)"]
38383#[inline(always)]
38384#[target_feature(enable = "neon")]
38385#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38386#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38387#[cfg_attr(
38388 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38389 assert_instr(uqshl)
38390)]
38391#[cfg_attr(
38392 not(target_arch = "arm"),
38393 stable(feature = "neon_intrinsics", since = "1.59.0")
38394)]
38395#[cfg_attr(
38396 target_arch = "arm",
38397 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38398)]
38399pub fn vqshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
38400 unsafe extern "unadjusted" {
38401 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v8i16")]
38402 #[cfg_attr(
38403 any(target_arch = "aarch64", target_arch = "arm64ec"),
38404 link_name = "llvm.aarch64.neon.uqshl.v8i16"
38405 )]
38406 fn _vqshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
38407 }
38408 unsafe { _vqshlq_u16(a, b) }
38409}
38410#[doc = "Unsigned saturating shift left"]
38411#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u32)"]
38412#[inline(always)]
38413#[target_feature(enable = "neon")]
38414#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38415#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38416#[cfg_attr(
38417 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38418 assert_instr(uqshl)
38419)]
38420#[cfg_attr(
38421 not(target_arch = "arm"),
38422 stable(feature = "neon_intrinsics", since = "1.59.0")
38423)]
38424#[cfg_attr(
38425 target_arch = "arm",
38426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38427)]
38428pub fn vqshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
38429 unsafe extern "unadjusted" {
38430 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v2i32")]
38431 #[cfg_attr(
38432 any(target_arch = "aarch64", target_arch = "arm64ec"),
38433 link_name = "llvm.aarch64.neon.uqshl.v2i32"
38434 )]
38435 fn _vqshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
38436 }
38437 unsafe { _vqshl_u32(a, b) }
38438}
38439#[doc = "Unsigned saturating shift left"]
38440#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u32)"]
38441#[inline(always)]
38442#[target_feature(enable = "neon")]
38443#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38444#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38445#[cfg_attr(
38446 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38447 assert_instr(uqshl)
38448)]
38449#[cfg_attr(
38450 not(target_arch = "arm"),
38451 stable(feature = "neon_intrinsics", since = "1.59.0")
38452)]
38453#[cfg_attr(
38454 target_arch = "arm",
38455 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38456)]
38457pub fn vqshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
38458 unsafe extern "unadjusted" {
38459 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v4i32")]
38460 #[cfg_attr(
38461 any(target_arch = "aarch64", target_arch = "arm64ec"),
38462 link_name = "llvm.aarch64.neon.uqshl.v4i32"
38463 )]
38464 fn _vqshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
38465 }
38466 unsafe { _vqshlq_u32(a, b) }
38467}
38468#[doc = "Unsigned saturating shift left"]
38469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u64)"]
38470#[inline(always)]
38471#[target_feature(enable = "neon")]
38472#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38473#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38474#[cfg_attr(
38475 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38476 assert_instr(uqshl)
38477)]
38478#[cfg_attr(
38479 not(target_arch = "arm"),
38480 stable(feature = "neon_intrinsics", since = "1.59.0")
38481)]
38482#[cfg_attr(
38483 target_arch = "arm",
38484 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38485)]
38486pub fn vqshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
38487 unsafe extern "unadjusted" {
38488 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v1i64")]
38489 #[cfg_attr(
38490 any(target_arch = "aarch64", target_arch = "arm64ec"),
38491 link_name = "llvm.aarch64.neon.uqshl.v1i64"
38492 )]
38493 fn _vqshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
38494 }
38495 unsafe { _vqshl_u64(a, b) }
38496}
38497#[doc = "Unsigned saturating shift left"]
38498#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u64)"]
38499#[inline(always)]
38500#[target_feature(enable = "neon")]
38501#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38502#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38503#[cfg_attr(
38504 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38505 assert_instr(uqshl)
38506)]
38507#[cfg_attr(
38508 not(target_arch = "arm"),
38509 stable(feature = "neon_intrinsics", since = "1.59.0")
38510)]
38511#[cfg_attr(
38512 target_arch = "arm",
38513 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38514)]
38515pub fn vqshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
38516 unsafe extern "unadjusted" {
38517 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v2i64")]
38518 #[cfg_attr(
38519 any(target_arch = "aarch64", target_arch = "arm64ec"),
38520 link_name = "llvm.aarch64.neon.uqshl.v2i64"
38521 )]
38522 fn _vqshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
38523 }
38524 unsafe { _vqshlq_u64(a, b) }
38525}
38526#[doc = "Signed saturating shift left unsigned"]
38527#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s8)"]
38528#[inline(always)]
38529#[cfg(target_arch = "arm")]
38530#[target_feature(enable = "neon,v7")]
38531#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38532#[rustc_legacy_const_generics(1)]
38533#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38534pub fn vqshlu_n_s8<const N: i32>(a: int8x8_t) -> uint8x8_t {
38535 static_assert_uimm_bits!(N, 3);
38536 unsafe extern "unadjusted" {
38537 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v8i8")]
38538 fn _vqshlu_n_s8(a: int8x8_t, n: int8x8_t) -> uint8x8_t;
38539 }
38540 unsafe { _vqshlu_n_s8(a, const { int8x8_t([N as i8; 8]) }) }
38541}
38542#[doc = "Signed saturating shift left unsigned"]
38543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s8)"]
38544#[inline(always)]
38545#[cfg(target_arch = "arm")]
38546#[target_feature(enable = "neon,v7")]
38547#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38548#[rustc_legacy_const_generics(1)]
38549#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38550pub fn vqshluq_n_s8<const N: i32>(a: int8x16_t) -> uint8x16_t {
38551 static_assert_uimm_bits!(N, 3);
38552 unsafe extern "unadjusted" {
38553 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v16i8")]
38554 fn _vqshluq_n_s8(a: int8x16_t, n: int8x16_t) -> uint8x16_t;
38555 }
38556 unsafe { _vqshluq_n_s8(a, const { int8x16_t([N as i8; 16]) }) }
38557}
38558#[doc = "Signed saturating shift left unsigned"]
38559#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s16)"]
38560#[inline(always)]
38561#[cfg(target_arch = "arm")]
38562#[target_feature(enable = "neon,v7")]
38563#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38564#[rustc_legacy_const_generics(1)]
38565#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38566pub fn vqshlu_n_s16<const N: i32>(a: int16x4_t) -> uint16x4_t {
38567 static_assert_uimm_bits!(N, 4);
38568 unsafe extern "unadjusted" {
38569 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v4i16")]
38570 fn _vqshlu_n_s16(a: int16x4_t, n: int16x4_t) -> uint16x4_t;
38571 }
38572 unsafe { _vqshlu_n_s16(a, const { int16x4_t([N as i16; 4]) }) }
38573}
38574#[doc = "Signed saturating shift left unsigned"]
38575#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s16)"]
38576#[inline(always)]
38577#[cfg(target_arch = "arm")]
38578#[target_feature(enable = "neon,v7")]
38579#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38580#[rustc_legacy_const_generics(1)]
38581#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38582pub fn vqshluq_n_s16<const N: i32>(a: int16x8_t) -> uint16x8_t {
38583 static_assert_uimm_bits!(N, 4);
38584 unsafe extern "unadjusted" {
38585 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v8i16")]
38586 fn _vqshluq_n_s16(a: int16x8_t, n: int16x8_t) -> uint16x8_t;
38587 }
38588 unsafe { _vqshluq_n_s16(a, const { int16x8_t([N as i16; 8]) }) }
38589}
38590#[doc = "Signed saturating shift left unsigned"]
38591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s32)"]
38592#[inline(always)]
38593#[cfg(target_arch = "arm")]
38594#[target_feature(enable = "neon,v7")]
38595#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38596#[rustc_legacy_const_generics(1)]
38597#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38598pub fn vqshlu_n_s32<const N: i32>(a: int32x2_t) -> uint32x2_t {
38599 static_assert_uimm_bits!(N, 5);
38600 unsafe extern "unadjusted" {
38601 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v2i32")]
38602 fn _vqshlu_n_s32(a: int32x2_t, n: int32x2_t) -> uint32x2_t;
38603 }
38604 unsafe { _vqshlu_n_s32(a, const { int32x2_t([N; 2]) }) }
38605}
38606#[doc = "Signed saturating shift left unsigned"]
38607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s32)"]
38608#[inline(always)]
38609#[cfg(target_arch = "arm")]
38610#[target_feature(enable = "neon,v7")]
38611#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38612#[rustc_legacy_const_generics(1)]
38613#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38614pub fn vqshluq_n_s32<const N: i32>(a: int32x4_t) -> uint32x4_t {
38615 static_assert_uimm_bits!(N, 5);
38616 unsafe extern "unadjusted" {
38617 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v4i32")]
38618 fn _vqshluq_n_s32(a: int32x4_t, n: int32x4_t) -> uint32x4_t;
38619 }
38620 unsafe { _vqshluq_n_s32(a, const { int32x4_t([N; 4]) }) }
38621}
38622#[doc = "Signed saturating shift left unsigned"]
38623#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s64)"]
38624#[inline(always)]
38625#[cfg(target_arch = "arm")]
38626#[target_feature(enable = "neon,v7")]
38627#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38628#[rustc_legacy_const_generics(1)]
38629#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38630pub fn vqshlu_n_s64<const N: i32>(a: int64x1_t) -> uint64x1_t {
38631 static_assert_uimm_bits!(N, 6);
38632 unsafe extern "unadjusted" {
38633 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v1i64")]
38634 fn _vqshlu_n_s64(a: int64x1_t, n: int64x1_t) -> uint64x1_t;
38635 }
38636 unsafe { _vqshlu_n_s64(a, const { int64x1_t([N as i64]) }) }
38637}
38638#[doc = "Signed saturating shift left unsigned"]
38639#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s64)"]
38640#[inline(always)]
38641#[cfg(target_arch = "arm")]
38642#[target_feature(enable = "neon,v7")]
38643#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38644#[rustc_legacy_const_generics(1)]
38645#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38646pub fn vqshluq_n_s64<const N: i32>(a: int64x2_t) -> uint64x2_t {
38647 static_assert_uimm_bits!(N, 6);
38648 unsafe extern "unadjusted" {
38649 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v2i64")]
38650 fn _vqshluq_n_s64(a: int64x2_t, n: int64x2_t) -> uint64x2_t;
38651 }
38652 unsafe { _vqshluq_n_s64(a, const { int64x2_t([N as i64; 2]) }) }
38653}
38654#[doc = "Signed saturating shift left unsigned"]
38655#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s8)"]
38656#[inline(always)]
38657#[target_feature(enable = "neon")]
38658#[cfg(not(target_arch = "arm"))]
38659#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38660#[rustc_legacy_const_generics(1)]
38661#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38662pub fn vqshlu_n_s8<const N: i32>(a: int8x8_t) -> uint8x8_t {
38663 static_assert_uimm_bits!(N, 3);
38664 unsafe extern "unadjusted" {
38665 #[cfg_attr(
38666 any(target_arch = "aarch64", target_arch = "arm64ec"),
38667 link_name = "llvm.aarch64.neon.sqshlu.v8i8"
38668 )]
38669 fn _vqshlu_n_s8(a: int8x8_t, n: int8x8_t) -> uint8x8_t;
38670 }
38671 unsafe { _vqshlu_n_s8(a, const { int8x8_t([N as i8; 8]) }) }
38672}
38673#[doc = "Signed saturating shift left unsigned"]
38674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s8)"]
38675#[inline(always)]
38676#[target_feature(enable = "neon")]
38677#[cfg(not(target_arch = "arm"))]
38678#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38679#[rustc_legacy_const_generics(1)]
38680#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38681pub fn vqshluq_n_s8<const N: i32>(a: int8x16_t) -> uint8x16_t {
38682 static_assert_uimm_bits!(N, 3);
38683 unsafe extern "unadjusted" {
38684 #[cfg_attr(
38685 any(target_arch = "aarch64", target_arch = "arm64ec"),
38686 link_name = "llvm.aarch64.neon.sqshlu.v16i8"
38687 )]
38688 fn _vqshluq_n_s8(a: int8x16_t, n: int8x16_t) -> uint8x16_t;
38689 }
38690 unsafe { _vqshluq_n_s8(a, const { int8x16_t([N as i8; 16]) }) }
38691}
38692#[doc = "Signed saturating shift left unsigned"]
38693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s16)"]
38694#[inline(always)]
38695#[target_feature(enable = "neon")]
38696#[cfg(not(target_arch = "arm"))]
38697#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38698#[rustc_legacy_const_generics(1)]
38699#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38700pub fn vqshlu_n_s16<const N: i32>(a: int16x4_t) -> uint16x4_t {
38701 static_assert_uimm_bits!(N, 4);
38702 unsafe extern "unadjusted" {
38703 #[cfg_attr(
38704 any(target_arch = "aarch64", target_arch = "arm64ec"),
38705 link_name = "llvm.aarch64.neon.sqshlu.v4i16"
38706 )]
38707 fn _vqshlu_n_s16(a: int16x4_t, n: int16x4_t) -> uint16x4_t;
38708 }
38709 unsafe { _vqshlu_n_s16(a, const { int16x4_t([N as i16; 4]) }) }
38710}
38711#[doc = "Signed saturating shift left unsigned"]
38712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s16)"]
38713#[inline(always)]
38714#[target_feature(enable = "neon")]
38715#[cfg(not(target_arch = "arm"))]
38716#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38717#[rustc_legacy_const_generics(1)]
38718#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38719pub fn vqshluq_n_s16<const N: i32>(a: int16x8_t) -> uint16x8_t {
38720 static_assert_uimm_bits!(N, 4);
38721 unsafe extern "unadjusted" {
38722 #[cfg_attr(
38723 any(target_arch = "aarch64", target_arch = "arm64ec"),
38724 link_name = "llvm.aarch64.neon.sqshlu.v8i16"
38725 )]
38726 fn _vqshluq_n_s16(a: int16x8_t, n: int16x8_t) -> uint16x8_t;
38727 }
38728 unsafe { _vqshluq_n_s16(a, const { int16x8_t([N as i16; 8]) }) }
38729}
38730#[doc = "Signed saturating shift left unsigned"]
38731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s32)"]
38732#[inline(always)]
38733#[target_feature(enable = "neon")]
38734#[cfg(not(target_arch = "arm"))]
38735#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38736#[rustc_legacy_const_generics(1)]
38737#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38738pub fn vqshlu_n_s32<const N: i32>(a: int32x2_t) -> uint32x2_t {
38739 static_assert_uimm_bits!(N, 5);
38740 unsafe extern "unadjusted" {
38741 #[cfg_attr(
38742 any(target_arch = "aarch64", target_arch = "arm64ec"),
38743 link_name = "llvm.aarch64.neon.sqshlu.v2i32"
38744 )]
38745 fn _vqshlu_n_s32(a: int32x2_t, n: int32x2_t) -> uint32x2_t;
38746 }
38747 unsafe { _vqshlu_n_s32(a, const { int32x2_t([N; 2]) }) }
38748}
38749#[doc = "Signed saturating shift left unsigned"]
38750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s32)"]
38751#[inline(always)]
38752#[target_feature(enable = "neon")]
38753#[cfg(not(target_arch = "arm"))]
38754#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38755#[rustc_legacy_const_generics(1)]
38756#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38757pub fn vqshluq_n_s32<const N: i32>(a: int32x4_t) -> uint32x4_t {
38758 static_assert_uimm_bits!(N, 5);
38759 unsafe extern "unadjusted" {
38760 #[cfg_attr(
38761 any(target_arch = "aarch64", target_arch = "arm64ec"),
38762 link_name = "llvm.aarch64.neon.sqshlu.v4i32"
38763 )]
38764 fn _vqshluq_n_s32(a: int32x4_t, n: int32x4_t) -> uint32x4_t;
38765 }
38766 unsafe { _vqshluq_n_s32(a, const { int32x4_t([N; 4]) }) }
38767}
38768#[doc = "Signed saturating shift left unsigned"]
38769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s64)"]
38770#[inline(always)]
38771#[target_feature(enable = "neon")]
38772#[cfg(not(target_arch = "arm"))]
38773#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38774#[rustc_legacy_const_generics(1)]
38775#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38776pub fn vqshlu_n_s64<const N: i32>(a: int64x1_t) -> uint64x1_t {
38777 static_assert_uimm_bits!(N, 6);
38778 unsafe extern "unadjusted" {
38779 #[cfg_attr(
38780 any(target_arch = "aarch64", target_arch = "arm64ec"),
38781 link_name = "llvm.aarch64.neon.sqshlu.v1i64"
38782 )]
38783 fn _vqshlu_n_s64(a: int64x1_t, n: int64x1_t) -> uint64x1_t;
38784 }
38785 unsafe { _vqshlu_n_s64(a, const { int64x1_t([N as i64]) }) }
38786}
38787#[doc = "Signed saturating shift left unsigned"]
38788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s64)"]
38789#[inline(always)]
38790#[target_feature(enable = "neon")]
38791#[cfg(not(target_arch = "arm"))]
38792#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38793#[rustc_legacy_const_generics(1)]
38794#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38795pub fn vqshluq_n_s64<const N: i32>(a: int64x2_t) -> uint64x2_t {
38796 static_assert_uimm_bits!(N, 6);
38797 unsafe extern "unadjusted" {
38798 #[cfg_attr(
38799 any(target_arch = "aarch64", target_arch = "arm64ec"),
38800 link_name = "llvm.aarch64.neon.sqshlu.v2i64"
38801 )]
38802 fn _vqshluq_n_s64(a: int64x2_t, n: int64x2_t) -> uint64x2_t;
38803 }
38804 unsafe { _vqshluq_n_s64(a, const { int64x2_t([N as i64; 2]) }) }
38805}
38806#[doc = "Signed saturating shift right narrow"]
38807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]
38808#[inline(always)]
38809#[cfg(target_arch = "arm")]
38810#[target_feature(enable = "neon,v7")]
38811#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
38812#[rustc_legacy_const_generics(1)]
38813#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38814pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
38815 static_assert!(N >= 1 && N <= 8);
38816 unsafe extern "unadjusted" {
38817 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v8i8")]
38818 fn _vqshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
38819 }
38820 unsafe { _vqshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
38821}
38822#[doc = "Signed saturating shift right narrow"]
38823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]
38824#[inline(always)]
38825#[cfg(target_arch = "arm")]
38826#[target_feature(enable = "neon,v7")]
38827#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
38828#[rustc_legacy_const_generics(1)]
38829#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38830pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
38831 static_assert!(N >= 1 && N <= 16);
38832 unsafe extern "unadjusted" {
38833 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v4i16")]
38834 fn _vqshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
38835 }
38836 unsafe { _vqshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
38837}
38838#[doc = "Signed saturating shift right narrow"]
38839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]
38840#[inline(always)]
38841#[cfg(target_arch = "arm")]
38842#[target_feature(enable = "neon,v7")]
38843#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
38844#[rustc_legacy_const_generics(1)]
38845#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38846pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
38847 static_assert!(N >= 1 && N <= 32);
38848 unsafe extern "unadjusted" {
38849 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v2i32")]
38850 fn _vqshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
38851 }
38852 unsafe { _vqshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
38853}
38854#[doc = "Signed saturating shift right narrow"]
38855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]
38856#[inline(always)]
38857#[target_feature(enable = "neon")]
38858#[cfg(not(target_arch = "arm"))]
38859#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
38860#[rustc_legacy_const_generics(1)]
38861#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38862pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
38863 static_assert!(N >= 1 && N <= 8);
38864 unsafe extern "unadjusted" {
38865 #[cfg_attr(
38866 any(target_arch = "aarch64", target_arch = "arm64ec"),
38867 link_name = "llvm.aarch64.neon.sqshrn.v8i8"
38868 )]
38869 fn _vqshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
38870 }
38871 unsafe { _vqshrn_n_s16(a, N) }
38872}
38873#[doc = "Signed saturating shift right narrow"]
38874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]
38875#[inline(always)]
38876#[target_feature(enable = "neon")]
38877#[cfg(not(target_arch = "arm"))]
38878#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
38879#[rustc_legacy_const_generics(1)]
38880#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38881pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
38882 static_assert!(N >= 1 && N <= 16);
38883 unsafe extern "unadjusted" {
38884 #[cfg_attr(
38885 any(target_arch = "aarch64", target_arch = "arm64ec"),
38886 link_name = "llvm.aarch64.neon.sqshrn.v4i16"
38887 )]
38888 fn _vqshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
38889 }
38890 unsafe { _vqshrn_n_s32(a, N) }
38891}
38892#[doc = "Signed saturating shift right narrow"]
38893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]
38894#[inline(always)]
38895#[target_feature(enable = "neon")]
38896#[cfg(not(target_arch = "arm"))]
38897#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
38898#[rustc_legacy_const_generics(1)]
38899#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38900pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
38901 static_assert!(N >= 1 && N <= 32);
38902 unsafe extern "unadjusted" {
38903 #[cfg_attr(
38904 any(target_arch = "aarch64", target_arch = "arm64ec"),
38905 link_name = "llvm.aarch64.neon.sqshrn.v2i32"
38906 )]
38907 fn _vqshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
38908 }
38909 unsafe { _vqshrn_n_s64(a, N) }
38910}
38911#[doc = "Unsigned saturating shift right narrow"]
38912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u16)"]
38913#[inline(always)]
38914#[cfg(target_arch = "arm")]
38915#[target_feature(enable = "neon,v7")]
38916#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
38917#[rustc_legacy_const_generics(1)]
38918#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38919pub fn vqshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
38920 static_assert!(N >= 1 && N <= 8);
38921 unsafe extern "unadjusted" {
38922 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v8i8")]
38923 fn _vqshrn_n_u16(a: uint16x8_t, n: uint16x8_t) -> uint8x8_t;
38924 }
38925 unsafe {
38926 _vqshrn_n_u16(
38927 a,
38928 const {
38929 uint16x8_t([
38930 -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16, -N as u16,
38931 -N as u16,
38932 ])
38933 },
38934 )
38935 }
38936}
38937#[doc = "Unsigned saturating shift right narrow"]
38938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u32)"]
38939#[inline(always)]
38940#[cfg(target_arch = "arm")]
38941#[target_feature(enable = "neon,v7")]
38942#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
38943#[rustc_legacy_const_generics(1)]
38944#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38945pub fn vqshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
38946 static_assert!(N >= 1 && N <= 16);
38947 unsafe extern "unadjusted" {
38948 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v4i16")]
38949 fn _vqshrn_n_u32(a: uint32x4_t, n: uint32x4_t) -> uint16x4_t;
38950 }
38951 unsafe {
38952 _vqshrn_n_u32(
38953 a,
38954 const { uint32x4_t([-N as u32, -N as u32, -N as u32, -N as u32]) },
38955 )
38956 }
38957}
38958#[doc = "Unsigned saturating shift right narrow"]
38959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u64)"]
38960#[inline(always)]
38961#[cfg(target_arch = "arm")]
38962#[target_feature(enable = "neon,v7")]
38963#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
38964#[rustc_legacy_const_generics(1)]
38965#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38966pub fn vqshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
38967 static_assert!(N >= 1 && N <= 32);
38968 unsafe extern "unadjusted" {
38969 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v2i32")]
38970 fn _vqshrn_n_u64(a: uint64x2_t, n: uint64x2_t) -> uint32x2_t;
38971 }
38972 unsafe { _vqshrn_n_u64(a, const { uint64x2_t([-N as u64, -N as u64]) }) }
38973}
38974#[doc = "Unsigned saturating shift right narrow"]
38975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u16)"]
38976#[inline(always)]
38977#[target_feature(enable = "neon")]
38978#[cfg(not(target_arch = "arm"))]
38979#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
38980#[rustc_legacy_const_generics(1)]
38981#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38982pub fn vqshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
38983 static_assert!(N >= 1 && N <= 8);
38984 unsafe extern "unadjusted" {
38985 #[cfg_attr(
38986 any(target_arch = "aarch64", target_arch = "arm64ec"),
38987 link_name = "llvm.aarch64.neon.uqshrn.v8i8"
38988 )]
38989 fn _vqshrn_n_u16(a: uint16x8_t, n: i32) -> uint8x8_t;
38990 }
38991 unsafe { _vqshrn_n_u16(a, N) }
38992}
38993#[doc = "Unsigned saturating shift right narrow"]
38994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u32)"]
38995#[inline(always)]
38996#[target_feature(enable = "neon")]
38997#[cfg(not(target_arch = "arm"))]
38998#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
38999#[rustc_legacy_const_generics(1)]
39000#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39001pub fn vqshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
39002 static_assert!(N >= 1 && N <= 16);
39003 unsafe extern "unadjusted" {
39004 #[cfg_attr(
39005 any(target_arch = "aarch64", target_arch = "arm64ec"),
39006 link_name = "llvm.aarch64.neon.uqshrn.v4i16"
39007 )]
39008 fn _vqshrn_n_u32(a: uint32x4_t, n: i32) -> uint16x4_t;
39009 }
39010 unsafe { _vqshrn_n_u32(a, N) }
39011}
39012#[doc = "Unsigned saturating shift right narrow"]
39013#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u64)"]
39014#[inline(always)]
39015#[target_feature(enable = "neon")]
39016#[cfg(not(target_arch = "arm"))]
39017#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
39018#[rustc_legacy_const_generics(1)]
39019#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39020pub fn vqshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
39021 static_assert!(N >= 1 && N <= 32);
39022 unsafe extern "unadjusted" {
39023 #[cfg_attr(
39024 any(target_arch = "aarch64", target_arch = "arm64ec"),
39025 link_name = "llvm.aarch64.neon.uqshrn.v2i32"
39026 )]
39027 fn _vqshrn_n_u64(a: uint64x2_t, n: i32) -> uint32x2_t;
39028 }
39029 unsafe { _vqshrn_n_u64(a, N) }
39030}
39031#[doc = "Signed saturating shift right unsigned narrow"]
39032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]
39033#[inline(always)]
39034#[cfg(target_arch = "arm")]
39035#[target_feature(enable = "neon,v7")]
39036#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
39037#[rustc_legacy_const_generics(1)]
39038#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39039pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
39040 static_assert!(N >= 1 && N <= 8);
39041 unsafe extern "unadjusted" {
39042 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v8i8")]
39043 fn _vqshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
39044 }
39045 unsafe { _vqshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
39046}
39047#[doc = "Signed saturating shift right unsigned narrow"]
39048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]
39049#[inline(always)]
39050#[cfg(target_arch = "arm")]
39051#[target_feature(enable = "neon,v7")]
39052#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
39053#[rustc_legacy_const_generics(1)]
39054#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39055pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
39056 static_assert!(N >= 1 && N <= 16);
39057 unsafe extern "unadjusted" {
39058 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v4i16")]
39059 fn _vqshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
39060 }
39061 unsafe { _vqshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
39062}
39063#[doc = "Signed saturating shift right unsigned narrow"]
39064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]
39065#[inline(always)]
39066#[cfg(target_arch = "arm")]
39067#[target_feature(enable = "neon,v7")]
39068#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
39069#[rustc_legacy_const_generics(1)]
39070#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
39071pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
39072 static_assert!(N >= 1 && N <= 32);
39073 unsafe extern "unadjusted" {
39074 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v2i32")]
39075 fn _vqshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
39076 }
39077 unsafe { _vqshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
39078}
39079#[doc = "Signed saturating shift right unsigned narrow"]
39080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]
39081#[inline(always)]
39082#[target_feature(enable = "neon")]
39083#[cfg(not(target_arch = "arm"))]
39084#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
39085#[rustc_legacy_const_generics(1)]
39086#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39087pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
39088 static_assert!(N >= 1 && N <= 8);
39089 unsafe extern "unadjusted" {
39090 #[cfg_attr(
39091 any(target_arch = "aarch64", target_arch = "arm64ec"),
39092 link_name = "llvm.aarch64.neon.sqshrun.v8i8"
39093 )]
39094 fn _vqshrun_n_s16(a: int16x8_t, n: i32) -> uint8x8_t;
39095 }
39096 unsafe { _vqshrun_n_s16(a, N) }
39097}
39098#[doc = "Signed saturating shift right unsigned narrow"]
39099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]
39100#[inline(always)]
39101#[target_feature(enable = "neon")]
39102#[cfg(not(target_arch = "arm"))]
39103#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
39104#[rustc_legacy_const_generics(1)]
39105#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39106pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
39107 static_assert!(N >= 1 && N <= 16);
39108 unsafe extern "unadjusted" {
39109 #[cfg_attr(
39110 any(target_arch = "aarch64", target_arch = "arm64ec"),
39111 link_name = "llvm.aarch64.neon.sqshrun.v4i16"
39112 )]
39113 fn _vqshrun_n_s32(a: int32x4_t, n: i32) -> uint16x4_t;
39114 }
39115 unsafe { _vqshrun_n_s32(a, N) }
39116}
39117#[doc = "Signed saturating shift right unsigned narrow"]
39118#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]
39119#[inline(always)]
39120#[target_feature(enable = "neon")]
39121#[cfg(not(target_arch = "arm"))]
39122#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
39123#[rustc_legacy_const_generics(1)]
39124#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39125pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
39126 static_assert!(N >= 1 && N <= 32);
39127 unsafe extern "unadjusted" {
39128 #[cfg_attr(
39129 any(target_arch = "aarch64", target_arch = "arm64ec"),
39130 link_name = "llvm.aarch64.neon.sqshrun.v2i32"
39131 )]
39132 fn _vqshrun_n_s64(a: int64x2_t, n: i32) -> uint32x2_t;
39133 }
39134 unsafe { _vqshrun_n_s64(a, N) }
39135}
39136#[doc = "Saturating subtract"]
39137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s8)"]
39138#[inline(always)]
39139#[target_feature(enable = "neon")]
39140#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39141#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s8"))]
39142#[cfg_attr(
39143 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39144 assert_instr(sqsub)
39145)]
39146#[cfg_attr(
39147 not(target_arch = "arm"),
39148 stable(feature = "neon_intrinsics", since = "1.59.0")
39149)]
39150#[cfg_attr(
39151 target_arch = "arm",
39152 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39153)]
39154pub fn vqsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
39155 unsafe { simd_saturating_sub(a, b) }
39156}
39157#[doc = "Saturating subtract"]
39158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s8)"]
39159#[inline(always)]
39160#[target_feature(enable = "neon")]
39161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39162#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s8"))]
39163#[cfg_attr(
39164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39165 assert_instr(sqsub)
39166)]
39167#[cfg_attr(
39168 not(target_arch = "arm"),
39169 stable(feature = "neon_intrinsics", since = "1.59.0")
39170)]
39171#[cfg_attr(
39172 target_arch = "arm",
39173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39174)]
39175pub fn vqsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
39176 unsafe { simd_saturating_sub(a, b) }
39177}
39178#[doc = "Saturating subtract"]
39179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s16)"]
39180#[inline(always)]
39181#[target_feature(enable = "neon")]
39182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39183#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s16"))]
39184#[cfg_attr(
39185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39186 assert_instr(sqsub)
39187)]
39188#[cfg_attr(
39189 not(target_arch = "arm"),
39190 stable(feature = "neon_intrinsics", since = "1.59.0")
39191)]
39192#[cfg_attr(
39193 target_arch = "arm",
39194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39195)]
39196pub fn vqsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
39197 unsafe { simd_saturating_sub(a, b) }
39198}
39199#[doc = "Saturating subtract"]
39200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s16)"]
39201#[inline(always)]
39202#[target_feature(enable = "neon")]
39203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39204#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s16"))]
39205#[cfg_attr(
39206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39207 assert_instr(sqsub)
39208)]
39209#[cfg_attr(
39210 not(target_arch = "arm"),
39211 stable(feature = "neon_intrinsics", since = "1.59.0")
39212)]
39213#[cfg_attr(
39214 target_arch = "arm",
39215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39216)]
39217pub fn vqsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
39218 unsafe { simd_saturating_sub(a, b) }
39219}
39220#[doc = "Saturating subtract"]
39221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s32)"]
39222#[inline(always)]
39223#[target_feature(enable = "neon")]
39224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39225#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s32"))]
39226#[cfg_attr(
39227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39228 assert_instr(sqsub)
39229)]
39230#[cfg_attr(
39231 not(target_arch = "arm"),
39232 stable(feature = "neon_intrinsics", since = "1.59.0")
39233)]
39234#[cfg_attr(
39235 target_arch = "arm",
39236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39237)]
39238pub fn vqsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
39239 unsafe { simd_saturating_sub(a, b) }
39240}
39241#[doc = "Saturating subtract"]
39242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s32)"]
39243#[inline(always)]
39244#[target_feature(enable = "neon")]
39245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39246#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s32"))]
39247#[cfg_attr(
39248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39249 assert_instr(sqsub)
39250)]
39251#[cfg_attr(
39252 not(target_arch = "arm"),
39253 stable(feature = "neon_intrinsics", since = "1.59.0")
39254)]
39255#[cfg_attr(
39256 target_arch = "arm",
39257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39258)]
39259pub fn vqsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
39260 unsafe { simd_saturating_sub(a, b) }
39261}
39262#[doc = "Saturating subtract"]
39263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s64)"]
39264#[inline(always)]
39265#[target_feature(enable = "neon")]
39266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39267#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s64"))]
39268#[cfg_attr(
39269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39270 assert_instr(sqsub)
39271)]
39272#[cfg_attr(
39273 not(target_arch = "arm"),
39274 stable(feature = "neon_intrinsics", since = "1.59.0")
39275)]
39276#[cfg_attr(
39277 target_arch = "arm",
39278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39279)]
39280pub fn vqsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
39281 unsafe { simd_saturating_sub(a, b) }
39282}
39283#[doc = "Saturating subtract"]
39284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s64)"]
39285#[inline(always)]
39286#[target_feature(enable = "neon")]
39287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39288#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s64"))]
39289#[cfg_attr(
39290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39291 assert_instr(sqsub)
39292)]
39293#[cfg_attr(
39294 not(target_arch = "arm"),
39295 stable(feature = "neon_intrinsics", since = "1.59.0")
39296)]
39297#[cfg_attr(
39298 target_arch = "arm",
39299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39300)]
39301pub fn vqsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
39302 unsafe { simd_saturating_sub(a, b) }
39303}
39304#[doc = "Saturating subtract"]
39305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u8)"]
39306#[inline(always)]
39307#[target_feature(enable = "neon")]
39308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39309#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u8"))]
39310#[cfg_attr(
39311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39312 assert_instr(uqsub)
39313)]
39314#[cfg_attr(
39315 not(target_arch = "arm"),
39316 stable(feature = "neon_intrinsics", since = "1.59.0")
39317)]
39318#[cfg_attr(
39319 target_arch = "arm",
39320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39321)]
39322pub fn vqsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
39323 unsafe { simd_saturating_sub(a, b) }
39324}
39325#[doc = "Saturating subtract"]
39326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u8)"]
39327#[inline(always)]
39328#[target_feature(enable = "neon")]
39329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39330#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u8"))]
39331#[cfg_attr(
39332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39333 assert_instr(uqsub)
39334)]
39335#[cfg_attr(
39336 not(target_arch = "arm"),
39337 stable(feature = "neon_intrinsics", since = "1.59.0")
39338)]
39339#[cfg_attr(
39340 target_arch = "arm",
39341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39342)]
39343pub fn vqsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
39344 unsafe { simd_saturating_sub(a, b) }
39345}
39346#[doc = "Saturating subtract"]
39347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u16)"]
39348#[inline(always)]
39349#[target_feature(enable = "neon")]
39350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39351#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u16"))]
39352#[cfg_attr(
39353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39354 assert_instr(uqsub)
39355)]
39356#[cfg_attr(
39357 not(target_arch = "arm"),
39358 stable(feature = "neon_intrinsics", since = "1.59.0")
39359)]
39360#[cfg_attr(
39361 target_arch = "arm",
39362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39363)]
39364pub fn vqsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
39365 unsafe { simd_saturating_sub(a, b) }
39366}
39367#[doc = "Saturating subtract"]
39368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u16)"]
39369#[inline(always)]
39370#[target_feature(enable = "neon")]
39371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39372#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u16"))]
39373#[cfg_attr(
39374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39375 assert_instr(uqsub)
39376)]
39377#[cfg_attr(
39378 not(target_arch = "arm"),
39379 stable(feature = "neon_intrinsics", since = "1.59.0")
39380)]
39381#[cfg_attr(
39382 target_arch = "arm",
39383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39384)]
39385pub fn vqsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
39386 unsafe { simd_saturating_sub(a, b) }
39387}
39388#[doc = "Saturating subtract"]
39389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u32)"]
39390#[inline(always)]
39391#[target_feature(enable = "neon")]
39392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39393#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u32"))]
39394#[cfg_attr(
39395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39396 assert_instr(uqsub)
39397)]
39398#[cfg_attr(
39399 not(target_arch = "arm"),
39400 stable(feature = "neon_intrinsics", since = "1.59.0")
39401)]
39402#[cfg_attr(
39403 target_arch = "arm",
39404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39405)]
39406pub fn vqsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
39407 unsafe { simd_saturating_sub(a, b) }
39408}
39409#[doc = "Saturating subtract"]
39410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u32)"]
39411#[inline(always)]
39412#[target_feature(enable = "neon")]
39413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39414#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u32"))]
39415#[cfg_attr(
39416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39417 assert_instr(uqsub)
39418)]
39419#[cfg_attr(
39420 not(target_arch = "arm"),
39421 stable(feature = "neon_intrinsics", since = "1.59.0")
39422)]
39423#[cfg_attr(
39424 target_arch = "arm",
39425 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39426)]
39427pub fn vqsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
39428 unsafe { simd_saturating_sub(a, b) }
39429}
39430#[doc = "Saturating subtract"]
39431#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u64)"]
39432#[inline(always)]
39433#[target_feature(enable = "neon")]
39434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39435#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u64"))]
39436#[cfg_attr(
39437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39438 assert_instr(uqsub)
39439)]
39440#[cfg_attr(
39441 not(target_arch = "arm"),
39442 stable(feature = "neon_intrinsics", since = "1.59.0")
39443)]
39444#[cfg_attr(
39445 target_arch = "arm",
39446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39447)]
39448pub fn vqsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
39449 unsafe { simd_saturating_sub(a, b) }
39450}
39451#[doc = "Saturating subtract"]
39452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u64)"]
39453#[inline(always)]
39454#[target_feature(enable = "neon")]
39455#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39456#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u64"))]
39457#[cfg_attr(
39458 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39459 assert_instr(uqsub)
39460)]
39461#[cfg_attr(
39462 not(target_arch = "arm"),
39463 stable(feature = "neon_intrinsics", since = "1.59.0")
39464)]
39465#[cfg_attr(
39466 target_arch = "arm",
39467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39468)]
39469pub fn vqsubq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
39470 unsafe { simd_saturating_sub(a, b) }
39471}
39472#[doc = "Rounding Add returning High Narrow (high half)."]
39473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s16)"]
39474#[inline(always)]
39475#[target_feature(enable = "neon")]
39476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
39478#[cfg_attr(
39479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39480 assert_instr(raddhn2)
39481)]
39482#[cfg_attr(
39483 not(target_arch = "arm"),
39484 stable(feature = "neon_intrinsics", since = "1.59.0")
39485)]
39486#[cfg_attr(
39487 target_arch = "arm",
39488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39489)]
39490pub fn vraddhn_high_s16(a: int8x8_t, b: int16x8_t, c: int16x8_t) -> int8x16_t {
39491 let x = vraddhn_s16(b, c);
39492 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
39493}
39494#[doc = "Rounding Add returning High Narrow (high half)."]
39495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s32)"]
39496#[inline(always)]
39497#[target_feature(enable = "neon")]
39498#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39499#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
39500#[cfg_attr(
39501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39502 assert_instr(raddhn2)
39503)]
39504#[cfg_attr(
39505 not(target_arch = "arm"),
39506 stable(feature = "neon_intrinsics", since = "1.59.0")
39507)]
39508#[cfg_attr(
39509 target_arch = "arm",
39510 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39511)]
39512pub fn vraddhn_high_s32(a: int16x4_t, b: int32x4_t, c: int32x4_t) -> int16x8_t {
39513 let x = vraddhn_s32(b, c);
39514 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7]) }
39515}
39516#[doc = "Rounding Add returning High Narrow (high half)."]
39517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s64)"]
39518#[inline(always)]
39519#[target_feature(enable = "neon")]
39520#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39521#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
39522#[cfg_attr(
39523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39524 assert_instr(raddhn2)
39525)]
39526#[cfg_attr(
39527 not(target_arch = "arm"),
39528 stable(feature = "neon_intrinsics", since = "1.59.0")
39529)]
39530#[cfg_attr(
39531 target_arch = "arm",
39532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39533)]
39534pub fn vraddhn_high_s64(a: int32x2_t, b: int64x2_t, c: int64x2_t) -> int32x4_t {
39535 let x = vraddhn_s64(b, c);
39536 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3]) }
39537}
39538#[doc = "Rounding Add returning High Narrow (high half)."]
39539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u16)"]
39540#[inline(always)]
39541#[target_feature(enable = "neon")]
39542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39543#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
39544#[cfg_attr(
39545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39546 assert_instr(raddhn2)
39547)]
39548#[cfg_attr(
39549 not(target_arch = "arm"),
39550 stable(feature = "neon_intrinsics", since = "1.59.0")
39551)]
39552#[cfg_attr(
39553 target_arch = "arm",
39554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39555)]
39556pub fn vraddhn_high_u16(a: uint8x8_t, b: uint16x8_t, c: uint16x8_t) -> uint8x16_t {
39557 unsafe {
39558 let x: uint8x8_t = transmute(vraddhn_s16(transmute(b), transmute(c)));
39559 simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
39560 }
39561}
39562#[doc = "Rounding Add returning High Narrow (high half)."]
39563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u32)"]
39564#[inline(always)]
39565#[target_feature(enable = "neon")]
39566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39567#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
39568#[cfg_attr(
39569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39570 assert_instr(raddhn2)
39571)]
39572#[cfg_attr(
39573 not(target_arch = "arm"),
39574 stable(feature = "neon_intrinsics", since = "1.59.0")
39575)]
39576#[cfg_attr(
39577 target_arch = "arm",
39578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39579)]
39580pub fn vraddhn_high_u32(a: uint16x4_t, b: uint32x4_t, c: uint32x4_t) -> uint16x8_t {
39581 unsafe {
39582 let x: uint16x4_t = transmute(vraddhn_s32(transmute(b), transmute(c)));
39583 simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7])
39584 }
39585}
39586#[doc = "Rounding Add returning High Narrow (high half)."]
39587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u64)"]
39588#[inline(always)]
39589#[target_feature(enable = "neon")]
39590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39591#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
39592#[cfg_attr(
39593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39594 assert_instr(raddhn2)
39595)]
39596#[cfg_attr(
39597 not(target_arch = "arm"),
39598 stable(feature = "neon_intrinsics", since = "1.59.0")
39599)]
39600#[cfg_attr(
39601 target_arch = "arm",
39602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39603)]
39604pub fn vraddhn_high_u64(a: uint32x2_t, b: uint64x2_t, c: uint64x2_t) -> uint32x4_t {
39605 unsafe {
39606 let x: uint32x2_t = transmute(vraddhn_s64(transmute(b), transmute(c)));
39607 simd_shuffle!(a, x, [0, 1, 2, 3])
39608 }
39609}
39610#[doc = "Rounding Add returning High Narrow."]
39611#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s16)"]
39612#[inline(always)]
39613#[target_feature(enable = "neon")]
39614#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39615#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
39616#[cfg_attr(
39617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39618 assert_instr(raddhn)
39619)]
39620#[cfg_attr(
39621 not(target_arch = "arm"),
39622 stable(feature = "neon_intrinsics", since = "1.59.0")
39623)]
39624#[cfg_attr(
39625 target_arch = "arm",
39626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39627)]
39628pub fn vraddhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
39629 unsafe extern "unadjusted" {
39630 #[cfg_attr(
39631 any(target_arch = "aarch64", target_arch = "arm64ec"),
39632 link_name = "llvm.aarch64.neon.raddhn.v8i8"
39633 )]
39634 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v8i8")]
39635 fn _vraddhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t;
39636 }
39637 unsafe { _vraddhn_s16(a, b) }
39638}
39639#[doc = "Rounding Add returning High Narrow."]
39640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s32)"]
39641#[inline(always)]
39642#[target_feature(enable = "neon")]
39643#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39644#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
39645#[cfg_attr(
39646 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39647 assert_instr(raddhn)
39648)]
39649#[cfg_attr(
39650 not(target_arch = "arm"),
39651 stable(feature = "neon_intrinsics", since = "1.59.0")
39652)]
39653#[cfg_attr(
39654 target_arch = "arm",
39655 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39656)]
39657pub fn vraddhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
39658 unsafe extern "unadjusted" {
39659 #[cfg_attr(
39660 any(target_arch = "aarch64", target_arch = "arm64ec"),
39661 link_name = "llvm.aarch64.neon.raddhn.v4i16"
39662 )]
39663 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v4i16")]
39664 fn _vraddhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t;
39665 }
39666 unsafe { _vraddhn_s32(a, b) }
39667}
39668#[doc = "Rounding Add returning High Narrow."]
39669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s64)"]
39670#[inline(always)]
39671#[target_feature(enable = "neon")]
39672#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39673#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
39674#[cfg_attr(
39675 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39676 assert_instr(raddhn)
39677)]
39678#[cfg_attr(
39679 not(target_arch = "arm"),
39680 stable(feature = "neon_intrinsics", since = "1.59.0")
39681)]
39682#[cfg_attr(
39683 target_arch = "arm",
39684 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39685)]
39686pub fn vraddhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
39687 unsafe extern "unadjusted" {
39688 #[cfg_attr(
39689 any(target_arch = "aarch64", target_arch = "arm64ec"),
39690 link_name = "llvm.aarch64.neon.raddhn.v2i32"
39691 )]
39692 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v2i32")]
39693 fn _vraddhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t;
39694 }
39695 unsafe { _vraddhn_s64(a, b) }
39696}
39697#[doc = "Rounding Add returning High Narrow."]
39698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u16)"]
39699#[inline(always)]
39700#[cfg(target_endian = "little")]
39701#[target_feature(enable = "neon")]
39702#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39703#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
39704#[cfg_attr(
39705 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39706 assert_instr(raddhn)
39707)]
39708#[cfg_attr(
39709 not(target_arch = "arm"),
39710 stable(feature = "neon_intrinsics", since = "1.59.0")
39711)]
39712#[cfg_attr(
39713 target_arch = "arm",
39714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39715)]
39716pub fn vraddhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
39717 unsafe { transmute(vraddhn_s16(transmute(a), transmute(b))) }
39718}
39719#[doc = "Rounding Add returning High Narrow."]
39720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u16)"]
39721#[inline(always)]
39722#[cfg(target_endian = "big")]
39723#[target_feature(enable = "neon")]
39724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39725#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
39726#[cfg_attr(
39727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39728 assert_instr(raddhn)
39729)]
39730#[cfg_attr(
39731 not(target_arch = "arm"),
39732 stable(feature = "neon_intrinsics", since = "1.59.0")
39733)]
39734#[cfg_attr(
39735 target_arch = "arm",
39736 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39737)]
39738pub fn vraddhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
39739 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
39740 let b: uint16x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
39741 unsafe {
39742 let ret_val: uint8x8_t = transmute(vraddhn_s16(transmute(a), transmute(b)));
39743 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
39744 }
39745}
39746#[doc = "Rounding Add returning High Narrow."]
39747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u32)"]
39748#[inline(always)]
39749#[cfg(target_endian = "little")]
39750#[target_feature(enable = "neon")]
39751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39752#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
39753#[cfg_attr(
39754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39755 assert_instr(raddhn)
39756)]
39757#[cfg_attr(
39758 not(target_arch = "arm"),
39759 stable(feature = "neon_intrinsics", since = "1.59.0")
39760)]
39761#[cfg_attr(
39762 target_arch = "arm",
39763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39764)]
39765pub fn vraddhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
39766 unsafe { transmute(vraddhn_s32(transmute(a), transmute(b))) }
39767}
39768#[doc = "Rounding Add returning High Narrow."]
39769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u32)"]
39770#[inline(always)]
39771#[cfg(target_endian = "big")]
39772#[target_feature(enable = "neon")]
39773#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39774#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
39775#[cfg_attr(
39776 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39777 assert_instr(raddhn)
39778)]
39779#[cfg_attr(
39780 not(target_arch = "arm"),
39781 stable(feature = "neon_intrinsics", since = "1.59.0")
39782)]
39783#[cfg_attr(
39784 target_arch = "arm",
39785 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39786)]
39787pub fn vraddhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
39788 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
39789 let b: uint32x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
39790 unsafe {
39791 let ret_val: uint16x4_t = transmute(vraddhn_s32(transmute(a), transmute(b)));
39792 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
39793 }
39794}
39795#[doc = "Rounding Add returning High Narrow."]
39796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u64)"]
39797#[inline(always)]
39798#[cfg(target_endian = "little")]
39799#[target_feature(enable = "neon")]
39800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39801#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
39802#[cfg_attr(
39803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39804 assert_instr(raddhn)
39805)]
39806#[cfg_attr(
39807 not(target_arch = "arm"),
39808 stable(feature = "neon_intrinsics", since = "1.59.0")
39809)]
39810#[cfg_attr(
39811 target_arch = "arm",
39812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39813)]
39814pub fn vraddhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
39815 unsafe { transmute(vraddhn_s64(transmute(a), transmute(b))) }
39816}
39817#[doc = "Rounding Add returning High Narrow."]
39818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u64)"]
39819#[inline(always)]
39820#[cfg(target_endian = "big")]
39821#[target_feature(enable = "neon")]
39822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39823#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
39824#[cfg_attr(
39825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39826 assert_instr(raddhn)
39827)]
39828#[cfg_attr(
39829 not(target_arch = "arm"),
39830 stable(feature = "neon_intrinsics", since = "1.59.0")
39831)]
39832#[cfg_attr(
39833 target_arch = "arm",
39834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39835)]
39836pub fn vraddhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
39837 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
39838 let b: uint64x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
39839 unsafe {
39840 let ret_val: uint32x2_t = transmute(vraddhn_s64(transmute(a), transmute(b)));
39841 simd_shuffle!(ret_val, ret_val, [1, 0])
39842 }
39843}
39844#[doc = "Reciprocal estimate."]
39845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_f16)"]
39846#[inline(always)]
39847#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
39848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39849#[cfg_attr(
39850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39851 assert_instr(frecpe)
39852)]
39853#[target_feature(enable = "neon,fp16")]
39854#[cfg_attr(
39855 not(target_arch = "arm"),
39856 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
39857)]
39858#[cfg_attr(
39859 target_arch = "arm",
39860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39861)]
39862#[cfg(not(target_arch = "arm64ec"))]
39863pub fn vrecpe_f16(a: float16x4_t) -> float16x4_t {
39864 unsafe extern "unadjusted" {
39865 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4f16")]
39866 #[cfg_attr(
39867 any(target_arch = "aarch64", target_arch = "arm64ec"),
39868 link_name = "llvm.aarch64.neon.frecpe.v4f16"
39869 )]
39870 fn _vrecpe_f16(a: float16x4_t) -> float16x4_t;
39871 }
39872 unsafe { _vrecpe_f16(a) }
39873}
39874#[doc = "Reciprocal estimate."]
39875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_f16)"]
39876#[inline(always)]
39877#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
39878#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39879#[cfg_attr(
39880 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39881 assert_instr(frecpe)
39882)]
39883#[target_feature(enable = "neon,fp16")]
39884#[cfg_attr(
39885 not(target_arch = "arm"),
39886 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
39887)]
39888#[cfg_attr(
39889 target_arch = "arm",
39890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39891)]
39892#[cfg(not(target_arch = "arm64ec"))]
39893pub fn vrecpeq_f16(a: float16x8_t) -> float16x8_t {
39894 unsafe extern "unadjusted" {
39895 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v8f16")]
39896 #[cfg_attr(
39897 any(target_arch = "aarch64", target_arch = "arm64ec"),
39898 link_name = "llvm.aarch64.neon.frecpe.v8f16"
39899 )]
39900 fn _vrecpeq_f16(a: float16x8_t) -> float16x8_t;
39901 }
39902 unsafe { _vrecpeq_f16(a) }
39903}
39904#[doc = "Reciprocal estimate."]
39905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_f32)"]
39906#[inline(always)]
39907#[target_feature(enable = "neon")]
39908#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39909#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39910#[cfg_attr(
39911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39912 assert_instr(frecpe)
39913)]
39914#[cfg_attr(
39915 not(target_arch = "arm"),
39916 stable(feature = "neon_intrinsics", since = "1.59.0")
39917)]
39918#[cfg_attr(
39919 target_arch = "arm",
39920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39921)]
39922pub fn vrecpe_f32(a: float32x2_t) -> float32x2_t {
39923 unsafe extern "unadjusted" {
39924 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v2f32")]
39925 #[cfg_attr(
39926 any(target_arch = "aarch64", target_arch = "arm64ec"),
39927 link_name = "llvm.aarch64.neon.frecpe.v2f32"
39928 )]
39929 fn _vrecpe_f32(a: float32x2_t) -> float32x2_t;
39930 }
39931 unsafe { _vrecpe_f32(a) }
39932}
39933#[doc = "Reciprocal estimate."]
39934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_f32)"]
39935#[inline(always)]
39936#[target_feature(enable = "neon")]
39937#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39938#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39939#[cfg_attr(
39940 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39941 assert_instr(frecpe)
39942)]
39943#[cfg_attr(
39944 not(target_arch = "arm"),
39945 stable(feature = "neon_intrinsics", since = "1.59.0")
39946)]
39947#[cfg_attr(
39948 target_arch = "arm",
39949 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39950)]
39951pub fn vrecpeq_f32(a: float32x4_t) -> float32x4_t {
39952 unsafe extern "unadjusted" {
39953 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4f32")]
39954 #[cfg_attr(
39955 any(target_arch = "aarch64", target_arch = "arm64ec"),
39956 link_name = "llvm.aarch64.neon.frecpe.v4f32"
39957 )]
39958 fn _vrecpeq_f32(a: float32x4_t) -> float32x4_t;
39959 }
39960 unsafe { _vrecpeq_f32(a) }
39961}
39962#[doc = "Unsigned reciprocal estimate"]
39963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_u32)"]
39964#[inline(always)]
39965#[target_feature(enable = "neon")]
39966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39967#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39968#[cfg_attr(
39969 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39970 assert_instr(urecpe)
39971)]
39972#[cfg_attr(
39973 not(target_arch = "arm"),
39974 stable(feature = "neon_intrinsics", since = "1.59.0")
39975)]
39976#[cfg_attr(
39977 target_arch = "arm",
39978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39979)]
39980pub fn vrecpe_u32(a: uint32x2_t) -> uint32x2_t {
39981 unsafe extern "unadjusted" {
39982 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v2i32")]
39983 #[cfg_attr(
39984 any(target_arch = "aarch64", target_arch = "arm64ec"),
39985 link_name = "llvm.aarch64.neon.urecpe.v2i32"
39986 )]
39987 fn _vrecpe_u32(a: uint32x2_t) -> uint32x2_t;
39988 }
39989 unsafe { _vrecpe_u32(a) }
39990}
39991#[doc = "Unsigned reciprocal estimate"]
39992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_u32)"]
39993#[inline(always)]
39994#[target_feature(enable = "neon")]
39995#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39996#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39997#[cfg_attr(
39998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39999 assert_instr(urecpe)
40000)]
40001#[cfg_attr(
40002 not(target_arch = "arm"),
40003 stable(feature = "neon_intrinsics", since = "1.59.0")
40004)]
40005#[cfg_attr(
40006 target_arch = "arm",
40007 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40008)]
40009pub fn vrecpeq_u32(a: uint32x4_t) -> uint32x4_t {
40010 unsafe extern "unadjusted" {
40011 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4i32")]
40012 #[cfg_attr(
40013 any(target_arch = "aarch64", target_arch = "arm64ec"),
40014 link_name = "llvm.aarch64.neon.urecpe.v4i32"
40015 )]
40016 fn _vrecpeq_u32(a: uint32x4_t) -> uint32x4_t;
40017 }
40018 unsafe { _vrecpeq_u32(a) }
40019}
40020#[doc = "Floating-point reciprocal step"]
40021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecps_f16)"]
40022#[inline(always)]
40023#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
40024#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
40025#[cfg_attr(
40026 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40027 assert_instr(frecps)
40028)]
40029#[target_feature(enable = "neon,fp16")]
40030#[cfg_attr(
40031 not(target_arch = "arm"),
40032 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40033)]
40034#[cfg_attr(
40035 target_arch = "arm",
40036 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40037)]
40038#[cfg(not(target_arch = "arm64ec"))]
40039pub fn vrecps_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
40040 unsafe extern "unadjusted" {
40041 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v4f16")]
40042 #[cfg_attr(
40043 any(target_arch = "aarch64", target_arch = "arm64ec"),
40044 link_name = "llvm.aarch64.neon.frecps.v4f16"
40045 )]
40046 fn _vrecps_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
40047 }
40048 unsafe { _vrecps_f16(a, b) }
40049}
40050#[doc = "Floating-point reciprocal step"]
40051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpsq_f16)"]
40052#[inline(always)]
40053#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
40054#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
40055#[cfg_attr(
40056 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40057 assert_instr(frecps)
40058)]
40059#[target_feature(enable = "neon,fp16")]
40060#[cfg_attr(
40061 not(target_arch = "arm"),
40062 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40063)]
40064#[cfg_attr(
40065 target_arch = "arm",
40066 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40067)]
40068#[cfg(not(target_arch = "arm64ec"))]
40069pub fn vrecpsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
40070 unsafe extern "unadjusted" {
40071 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v8f16")]
40072 #[cfg_attr(
40073 any(target_arch = "aarch64", target_arch = "arm64ec"),
40074 link_name = "llvm.aarch64.neon.frecps.v8f16"
40075 )]
40076 fn _vrecpsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
40077 }
40078 unsafe { _vrecpsq_f16(a, b) }
40079}
40080#[doc = "Floating-point reciprocal step"]
40081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecps_f32)"]
40082#[inline(always)]
40083#[target_feature(enable = "neon")]
40084#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40085#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
40086#[cfg_attr(
40087 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40088 assert_instr(frecps)
40089)]
40090#[cfg_attr(
40091 not(target_arch = "arm"),
40092 stable(feature = "neon_intrinsics", since = "1.59.0")
40093)]
40094#[cfg_attr(
40095 target_arch = "arm",
40096 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40097)]
40098pub fn vrecps_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
40099 unsafe extern "unadjusted" {
40100 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v2f32")]
40101 #[cfg_attr(
40102 any(target_arch = "aarch64", target_arch = "arm64ec"),
40103 link_name = "llvm.aarch64.neon.frecps.v2f32"
40104 )]
40105 fn _vrecps_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
40106 }
40107 unsafe { _vrecps_f32(a, b) }
40108}
40109#[doc = "Floating-point reciprocal step"]
40110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpsq_f32)"]
40111#[inline(always)]
40112#[target_feature(enable = "neon")]
40113#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40114#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
40115#[cfg_attr(
40116 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40117 assert_instr(frecps)
40118)]
40119#[cfg_attr(
40120 not(target_arch = "arm"),
40121 stable(feature = "neon_intrinsics", since = "1.59.0")
40122)]
40123#[cfg_attr(
40124 target_arch = "arm",
40125 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40126)]
40127pub fn vrecpsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
40128 unsafe extern "unadjusted" {
40129 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v4f32")]
40130 #[cfg_attr(
40131 any(target_arch = "aarch64", target_arch = "arm64ec"),
40132 link_name = "llvm.aarch64.neon.frecps.v4f32"
40133 )]
40134 fn _vrecpsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
40135 }
40136 unsafe { _vrecpsq_f32(a, b) }
40137}
40138#[doc = "Vector reinterpret cast operation"]
40139#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_f16)"]
40140#[inline(always)]
40141#[cfg(target_endian = "little")]
40142#[target_feature(enable = "neon")]
40143#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40144#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40145#[cfg_attr(
40146 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40147 assert_instr(nop)
40148)]
40149#[cfg_attr(
40150 not(target_arch = "arm"),
40151 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40152)]
40153#[cfg_attr(
40154 target_arch = "arm",
40155 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40156)]
40157#[cfg(not(target_arch = "arm64ec"))]
40158pub fn vreinterpret_f32_f16(a: float16x4_t) -> float32x2_t {
40159 unsafe { transmute(a) }
40160}
40161#[doc = "Vector reinterpret cast operation"]
40162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_f16)"]
40163#[inline(always)]
40164#[cfg(target_endian = "big")]
40165#[target_feature(enable = "neon")]
40166#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40167#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40168#[cfg_attr(
40169 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40170 assert_instr(nop)
40171)]
40172#[cfg_attr(
40173 not(target_arch = "arm"),
40174 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40175)]
40176#[cfg_attr(
40177 target_arch = "arm",
40178 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40179)]
40180#[cfg(not(target_arch = "arm64ec"))]
40181pub fn vreinterpret_f32_f16(a: float16x4_t) -> float32x2_t {
40182 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40183 unsafe {
40184 let ret_val: float32x2_t = transmute(a);
40185 simd_shuffle!(ret_val, ret_val, [1, 0])
40186 }
40187}
40188#[doc = "Vector reinterpret cast operation"]
40189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f16)"]
40190#[inline(always)]
40191#[cfg(target_endian = "little")]
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(nop))]
40195#[cfg_attr(
40196 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40197 assert_instr(nop)
40198)]
40199#[cfg_attr(
40200 not(target_arch = "arm"),
40201 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40202)]
40203#[cfg_attr(
40204 target_arch = "arm",
40205 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40206)]
40207#[cfg(not(target_arch = "arm64ec"))]
40208pub fn vreinterpret_s8_f16(a: float16x4_t) -> int8x8_t {
40209 unsafe { transmute(a) }
40210}
40211#[doc = "Vector reinterpret cast operation"]
40212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f16)"]
40213#[inline(always)]
40214#[cfg(target_endian = "big")]
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(nop))]
40218#[cfg_attr(
40219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40220 assert_instr(nop)
40221)]
40222#[cfg_attr(
40223 not(target_arch = "arm"),
40224 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40225)]
40226#[cfg_attr(
40227 target_arch = "arm",
40228 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40229)]
40230#[cfg(not(target_arch = "arm64ec"))]
40231pub fn vreinterpret_s8_f16(a: float16x4_t) -> int8x8_t {
40232 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40233 unsafe {
40234 let ret_val: int8x8_t = transmute(a);
40235 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
40236 }
40237}
40238#[doc = "Vector reinterpret cast operation"]
40239#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f16)"]
40240#[inline(always)]
40241#[cfg(target_endian = "little")]
40242#[target_feature(enable = "neon")]
40243#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40244#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40245#[cfg_attr(
40246 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40247 assert_instr(nop)
40248)]
40249#[cfg_attr(
40250 not(target_arch = "arm"),
40251 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40252)]
40253#[cfg_attr(
40254 target_arch = "arm",
40255 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40256)]
40257#[cfg(not(target_arch = "arm64ec"))]
40258pub fn vreinterpret_s16_f16(a: float16x4_t) -> int16x4_t {
40259 unsafe { transmute(a) }
40260}
40261#[doc = "Vector reinterpret cast operation"]
40262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f16)"]
40263#[inline(always)]
40264#[cfg(target_endian = "big")]
40265#[target_feature(enable = "neon")]
40266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40267#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40268#[cfg_attr(
40269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40270 assert_instr(nop)
40271)]
40272#[cfg_attr(
40273 not(target_arch = "arm"),
40274 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40275)]
40276#[cfg_attr(
40277 target_arch = "arm",
40278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40279)]
40280#[cfg(not(target_arch = "arm64ec"))]
40281pub fn vreinterpret_s16_f16(a: float16x4_t) -> int16x4_t {
40282 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40283 unsafe {
40284 let ret_val: int16x4_t = transmute(a);
40285 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40286 }
40287}
40288#[doc = "Vector reinterpret cast operation"]
40289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f16)"]
40290#[inline(always)]
40291#[cfg(target_endian = "little")]
40292#[target_feature(enable = "neon")]
40293#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40294#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40295#[cfg_attr(
40296 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40297 assert_instr(nop)
40298)]
40299#[cfg_attr(
40300 not(target_arch = "arm"),
40301 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40302)]
40303#[cfg_attr(
40304 target_arch = "arm",
40305 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40306)]
40307#[cfg(not(target_arch = "arm64ec"))]
40308pub fn vreinterpret_s32_f16(a: float16x4_t) -> int32x2_t {
40309 unsafe { transmute(a) }
40310}
40311#[doc = "Vector reinterpret cast operation"]
40312#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f16)"]
40313#[inline(always)]
40314#[cfg(target_endian = "big")]
40315#[target_feature(enable = "neon")]
40316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40318#[cfg_attr(
40319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40320 assert_instr(nop)
40321)]
40322#[cfg_attr(
40323 not(target_arch = "arm"),
40324 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40325)]
40326#[cfg_attr(
40327 target_arch = "arm",
40328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40329)]
40330#[cfg(not(target_arch = "arm64ec"))]
40331pub fn vreinterpret_s32_f16(a: float16x4_t) -> int32x2_t {
40332 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40333 unsafe {
40334 let ret_val: int32x2_t = transmute(a);
40335 simd_shuffle!(ret_val, ret_val, [1, 0])
40336 }
40337}
40338#[doc = "Vector reinterpret cast operation"]
40339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f16)"]
40340#[inline(always)]
40341#[cfg(target_endian = "little")]
40342#[target_feature(enable = "neon")]
40343#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40344#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40345#[cfg_attr(
40346 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40347 assert_instr(nop)
40348)]
40349#[cfg_attr(
40350 not(target_arch = "arm"),
40351 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40352)]
40353#[cfg_attr(
40354 target_arch = "arm",
40355 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40356)]
40357#[cfg(not(target_arch = "arm64ec"))]
40358pub fn vreinterpret_s64_f16(a: float16x4_t) -> int64x1_t {
40359 unsafe { transmute(a) }
40360}
40361#[doc = "Vector reinterpret cast operation"]
40362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f16)"]
40363#[inline(always)]
40364#[cfg(target_endian = "big")]
40365#[target_feature(enable = "neon")]
40366#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40367#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40368#[cfg_attr(
40369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40370 assert_instr(nop)
40371)]
40372#[cfg_attr(
40373 not(target_arch = "arm"),
40374 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40375)]
40376#[cfg_attr(
40377 target_arch = "arm",
40378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40379)]
40380#[cfg(not(target_arch = "arm64ec"))]
40381pub fn vreinterpret_s64_f16(a: float16x4_t) -> int64x1_t {
40382 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40383 unsafe { transmute(a) }
40384}
40385#[doc = "Vector reinterpret cast operation"]
40386#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f16)"]
40387#[inline(always)]
40388#[cfg(target_endian = "little")]
40389#[target_feature(enable = "neon")]
40390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40391#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40392#[cfg_attr(
40393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40394 assert_instr(nop)
40395)]
40396#[cfg_attr(
40397 not(target_arch = "arm"),
40398 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40399)]
40400#[cfg_attr(
40401 target_arch = "arm",
40402 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40403)]
40404#[cfg(not(target_arch = "arm64ec"))]
40405pub fn vreinterpret_u8_f16(a: float16x4_t) -> uint8x8_t {
40406 unsafe { transmute(a) }
40407}
40408#[doc = "Vector reinterpret cast operation"]
40409#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f16)"]
40410#[inline(always)]
40411#[cfg(target_endian = "big")]
40412#[target_feature(enable = "neon")]
40413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40414#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40415#[cfg_attr(
40416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40417 assert_instr(nop)
40418)]
40419#[cfg_attr(
40420 not(target_arch = "arm"),
40421 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40422)]
40423#[cfg_attr(
40424 target_arch = "arm",
40425 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40426)]
40427#[cfg(not(target_arch = "arm64ec"))]
40428pub fn vreinterpret_u8_f16(a: float16x4_t) -> uint8x8_t {
40429 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40430 unsafe {
40431 let ret_val: uint8x8_t = transmute(a);
40432 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
40433 }
40434}
40435#[doc = "Vector reinterpret cast operation"]
40436#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f16)"]
40437#[inline(always)]
40438#[cfg(target_endian = "little")]
40439#[target_feature(enable = "neon")]
40440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40442#[cfg_attr(
40443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40444 assert_instr(nop)
40445)]
40446#[cfg_attr(
40447 not(target_arch = "arm"),
40448 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40449)]
40450#[cfg_attr(
40451 target_arch = "arm",
40452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40453)]
40454#[cfg(not(target_arch = "arm64ec"))]
40455pub fn vreinterpret_u16_f16(a: float16x4_t) -> uint16x4_t {
40456 unsafe { transmute(a) }
40457}
40458#[doc = "Vector reinterpret cast operation"]
40459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f16)"]
40460#[inline(always)]
40461#[cfg(target_endian = "big")]
40462#[target_feature(enable = "neon")]
40463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40464#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40465#[cfg_attr(
40466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40467 assert_instr(nop)
40468)]
40469#[cfg_attr(
40470 not(target_arch = "arm"),
40471 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40472)]
40473#[cfg_attr(
40474 target_arch = "arm",
40475 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40476)]
40477#[cfg(not(target_arch = "arm64ec"))]
40478pub fn vreinterpret_u16_f16(a: float16x4_t) -> uint16x4_t {
40479 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40480 unsafe {
40481 let ret_val: uint16x4_t = transmute(a);
40482 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40483 }
40484}
40485#[doc = "Vector reinterpret cast operation"]
40486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f16)"]
40487#[inline(always)]
40488#[cfg(target_endian = "little")]
40489#[target_feature(enable = "neon")]
40490#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40491#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40492#[cfg_attr(
40493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40494 assert_instr(nop)
40495)]
40496#[cfg_attr(
40497 not(target_arch = "arm"),
40498 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40499)]
40500#[cfg_attr(
40501 target_arch = "arm",
40502 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40503)]
40504#[cfg(not(target_arch = "arm64ec"))]
40505pub fn vreinterpret_u32_f16(a: float16x4_t) -> uint32x2_t {
40506 unsafe { transmute(a) }
40507}
40508#[doc = "Vector reinterpret cast operation"]
40509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f16)"]
40510#[inline(always)]
40511#[cfg(target_endian = "big")]
40512#[target_feature(enable = "neon")]
40513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40514#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40515#[cfg_attr(
40516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40517 assert_instr(nop)
40518)]
40519#[cfg_attr(
40520 not(target_arch = "arm"),
40521 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40522)]
40523#[cfg_attr(
40524 target_arch = "arm",
40525 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40526)]
40527#[cfg(not(target_arch = "arm64ec"))]
40528pub fn vreinterpret_u32_f16(a: float16x4_t) -> uint32x2_t {
40529 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40530 unsafe {
40531 let ret_val: uint32x2_t = transmute(a);
40532 simd_shuffle!(ret_val, ret_val, [1, 0])
40533 }
40534}
40535#[doc = "Vector reinterpret cast operation"]
40536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f16)"]
40537#[inline(always)]
40538#[cfg(target_endian = "little")]
40539#[target_feature(enable = "neon")]
40540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40542#[cfg_attr(
40543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40544 assert_instr(nop)
40545)]
40546#[cfg_attr(
40547 not(target_arch = "arm"),
40548 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40549)]
40550#[cfg_attr(
40551 target_arch = "arm",
40552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40553)]
40554#[cfg(not(target_arch = "arm64ec"))]
40555pub fn vreinterpret_u64_f16(a: float16x4_t) -> uint64x1_t {
40556 unsafe { transmute(a) }
40557}
40558#[doc = "Vector reinterpret cast operation"]
40559#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f16)"]
40560#[inline(always)]
40561#[cfg(target_endian = "big")]
40562#[target_feature(enable = "neon")]
40563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40564#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40565#[cfg_attr(
40566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40567 assert_instr(nop)
40568)]
40569#[cfg_attr(
40570 not(target_arch = "arm"),
40571 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40572)]
40573#[cfg_attr(
40574 target_arch = "arm",
40575 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40576)]
40577#[cfg(not(target_arch = "arm64ec"))]
40578pub fn vreinterpret_u64_f16(a: float16x4_t) -> uint64x1_t {
40579 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40580 unsafe { transmute(a) }
40581}
40582#[doc = "Vector reinterpret cast operation"]
40583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f16)"]
40584#[inline(always)]
40585#[cfg(target_endian = "little")]
40586#[target_feature(enable = "neon")]
40587#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40588#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40589#[cfg_attr(
40590 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40591 assert_instr(nop)
40592)]
40593#[cfg_attr(
40594 not(target_arch = "arm"),
40595 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40596)]
40597#[cfg_attr(
40598 target_arch = "arm",
40599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40600)]
40601#[cfg(not(target_arch = "arm64ec"))]
40602pub fn vreinterpret_p8_f16(a: float16x4_t) -> poly8x8_t {
40603 unsafe { transmute(a) }
40604}
40605#[doc = "Vector reinterpret cast operation"]
40606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f16)"]
40607#[inline(always)]
40608#[cfg(target_endian = "big")]
40609#[target_feature(enable = "neon")]
40610#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40611#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40612#[cfg_attr(
40613 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40614 assert_instr(nop)
40615)]
40616#[cfg_attr(
40617 not(target_arch = "arm"),
40618 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40619)]
40620#[cfg_attr(
40621 target_arch = "arm",
40622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40623)]
40624#[cfg(not(target_arch = "arm64ec"))]
40625pub fn vreinterpret_p8_f16(a: float16x4_t) -> poly8x8_t {
40626 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40627 unsafe {
40628 let ret_val: poly8x8_t = transmute(a);
40629 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
40630 }
40631}
40632#[doc = "Vector reinterpret cast operation"]
40633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f16)"]
40634#[inline(always)]
40635#[cfg(target_endian = "little")]
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(nop))]
40639#[cfg_attr(
40640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40641 assert_instr(nop)
40642)]
40643#[cfg_attr(
40644 not(target_arch = "arm"),
40645 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40646)]
40647#[cfg_attr(
40648 target_arch = "arm",
40649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40650)]
40651#[cfg(not(target_arch = "arm64ec"))]
40652pub fn vreinterpret_p16_f16(a: float16x4_t) -> poly16x4_t {
40653 unsafe { transmute(a) }
40654}
40655#[doc = "Vector reinterpret cast operation"]
40656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f16)"]
40657#[inline(always)]
40658#[cfg(target_endian = "big")]
40659#[target_feature(enable = "neon")]
40660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40661#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40662#[cfg_attr(
40663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40664 assert_instr(nop)
40665)]
40666#[cfg_attr(
40667 not(target_arch = "arm"),
40668 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40669)]
40670#[cfg_attr(
40671 target_arch = "arm",
40672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40673)]
40674#[cfg(not(target_arch = "arm64ec"))]
40675pub fn vreinterpret_p16_f16(a: float16x4_t) -> poly16x4_t {
40676 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40677 unsafe {
40678 let ret_val: poly16x4_t = transmute(a);
40679 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40680 }
40681}
40682#[doc = "Vector reinterpret cast operation"]
40683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_f16)"]
40684#[inline(always)]
40685#[cfg(target_endian = "little")]
40686#[target_feature(enable = "neon")]
40687#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40688#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40689#[cfg_attr(
40690 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40691 assert_instr(nop)
40692)]
40693#[cfg_attr(
40694 not(target_arch = "arm"),
40695 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40696)]
40697#[cfg_attr(
40698 target_arch = "arm",
40699 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40700)]
40701#[cfg(not(target_arch = "arm64ec"))]
40702pub fn vreinterpretq_f32_f16(a: float16x8_t) -> float32x4_t {
40703 unsafe { transmute(a) }
40704}
40705#[doc = "Vector reinterpret cast operation"]
40706#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_f16)"]
40707#[inline(always)]
40708#[cfg(target_endian = "big")]
40709#[target_feature(enable = "neon")]
40710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40711#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40712#[cfg_attr(
40713 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40714 assert_instr(nop)
40715)]
40716#[cfg_attr(
40717 not(target_arch = "arm"),
40718 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40719)]
40720#[cfg_attr(
40721 target_arch = "arm",
40722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40723)]
40724#[cfg(not(target_arch = "arm64ec"))]
40725pub fn vreinterpretq_f32_f16(a: float16x8_t) -> float32x4_t {
40726 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
40727 unsafe {
40728 let ret_val: float32x4_t = transmute(a);
40729 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40730 }
40731}
40732#[doc = "Vector reinterpret cast operation"]
40733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f16)"]
40734#[inline(always)]
40735#[cfg(target_endian = "little")]
40736#[target_feature(enable = "neon")]
40737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40738#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40739#[cfg_attr(
40740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40741 assert_instr(nop)
40742)]
40743#[cfg_attr(
40744 not(target_arch = "arm"),
40745 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40746)]
40747#[cfg_attr(
40748 target_arch = "arm",
40749 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40750)]
40751#[cfg(not(target_arch = "arm64ec"))]
40752pub fn vreinterpretq_s8_f16(a: float16x8_t) -> int8x16_t {
40753 unsafe { transmute(a) }
40754}
40755#[doc = "Vector reinterpret cast operation"]
40756#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f16)"]
40757#[inline(always)]
40758#[cfg(target_endian = "big")]
40759#[target_feature(enable = "neon")]
40760#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40761#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40762#[cfg_attr(
40763 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40764 assert_instr(nop)
40765)]
40766#[cfg_attr(
40767 not(target_arch = "arm"),
40768 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40769)]
40770#[cfg_attr(
40771 target_arch = "arm",
40772 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40773)]
40774#[cfg(not(target_arch = "arm64ec"))]
40775pub fn vreinterpretq_s8_f16(a: float16x8_t) -> int8x16_t {
40776 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
40777 unsafe {
40778 let ret_val: int8x16_t = transmute(a);
40779 simd_shuffle!(
40780 ret_val,
40781 ret_val,
40782 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
40783 )
40784 }
40785}
40786#[doc = "Vector reinterpret cast operation"]
40787#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f16)"]
40788#[inline(always)]
40789#[cfg(target_endian = "little")]
40790#[target_feature(enable = "neon")]
40791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40793#[cfg_attr(
40794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40795 assert_instr(nop)
40796)]
40797#[cfg_attr(
40798 not(target_arch = "arm"),
40799 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40800)]
40801#[cfg_attr(
40802 target_arch = "arm",
40803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40804)]
40805#[cfg(not(target_arch = "arm64ec"))]
40806pub fn vreinterpretq_s16_f16(a: float16x8_t) -> int16x8_t {
40807 unsafe { transmute(a) }
40808}
40809#[doc = "Vector reinterpret cast operation"]
40810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f16)"]
40811#[inline(always)]
40812#[cfg(target_endian = "big")]
40813#[target_feature(enable = "neon")]
40814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40815#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40816#[cfg_attr(
40817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40818 assert_instr(nop)
40819)]
40820#[cfg_attr(
40821 not(target_arch = "arm"),
40822 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40823)]
40824#[cfg_attr(
40825 target_arch = "arm",
40826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40827)]
40828#[cfg(not(target_arch = "arm64ec"))]
40829pub fn vreinterpretq_s16_f16(a: float16x8_t) -> int16x8_t {
40830 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
40831 unsafe {
40832 let ret_val: int16x8_t = transmute(a);
40833 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
40834 }
40835}
40836#[doc = "Vector reinterpret cast operation"]
40837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f16)"]
40838#[inline(always)]
40839#[cfg(target_endian = "little")]
40840#[target_feature(enable = "neon")]
40841#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40842#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40843#[cfg_attr(
40844 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40845 assert_instr(nop)
40846)]
40847#[cfg_attr(
40848 not(target_arch = "arm"),
40849 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40850)]
40851#[cfg_attr(
40852 target_arch = "arm",
40853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40854)]
40855#[cfg(not(target_arch = "arm64ec"))]
40856pub fn vreinterpretq_s32_f16(a: float16x8_t) -> int32x4_t {
40857 unsafe { transmute(a) }
40858}
40859#[doc = "Vector reinterpret cast operation"]
40860#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f16)"]
40861#[inline(always)]
40862#[cfg(target_endian = "big")]
40863#[target_feature(enable = "neon")]
40864#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40865#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40866#[cfg_attr(
40867 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40868 assert_instr(nop)
40869)]
40870#[cfg_attr(
40871 not(target_arch = "arm"),
40872 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40873)]
40874#[cfg_attr(
40875 target_arch = "arm",
40876 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40877)]
40878#[cfg(not(target_arch = "arm64ec"))]
40879pub fn vreinterpretq_s32_f16(a: float16x8_t) -> int32x4_t {
40880 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
40881 unsafe {
40882 let ret_val: int32x4_t = transmute(a);
40883 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40884 }
40885}
40886#[doc = "Vector reinterpret cast operation"]
40887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f16)"]
40888#[inline(always)]
40889#[cfg(target_endian = "little")]
40890#[target_feature(enable = "neon")]
40891#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40892#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40893#[cfg_attr(
40894 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40895 assert_instr(nop)
40896)]
40897#[cfg_attr(
40898 not(target_arch = "arm"),
40899 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40900)]
40901#[cfg_attr(
40902 target_arch = "arm",
40903 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40904)]
40905#[cfg(not(target_arch = "arm64ec"))]
40906pub fn vreinterpretq_s64_f16(a: float16x8_t) -> int64x2_t {
40907 unsafe { transmute(a) }
40908}
40909#[doc = "Vector reinterpret cast operation"]
40910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f16)"]
40911#[inline(always)]
40912#[cfg(target_endian = "big")]
40913#[target_feature(enable = "neon")]
40914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40915#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40916#[cfg_attr(
40917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40918 assert_instr(nop)
40919)]
40920#[cfg_attr(
40921 not(target_arch = "arm"),
40922 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40923)]
40924#[cfg_attr(
40925 target_arch = "arm",
40926 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40927)]
40928#[cfg(not(target_arch = "arm64ec"))]
40929pub fn vreinterpretq_s64_f16(a: float16x8_t) -> int64x2_t {
40930 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
40931 unsafe {
40932 let ret_val: int64x2_t = transmute(a);
40933 simd_shuffle!(ret_val, ret_val, [1, 0])
40934 }
40935}
40936#[doc = "Vector reinterpret cast operation"]
40937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f16)"]
40938#[inline(always)]
40939#[cfg(target_endian = "little")]
40940#[target_feature(enable = "neon")]
40941#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40942#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40943#[cfg_attr(
40944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40945 assert_instr(nop)
40946)]
40947#[cfg_attr(
40948 not(target_arch = "arm"),
40949 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40950)]
40951#[cfg_attr(
40952 target_arch = "arm",
40953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40954)]
40955#[cfg(not(target_arch = "arm64ec"))]
40956pub fn vreinterpretq_u8_f16(a: float16x8_t) -> uint8x16_t {
40957 unsafe { transmute(a) }
40958}
40959#[doc = "Vector reinterpret cast operation"]
40960#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f16)"]
40961#[inline(always)]
40962#[cfg(target_endian = "big")]
40963#[target_feature(enable = "neon")]
40964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40965#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40966#[cfg_attr(
40967 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40968 assert_instr(nop)
40969)]
40970#[cfg_attr(
40971 not(target_arch = "arm"),
40972 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40973)]
40974#[cfg_attr(
40975 target_arch = "arm",
40976 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40977)]
40978#[cfg(not(target_arch = "arm64ec"))]
40979pub fn vreinterpretq_u8_f16(a: float16x8_t) -> uint8x16_t {
40980 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
40981 unsafe {
40982 let ret_val: uint8x16_t = transmute(a);
40983 simd_shuffle!(
40984 ret_val,
40985 ret_val,
40986 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
40987 )
40988 }
40989}
40990#[doc = "Vector reinterpret cast operation"]
40991#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f16)"]
40992#[inline(always)]
40993#[cfg(target_endian = "little")]
40994#[target_feature(enable = "neon")]
40995#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40996#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40997#[cfg_attr(
40998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40999 assert_instr(nop)
41000)]
41001#[cfg_attr(
41002 not(target_arch = "arm"),
41003 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41004)]
41005#[cfg_attr(
41006 target_arch = "arm",
41007 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41008)]
41009#[cfg(not(target_arch = "arm64ec"))]
41010pub fn vreinterpretq_u16_f16(a: float16x8_t) -> uint16x8_t {
41011 unsafe { transmute(a) }
41012}
41013#[doc = "Vector reinterpret cast operation"]
41014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f16)"]
41015#[inline(always)]
41016#[cfg(target_endian = "big")]
41017#[target_feature(enable = "neon")]
41018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41019#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41020#[cfg_attr(
41021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41022 assert_instr(nop)
41023)]
41024#[cfg_attr(
41025 not(target_arch = "arm"),
41026 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41027)]
41028#[cfg_attr(
41029 target_arch = "arm",
41030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41031)]
41032#[cfg(not(target_arch = "arm64ec"))]
41033pub fn vreinterpretq_u16_f16(a: float16x8_t) -> uint16x8_t {
41034 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41035 unsafe {
41036 let ret_val: uint16x8_t = transmute(a);
41037 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41038 }
41039}
41040#[doc = "Vector reinterpret cast operation"]
41041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f16)"]
41042#[inline(always)]
41043#[cfg(target_endian = "little")]
41044#[target_feature(enable = "neon")]
41045#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41046#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41047#[cfg_attr(
41048 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41049 assert_instr(nop)
41050)]
41051#[cfg_attr(
41052 not(target_arch = "arm"),
41053 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41054)]
41055#[cfg_attr(
41056 target_arch = "arm",
41057 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41058)]
41059#[cfg(not(target_arch = "arm64ec"))]
41060pub fn vreinterpretq_u32_f16(a: float16x8_t) -> uint32x4_t {
41061 unsafe { transmute(a) }
41062}
41063#[doc = "Vector reinterpret cast operation"]
41064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f16)"]
41065#[inline(always)]
41066#[cfg(target_endian = "big")]
41067#[target_feature(enable = "neon")]
41068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41069#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41070#[cfg_attr(
41071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41072 assert_instr(nop)
41073)]
41074#[cfg_attr(
41075 not(target_arch = "arm"),
41076 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41077)]
41078#[cfg_attr(
41079 target_arch = "arm",
41080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41081)]
41082#[cfg(not(target_arch = "arm64ec"))]
41083pub fn vreinterpretq_u32_f16(a: float16x8_t) -> uint32x4_t {
41084 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41085 unsafe {
41086 let ret_val: uint32x4_t = transmute(a);
41087 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41088 }
41089}
41090#[doc = "Vector reinterpret cast operation"]
41091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f16)"]
41092#[inline(always)]
41093#[cfg(target_endian = "little")]
41094#[target_feature(enable = "neon")]
41095#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41096#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41097#[cfg_attr(
41098 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41099 assert_instr(nop)
41100)]
41101#[cfg_attr(
41102 not(target_arch = "arm"),
41103 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41104)]
41105#[cfg_attr(
41106 target_arch = "arm",
41107 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41108)]
41109#[cfg(not(target_arch = "arm64ec"))]
41110pub fn vreinterpretq_u64_f16(a: float16x8_t) -> uint64x2_t {
41111 unsafe { transmute(a) }
41112}
41113#[doc = "Vector reinterpret cast operation"]
41114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f16)"]
41115#[inline(always)]
41116#[cfg(target_endian = "big")]
41117#[target_feature(enable = "neon")]
41118#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41119#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41120#[cfg_attr(
41121 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41122 assert_instr(nop)
41123)]
41124#[cfg_attr(
41125 not(target_arch = "arm"),
41126 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41127)]
41128#[cfg_attr(
41129 target_arch = "arm",
41130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41131)]
41132#[cfg(not(target_arch = "arm64ec"))]
41133pub fn vreinterpretq_u64_f16(a: float16x8_t) -> uint64x2_t {
41134 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41135 unsafe {
41136 let ret_val: uint64x2_t = transmute(a);
41137 simd_shuffle!(ret_val, ret_val, [1, 0])
41138 }
41139}
41140#[doc = "Vector reinterpret cast operation"]
41141#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f16)"]
41142#[inline(always)]
41143#[cfg(target_endian = "little")]
41144#[target_feature(enable = "neon")]
41145#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41146#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41147#[cfg_attr(
41148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41149 assert_instr(nop)
41150)]
41151#[cfg_attr(
41152 not(target_arch = "arm"),
41153 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41154)]
41155#[cfg_attr(
41156 target_arch = "arm",
41157 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41158)]
41159#[cfg(not(target_arch = "arm64ec"))]
41160pub fn vreinterpretq_p8_f16(a: float16x8_t) -> poly8x16_t {
41161 unsafe { transmute(a) }
41162}
41163#[doc = "Vector reinterpret cast operation"]
41164#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f16)"]
41165#[inline(always)]
41166#[cfg(target_endian = "big")]
41167#[target_feature(enable = "neon")]
41168#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41169#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41170#[cfg_attr(
41171 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41172 assert_instr(nop)
41173)]
41174#[cfg_attr(
41175 not(target_arch = "arm"),
41176 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41177)]
41178#[cfg_attr(
41179 target_arch = "arm",
41180 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41181)]
41182#[cfg(not(target_arch = "arm64ec"))]
41183pub fn vreinterpretq_p8_f16(a: float16x8_t) -> poly8x16_t {
41184 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41185 unsafe {
41186 let ret_val: poly8x16_t = transmute(a);
41187 simd_shuffle!(
41188 ret_val,
41189 ret_val,
41190 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
41191 )
41192 }
41193}
41194#[doc = "Vector reinterpret cast operation"]
41195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f16)"]
41196#[inline(always)]
41197#[cfg(target_endian = "little")]
41198#[target_feature(enable = "neon")]
41199#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41200#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41201#[cfg_attr(
41202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41203 assert_instr(nop)
41204)]
41205#[cfg_attr(
41206 not(target_arch = "arm"),
41207 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41208)]
41209#[cfg_attr(
41210 target_arch = "arm",
41211 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41212)]
41213#[cfg(not(target_arch = "arm64ec"))]
41214pub fn vreinterpretq_p16_f16(a: float16x8_t) -> poly16x8_t {
41215 unsafe { transmute(a) }
41216}
41217#[doc = "Vector reinterpret cast operation"]
41218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f16)"]
41219#[inline(always)]
41220#[cfg(target_endian = "big")]
41221#[target_feature(enable = "neon")]
41222#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41223#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41224#[cfg_attr(
41225 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41226 assert_instr(nop)
41227)]
41228#[cfg_attr(
41229 not(target_arch = "arm"),
41230 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41231)]
41232#[cfg_attr(
41233 target_arch = "arm",
41234 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41235)]
41236#[cfg(not(target_arch = "arm64ec"))]
41237pub fn vreinterpretq_p16_f16(a: float16x8_t) -> poly16x8_t {
41238 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41239 unsafe {
41240 let ret_val: poly16x8_t = transmute(a);
41241 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41242 }
41243}
41244#[doc = "Vector reinterpret cast operation"]
41245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_f32)"]
41246#[inline(always)]
41247#[cfg(target_endian = "little")]
41248#[target_feature(enable = "neon")]
41249#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41250#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41251#[cfg_attr(
41252 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41253 assert_instr(nop)
41254)]
41255#[cfg_attr(
41256 not(target_arch = "arm"),
41257 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41258)]
41259#[cfg_attr(
41260 target_arch = "arm",
41261 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41262)]
41263#[cfg(not(target_arch = "arm64ec"))]
41264pub fn vreinterpret_f16_f32(a: float32x2_t) -> float16x4_t {
41265 unsafe { transmute(a) }
41266}
41267#[doc = "Vector reinterpret cast operation"]
41268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_f32)"]
41269#[inline(always)]
41270#[cfg(target_endian = "big")]
41271#[target_feature(enable = "neon")]
41272#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41273#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41274#[cfg_attr(
41275 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41276 assert_instr(nop)
41277)]
41278#[cfg_attr(
41279 not(target_arch = "arm"),
41280 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41281)]
41282#[cfg_attr(
41283 target_arch = "arm",
41284 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41285)]
41286#[cfg(not(target_arch = "arm64ec"))]
41287pub fn vreinterpret_f16_f32(a: float32x2_t) -> float16x4_t {
41288 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
41289 unsafe {
41290 let ret_val: float16x4_t = transmute(a);
41291 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41292 }
41293}
41294#[doc = "Vector reinterpret cast operation"]
41295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_f32)"]
41296#[inline(always)]
41297#[cfg(target_endian = "little")]
41298#[target_feature(enable = "neon")]
41299#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41300#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41301#[cfg_attr(
41302 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41303 assert_instr(nop)
41304)]
41305#[cfg_attr(
41306 not(target_arch = "arm"),
41307 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41308)]
41309#[cfg_attr(
41310 target_arch = "arm",
41311 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41312)]
41313#[cfg(not(target_arch = "arm64ec"))]
41314pub fn vreinterpretq_f16_f32(a: float32x4_t) -> float16x8_t {
41315 unsafe { transmute(a) }
41316}
41317#[doc = "Vector reinterpret cast operation"]
41318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_f32)"]
41319#[inline(always)]
41320#[cfg(target_endian = "big")]
41321#[target_feature(enable = "neon")]
41322#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41323#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41324#[cfg_attr(
41325 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41326 assert_instr(nop)
41327)]
41328#[cfg_attr(
41329 not(target_arch = "arm"),
41330 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41331)]
41332#[cfg_attr(
41333 target_arch = "arm",
41334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41335)]
41336#[cfg(not(target_arch = "arm64ec"))]
41337pub fn vreinterpretq_f16_f32(a: float32x4_t) -> float16x8_t {
41338 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
41339 unsafe {
41340 let ret_val: float16x8_t = transmute(a);
41341 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41342 }
41343}
41344#[doc = "Vector reinterpret cast operation"]
41345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s8)"]
41346#[inline(always)]
41347#[cfg(target_endian = "little")]
41348#[target_feature(enable = "neon")]
41349#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41350#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41351#[cfg_attr(
41352 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41353 assert_instr(nop)
41354)]
41355#[cfg_attr(
41356 not(target_arch = "arm"),
41357 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41358)]
41359#[cfg_attr(
41360 target_arch = "arm",
41361 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41362)]
41363#[cfg(not(target_arch = "arm64ec"))]
41364pub fn vreinterpret_f16_s8(a: int8x8_t) -> float16x4_t {
41365 unsafe { transmute(a) }
41366}
41367#[doc = "Vector reinterpret cast operation"]
41368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s8)"]
41369#[inline(always)]
41370#[cfg(target_endian = "big")]
41371#[target_feature(enable = "neon")]
41372#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41373#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41374#[cfg_attr(
41375 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41376 assert_instr(nop)
41377)]
41378#[cfg_attr(
41379 not(target_arch = "arm"),
41380 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41381)]
41382#[cfg_attr(
41383 target_arch = "arm",
41384 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41385)]
41386#[cfg(not(target_arch = "arm64ec"))]
41387pub fn vreinterpret_f16_s8(a: int8x8_t) -> float16x4_t {
41388 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41389 unsafe {
41390 let ret_val: float16x4_t = transmute(a);
41391 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41392 }
41393}
41394#[doc = "Vector reinterpret cast operation"]
41395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s8)"]
41396#[inline(always)]
41397#[cfg(target_endian = "little")]
41398#[target_feature(enable = "neon")]
41399#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41400#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41401#[cfg_attr(
41402 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41403 assert_instr(nop)
41404)]
41405#[cfg_attr(
41406 not(target_arch = "arm"),
41407 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41408)]
41409#[cfg_attr(
41410 target_arch = "arm",
41411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41412)]
41413#[cfg(not(target_arch = "arm64ec"))]
41414pub fn vreinterpretq_f16_s8(a: int8x16_t) -> float16x8_t {
41415 unsafe { transmute(a) }
41416}
41417#[doc = "Vector reinterpret cast operation"]
41418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s8)"]
41419#[inline(always)]
41420#[cfg(target_endian = "big")]
41421#[target_feature(enable = "neon")]
41422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41424#[cfg_attr(
41425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41426 assert_instr(nop)
41427)]
41428#[cfg_attr(
41429 not(target_arch = "arm"),
41430 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41431)]
41432#[cfg_attr(
41433 target_arch = "arm",
41434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41435)]
41436#[cfg(not(target_arch = "arm64ec"))]
41437pub fn vreinterpretq_f16_s8(a: int8x16_t) -> float16x8_t {
41438 let a: int8x16_t =
41439 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
41440 unsafe {
41441 let ret_val: float16x8_t = transmute(a);
41442 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41443 }
41444}
41445#[doc = "Vector reinterpret cast operation"]
41446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s16)"]
41447#[inline(always)]
41448#[cfg(target_endian = "little")]
41449#[target_feature(enable = "neon")]
41450#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41451#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41452#[cfg_attr(
41453 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41454 assert_instr(nop)
41455)]
41456#[cfg_attr(
41457 not(target_arch = "arm"),
41458 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41459)]
41460#[cfg_attr(
41461 target_arch = "arm",
41462 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41463)]
41464#[cfg(not(target_arch = "arm64ec"))]
41465pub fn vreinterpret_f16_s16(a: int16x4_t) -> float16x4_t {
41466 unsafe { transmute(a) }
41467}
41468#[doc = "Vector reinterpret cast operation"]
41469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s16)"]
41470#[inline(always)]
41471#[cfg(target_endian = "big")]
41472#[target_feature(enable = "neon")]
41473#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41474#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41475#[cfg_attr(
41476 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41477 assert_instr(nop)
41478)]
41479#[cfg_attr(
41480 not(target_arch = "arm"),
41481 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41482)]
41483#[cfg_attr(
41484 target_arch = "arm",
41485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41486)]
41487#[cfg(not(target_arch = "arm64ec"))]
41488pub fn vreinterpret_f16_s16(a: int16x4_t) -> float16x4_t {
41489 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
41490 unsafe {
41491 let ret_val: float16x4_t = transmute(a);
41492 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41493 }
41494}
41495#[doc = "Vector reinterpret cast operation"]
41496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s16)"]
41497#[inline(always)]
41498#[cfg(target_endian = "little")]
41499#[target_feature(enable = "neon")]
41500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41501#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41502#[cfg_attr(
41503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41504 assert_instr(nop)
41505)]
41506#[cfg_attr(
41507 not(target_arch = "arm"),
41508 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41509)]
41510#[cfg_attr(
41511 target_arch = "arm",
41512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41513)]
41514#[cfg(not(target_arch = "arm64ec"))]
41515pub fn vreinterpretq_f16_s16(a: int16x8_t) -> float16x8_t {
41516 unsafe { transmute(a) }
41517}
41518#[doc = "Vector reinterpret cast operation"]
41519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s16)"]
41520#[inline(always)]
41521#[cfg(target_endian = "big")]
41522#[target_feature(enable = "neon")]
41523#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41524#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41525#[cfg_attr(
41526 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41527 assert_instr(nop)
41528)]
41529#[cfg_attr(
41530 not(target_arch = "arm"),
41531 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41532)]
41533#[cfg_attr(
41534 target_arch = "arm",
41535 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41536)]
41537#[cfg(not(target_arch = "arm64ec"))]
41538pub fn vreinterpretq_f16_s16(a: int16x8_t) -> float16x8_t {
41539 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41540 unsafe {
41541 let ret_val: float16x8_t = transmute(a);
41542 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41543 }
41544}
41545#[doc = "Vector reinterpret cast operation"]
41546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s32)"]
41547#[inline(always)]
41548#[cfg(target_endian = "little")]
41549#[target_feature(enable = "neon")]
41550#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41551#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41552#[cfg_attr(
41553 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41554 assert_instr(nop)
41555)]
41556#[cfg_attr(
41557 not(target_arch = "arm"),
41558 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41559)]
41560#[cfg_attr(
41561 target_arch = "arm",
41562 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41563)]
41564#[cfg(not(target_arch = "arm64ec"))]
41565pub fn vreinterpret_f16_s32(a: int32x2_t) -> float16x4_t {
41566 unsafe { transmute(a) }
41567}
41568#[doc = "Vector reinterpret cast operation"]
41569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s32)"]
41570#[inline(always)]
41571#[cfg(target_endian = "big")]
41572#[target_feature(enable = "neon")]
41573#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41574#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41575#[cfg_attr(
41576 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41577 assert_instr(nop)
41578)]
41579#[cfg_attr(
41580 not(target_arch = "arm"),
41581 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41582)]
41583#[cfg_attr(
41584 target_arch = "arm",
41585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41586)]
41587#[cfg(not(target_arch = "arm64ec"))]
41588pub fn vreinterpret_f16_s32(a: int32x2_t) -> float16x4_t {
41589 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
41590 unsafe {
41591 let ret_val: float16x4_t = transmute(a);
41592 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41593 }
41594}
41595#[doc = "Vector reinterpret cast operation"]
41596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s32)"]
41597#[inline(always)]
41598#[cfg(target_endian = "little")]
41599#[target_feature(enable = "neon")]
41600#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41601#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41602#[cfg_attr(
41603 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41604 assert_instr(nop)
41605)]
41606#[cfg_attr(
41607 not(target_arch = "arm"),
41608 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41609)]
41610#[cfg_attr(
41611 target_arch = "arm",
41612 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41613)]
41614#[cfg(not(target_arch = "arm64ec"))]
41615pub fn vreinterpretq_f16_s32(a: int32x4_t) -> float16x8_t {
41616 unsafe { transmute(a) }
41617}
41618#[doc = "Vector reinterpret cast operation"]
41619#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s32)"]
41620#[inline(always)]
41621#[cfg(target_endian = "big")]
41622#[target_feature(enable = "neon")]
41623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41624#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41625#[cfg_attr(
41626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41627 assert_instr(nop)
41628)]
41629#[cfg_attr(
41630 not(target_arch = "arm"),
41631 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41632)]
41633#[cfg_attr(
41634 target_arch = "arm",
41635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41636)]
41637#[cfg(not(target_arch = "arm64ec"))]
41638pub fn vreinterpretq_f16_s32(a: int32x4_t) -> float16x8_t {
41639 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
41640 unsafe {
41641 let ret_val: float16x8_t = transmute(a);
41642 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41643 }
41644}
41645#[doc = "Vector reinterpret cast operation"]
41646#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s64)"]
41647#[inline(always)]
41648#[cfg(target_endian = "little")]
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(nop))]
41652#[cfg_attr(
41653 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41654 assert_instr(nop)
41655)]
41656#[cfg_attr(
41657 not(target_arch = "arm"),
41658 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41659)]
41660#[cfg_attr(
41661 target_arch = "arm",
41662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41663)]
41664#[cfg(not(target_arch = "arm64ec"))]
41665pub fn vreinterpret_f16_s64(a: int64x1_t) -> float16x4_t {
41666 unsafe { transmute(a) }
41667}
41668#[doc = "Vector reinterpret cast operation"]
41669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s64)"]
41670#[inline(always)]
41671#[cfg(target_endian = "big")]
41672#[target_feature(enable = "neon")]
41673#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41674#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41675#[cfg_attr(
41676 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41677 assert_instr(nop)
41678)]
41679#[cfg_attr(
41680 not(target_arch = "arm"),
41681 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41682)]
41683#[cfg_attr(
41684 target_arch = "arm",
41685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41686)]
41687#[cfg(not(target_arch = "arm64ec"))]
41688pub fn vreinterpret_f16_s64(a: int64x1_t) -> float16x4_t {
41689 unsafe {
41690 let ret_val: float16x4_t = transmute(a);
41691 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41692 }
41693}
41694#[doc = "Vector reinterpret cast operation"]
41695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s64)"]
41696#[inline(always)]
41697#[cfg(target_endian = "little")]
41698#[target_feature(enable = "neon")]
41699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41700#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41701#[cfg_attr(
41702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41703 assert_instr(nop)
41704)]
41705#[cfg_attr(
41706 not(target_arch = "arm"),
41707 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41708)]
41709#[cfg_attr(
41710 target_arch = "arm",
41711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41712)]
41713#[cfg(not(target_arch = "arm64ec"))]
41714pub fn vreinterpretq_f16_s64(a: int64x2_t) -> float16x8_t {
41715 unsafe { transmute(a) }
41716}
41717#[doc = "Vector reinterpret cast operation"]
41718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s64)"]
41719#[inline(always)]
41720#[cfg(target_endian = "big")]
41721#[target_feature(enable = "neon")]
41722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41724#[cfg_attr(
41725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41726 assert_instr(nop)
41727)]
41728#[cfg_attr(
41729 not(target_arch = "arm"),
41730 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41731)]
41732#[cfg_attr(
41733 target_arch = "arm",
41734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41735)]
41736#[cfg(not(target_arch = "arm64ec"))]
41737pub fn vreinterpretq_f16_s64(a: int64x2_t) -> float16x8_t {
41738 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
41739 unsafe {
41740 let ret_val: float16x8_t = transmute(a);
41741 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41742 }
41743}
41744#[doc = "Vector reinterpret cast operation"]
41745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u8)"]
41746#[inline(always)]
41747#[cfg(target_endian = "little")]
41748#[target_feature(enable = "neon")]
41749#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41750#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41751#[cfg_attr(
41752 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41753 assert_instr(nop)
41754)]
41755#[cfg_attr(
41756 not(target_arch = "arm"),
41757 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41758)]
41759#[cfg_attr(
41760 target_arch = "arm",
41761 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41762)]
41763#[cfg(not(target_arch = "arm64ec"))]
41764pub fn vreinterpret_f16_u8(a: uint8x8_t) -> float16x4_t {
41765 unsafe { transmute(a) }
41766}
41767#[doc = "Vector reinterpret cast operation"]
41768#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u8)"]
41769#[inline(always)]
41770#[cfg(target_endian = "big")]
41771#[target_feature(enable = "neon")]
41772#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41773#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41774#[cfg_attr(
41775 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41776 assert_instr(nop)
41777)]
41778#[cfg_attr(
41779 not(target_arch = "arm"),
41780 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41781)]
41782#[cfg_attr(
41783 target_arch = "arm",
41784 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41785)]
41786#[cfg(not(target_arch = "arm64ec"))]
41787pub fn vreinterpret_f16_u8(a: uint8x8_t) -> float16x4_t {
41788 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41789 unsafe {
41790 let ret_val: float16x4_t = transmute(a);
41791 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41792 }
41793}
41794#[doc = "Vector reinterpret cast operation"]
41795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u8)"]
41796#[inline(always)]
41797#[cfg(target_endian = "little")]
41798#[target_feature(enable = "neon")]
41799#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41800#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41801#[cfg_attr(
41802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41803 assert_instr(nop)
41804)]
41805#[cfg_attr(
41806 not(target_arch = "arm"),
41807 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41808)]
41809#[cfg_attr(
41810 target_arch = "arm",
41811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41812)]
41813#[cfg(not(target_arch = "arm64ec"))]
41814pub fn vreinterpretq_f16_u8(a: uint8x16_t) -> float16x8_t {
41815 unsafe { transmute(a) }
41816}
41817#[doc = "Vector reinterpret cast operation"]
41818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u8)"]
41819#[inline(always)]
41820#[cfg(target_endian = "big")]
41821#[target_feature(enable = "neon")]
41822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41823#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41824#[cfg_attr(
41825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41826 assert_instr(nop)
41827)]
41828#[cfg_attr(
41829 not(target_arch = "arm"),
41830 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41831)]
41832#[cfg_attr(
41833 target_arch = "arm",
41834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41835)]
41836#[cfg(not(target_arch = "arm64ec"))]
41837pub fn vreinterpretq_f16_u8(a: uint8x16_t) -> float16x8_t {
41838 let a: uint8x16_t =
41839 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
41840 unsafe {
41841 let ret_val: float16x8_t = transmute(a);
41842 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41843 }
41844}
41845#[doc = "Vector reinterpret cast operation"]
41846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u16)"]
41847#[inline(always)]
41848#[cfg(target_endian = "little")]
41849#[target_feature(enable = "neon")]
41850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41851#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41852#[cfg_attr(
41853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41854 assert_instr(nop)
41855)]
41856#[cfg_attr(
41857 not(target_arch = "arm"),
41858 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41859)]
41860#[cfg_attr(
41861 target_arch = "arm",
41862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41863)]
41864#[cfg(not(target_arch = "arm64ec"))]
41865pub fn vreinterpret_f16_u16(a: uint16x4_t) -> float16x4_t {
41866 unsafe { transmute(a) }
41867}
41868#[doc = "Vector reinterpret cast operation"]
41869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u16)"]
41870#[inline(always)]
41871#[cfg(target_endian = "big")]
41872#[target_feature(enable = "neon")]
41873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41874#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41875#[cfg_attr(
41876 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41877 assert_instr(nop)
41878)]
41879#[cfg_attr(
41880 not(target_arch = "arm"),
41881 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41882)]
41883#[cfg_attr(
41884 target_arch = "arm",
41885 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41886)]
41887#[cfg(not(target_arch = "arm64ec"))]
41888pub fn vreinterpret_f16_u16(a: uint16x4_t) -> float16x4_t {
41889 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
41890 unsafe {
41891 let ret_val: float16x4_t = transmute(a);
41892 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41893 }
41894}
41895#[doc = "Vector reinterpret cast operation"]
41896#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u16)"]
41897#[inline(always)]
41898#[cfg(target_endian = "little")]
41899#[target_feature(enable = "neon")]
41900#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41901#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41902#[cfg_attr(
41903 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41904 assert_instr(nop)
41905)]
41906#[cfg_attr(
41907 not(target_arch = "arm"),
41908 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41909)]
41910#[cfg_attr(
41911 target_arch = "arm",
41912 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41913)]
41914#[cfg(not(target_arch = "arm64ec"))]
41915pub fn vreinterpretq_f16_u16(a: uint16x8_t) -> float16x8_t {
41916 unsafe { transmute(a) }
41917}
41918#[doc = "Vector reinterpret cast operation"]
41919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u16)"]
41920#[inline(always)]
41921#[cfg(target_endian = "big")]
41922#[target_feature(enable = "neon")]
41923#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41924#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41925#[cfg_attr(
41926 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41927 assert_instr(nop)
41928)]
41929#[cfg_attr(
41930 not(target_arch = "arm"),
41931 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41932)]
41933#[cfg_attr(
41934 target_arch = "arm",
41935 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41936)]
41937#[cfg(not(target_arch = "arm64ec"))]
41938pub fn vreinterpretq_f16_u16(a: uint16x8_t) -> float16x8_t {
41939 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41940 unsafe {
41941 let ret_val: float16x8_t = transmute(a);
41942 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41943 }
41944}
41945#[doc = "Vector reinterpret cast operation"]
41946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u32)"]
41947#[inline(always)]
41948#[cfg(target_endian = "little")]
41949#[target_feature(enable = "neon")]
41950#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41951#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41952#[cfg_attr(
41953 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41954 assert_instr(nop)
41955)]
41956#[cfg_attr(
41957 not(target_arch = "arm"),
41958 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41959)]
41960#[cfg_attr(
41961 target_arch = "arm",
41962 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41963)]
41964#[cfg(not(target_arch = "arm64ec"))]
41965pub fn vreinterpret_f16_u32(a: uint32x2_t) -> float16x4_t {
41966 unsafe { transmute(a) }
41967}
41968#[doc = "Vector reinterpret cast operation"]
41969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u32)"]
41970#[inline(always)]
41971#[cfg(target_endian = "big")]
41972#[target_feature(enable = "neon")]
41973#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41974#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41975#[cfg_attr(
41976 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41977 assert_instr(nop)
41978)]
41979#[cfg_attr(
41980 not(target_arch = "arm"),
41981 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41982)]
41983#[cfg_attr(
41984 target_arch = "arm",
41985 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41986)]
41987#[cfg(not(target_arch = "arm64ec"))]
41988pub fn vreinterpret_f16_u32(a: uint32x2_t) -> float16x4_t {
41989 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
41990 unsafe {
41991 let ret_val: float16x4_t = transmute(a);
41992 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41993 }
41994}
41995#[doc = "Vector reinterpret cast operation"]
41996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u32)"]
41997#[inline(always)]
41998#[cfg(target_endian = "little")]
41999#[target_feature(enable = "neon")]
42000#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42001#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42002#[cfg_attr(
42003 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42004 assert_instr(nop)
42005)]
42006#[cfg_attr(
42007 not(target_arch = "arm"),
42008 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42009)]
42010#[cfg_attr(
42011 target_arch = "arm",
42012 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42013)]
42014#[cfg(not(target_arch = "arm64ec"))]
42015pub fn vreinterpretq_f16_u32(a: uint32x4_t) -> float16x8_t {
42016 unsafe { transmute(a) }
42017}
42018#[doc = "Vector reinterpret cast operation"]
42019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u32)"]
42020#[inline(always)]
42021#[cfg(target_endian = "big")]
42022#[target_feature(enable = "neon")]
42023#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42024#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42025#[cfg_attr(
42026 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42027 assert_instr(nop)
42028)]
42029#[cfg_attr(
42030 not(target_arch = "arm"),
42031 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42032)]
42033#[cfg_attr(
42034 target_arch = "arm",
42035 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42036)]
42037#[cfg(not(target_arch = "arm64ec"))]
42038pub fn vreinterpretq_f16_u32(a: uint32x4_t) -> float16x8_t {
42039 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42040 unsafe {
42041 let ret_val: float16x8_t = transmute(a);
42042 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42043 }
42044}
42045#[doc = "Vector reinterpret cast operation"]
42046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u64)"]
42047#[inline(always)]
42048#[cfg(target_endian = "little")]
42049#[target_feature(enable = "neon")]
42050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42051#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42052#[cfg_attr(
42053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42054 assert_instr(nop)
42055)]
42056#[cfg_attr(
42057 not(target_arch = "arm"),
42058 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42059)]
42060#[cfg_attr(
42061 target_arch = "arm",
42062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42063)]
42064#[cfg(not(target_arch = "arm64ec"))]
42065pub fn vreinterpret_f16_u64(a: uint64x1_t) -> float16x4_t {
42066 unsafe { transmute(a) }
42067}
42068#[doc = "Vector reinterpret cast operation"]
42069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u64)"]
42070#[inline(always)]
42071#[cfg(target_endian = "big")]
42072#[target_feature(enable = "neon")]
42073#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42074#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42075#[cfg_attr(
42076 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42077 assert_instr(nop)
42078)]
42079#[cfg_attr(
42080 not(target_arch = "arm"),
42081 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42082)]
42083#[cfg_attr(
42084 target_arch = "arm",
42085 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42086)]
42087#[cfg(not(target_arch = "arm64ec"))]
42088pub fn vreinterpret_f16_u64(a: uint64x1_t) -> float16x4_t {
42089 unsafe {
42090 let ret_val: float16x4_t = transmute(a);
42091 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42092 }
42093}
42094#[doc = "Vector reinterpret cast operation"]
42095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u64)"]
42096#[inline(always)]
42097#[cfg(target_endian = "little")]
42098#[target_feature(enable = "neon")]
42099#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42100#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42101#[cfg_attr(
42102 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42103 assert_instr(nop)
42104)]
42105#[cfg_attr(
42106 not(target_arch = "arm"),
42107 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42108)]
42109#[cfg_attr(
42110 target_arch = "arm",
42111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42112)]
42113#[cfg(not(target_arch = "arm64ec"))]
42114pub fn vreinterpretq_f16_u64(a: uint64x2_t) -> float16x8_t {
42115 unsafe { transmute(a) }
42116}
42117#[doc = "Vector reinterpret cast operation"]
42118#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u64)"]
42119#[inline(always)]
42120#[cfg(target_endian = "big")]
42121#[target_feature(enable = "neon")]
42122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42123#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42124#[cfg_attr(
42125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42126 assert_instr(nop)
42127)]
42128#[cfg_attr(
42129 not(target_arch = "arm"),
42130 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42131)]
42132#[cfg_attr(
42133 target_arch = "arm",
42134 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42135)]
42136#[cfg(not(target_arch = "arm64ec"))]
42137pub fn vreinterpretq_f16_u64(a: uint64x2_t) -> float16x8_t {
42138 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42139 unsafe {
42140 let ret_val: float16x8_t = transmute(a);
42141 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42142 }
42143}
42144#[doc = "Vector reinterpret cast operation"]
42145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p8)"]
42146#[inline(always)]
42147#[cfg(target_endian = "little")]
42148#[target_feature(enable = "neon")]
42149#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42150#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42151#[cfg_attr(
42152 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42153 assert_instr(nop)
42154)]
42155#[cfg_attr(
42156 not(target_arch = "arm"),
42157 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42158)]
42159#[cfg_attr(
42160 target_arch = "arm",
42161 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42162)]
42163#[cfg(not(target_arch = "arm64ec"))]
42164pub fn vreinterpret_f16_p8(a: poly8x8_t) -> float16x4_t {
42165 unsafe { transmute(a) }
42166}
42167#[doc = "Vector reinterpret cast operation"]
42168#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p8)"]
42169#[inline(always)]
42170#[cfg(target_endian = "big")]
42171#[target_feature(enable = "neon")]
42172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42173#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42174#[cfg_attr(
42175 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42176 assert_instr(nop)
42177)]
42178#[cfg_attr(
42179 not(target_arch = "arm"),
42180 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42181)]
42182#[cfg_attr(
42183 target_arch = "arm",
42184 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42185)]
42186#[cfg(not(target_arch = "arm64ec"))]
42187pub fn vreinterpret_f16_p8(a: poly8x8_t) -> float16x4_t {
42188 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
42189 unsafe {
42190 let ret_val: float16x4_t = transmute(a);
42191 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42192 }
42193}
42194#[doc = "Vector reinterpret cast operation"]
42195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p8)"]
42196#[inline(always)]
42197#[cfg(target_endian = "little")]
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(nop))]
42201#[cfg_attr(
42202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42203 assert_instr(nop)
42204)]
42205#[cfg_attr(
42206 not(target_arch = "arm"),
42207 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42208)]
42209#[cfg_attr(
42210 target_arch = "arm",
42211 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42212)]
42213#[cfg(not(target_arch = "arm64ec"))]
42214pub fn vreinterpretq_f16_p8(a: poly8x16_t) -> float16x8_t {
42215 unsafe { transmute(a) }
42216}
42217#[doc = "Vector reinterpret cast operation"]
42218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p8)"]
42219#[inline(always)]
42220#[cfg(target_endian = "big")]
42221#[target_feature(enable = "neon")]
42222#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42223#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42224#[cfg_attr(
42225 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42226 assert_instr(nop)
42227)]
42228#[cfg_attr(
42229 not(target_arch = "arm"),
42230 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42231)]
42232#[cfg_attr(
42233 target_arch = "arm",
42234 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42235)]
42236#[cfg(not(target_arch = "arm64ec"))]
42237pub fn vreinterpretq_f16_p8(a: poly8x16_t) -> float16x8_t {
42238 let a: poly8x16_t =
42239 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
42240 unsafe {
42241 let ret_val: float16x8_t = transmute(a);
42242 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42243 }
42244}
42245#[doc = "Vector reinterpret cast operation"]
42246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p16)"]
42247#[inline(always)]
42248#[cfg(target_endian = "little")]
42249#[target_feature(enable = "neon")]
42250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42251#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42252#[cfg_attr(
42253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42254 assert_instr(nop)
42255)]
42256#[cfg_attr(
42257 not(target_arch = "arm"),
42258 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42259)]
42260#[cfg_attr(
42261 target_arch = "arm",
42262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42263)]
42264#[cfg(not(target_arch = "arm64ec"))]
42265pub fn vreinterpret_f16_p16(a: poly16x4_t) -> float16x4_t {
42266 unsafe { transmute(a) }
42267}
42268#[doc = "Vector reinterpret cast operation"]
42269#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p16)"]
42270#[inline(always)]
42271#[cfg(target_endian = "big")]
42272#[target_feature(enable = "neon")]
42273#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42274#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42275#[cfg_attr(
42276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42277 assert_instr(nop)
42278)]
42279#[cfg_attr(
42280 not(target_arch = "arm"),
42281 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42282)]
42283#[cfg_attr(
42284 target_arch = "arm",
42285 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42286)]
42287#[cfg(not(target_arch = "arm64ec"))]
42288pub fn vreinterpret_f16_p16(a: poly16x4_t) -> float16x4_t {
42289 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42290 unsafe {
42291 let ret_val: float16x4_t = transmute(a);
42292 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42293 }
42294}
42295#[doc = "Vector reinterpret cast operation"]
42296#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p16)"]
42297#[inline(always)]
42298#[cfg(target_endian = "little")]
42299#[target_feature(enable = "neon")]
42300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42301#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42302#[cfg_attr(
42303 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42304 assert_instr(nop)
42305)]
42306#[cfg_attr(
42307 not(target_arch = "arm"),
42308 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42309)]
42310#[cfg_attr(
42311 target_arch = "arm",
42312 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42313)]
42314#[cfg(not(target_arch = "arm64ec"))]
42315pub fn vreinterpretq_f16_p16(a: poly16x8_t) -> float16x8_t {
42316 unsafe { transmute(a) }
42317}
42318#[doc = "Vector reinterpret cast operation"]
42319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p16)"]
42320#[inline(always)]
42321#[cfg(target_endian = "big")]
42322#[target_feature(enable = "neon")]
42323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42324#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42325#[cfg_attr(
42326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42327 assert_instr(nop)
42328)]
42329#[cfg_attr(
42330 not(target_arch = "arm"),
42331 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42332)]
42333#[cfg_attr(
42334 target_arch = "arm",
42335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42336)]
42337#[cfg(not(target_arch = "arm64ec"))]
42338pub fn vreinterpretq_f16_p16(a: poly16x8_t) -> float16x8_t {
42339 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
42340 unsafe {
42341 let ret_val: float16x8_t = transmute(a);
42342 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42343 }
42344}
42345#[doc = "Vector reinterpret cast operation"]
42346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p128)"]
42347#[inline(always)]
42348#[cfg(target_endian = "little")]
42349#[target_feature(enable = "neon")]
42350#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42351#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42352#[cfg_attr(
42353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42354 assert_instr(nop)
42355)]
42356#[cfg_attr(
42357 not(target_arch = "arm"),
42358 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42359)]
42360#[cfg_attr(
42361 target_arch = "arm",
42362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42363)]
42364#[cfg(not(target_arch = "arm64ec"))]
42365pub fn vreinterpretq_f16_p128(a: p128) -> float16x8_t {
42366 unsafe { transmute(a) }
42367}
42368#[doc = "Vector reinterpret cast operation"]
42369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p128)"]
42370#[inline(always)]
42371#[cfg(target_endian = "big")]
42372#[target_feature(enable = "neon")]
42373#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42374#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42375#[cfg_attr(
42376 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42377 assert_instr(nop)
42378)]
42379#[cfg_attr(
42380 not(target_arch = "arm"),
42381 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42382)]
42383#[cfg_attr(
42384 target_arch = "arm",
42385 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42386)]
42387#[cfg(not(target_arch = "arm64ec"))]
42388pub fn vreinterpretq_f16_p128(a: p128) -> float16x8_t {
42389 unsafe {
42390 let ret_val: float16x8_t = transmute(a);
42391 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42392 }
42393}
42394#[doc = "Vector reinterpret cast operation"]
42395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_f16)"]
42396#[inline(always)]
42397#[cfg(target_endian = "little")]
42398#[target_feature(enable = "neon")]
42399#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42400#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42401#[cfg_attr(
42402 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42403 assert_instr(nop)
42404)]
42405#[cfg_attr(
42406 not(target_arch = "arm"),
42407 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42408)]
42409#[cfg_attr(
42410 target_arch = "arm",
42411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42412)]
42413#[cfg(not(target_arch = "arm64ec"))]
42414pub fn vreinterpret_p64_f16(a: float16x4_t) -> poly64x1_t {
42415 unsafe { transmute(a) }
42416}
42417#[doc = "Vector reinterpret cast operation"]
42418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_f16)"]
42419#[inline(always)]
42420#[cfg(target_endian = "big")]
42421#[target_feature(enable = "neon")]
42422#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42424#[cfg_attr(
42425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42426 assert_instr(nop)
42427)]
42428#[cfg_attr(
42429 not(target_arch = "arm"),
42430 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42431)]
42432#[cfg_attr(
42433 target_arch = "arm",
42434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42435)]
42436#[cfg(not(target_arch = "arm64ec"))]
42437pub fn vreinterpret_p64_f16(a: float16x4_t) -> poly64x1_t {
42438 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42439 unsafe { transmute(a) }
42440}
42441#[doc = "Vector reinterpret cast operation"]
42442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f16)"]
42443#[inline(always)]
42444#[cfg(target_endian = "little")]
42445#[target_feature(enable = "neon")]
42446#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42447#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42448#[cfg_attr(
42449 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42450 assert_instr(nop)
42451)]
42452#[cfg_attr(
42453 not(target_arch = "arm"),
42454 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42455)]
42456#[cfg_attr(
42457 target_arch = "arm",
42458 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42459)]
42460#[cfg(not(target_arch = "arm64ec"))]
42461pub fn vreinterpretq_p128_f16(a: float16x8_t) -> p128 {
42462 unsafe { transmute(a) }
42463}
42464#[doc = "Vector reinterpret cast operation"]
42465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f16)"]
42466#[inline(always)]
42467#[cfg(target_endian = "big")]
42468#[target_feature(enable = "neon")]
42469#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42470#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42471#[cfg_attr(
42472 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42473 assert_instr(nop)
42474)]
42475#[cfg_attr(
42476 not(target_arch = "arm"),
42477 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42478)]
42479#[cfg_attr(
42480 target_arch = "arm",
42481 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42482)]
42483#[cfg(not(target_arch = "arm64ec"))]
42484pub fn vreinterpretq_p128_f16(a: float16x8_t) -> p128 {
42485 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
42486 unsafe { transmute(a) }
42487}
42488#[doc = "Vector reinterpret cast operation"]
42489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_f16)"]
42490#[inline(always)]
42491#[cfg(target_endian = "little")]
42492#[target_feature(enable = "neon")]
42493#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42494#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42495#[cfg_attr(
42496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42497 assert_instr(nop)
42498)]
42499#[cfg_attr(
42500 not(target_arch = "arm"),
42501 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42502)]
42503#[cfg_attr(
42504 target_arch = "arm",
42505 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42506)]
42507#[cfg(not(target_arch = "arm64ec"))]
42508pub fn vreinterpretq_p64_f16(a: float16x8_t) -> poly64x2_t {
42509 unsafe { transmute(a) }
42510}
42511#[doc = "Vector reinterpret cast operation"]
42512#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_f16)"]
42513#[inline(always)]
42514#[cfg(target_endian = "big")]
42515#[target_feature(enable = "neon")]
42516#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42517#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42518#[cfg_attr(
42519 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42520 assert_instr(nop)
42521)]
42522#[cfg_attr(
42523 not(target_arch = "arm"),
42524 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42525)]
42526#[cfg_attr(
42527 target_arch = "arm",
42528 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42529)]
42530#[cfg(not(target_arch = "arm64ec"))]
42531pub fn vreinterpretq_p64_f16(a: float16x8_t) -> poly64x2_t {
42532 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
42533 unsafe {
42534 let ret_val: poly64x2_t = transmute(a);
42535 simd_shuffle!(ret_val, ret_val, [1, 0])
42536 }
42537}
42538#[doc = "Vector reinterpret cast operation"]
42539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p64)"]
42540#[inline(always)]
42541#[cfg(target_endian = "little")]
42542#[target_feature(enable = "neon")]
42543#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42544#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42545#[cfg_attr(
42546 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42547 assert_instr(nop)
42548)]
42549#[cfg_attr(
42550 not(target_arch = "arm"),
42551 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42552)]
42553#[cfg_attr(
42554 target_arch = "arm",
42555 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42556)]
42557#[cfg(not(target_arch = "arm64ec"))]
42558pub fn vreinterpret_f16_p64(a: poly64x1_t) -> float16x4_t {
42559 unsafe { transmute(a) }
42560}
42561#[doc = "Vector reinterpret cast operation"]
42562#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p64)"]
42563#[inline(always)]
42564#[cfg(target_endian = "big")]
42565#[target_feature(enable = "neon")]
42566#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42567#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42568#[cfg_attr(
42569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42570 assert_instr(nop)
42571)]
42572#[cfg_attr(
42573 not(target_arch = "arm"),
42574 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42575)]
42576#[cfg_attr(
42577 target_arch = "arm",
42578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42579)]
42580#[cfg(not(target_arch = "arm64ec"))]
42581pub fn vreinterpret_f16_p64(a: poly64x1_t) -> float16x4_t {
42582 unsafe {
42583 let ret_val: float16x4_t = transmute(a);
42584 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42585 }
42586}
42587#[doc = "Vector reinterpret cast operation"]
42588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p64)"]
42589#[inline(always)]
42590#[cfg(target_endian = "little")]
42591#[target_feature(enable = "neon")]
42592#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42593#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42594#[cfg_attr(
42595 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42596 assert_instr(nop)
42597)]
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 vreinterpretq_f16_p64(a: poly64x2_t) -> float16x8_t {
42608 unsafe { transmute(a) }
42609}
42610#[doc = "Vector reinterpret cast operation"]
42611#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p64)"]
42612#[inline(always)]
42613#[cfg(target_endian = "big")]
42614#[target_feature(enable = "neon")]
42615#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42616#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42617#[cfg_attr(
42618 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42619 assert_instr(nop)
42620)]
42621#[cfg_attr(
42622 not(target_arch = "arm"),
42623 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42624)]
42625#[cfg_attr(
42626 target_arch = "arm",
42627 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42628)]
42629#[cfg(not(target_arch = "arm64ec"))]
42630pub fn vreinterpretq_f16_p64(a: poly64x2_t) -> float16x8_t {
42631 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42632 unsafe {
42633 let ret_val: float16x8_t = transmute(a);
42634 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42635 }
42636}
42637#[doc = "Vector reinterpret cast operation"]
42638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p128)"]
42639#[inline(always)]
42640#[cfg(target_endian = "little")]
42641#[target_feature(enable = "neon")]
42642#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42643#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42644#[cfg_attr(
42645 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42646 assert_instr(nop)
42647)]
42648#[cfg_attr(
42649 not(target_arch = "arm"),
42650 stable(feature = "neon_intrinsics", since = "1.59.0")
42651)]
42652#[cfg_attr(
42653 target_arch = "arm",
42654 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42655)]
42656pub fn vreinterpretq_f32_p128(a: p128) -> float32x4_t {
42657 unsafe { transmute(a) }
42658}
42659#[doc = "Vector reinterpret cast operation"]
42660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p128)"]
42661#[inline(always)]
42662#[cfg(target_endian = "big")]
42663#[target_feature(enable = "neon")]
42664#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42665#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42666#[cfg_attr(
42667 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42668 assert_instr(nop)
42669)]
42670#[cfg_attr(
42671 not(target_arch = "arm"),
42672 stable(feature = "neon_intrinsics", since = "1.59.0")
42673)]
42674#[cfg_attr(
42675 target_arch = "arm",
42676 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42677)]
42678pub fn vreinterpretq_f32_p128(a: p128) -> float32x4_t {
42679 unsafe {
42680 let ret_val: float32x4_t = transmute(a);
42681 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42682 }
42683}
42684#[doc = "Vector reinterpret cast operation"]
42685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f32)"]
42686#[inline(always)]
42687#[cfg(target_endian = "little")]
42688#[target_feature(enable = "neon")]
42689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42690#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42691#[cfg_attr(
42692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42693 assert_instr(nop)
42694)]
42695#[cfg_attr(
42696 not(target_arch = "arm"),
42697 stable(feature = "neon_intrinsics", since = "1.59.0")
42698)]
42699#[cfg_attr(
42700 target_arch = "arm",
42701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42702)]
42703pub fn vreinterpret_s8_f32(a: float32x2_t) -> int8x8_t {
42704 unsafe { transmute(a) }
42705}
42706#[doc = "Vector reinterpret cast operation"]
42707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f32)"]
42708#[inline(always)]
42709#[cfg(target_endian = "big")]
42710#[target_feature(enable = "neon")]
42711#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42712#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42713#[cfg_attr(
42714 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42715 assert_instr(nop)
42716)]
42717#[cfg_attr(
42718 not(target_arch = "arm"),
42719 stable(feature = "neon_intrinsics", since = "1.59.0")
42720)]
42721#[cfg_attr(
42722 target_arch = "arm",
42723 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42724)]
42725pub fn vreinterpret_s8_f32(a: float32x2_t) -> int8x8_t {
42726 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42727 unsafe {
42728 let ret_val: int8x8_t = transmute(a);
42729 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42730 }
42731}
42732#[doc = "Vector reinterpret cast operation"]
42733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f32)"]
42734#[inline(always)]
42735#[cfg(target_endian = "little")]
42736#[target_feature(enable = "neon")]
42737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42738#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42739#[cfg_attr(
42740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42741 assert_instr(nop)
42742)]
42743#[cfg_attr(
42744 not(target_arch = "arm"),
42745 stable(feature = "neon_intrinsics", since = "1.59.0")
42746)]
42747#[cfg_attr(
42748 target_arch = "arm",
42749 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42750)]
42751pub fn vreinterpret_s16_f32(a: float32x2_t) -> int16x4_t {
42752 unsafe { transmute(a) }
42753}
42754#[doc = "Vector reinterpret cast operation"]
42755#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f32)"]
42756#[inline(always)]
42757#[cfg(target_endian = "big")]
42758#[target_feature(enable = "neon")]
42759#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42760#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42761#[cfg_attr(
42762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42763 assert_instr(nop)
42764)]
42765#[cfg_attr(
42766 not(target_arch = "arm"),
42767 stable(feature = "neon_intrinsics", since = "1.59.0")
42768)]
42769#[cfg_attr(
42770 target_arch = "arm",
42771 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42772)]
42773pub fn vreinterpret_s16_f32(a: float32x2_t) -> int16x4_t {
42774 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42775 unsafe {
42776 let ret_val: int16x4_t = transmute(a);
42777 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42778 }
42779}
42780#[doc = "Vector reinterpret cast operation"]
42781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f32)"]
42782#[inline(always)]
42783#[cfg(target_endian = "little")]
42784#[target_feature(enable = "neon")]
42785#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42786#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42787#[cfg_attr(
42788 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42789 assert_instr(nop)
42790)]
42791#[cfg_attr(
42792 not(target_arch = "arm"),
42793 stable(feature = "neon_intrinsics", since = "1.59.0")
42794)]
42795#[cfg_attr(
42796 target_arch = "arm",
42797 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42798)]
42799pub fn vreinterpret_s32_f32(a: float32x2_t) -> int32x2_t {
42800 unsafe { transmute(a) }
42801}
42802#[doc = "Vector reinterpret cast operation"]
42803#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f32)"]
42804#[inline(always)]
42805#[cfg(target_endian = "big")]
42806#[target_feature(enable = "neon")]
42807#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42808#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42809#[cfg_attr(
42810 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42811 assert_instr(nop)
42812)]
42813#[cfg_attr(
42814 not(target_arch = "arm"),
42815 stable(feature = "neon_intrinsics", since = "1.59.0")
42816)]
42817#[cfg_attr(
42818 target_arch = "arm",
42819 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42820)]
42821pub fn vreinterpret_s32_f32(a: float32x2_t) -> int32x2_t {
42822 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42823 unsafe {
42824 let ret_val: int32x2_t = transmute(a);
42825 simd_shuffle!(ret_val, ret_val, [1, 0])
42826 }
42827}
42828#[doc = "Vector reinterpret cast operation"]
42829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f32)"]
42830#[inline(always)]
42831#[cfg(target_endian = "little")]
42832#[target_feature(enable = "neon")]
42833#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42834#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42835#[cfg_attr(
42836 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42837 assert_instr(nop)
42838)]
42839#[cfg_attr(
42840 not(target_arch = "arm"),
42841 stable(feature = "neon_intrinsics", since = "1.59.0")
42842)]
42843#[cfg_attr(
42844 target_arch = "arm",
42845 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42846)]
42847pub fn vreinterpret_s64_f32(a: float32x2_t) -> int64x1_t {
42848 unsafe { transmute(a) }
42849}
42850#[doc = "Vector reinterpret cast operation"]
42851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f32)"]
42852#[inline(always)]
42853#[cfg(target_endian = "big")]
42854#[target_feature(enable = "neon")]
42855#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42856#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42857#[cfg_attr(
42858 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42859 assert_instr(nop)
42860)]
42861#[cfg_attr(
42862 not(target_arch = "arm"),
42863 stable(feature = "neon_intrinsics", since = "1.59.0")
42864)]
42865#[cfg_attr(
42866 target_arch = "arm",
42867 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42868)]
42869pub fn vreinterpret_s64_f32(a: float32x2_t) -> int64x1_t {
42870 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42871 unsafe { transmute(a) }
42872}
42873#[doc = "Vector reinterpret cast operation"]
42874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f32)"]
42875#[inline(always)]
42876#[cfg(target_endian = "little")]
42877#[target_feature(enable = "neon")]
42878#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42879#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42880#[cfg_attr(
42881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42882 assert_instr(nop)
42883)]
42884#[cfg_attr(
42885 not(target_arch = "arm"),
42886 stable(feature = "neon_intrinsics", since = "1.59.0")
42887)]
42888#[cfg_attr(
42889 target_arch = "arm",
42890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42891)]
42892pub fn vreinterpret_u8_f32(a: float32x2_t) -> uint8x8_t {
42893 unsafe { transmute(a) }
42894}
42895#[doc = "Vector reinterpret cast operation"]
42896#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f32)"]
42897#[inline(always)]
42898#[cfg(target_endian = "big")]
42899#[target_feature(enable = "neon")]
42900#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42901#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42902#[cfg_attr(
42903 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42904 assert_instr(nop)
42905)]
42906#[cfg_attr(
42907 not(target_arch = "arm"),
42908 stable(feature = "neon_intrinsics", since = "1.59.0")
42909)]
42910#[cfg_attr(
42911 target_arch = "arm",
42912 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42913)]
42914pub fn vreinterpret_u8_f32(a: float32x2_t) -> uint8x8_t {
42915 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42916 unsafe {
42917 let ret_val: uint8x8_t = transmute(a);
42918 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42919 }
42920}
42921#[doc = "Vector reinterpret cast operation"]
42922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f32)"]
42923#[inline(always)]
42924#[cfg(target_endian = "little")]
42925#[target_feature(enable = "neon")]
42926#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42927#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42928#[cfg_attr(
42929 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42930 assert_instr(nop)
42931)]
42932#[cfg_attr(
42933 not(target_arch = "arm"),
42934 stable(feature = "neon_intrinsics", since = "1.59.0")
42935)]
42936#[cfg_attr(
42937 target_arch = "arm",
42938 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42939)]
42940pub fn vreinterpret_u16_f32(a: float32x2_t) -> uint16x4_t {
42941 unsafe { transmute(a) }
42942}
42943#[doc = "Vector reinterpret cast operation"]
42944#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f32)"]
42945#[inline(always)]
42946#[cfg(target_endian = "big")]
42947#[target_feature(enable = "neon")]
42948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42949#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42950#[cfg_attr(
42951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42952 assert_instr(nop)
42953)]
42954#[cfg_attr(
42955 not(target_arch = "arm"),
42956 stable(feature = "neon_intrinsics", since = "1.59.0")
42957)]
42958#[cfg_attr(
42959 target_arch = "arm",
42960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42961)]
42962pub fn vreinterpret_u16_f32(a: float32x2_t) -> uint16x4_t {
42963 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42964 unsafe {
42965 let ret_val: uint16x4_t = transmute(a);
42966 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42967 }
42968}
42969#[doc = "Vector reinterpret cast operation"]
42970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f32)"]
42971#[inline(always)]
42972#[cfg(target_endian = "little")]
42973#[target_feature(enable = "neon")]
42974#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42975#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42976#[cfg_attr(
42977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42978 assert_instr(nop)
42979)]
42980#[cfg_attr(
42981 not(target_arch = "arm"),
42982 stable(feature = "neon_intrinsics", since = "1.59.0")
42983)]
42984#[cfg_attr(
42985 target_arch = "arm",
42986 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42987)]
42988pub fn vreinterpret_u32_f32(a: float32x2_t) -> uint32x2_t {
42989 unsafe { transmute(a) }
42990}
42991#[doc = "Vector reinterpret cast operation"]
42992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f32)"]
42993#[inline(always)]
42994#[cfg(target_endian = "big")]
42995#[target_feature(enable = "neon")]
42996#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42997#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42998#[cfg_attr(
42999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43000 assert_instr(nop)
43001)]
43002#[cfg_attr(
43003 not(target_arch = "arm"),
43004 stable(feature = "neon_intrinsics", since = "1.59.0")
43005)]
43006#[cfg_attr(
43007 target_arch = "arm",
43008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43009)]
43010pub fn vreinterpret_u32_f32(a: float32x2_t) -> uint32x2_t {
43011 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
43012 unsafe {
43013 let ret_val: uint32x2_t = transmute(a);
43014 simd_shuffle!(ret_val, ret_val, [1, 0])
43015 }
43016}
43017#[doc = "Vector reinterpret cast operation"]
43018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f32)"]
43019#[inline(always)]
43020#[cfg(target_endian = "little")]
43021#[target_feature(enable = "neon")]
43022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43023#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43024#[cfg_attr(
43025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43026 assert_instr(nop)
43027)]
43028#[cfg_attr(
43029 not(target_arch = "arm"),
43030 stable(feature = "neon_intrinsics", since = "1.59.0")
43031)]
43032#[cfg_attr(
43033 target_arch = "arm",
43034 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43035)]
43036pub fn vreinterpret_u64_f32(a: float32x2_t) -> uint64x1_t {
43037 unsafe { transmute(a) }
43038}
43039#[doc = "Vector reinterpret cast operation"]
43040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f32)"]
43041#[inline(always)]
43042#[cfg(target_endian = "big")]
43043#[target_feature(enable = "neon")]
43044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43045#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43046#[cfg_attr(
43047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43048 assert_instr(nop)
43049)]
43050#[cfg_attr(
43051 not(target_arch = "arm"),
43052 stable(feature = "neon_intrinsics", since = "1.59.0")
43053)]
43054#[cfg_attr(
43055 target_arch = "arm",
43056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43057)]
43058pub fn vreinterpret_u64_f32(a: float32x2_t) -> uint64x1_t {
43059 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
43060 unsafe { transmute(a) }
43061}
43062#[doc = "Vector reinterpret cast operation"]
43063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f32)"]
43064#[inline(always)]
43065#[cfg(target_endian = "little")]
43066#[target_feature(enable = "neon")]
43067#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43068#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43069#[cfg_attr(
43070 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43071 assert_instr(nop)
43072)]
43073#[cfg_attr(
43074 not(target_arch = "arm"),
43075 stable(feature = "neon_intrinsics", since = "1.59.0")
43076)]
43077#[cfg_attr(
43078 target_arch = "arm",
43079 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43080)]
43081pub fn vreinterpret_p8_f32(a: float32x2_t) -> poly8x8_t {
43082 unsafe { transmute(a) }
43083}
43084#[doc = "Vector reinterpret cast operation"]
43085#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f32)"]
43086#[inline(always)]
43087#[cfg(target_endian = "big")]
43088#[target_feature(enable = "neon")]
43089#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43090#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43091#[cfg_attr(
43092 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43093 assert_instr(nop)
43094)]
43095#[cfg_attr(
43096 not(target_arch = "arm"),
43097 stable(feature = "neon_intrinsics", since = "1.59.0")
43098)]
43099#[cfg_attr(
43100 target_arch = "arm",
43101 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43102)]
43103pub fn vreinterpret_p8_f32(a: float32x2_t) -> poly8x8_t {
43104 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
43105 unsafe {
43106 let ret_val: poly8x8_t = transmute(a);
43107 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43108 }
43109}
43110#[doc = "Vector reinterpret cast operation"]
43111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f32)"]
43112#[inline(always)]
43113#[cfg(target_endian = "little")]
43114#[target_feature(enable = "neon")]
43115#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43116#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43117#[cfg_attr(
43118 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43119 assert_instr(nop)
43120)]
43121#[cfg_attr(
43122 not(target_arch = "arm"),
43123 stable(feature = "neon_intrinsics", since = "1.59.0")
43124)]
43125#[cfg_attr(
43126 target_arch = "arm",
43127 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43128)]
43129pub fn vreinterpret_p16_f32(a: float32x2_t) -> poly16x4_t {
43130 unsafe { transmute(a) }
43131}
43132#[doc = "Vector reinterpret cast operation"]
43133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f32)"]
43134#[inline(always)]
43135#[cfg(target_endian = "big")]
43136#[target_feature(enable = "neon")]
43137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43138#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43139#[cfg_attr(
43140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43141 assert_instr(nop)
43142)]
43143#[cfg_attr(
43144 not(target_arch = "arm"),
43145 stable(feature = "neon_intrinsics", since = "1.59.0")
43146)]
43147#[cfg_attr(
43148 target_arch = "arm",
43149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43150)]
43151pub fn vreinterpret_p16_f32(a: float32x2_t) -> poly16x4_t {
43152 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
43153 unsafe {
43154 let ret_val: poly16x4_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_p128_f32)"]
43160#[inline(always)]
43161#[cfg(target_endian = "little")]
43162#[target_feature(enable = "neon")]
43163#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43164#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43165#[cfg_attr(
43166 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43167 assert_instr(nop)
43168)]
43169#[cfg_attr(
43170 not(target_arch = "arm"),
43171 stable(feature = "neon_intrinsics", since = "1.59.0")
43172)]
43173#[cfg_attr(
43174 target_arch = "arm",
43175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43176)]
43177pub fn vreinterpretq_p128_f32(a: float32x4_t) -> p128 {
43178 unsafe { transmute(a) }
43179}
43180#[doc = "Vector reinterpret cast operation"]
43181#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f32)"]
43182#[inline(always)]
43183#[cfg(target_endian = "big")]
43184#[target_feature(enable = "neon")]
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#[cfg_attr(
43192 not(target_arch = "arm"),
43193 stable(feature = "neon_intrinsics", since = "1.59.0")
43194)]
43195#[cfg_attr(
43196 target_arch = "arm",
43197 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43198)]
43199pub fn vreinterpretq_p128_f32(a: float32x4_t) -> p128 {
43200 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43201 unsafe { transmute(a) }
43202}
43203#[doc = "Vector reinterpret cast operation"]
43204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f32)"]
43205#[inline(always)]
43206#[cfg(target_endian = "little")]
43207#[target_feature(enable = "neon")]
43208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43209#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43210#[cfg_attr(
43211 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43212 assert_instr(nop)
43213)]
43214#[cfg_attr(
43215 not(target_arch = "arm"),
43216 stable(feature = "neon_intrinsics", since = "1.59.0")
43217)]
43218#[cfg_attr(
43219 target_arch = "arm",
43220 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43221)]
43222pub fn vreinterpretq_s8_f32(a: float32x4_t) -> int8x16_t {
43223 unsafe { transmute(a) }
43224}
43225#[doc = "Vector reinterpret cast operation"]
43226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f32)"]
43227#[inline(always)]
43228#[cfg(target_endian = "big")]
43229#[target_feature(enable = "neon")]
43230#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43231#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43232#[cfg_attr(
43233 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43234 assert_instr(nop)
43235)]
43236#[cfg_attr(
43237 not(target_arch = "arm"),
43238 stable(feature = "neon_intrinsics", since = "1.59.0")
43239)]
43240#[cfg_attr(
43241 target_arch = "arm",
43242 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43243)]
43244pub fn vreinterpretq_s8_f32(a: float32x4_t) -> int8x16_t {
43245 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43246 unsafe {
43247 let ret_val: int8x16_t = transmute(a);
43248 simd_shuffle!(
43249 ret_val,
43250 ret_val,
43251 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
43252 )
43253 }
43254}
43255#[doc = "Vector reinterpret cast operation"]
43256#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f32)"]
43257#[inline(always)]
43258#[cfg(target_endian = "little")]
43259#[target_feature(enable = "neon")]
43260#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43261#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43262#[cfg_attr(
43263 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43264 assert_instr(nop)
43265)]
43266#[cfg_attr(
43267 not(target_arch = "arm"),
43268 stable(feature = "neon_intrinsics", since = "1.59.0")
43269)]
43270#[cfg_attr(
43271 target_arch = "arm",
43272 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43273)]
43274pub fn vreinterpretq_s16_f32(a: float32x4_t) -> int16x8_t {
43275 unsafe { transmute(a) }
43276}
43277#[doc = "Vector reinterpret cast operation"]
43278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f32)"]
43279#[inline(always)]
43280#[cfg(target_endian = "big")]
43281#[target_feature(enable = "neon")]
43282#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43283#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43284#[cfg_attr(
43285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43286 assert_instr(nop)
43287)]
43288#[cfg_attr(
43289 not(target_arch = "arm"),
43290 stable(feature = "neon_intrinsics", since = "1.59.0")
43291)]
43292#[cfg_attr(
43293 target_arch = "arm",
43294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43295)]
43296pub fn vreinterpretq_s16_f32(a: float32x4_t) -> int16x8_t {
43297 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43298 unsafe {
43299 let ret_val: int16x8_t = transmute(a);
43300 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43301 }
43302}
43303#[doc = "Vector reinterpret cast operation"]
43304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f32)"]
43305#[inline(always)]
43306#[cfg(target_endian = "little")]
43307#[target_feature(enable = "neon")]
43308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43310#[cfg_attr(
43311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43312 assert_instr(nop)
43313)]
43314#[cfg_attr(
43315 not(target_arch = "arm"),
43316 stable(feature = "neon_intrinsics", since = "1.59.0")
43317)]
43318#[cfg_attr(
43319 target_arch = "arm",
43320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43321)]
43322pub fn vreinterpretq_s32_f32(a: float32x4_t) -> int32x4_t {
43323 unsafe { transmute(a) }
43324}
43325#[doc = "Vector reinterpret cast operation"]
43326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f32)"]
43327#[inline(always)]
43328#[cfg(target_endian = "big")]
43329#[target_feature(enable = "neon")]
43330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43331#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43332#[cfg_attr(
43333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43334 assert_instr(nop)
43335)]
43336#[cfg_attr(
43337 not(target_arch = "arm"),
43338 stable(feature = "neon_intrinsics", since = "1.59.0")
43339)]
43340#[cfg_attr(
43341 target_arch = "arm",
43342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43343)]
43344pub fn vreinterpretq_s32_f32(a: float32x4_t) -> int32x4_t {
43345 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43346 unsafe {
43347 let ret_val: int32x4_t = transmute(a);
43348 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43349 }
43350}
43351#[doc = "Vector reinterpret cast operation"]
43352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f32)"]
43353#[inline(always)]
43354#[cfg(target_endian = "little")]
43355#[target_feature(enable = "neon")]
43356#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43357#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43358#[cfg_attr(
43359 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43360 assert_instr(nop)
43361)]
43362#[cfg_attr(
43363 not(target_arch = "arm"),
43364 stable(feature = "neon_intrinsics", since = "1.59.0")
43365)]
43366#[cfg_attr(
43367 target_arch = "arm",
43368 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43369)]
43370pub fn vreinterpretq_s64_f32(a: float32x4_t) -> int64x2_t {
43371 unsafe { transmute(a) }
43372}
43373#[doc = "Vector reinterpret cast operation"]
43374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f32)"]
43375#[inline(always)]
43376#[cfg(target_endian = "big")]
43377#[target_feature(enable = "neon")]
43378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43379#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43380#[cfg_attr(
43381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43382 assert_instr(nop)
43383)]
43384#[cfg_attr(
43385 not(target_arch = "arm"),
43386 stable(feature = "neon_intrinsics", since = "1.59.0")
43387)]
43388#[cfg_attr(
43389 target_arch = "arm",
43390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43391)]
43392pub fn vreinterpretq_s64_f32(a: float32x4_t) -> int64x2_t {
43393 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43394 unsafe {
43395 let ret_val: int64x2_t = transmute(a);
43396 simd_shuffle!(ret_val, ret_val, [1, 0])
43397 }
43398}
43399#[doc = "Vector reinterpret cast operation"]
43400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f32)"]
43401#[inline(always)]
43402#[cfg(target_endian = "little")]
43403#[target_feature(enable = "neon")]
43404#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43405#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43406#[cfg_attr(
43407 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43408 assert_instr(nop)
43409)]
43410#[cfg_attr(
43411 not(target_arch = "arm"),
43412 stable(feature = "neon_intrinsics", since = "1.59.0")
43413)]
43414#[cfg_attr(
43415 target_arch = "arm",
43416 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43417)]
43418pub fn vreinterpretq_u8_f32(a: float32x4_t) -> uint8x16_t {
43419 unsafe { transmute(a) }
43420}
43421#[doc = "Vector reinterpret cast operation"]
43422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f32)"]
43423#[inline(always)]
43424#[cfg(target_endian = "big")]
43425#[target_feature(enable = "neon")]
43426#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43427#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43428#[cfg_attr(
43429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43430 assert_instr(nop)
43431)]
43432#[cfg_attr(
43433 not(target_arch = "arm"),
43434 stable(feature = "neon_intrinsics", since = "1.59.0")
43435)]
43436#[cfg_attr(
43437 target_arch = "arm",
43438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43439)]
43440pub fn vreinterpretq_u8_f32(a: float32x4_t) -> uint8x16_t {
43441 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43442 unsafe {
43443 let ret_val: uint8x16_t = transmute(a);
43444 simd_shuffle!(
43445 ret_val,
43446 ret_val,
43447 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
43448 )
43449 }
43450}
43451#[doc = "Vector reinterpret cast operation"]
43452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f32)"]
43453#[inline(always)]
43454#[cfg(target_endian = "little")]
43455#[target_feature(enable = "neon")]
43456#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43457#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43458#[cfg_attr(
43459 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43460 assert_instr(nop)
43461)]
43462#[cfg_attr(
43463 not(target_arch = "arm"),
43464 stable(feature = "neon_intrinsics", since = "1.59.0")
43465)]
43466#[cfg_attr(
43467 target_arch = "arm",
43468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43469)]
43470pub fn vreinterpretq_u16_f32(a: float32x4_t) -> uint16x8_t {
43471 unsafe { transmute(a) }
43472}
43473#[doc = "Vector reinterpret cast operation"]
43474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f32)"]
43475#[inline(always)]
43476#[cfg(target_endian = "big")]
43477#[target_feature(enable = "neon")]
43478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43480#[cfg_attr(
43481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43482 assert_instr(nop)
43483)]
43484#[cfg_attr(
43485 not(target_arch = "arm"),
43486 stable(feature = "neon_intrinsics", since = "1.59.0")
43487)]
43488#[cfg_attr(
43489 target_arch = "arm",
43490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43491)]
43492pub fn vreinterpretq_u16_f32(a: float32x4_t) -> uint16x8_t {
43493 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43494 unsafe {
43495 let ret_val: uint16x8_t = transmute(a);
43496 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43497 }
43498}
43499#[doc = "Vector reinterpret cast operation"]
43500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f32)"]
43501#[inline(always)]
43502#[cfg(target_endian = "little")]
43503#[target_feature(enable = "neon")]
43504#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43505#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43506#[cfg_attr(
43507 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43508 assert_instr(nop)
43509)]
43510#[cfg_attr(
43511 not(target_arch = "arm"),
43512 stable(feature = "neon_intrinsics", since = "1.59.0")
43513)]
43514#[cfg_attr(
43515 target_arch = "arm",
43516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43517)]
43518pub fn vreinterpretq_u32_f32(a: float32x4_t) -> uint32x4_t {
43519 unsafe { transmute(a) }
43520}
43521#[doc = "Vector reinterpret cast operation"]
43522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f32)"]
43523#[inline(always)]
43524#[cfg(target_endian = "big")]
43525#[target_feature(enable = "neon")]
43526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43528#[cfg_attr(
43529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43530 assert_instr(nop)
43531)]
43532#[cfg_attr(
43533 not(target_arch = "arm"),
43534 stable(feature = "neon_intrinsics", since = "1.59.0")
43535)]
43536#[cfg_attr(
43537 target_arch = "arm",
43538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43539)]
43540pub fn vreinterpretq_u32_f32(a: float32x4_t) -> uint32x4_t {
43541 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43542 unsafe {
43543 let ret_val: uint32x4_t = transmute(a);
43544 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43545 }
43546}
43547#[doc = "Vector reinterpret cast operation"]
43548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f32)"]
43549#[inline(always)]
43550#[cfg(target_endian = "little")]
43551#[target_feature(enable = "neon")]
43552#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43553#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43554#[cfg_attr(
43555 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43556 assert_instr(nop)
43557)]
43558#[cfg_attr(
43559 not(target_arch = "arm"),
43560 stable(feature = "neon_intrinsics", since = "1.59.0")
43561)]
43562#[cfg_attr(
43563 target_arch = "arm",
43564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43565)]
43566pub fn vreinterpretq_u64_f32(a: float32x4_t) -> uint64x2_t {
43567 unsafe { transmute(a) }
43568}
43569#[doc = "Vector reinterpret cast operation"]
43570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f32)"]
43571#[inline(always)]
43572#[cfg(target_endian = "big")]
43573#[target_feature(enable = "neon")]
43574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43575#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43576#[cfg_attr(
43577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43578 assert_instr(nop)
43579)]
43580#[cfg_attr(
43581 not(target_arch = "arm"),
43582 stable(feature = "neon_intrinsics", since = "1.59.0")
43583)]
43584#[cfg_attr(
43585 target_arch = "arm",
43586 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43587)]
43588pub fn vreinterpretq_u64_f32(a: float32x4_t) -> uint64x2_t {
43589 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43590 unsafe {
43591 let ret_val: uint64x2_t = transmute(a);
43592 simd_shuffle!(ret_val, ret_val, [1, 0])
43593 }
43594}
43595#[doc = "Vector reinterpret cast operation"]
43596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f32)"]
43597#[inline(always)]
43598#[cfg(target_endian = "little")]
43599#[target_feature(enable = "neon")]
43600#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43601#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43602#[cfg_attr(
43603 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43604 assert_instr(nop)
43605)]
43606#[cfg_attr(
43607 not(target_arch = "arm"),
43608 stable(feature = "neon_intrinsics", since = "1.59.0")
43609)]
43610#[cfg_attr(
43611 target_arch = "arm",
43612 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43613)]
43614pub fn vreinterpretq_p8_f32(a: float32x4_t) -> poly8x16_t {
43615 unsafe { transmute(a) }
43616}
43617#[doc = "Vector reinterpret cast operation"]
43618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f32)"]
43619#[inline(always)]
43620#[cfg(target_endian = "big")]
43621#[target_feature(enable = "neon")]
43622#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43623#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43624#[cfg_attr(
43625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43626 assert_instr(nop)
43627)]
43628#[cfg_attr(
43629 not(target_arch = "arm"),
43630 stable(feature = "neon_intrinsics", since = "1.59.0")
43631)]
43632#[cfg_attr(
43633 target_arch = "arm",
43634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43635)]
43636pub fn vreinterpretq_p8_f32(a: float32x4_t) -> poly8x16_t {
43637 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43638 unsafe {
43639 let ret_val: poly8x16_t = transmute(a);
43640 simd_shuffle!(
43641 ret_val,
43642 ret_val,
43643 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
43644 )
43645 }
43646}
43647#[doc = "Vector reinterpret cast operation"]
43648#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f32)"]
43649#[inline(always)]
43650#[cfg(target_endian = "little")]
43651#[target_feature(enable = "neon")]
43652#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43653#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43654#[cfg_attr(
43655 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43656 assert_instr(nop)
43657)]
43658#[cfg_attr(
43659 not(target_arch = "arm"),
43660 stable(feature = "neon_intrinsics", since = "1.59.0")
43661)]
43662#[cfg_attr(
43663 target_arch = "arm",
43664 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43665)]
43666pub fn vreinterpretq_p16_f32(a: float32x4_t) -> poly16x8_t {
43667 unsafe { transmute(a) }
43668}
43669#[doc = "Vector reinterpret cast operation"]
43670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f32)"]
43671#[inline(always)]
43672#[cfg(target_endian = "big")]
43673#[target_feature(enable = "neon")]
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#[cfg_attr(
43681 not(target_arch = "arm"),
43682 stable(feature = "neon_intrinsics", since = "1.59.0")
43683)]
43684#[cfg_attr(
43685 target_arch = "arm",
43686 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43687)]
43688pub fn vreinterpretq_p16_f32(a: float32x4_t) -> poly16x8_t {
43689 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43690 unsafe {
43691 let ret_val: poly16x8_t = transmute(a);
43692 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43693 }
43694}
43695#[doc = "Vector reinterpret cast operation"]
43696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s8)"]
43697#[inline(always)]
43698#[cfg(target_endian = "little")]
43699#[target_feature(enable = "neon")]
43700#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43701#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43702#[cfg_attr(
43703 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43704 assert_instr(nop)
43705)]
43706#[cfg_attr(
43707 not(target_arch = "arm"),
43708 stable(feature = "neon_intrinsics", since = "1.59.0")
43709)]
43710#[cfg_attr(
43711 target_arch = "arm",
43712 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43713)]
43714pub fn vreinterpret_f32_s8(a: int8x8_t) -> float32x2_t {
43715 unsafe { transmute(a) }
43716}
43717#[doc = "Vector reinterpret cast operation"]
43718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s8)"]
43719#[inline(always)]
43720#[cfg(target_endian = "big")]
43721#[target_feature(enable = "neon")]
43722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43724#[cfg_attr(
43725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43726 assert_instr(nop)
43727)]
43728#[cfg_attr(
43729 not(target_arch = "arm"),
43730 stable(feature = "neon_intrinsics", since = "1.59.0")
43731)]
43732#[cfg_attr(
43733 target_arch = "arm",
43734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43735)]
43736pub fn vreinterpret_f32_s8(a: int8x8_t) -> float32x2_t {
43737 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43738 unsafe {
43739 let ret_val: float32x2_t = transmute(a);
43740 simd_shuffle!(ret_val, ret_val, [1, 0])
43741 }
43742}
43743#[doc = "Vector reinterpret cast operation"]
43744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s8)"]
43745#[inline(always)]
43746#[cfg(target_endian = "little")]
43747#[target_feature(enable = "neon")]
43748#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43749#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43750#[cfg_attr(
43751 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43752 assert_instr(nop)
43753)]
43754#[cfg_attr(
43755 not(target_arch = "arm"),
43756 stable(feature = "neon_intrinsics", since = "1.59.0")
43757)]
43758#[cfg_attr(
43759 target_arch = "arm",
43760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43761)]
43762pub fn vreinterpret_s16_s8(a: int8x8_t) -> int16x4_t {
43763 unsafe { transmute(a) }
43764}
43765#[doc = "Vector reinterpret cast operation"]
43766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s8)"]
43767#[inline(always)]
43768#[cfg(target_endian = "big")]
43769#[target_feature(enable = "neon")]
43770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43772#[cfg_attr(
43773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43774 assert_instr(nop)
43775)]
43776#[cfg_attr(
43777 not(target_arch = "arm"),
43778 stable(feature = "neon_intrinsics", since = "1.59.0")
43779)]
43780#[cfg_attr(
43781 target_arch = "arm",
43782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43783)]
43784pub fn vreinterpret_s16_s8(a: int8x8_t) -> int16x4_t {
43785 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43786 unsafe {
43787 let ret_val: int16x4_t = transmute(a);
43788 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43789 }
43790}
43791#[doc = "Vector reinterpret cast operation"]
43792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s8)"]
43793#[inline(always)]
43794#[cfg(target_endian = "little")]
43795#[target_feature(enable = "neon")]
43796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43798#[cfg_attr(
43799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43800 assert_instr(nop)
43801)]
43802#[cfg_attr(
43803 not(target_arch = "arm"),
43804 stable(feature = "neon_intrinsics", since = "1.59.0")
43805)]
43806#[cfg_attr(
43807 target_arch = "arm",
43808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43809)]
43810pub fn vreinterpret_s32_s8(a: int8x8_t) -> int32x2_t {
43811 unsafe { transmute(a) }
43812}
43813#[doc = "Vector reinterpret cast operation"]
43814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s8)"]
43815#[inline(always)]
43816#[cfg(target_endian = "big")]
43817#[target_feature(enable = "neon")]
43818#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43819#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43820#[cfg_attr(
43821 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43822 assert_instr(nop)
43823)]
43824#[cfg_attr(
43825 not(target_arch = "arm"),
43826 stable(feature = "neon_intrinsics", since = "1.59.0")
43827)]
43828#[cfg_attr(
43829 target_arch = "arm",
43830 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43831)]
43832pub fn vreinterpret_s32_s8(a: int8x8_t) -> int32x2_t {
43833 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43834 unsafe {
43835 let ret_val: int32x2_t = transmute(a);
43836 simd_shuffle!(ret_val, ret_val, [1, 0])
43837 }
43838}
43839#[doc = "Vector reinterpret cast operation"]
43840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s8)"]
43841#[inline(always)]
43842#[cfg(target_endian = "little")]
43843#[target_feature(enable = "neon")]
43844#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43845#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43846#[cfg_attr(
43847 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43848 assert_instr(nop)
43849)]
43850#[cfg_attr(
43851 not(target_arch = "arm"),
43852 stable(feature = "neon_intrinsics", since = "1.59.0")
43853)]
43854#[cfg_attr(
43855 target_arch = "arm",
43856 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43857)]
43858pub fn vreinterpret_s64_s8(a: int8x8_t) -> int64x1_t {
43859 unsafe { transmute(a) }
43860}
43861#[doc = "Vector reinterpret cast operation"]
43862#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s8)"]
43863#[inline(always)]
43864#[cfg(target_endian = "big")]
43865#[target_feature(enable = "neon")]
43866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43867#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43868#[cfg_attr(
43869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43870 assert_instr(nop)
43871)]
43872#[cfg_attr(
43873 not(target_arch = "arm"),
43874 stable(feature = "neon_intrinsics", since = "1.59.0")
43875)]
43876#[cfg_attr(
43877 target_arch = "arm",
43878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43879)]
43880pub fn vreinterpret_s64_s8(a: int8x8_t) -> int64x1_t {
43881 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43882 unsafe { transmute(a) }
43883}
43884#[doc = "Vector reinterpret cast operation"]
43885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s8)"]
43886#[inline(always)]
43887#[cfg(target_endian = "little")]
43888#[target_feature(enable = "neon")]
43889#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43890#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43891#[cfg_attr(
43892 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43893 assert_instr(nop)
43894)]
43895#[cfg_attr(
43896 not(target_arch = "arm"),
43897 stable(feature = "neon_intrinsics", since = "1.59.0")
43898)]
43899#[cfg_attr(
43900 target_arch = "arm",
43901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43902)]
43903pub fn vreinterpret_u8_s8(a: int8x8_t) -> uint8x8_t {
43904 unsafe { transmute(a) }
43905}
43906#[doc = "Vector reinterpret cast operation"]
43907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s8)"]
43908#[inline(always)]
43909#[cfg(target_endian = "big")]
43910#[target_feature(enable = "neon")]
43911#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43912#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43913#[cfg_attr(
43914 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43915 assert_instr(nop)
43916)]
43917#[cfg_attr(
43918 not(target_arch = "arm"),
43919 stable(feature = "neon_intrinsics", since = "1.59.0")
43920)]
43921#[cfg_attr(
43922 target_arch = "arm",
43923 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43924)]
43925pub fn vreinterpret_u8_s8(a: int8x8_t) -> uint8x8_t {
43926 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43927 unsafe {
43928 let ret_val: uint8x8_t = transmute(a);
43929 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43930 }
43931}
43932#[doc = "Vector reinterpret cast operation"]
43933#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s8)"]
43934#[inline(always)]
43935#[cfg(target_endian = "little")]
43936#[target_feature(enable = "neon")]
43937#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43938#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43939#[cfg_attr(
43940 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43941 assert_instr(nop)
43942)]
43943#[cfg_attr(
43944 not(target_arch = "arm"),
43945 stable(feature = "neon_intrinsics", since = "1.59.0")
43946)]
43947#[cfg_attr(
43948 target_arch = "arm",
43949 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43950)]
43951pub fn vreinterpret_u16_s8(a: int8x8_t) -> uint16x4_t {
43952 unsafe { transmute(a) }
43953}
43954#[doc = "Vector reinterpret cast operation"]
43955#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s8)"]
43956#[inline(always)]
43957#[cfg(target_endian = "big")]
43958#[target_feature(enable = "neon")]
43959#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43960#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43961#[cfg_attr(
43962 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43963 assert_instr(nop)
43964)]
43965#[cfg_attr(
43966 not(target_arch = "arm"),
43967 stable(feature = "neon_intrinsics", since = "1.59.0")
43968)]
43969#[cfg_attr(
43970 target_arch = "arm",
43971 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43972)]
43973pub fn vreinterpret_u16_s8(a: int8x8_t) -> uint16x4_t {
43974 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43975 unsafe {
43976 let ret_val: uint16x4_t = transmute(a);
43977 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43978 }
43979}
43980#[doc = "Vector reinterpret cast operation"]
43981#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s8)"]
43982#[inline(always)]
43983#[cfg(target_endian = "little")]
43984#[target_feature(enable = "neon")]
43985#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43986#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43987#[cfg_attr(
43988 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43989 assert_instr(nop)
43990)]
43991#[cfg_attr(
43992 not(target_arch = "arm"),
43993 stable(feature = "neon_intrinsics", since = "1.59.0")
43994)]
43995#[cfg_attr(
43996 target_arch = "arm",
43997 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43998)]
43999pub fn vreinterpret_u32_s8(a: int8x8_t) -> uint32x2_t {
44000 unsafe { transmute(a) }
44001}
44002#[doc = "Vector reinterpret cast operation"]
44003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s8)"]
44004#[inline(always)]
44005#[cfg(target_endian = "big")]
44006#[target_feature(enable = "neon")]
44007#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44008#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44009#[cfg_attr(
44010 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44011 assert_instr(nop)
44012)]
44013#[cfg_attr(
44014 not(target_arch = "arm"),
44015 stable(feature = "neon_intrinsics", since = "1.59.0")
44016)]
44017#[cfg_attr(
44018 target_arch = "arm",
44019 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44020)]
44021pub fn vreinterpret_u32_s8(a: int8x8_t) -> uint32x2_t {
44022 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44023 unsafe {
44024 let ret_val: uint32x2_t = transmute(a);
44025 simd_shuffle!(ret_val, ret_val, [1, 0])
44026 }
44027}
44028#[doc = "Vector reinterpret cast operation"]
44029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s8)"]
44030#[inline(always)]
44031#[cfg(target_endian = "little")]
44032#[target_feature(enable = "neon")]
44033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44034#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44035#[cfg_attr(
44036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44037 assert_instr(nop)
44038)]
44039#[cfg_attr(
44040 not(target_arch = "arm"),
44041 stable(feature = "neon_intrinsics", since = "1.59.0")
44042)]
44043#[cfg_attr(
44044 target_arch = "arm",
44045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44046)]
44047pub fn vreinterpret_u64_s8(a: int8x8_t) -> uint64x1_t {
44048 unsafe { transmute(a) }
44049}
44050#[doc = "Vector reinterpret cast operation"]
44051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s8)"]
44052#[inline(always)]
44053#[cfg(target_endian = "big")]
44054#[target_feature(enable = "neon")]
44055#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44056#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44057#[cfg_attr(
44058 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44059 assert_instr(nop)
44060)]
44061#[cfg_attr(
44062 not(target_arch = "arm"),
44063 stable(feature = "neon_intrinsics", since = "1.59.0")
44064)]
44065#[cfg_attr(
44066 target_arch = "arm",
44067 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44068)]
44069pub fn vreinterpret_u64_s8(a: int8x8_t) -> uint64x1_t {
44070 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44071 unsafe { transmute(a) }
44072}
44073#[doc = "Vector reinterpret cast operation"]
44074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s8)"]
44075#[inline(always)]
44076#[cfg(target_endian = "little")]
44077#[target_feature(enable = "neon")]
44078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44079#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44080#[cfg_attr(
44081 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44082 assert_instr(nop)
44083)]
44084#[cfg_attr(
44085 not(target_arch = "arm"),
44086 stable(feature = "neon_intrinsics", since = "1.59.0")
44087)]
44088#[cfg_attr(
44089 target_arch = "arm",
44090 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44091)]
44092pub fn vreinterpret_p8_s8(a: int8x8_t) -> poly8x8_t {
44093 unsafe { transmute(a) }
44094}
44095#[doc = "Vector reinterpret cast operation"]
44096#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s8)"]
44097#[inline(always)]
44098#[cfg(target_endian = "big")]
44099#[target_feature(enable = "neon")]
44100#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44101#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44102#[cfg_attr(
44103 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44104 assert_instr(nop)
44105)]
44106#[cfg_attr(
44107 not(target_arch = "arm"),
44108 stable(feature = "neon_intrinsics", since = "1.59.0")
44109)]
44110#[cfg_attr(
44111 target_arch = "arm",
44112 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44113)]
44114pub fn vreinterpret_p8_s8(a: int8x8_t) -> poly8x8_t {
44115 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44116 unsafe {
44117 let ret_val: poly8x8_t = transmute(a);
44118 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44119 }
44120}
44121#[doc = "Vector reinterpret cast operation"]
44122#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s8)"]
44123#[inline(always)]
44124#[cfg(target_endian = "little")]
44125#[target_feature(enable = "neon")]
44126#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44127#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44128#[cfg_attr(
44129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44130 assert_instr(nop)
44131)]
44132#[cfg_attr(
44133 not(target_arch = "arm"),
44134 stable(feature = "neon_intrinsics", since = "1.59.0")
44135)]
44136#[cfg_attr(
44137 target_arch = "arm",
44138 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44139)]
44140pub fn vreinterpret_p16_s8(a: int8x8_t) -> poly16x4_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/vreinterpret_p16_s8)"]
44145#[inline(always)]
44146#[cfg(target_endian = "big")]
44147#[target_feature(enable = "neon")]
44148#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44149#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44150#[cfg_attr(
44151 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44152 assert_instr(nop)
44153)]
44154#[cfg_attr(
44155 not(target_arch = "arm"),
44156 stable(feature = "neon_intrinsics", since = "1.59.0")
44157)]
44158#[cfg_attr(
44159 target_arch = "arm",
44160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44161)]
44162pub fn vreinterpret_p16_s8(a: int8x8_t) -> poly16x4_t {
44163 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44164 unsafe {
44165 let ret_val: poly16x4_t = transmute(a);
44166 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44167 }
44168}
44169#[doc = "Vector reinterpret cast operation"]
44170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s8)"]
44171#[inline(always)]
44172#[cfg(target_endian = "little")]
44173#[target_feature(enable = "neon")]
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#[cfg_attr(
44181 not(target_arch = "arm"),
44182 stable(feature = "neon_intrinsics", since = "1.59.0")
44183)]
44184#[cfg_attr(
44185 target_arch = "arm",
44186 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44187)]
44188pub fn vreinterpretq_f32_s8(a: int8x16_t) -> float32x4_t {
44189 unsafe { transmute(a) }
44190}
44191#[doc = "Vector reinterpret cast operation"]
44192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s8)"]
44193#[inline(always)]
44194#[cfg(target_endian = "big")]
44195#[target_feature(enable = "neon")]
44196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44197#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44198#[cfg_attr(
44199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44200 assert_instr(nop)
44201)]
44202#[cfg_attr(
44203 not(target_arch = "arm"),
44204 stable(feature = "neon_intrinsics", since = "1.59.0")
44205)]
44206#[cfg_attr(
44207 target_arch = "arm",
44208 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44209)]
44210pub fn vreinterpretq_f32_s8(a: int8x16_t) -> float32x4_t {
44211 let a: int8x16_t =
44212 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44213 unsafe {
44214 let ret_val: float32x4_t = transmute(a);
44215 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44216 }
44217}
44218#[doc = "Vector reinterpret cast operation"]
44219#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s8)"]
44220#[inline(always)]
44221#[cfg(target_endian = "little")]
44222#[target_feature(enable = "neon")]
44223#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44224#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44225#[cfg_attr(
44226 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44227 assert_instr(nop)
44228)]
44229#[cfg_attr(
44230 not(target_arch = "arm"),
44231 stable(feature = "neon_intrinsics", since = "1.59.0")
44232)]
44233#[cfg_attr(
44234 target_arch = "arm",
44235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44236)]
44237pub fn vreinterpretq_s16_s8(a: int8x16_t) -> int16x8_t {
44238 unsafe { transmute(a) }
44239}
44240#[doc = "Vector reinterpret cast operation"]
44241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s8)"]
44242#[inline(always)]
44243#[cfg(target_endian = "big")]
44244#[target_feature(enable = "neon")]
44245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44247#[cfg_attr(
44248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44249 assert_instr(nop)
44250)]
44251#[cfg_attr(
44252 not(target_arch = "arm"),
44253 stable(feature = "neon_intrinsics", since = "1.59.0")
44254)]
44255#[cfg_attr(
44256 target_arch = "arm",
44257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44258)]
44259pub fn vreinterpretq_s16_s8(a: int8x16_t) -> int16x8_t {
44260 let a: int8x16_t =
44261 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44262 unsafe {
44263 let ret_val: int16x8_t = transmute(a);
44264 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44265 }
44266}
44267#[doc = "Vector reinterpret cast operation"]
44268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s8)"]
44269#[inline(always)]
44270#[cfg(target_endian = "little")]
44271#[target_feature(enable = "neon")]
44272#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44273#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44274#[cfg_attr(
44275 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44276 assert_instr(nop)
44277)]
44278#[cfg_attr(
44279 not(target_arch = "arm"),
44280 stable(feature = "neon_intrinsics", since = "1.59.0")
44281)]
44282#[cfg_attr(
44283 target_arch = "arm",
44284 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44285)]
44286pub fn vreinterpretq_s32_s8(a: int8x16_t) -> int32x4_t {
44287 unsafe { transmute(a) }
44288}
44289#[doc = "Vector reinterpret cast operation"]
44290#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s8)"]
44291#[inline(always)]
44292#[cfg(target_endian = "big")]
44293#[target_feature(enable = "neon")]
44294#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44295#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44296#[cfg_attr(
44297 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44298 assert_instr(nop)
44299)]
44300#[cfg_attr(
44301 not(target_arch = "arm"),
44302 stable(feature = "neon_intrinsics", since = "1.59.0")
44303)]
44304#[cfg_attr(
44305 target_arch = "arm",
44306 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44307)]
44308pub fn vreinterpretq_s32_s8(a: int8x16_t) -> int32x4_t {
44309 let a: int8x16_t =
44310 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44311 unsafe {
44312 let ret_val: int32x4_t = transmute(a);
44313 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44314 }
44315}
44316#[doc = "Vector reinterpret cast operation"]
44317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s8)"]
44318#[inline(always)]
44319#[cfg(target_endian = "little")]
44320#[target_feature(enable = "neon")]
44321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44322#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44323#[cfg_attr(
44324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44325 assert_instr(nop)
44326)]
44327#[cfg_attr(
44328 not(target_arch = "arm"),
44329 stable(feature = "neon_intrinsics", since = "1.59.0")
44330)]
44331#[cfg_attr(
44332 target_arch = "arm",
44333 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44334)]
44335pub fn vreinterpretq_s64_s8(a: int8x16_t) -> int64x2_t {
44336 unsafe { transmute(a) }
44337}
44338#[doc = "Vector reinterpret cast operation"]
44339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s8)"]
44340#[inline(always)]
44341#[cfg(target_endian = "big")]
44342#[target_feature(enable = "neon")]
44343#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44344#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44345#[cfg_attr(
44346 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44347 assert_instr(nop)
44348)]
44349#[cfg_attr(
44350 not(target_arch = "arm"),
44351 stable(feature = "neon_intrinsics", since = "1.59.0")
44352)]
44353#[cfg_attr(
44354 target_arch = "arm",
44355 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44356)]
44357pub fn vreinterpretq_s64_s8(a: int8x16_t) -> int64x2_t {
44358 let a: int8x16_t =
44359 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44360 unsafe {
44361 let ret_val: int64x2_t = transmute(a);
44362 simd_shuffle!(ret_val, ret_val, [1, 0])
44363 }
44364}
44365#[doc = "Vector reinterpret cast operation"]
44366#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s8)"]
44367#[inline(always)]
44368#[cfg(target_endian = "little")]
44369#[target_feature(enable = "neon")]
44370#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44371#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44372#[cfg_attr(
44373 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44374 assert_instr(nop)
44375)]
44376#[cfg_attr(
44377 not(target_arch = "arm"),
44378 stable(feature = "neon_intrinsics", since = "1.59.0")
44379)]
44380#[cfg_attr(
44381 target_arch = "arm",
44382 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44383)]
44384pub fn vreinterpretq_u8_s8(a: int8x16_t) -> uint8x16_t {
44385 unsafe { transmute(a) }
44386}
44387#[doc = "Vector reinterpret cast operation"]
44388#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s8)"]
44389#[inline(always)]
44390#[cfg(target_endian = "big")]
44391#[target_feature(enable = "neon")]
44392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44394#[cfg_attr(
44395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44396 assert_instr(nop)
44397)]
44398#[cfg_attr(
44399 not(target_arch = "arm"),
44400 stable(feature = "neon_intrinsics", since = "1.59.0")
44401)]
44402#[cfg_attr(
44403 target_arch = "arm",
44404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44405)]
44406pub fn vreinterpretq_u8_s8(a: int8x16_t) -> uint8x16_t {
44407 let a: int8x16_t =
44408 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44409 unsafe {
44410 let ret_val: uint8x16_t = transmute(a);
44411 simd_shuffle!(
44412 ret_val,
44413 ret_val,
44414 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
44415 )
44416 }
44417}
44418#[doc = "Vector reinterpret cast operation"]
44419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s8)"]
44420#[inline(always)]
44421#[cfg(target_endian = "little")]
44422#[target_feature(enable = "neon")]
44423#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44424#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44425#[cfg_attr(
44426 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44427 assert_instr(nop)
44428)]
44429#[cfg_attr(
44430 not(target_arch = "arm"),
44431 stable(feature = "neon_intrinsics", since = "1.59.0")
44432)]
44433#[cfg_attr(
44434 target_arch = "arm",
44435 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44436)]
44437pub fn vreinterpretq_u16_s8(a: int8x16_t) -> uint16x8_t {
44438 unsafe { transmute(a) }
44439}
44440#[doc = "Vector reinterpret cast operation"]
44441#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s8)"]
44442#[inline(always)]
44443#[cfg(target_endian = "big")]
44444#[target_feature(enable = "neon")]
44445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44446#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44447#[cfg_attr(
44448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44449 assert_instr(nop)
44450)]
44451#[cfg_attr(
44452 not(target_arch = "arm"),
44453 stable(feature = "neon_intrinsics", since = "1.59.0")
44454)]
44455#[cfg_attr(
44456 target_arch = "arm",
44457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44458)]
44459pub fn vreinterpretq_u16_s8(a: int8x16_t) -> uint16x8_t {
44460 let a: int8x16_t =
44461 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44462 unsafe {
44463 let ret_val: uint16x8_t = transmute(a);
44464 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44465 }
44466}
44467#[doc = "Vector reinterpret cast operation"]
44468#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s8)"]
44469#[inline(always)]
44470#[cfg(target_endian = "little")]
44471#[target_feature(enable = "neon")]
44472#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44473#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44474#[cfg_attr(
44475 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44476 assert_instr(nop)
44477)]
44478#[cfg_attr(
44479 not(target_arch = "arm"),
44480 stable(feature = "neon_intrinsics", since = "1.59.0")
44481)]
44482#[cfg_attr(
44483 target_arch = "arm",
44484 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44485)]
44486pub fn vreinterpretq_u32_s8(a: int8x16_t) -> uint32x4_t {
44487 unsafe { transmute(a) }
44488}
44489#[doc = "Vector reinterpret cast operation"]
44490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s8)"]
44491#[inline(always)]
44492#[cfg(target_endian = "big")]
44493#[target_feature(enable = "neon")]
44494#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44495#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44496#[cfg_attr(
44497 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44498 assert_instr(nop)
44499)]
44500#[cfg_attr(
44501 not(target_arch = "arm"),
44502 stable(feature = "neon_intrinsics", since = "1.59.0")
44503)]
44504#[cfg_attr(
44505 target_arch = "arm",
44506 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44507)]
44508pub fn vreinterpretq_u32_s8(a: int8x16_t) -> uint32x4_t {
44509 let a: int8x16_t =
44510 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44511 unsafe {
44512 let ret_val: uint32x4_t = transmute(a);
44513 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44514 }
44515}
44516#[doc = "Vector reinterpret cast operation"]
44517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s8)"]
44518#[inline(always)]
44519#[cfg(target_endian = "little")]
44520#[target_feature(enable = "neon")]
44521#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44522#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44523#[cfg_attr(
44524 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44525 assert_instr(nop)
44526)]
44527#[cfg_attr(
44528 not(target_arch = "arm"),
44529 stable(feature = "neon_intrinsics", since = "1.59.0")
44530)]
44531#[cfg_attr(
44532 target_arch = "arm",
44533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44534)]
44535pub fn vreinterpretq_u64_s8(a: int8x16_t) -> uint64x2_t {
44536 unsafe { transmute(a) }
44537}
44538#[doc = "Vector reinterpret cast operation"]
44539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s8)"]
44540#[inline(always)]
44541#[cfg(target_endian = "big")]
44542#[target_feature(enable = "neon")]
44543#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44544#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44545#[cfg_attr(
44546 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44547 assert_instr(nop)
44548)]
44549#[cfg_attr(
44550 not(target_arch = "arm"),
44551 stable(feature = "neon_intrinsics", since = "1.59.0")
44552)]
44553#[cfg_attr(
44554 target_arch = "arm",
44555 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44556)]
44557pub fn vreinterpretq_u64_s8(a: int8x16_t) -> uint64x2_t {
44558 let a: int8x16_t =
44559 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44560 unsafe {
44561 let ret_val: uint64x2_t = transmute(a);
44562 simd_shuffle!(ret_val, ret_val, [1, 0])
44563 }
44564}
44565#[doc = "Vector reinterpret cast operation"]
44566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s8)"]
44567#[inline(always)]
44568#[cfg(target_endian = "little")]
44569#[target_feature(enable = "neon")]
44570#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44571#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44572#[cfg_attr(
44573 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44574 assert_instr(nop)
44575)]
44576#[cfg_attr(
44577 not(target_arch = "arm"),
44578 stable(feature = "neon_intrinsics", since = "1.59.0")
44579)]
44580#[cfg_attr(
44581 target_arch = "arm",
44582 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44583)]
44584pub fn vreinterpretq_p8_s8(a: int8x16_t) -> poly8x16_t {
44585 unsafe { transmute(a) }
44586}
44587#[doc = "Vector reinterpret cast operation"]
44588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s8)"]
44589#[inline(always)]
44590#[cfg(target_endian = "big")]
44591#[target_feature(enable = "neon")]
44592#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44593#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44594#[cfg_attr(
44595 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44596 assert_instr(nop)
44597)]
44598#[cfg_attr(
44599 not(target_arch = "arm"),
44600 stable(feature = "neon_intrinsics", since = "1.59.0")
44601)]
44602#[cfg_attr(
44603 target_arch = "arm",
44604 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44605)]
44606pub fn vreinterpretq_p8_s8(a: int8x16_t) -> poly8x16_t {
44607 let a: int8x16_t =
44608 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44609 unsafe {
44610 let ret_val: poly8x16_t = transmute(a);
44611 simd_shuffle!(
44612 ret_val,
44613 ret_val,
44614 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
44615 )
44616 }
44617}
44618#[doc = "Vector reinterpret cast operation"]
44619#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s8)"]
44620#[inline(always)]
44621#[cfg(target_endian = "little")]
44622#[target_feature(enable = "neon")]
44623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44624#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44625#[cfg_attr(
44626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44627 assert_instr(nop)
44628)]
44629#[cfg_attr(
44630 not(target_arch = "arm"),
44631 stable(feature = "neon_intrinsics", since = "1.59.0")
44632)]
44633#[cfg_attr(
44634 target_arch = "arm",
44635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44636)]
44637pub fn vreinterpretq_p16_s8(a: int8x16_t) -> poly16x8_t {
44638 unsafe { transmute(a) }
44639}
44640#[doc = "Vector reinterpret cast operation"]
44641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s8)"]
44642#[inline(always)]
44643#[cfg(target_endian = "big")]
44644#[target_feature(enable = "neon")]
44645#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44646#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44647#[cfg_attr(
44648 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44649 assert_instr(nop)
44650)]
44651#[cfg_attr(
44652 not(target_arch = "arm"),
44653 stable(feature = "neon_intrinsics", since = "1.59.0")
44654)]
44655#[cfg_attr(
44656 target_arch = "arm",
44657 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44658)]
44659pub fn vreinterpretq_p16_s8(a: int8x16_t) -> poly16x8_t {
44660 let a: int8x16_t =
44661 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44662 unsafe {
44663 let ret_val: poly16x8_t = transmute(a);
44664 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44665 }
44666}
44667#[doc = "Vector reinterpret cast operation"]
44668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s16)"]
44669#[inline(always)]
44670#[cfg(target_endian = "little")]
44671#[target_feature(enable = "neon")]
44672#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44673#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44674#[cfg_attr(
44675 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44676 assert_instr(nop)
44677)]
44678#[cfg_attr(
44679 not(target_arch = "arm"),
44680 stable(feature = "neon_intrinsics", since = "1.59.0")
44681)]
44682#[cfg_attr(
44683 target_arch = "arm",
44684 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44685)]
44686pub fn vreinterpret_f32_s16(a: int16x4_t) -> float32x2_t {
44687 unsafe { transmute(a) }
44688}
44689#[doc = "Vector reinterpret cast operation"]
44690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s16)"]
44691#[inline(always)]
44692#[cfg(target_endian = "big")]
44693#[target_feature(enable = "neon")]
44694#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44695#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44696#[cfg_attr(
44697 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44698 assert_instr(nop)
44699)]
44700#[cfg_attr(
44701 not(target_arch = "arm"),
44702 stable(feature = "neon_intrinsics", since = "1.59.0")
44703)]
44704#[cfg_attr(
44705 target_arch = "arm",
44706 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44707)]
44708pub fn vreinterpret_f32_s16(a: int16x4_t) -> float32x2_t {
44709 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44710 unsafe {
44711 let ret_val: float32x2_t = transmute(a);
44712 simd_shuffle!(ret_val, ret_val, [1, 0])
44713 }
44714}
44715#[doc = "Vector reinterpret cast operation"]
44716#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s16)"]
44717#[inline(always)]
44718#[cfg(target_endian = "little")]
44719#[target_feature(enable = "neon")]
44720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44721#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44722#[cfg_attr(
44723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44724 assert_instr(nop)
44725)]
44726#[cfg_attr(
44727 not(target_arch = "arm"),
44728 stable(feature = "neon_intrinsics", since = "1.59.0")
44729)]
44730#[cfg_attr(
44731 target_arch = "arm",
44732 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44733)]
44734pub fn vreinterpret_s8_s16(a: int16x4_t) -> int8x8_t {
44735 unsafe { transmute(a) }
44736}
44737#[doc = "Vector reinterpret cast operation"]
44738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s16)"]
44739#[inline(always)]
44740#[cfg(target_endian = "big")]
44741#[target_feature(enable = "neon")]
44742#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44743#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44744#[cfg_attr(
44745 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44746 assert_instr(nop)
44747)]
44748#[cfg_attr(
44749 not(target_arch = "arm"),
44750 stable(feature = "neon_intrinsics", since = "1.59.0")
44751)]
44752#[cfg_attr(
44753 target_arch = "arm",
44754 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44755)]
44756pub fn vreinterpret_s8_s16(a: int16x4_t) -> int8x8_t {
44757 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44758 unsafe {
44759 let ret_val: int8x8_t = transmute(a);
44760 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44761 }
44762}
44763#[doc = "Vector reinterpret cast operation"]
44764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s16)"]
44765#[inline(always)]
44766#[cfg(target_endian = "little")]
44767#[target_feature(enable = "neon")]
44768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44769#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44770#[cfg_attr(
44771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44772 assert_instr(nop)
44773)]
44774#[cfg_attr(
44775 not(target_arch = "arm"),
44776 stable(feature = "neon_intrinsics", since = "1.59.0")
44777)]
44778#[cfg_attr(
44779 target_arch = "arm",
44780 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44781)]
44782pub fn vreinterpret_s32_s16(a: int16x4_t) -> int32x2_t {
44783 unsafe { transmute(a) }
44784}
44785#[doc = "Vector reinterpret cast operation"]
44786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s16)"]
44787#[inline(always)]
44788#[cfg(target_endian = "big")]
44789#[target_feature(enable = "neon")]
44790#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44791#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44792#[cfg_attr(
44793 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44794 assert_instr(nop)
44795)]
44796#[cfg_attr(
44797 not(target_arch = "arm"),
44798 stable(feature = "neon_intrinsics", since = "1.59.0")
44799)]
44800#[cfg_attr(
44801 target_arch = "arm",
44802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44803)]
44804pub fn vreinterpret_s32_s16(a: int16x4_t) -> int32x2_t {
44805 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44806 unsafe {
44807 let ret_val: int32x2_t = transmute(a);
44808 simd_shuffle!(ret_val, ret_val, [1, 0])
44809 }
44810}
44811#[doc = "Vector reinterpret cast operation"]
44812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s16)"]
44813#[inline(always)]
44814#[cfg(target_endian = "little")]
44815#[target_feature(enable = "neon")]
44816#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44817#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44818#[cfg_attr(
44819 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44820 assert_instr(nop)
44821)]
44822#[cfg_attr(
44823 not(target_arch = "arm"),
44824 stable(feature = "neon_intrinsics", since = "1.59.0")
44825)]
44826#[cfg_attr(
44827 target_arch = "arm",
44828 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44829)]
44830pub fn vreinterpret_s64_s16(a: int16x4_t) -> int64x1_t {
44831 unsafe { transmute(a) }
44832}
44833#[doc = "Vector reinterpret cast operation"]
44834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s16)"]
44835#[inline(always)]
44836#[cfg(target_endian = "big")]
44837#[target_feature(enable = "neon")]
44838#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44839#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44840#[cfg_attr(
44841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44842 assert_instr(nop)
44843)]
44844#[cfg_attr(
44845 not(target_arch = "arm"),
44846 stable(feature = "neon_intrinsics", since = "1.59.0")
44847)]
44848#[cfg_attr(
44849 target_arch = "arm",
44850 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44851)]
44852pub fn vreinterpret_s64_s16(a: int16x4_t) -> int64x1_t {
44853 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44854 unsafe { transmute(a) }
44855}
44856#[doc = "Vector reinterpret cast operation"]
44857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s16)"]
44858#[inline(always)]
44859#[cfg(target_endian = "little")]
44860#[target_feature(enable = "neon")]
44861#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44862#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44863#[cfg_attr(
44864 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44865 assert_instr(nop)
44866)]
44867#[cfg_attr(
44868 not(target_arch = "arm"),
44869 stable(feature = "neon_intrinsics", since = "1.59.0")
44870)]
44871#[cfg_attr(
44872 target_arch = "arm",
44873 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44874)]
44875pub fn vreinterpret_u8_s16(a: int16x4_t) -> uint8x8_t {
44876 unsafe { transmute(a) }
44877}
44878#[doc = "Vector reinterpret cast operation"]
44879#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s16)"]
44880#[inline(always)]
44881#[cfg(target_endian = "big")]
44882#[target_feature(enable = "neon")]
44883#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44884#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44885#[cfg_attr(
44886 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44887 assert_instr(nop)
44888)]
44889#[cfg_attr(
44890 not(target_arch = "arm"),
44891 stable(feature = "neon_intrinsics", since = "1.59.0")
44892)]
44893#[cfg_attr(
44894 target_arch = "arm",
44895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44896)]
44897pub fn vreinterpret_u8_s16(a: int16x4_t) -> uint8x8_t {
44898 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44899 unsafe {
44900 let ret_val: uint8x8_t = transmute(a);
44901 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44902 }
44903}
44904#[doc = "Vector reinterpret cast operation"]
44905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s16)"]
44906#[inline(always)]
44907#[cfg(target_endian = "little")]
44908#[target_feature(enable = "neon")]
44909#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44910#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44911#[cfg_attr(
44912 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44913 assert_instr(nop)
44914)]
44915#[cfg_attr(
44916 not(target_arch = "arm"),
44917 stable(feature = "neon_intrinsics", since = "1.59.0")
44918)]
44919#[cfg_attr(
44920 target_arch = "arm",
44921 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44922)]
44923pub fn vreinterpret_u16_s16(a: int16x4_t) -> uint16x4_t {
44924 unsafe { transmute(a) }
44925}
44926#[doc = "Vector reinterpret cast operation"]
44927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s16)"]
44928#[inline(always)]
44929#[cfg(target_endian = "big")]
44930#[target_feature(enable = "neon")]
44931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44933#[cfg_attr(
44934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44935 assert_instr(nop)
44936)]
44937#[cfg_attr(
44938 not(target_arch = "arm"),
44939 stable(feature = "neon_intrinsics", since = "1.59.0")
44940)]
44941#[cfg_attr(
44942 target_arch = "arm",
44943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44944)]
44945pub fn vreinterpret_u16_s16(a: int16x4_t) -> uint16x4_t {
44946 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44947 unsafe {
44948 let ret_val: uint16x4_t = transmute(a);
44949 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44950 }
44951}
44952#[doc = "Vector reinterpret cast operation"]
44953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s16)"]
44954#[inline(always)]
44955#[cfg(target_endian = "little")]
44956#[target_feature(enable = "neon")]
44957#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44958#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44959#[cfg_attr(
44960 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44961 assert_instr(nop)
44962)]
44963#[cfg_attr(
44964 not(target_arch = "arm"),
44965 stable(feature = "neon_intrinsics", since = "1.59.0")
44966)]
44967#[cfg_attr(
44968 target_arch = "arm",
44969 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44970)]
44971pub fn vreinterpret_u32_s16(a: int16x4_t) -> uint32x2_t {
44972 unsafe { transmute(a) }
44973}
44974#[doc = "Vector reinterpret cast operation"]
44975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s16)"]
44976#[inline(always)]
44977#[cfg(target_endian = "big")]
44978#[target_feature(enable = "neon")]
44979#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44980#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44981#[cfg_attr(
44982 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44983 assert_instr(nop)
44984)]
44985#[cfg_attr(
44986 not(target_arch = "arm"),
44987 stable(feature = "neon_intrinsics", since = "1.59.0")
44988)]
44989#[cfg_attr(
44990 target_arch = "arm",
44991 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44992)]
44993pub fn vreinterpret_u32_s16(a: int16x4_t) -> uint32x2_t {
44994 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44995 unsafe {
44996 let ret_val: uint32x2_t = transmute(a);
44997 simd_shuffle!(ret_val, ret_val, [1, 0])
44998 }
44999}
45000#[doc = "Vector reinterpret cast operation"]
45001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s16)"]
45002#[inline(always)]
45003#[cfg(target_endian = "little")]
45004#[target_feature(enable = "neon")]
45005#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45006#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45007#[cfg_attr(
45008 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45009 assert_instr(nop)
45010)]
45011#[cfg_attr(
45012 not(target_arch = "arm"),
45013 stable(feature = "neon_intrinsics", since = "1.59.0")
45014)]
45015#[cfg_attr(
45016 target_arch = "arm",
45017 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45018)]
45019pub fn vreinterpret_u64_s16(a: int16x4_t) -> uint64x1_t {
45020 unsafe { transmute(a) }
45021}
45022#[doc = "Vector reinterpret cast operation"]
45023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s16)"]
45024#[inline(always)]
45025#[cfg(target_endian = "big")]
45026#[target_feature(enable = "neon")]
45027#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45028#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45029#[cfg_attr(
45030 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45031 assert_instr(nop)
45032)]
45033#[cfg_attr(
45034 not(target_arch = "arm"),
45035 stable(feature = "neon_intrinsics", since = "1.59.0")
45036)]
45037#[cfg_attr(
45038 target_arch = "arm",
45039 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45040)]
45041pub fn vreinterpret_u64_s16(a: int16x4_t) -> uint64x1_t {
45042 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45043 unsafe { transmute(a) }
45044}
45045#[doc = "Vector reinterpret cast operation"]
45046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s16)"]
45047#[inline(always)]
45048#[cfg(target_endian = "little")]
45049#[target_feature(enable = "neon")]
45050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45051#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45052#[cfg_attr(
45053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45054 assert_instr(nop)
45055)]
45056#[cfg_attr(
45057 not(target_arch = "arm"),
45058 stable(feature = "neon_intrinsics", since = "1.59.0")
45059)]
45060#[cfg_attr(
45061 target_arch = "arm",
45062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45063)]
45064pub fn vreinterpret_p8_s16(a: int16x4_t) -> poly8x8_t {
45065 unsafe { transmute(a) }
45066}
45067#[doc = "Vector reinterpret cast operation"]
45068#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s16)"]
45069#[inline(always)]
45070#[cfg(target_endian = "big")]
45071#[target_feature(enable = "neon")]
45072#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45073#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45074#[cfg_attr(
45075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45076 assert_instr(nop)
45077)]
45078#[cfg_attr(
45079 not(target_arch = "arm"),
45080 stable(feature = "neon_intrinsics", since = "1.59.0")
45081)]
45082#[cfg_attr(
45083 target_arch = "arm",
45084 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45085)]
45086pub fn vreinterpret_p8_s16(a: int16x4_t) -> poly8x8_t {
45087 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45088 unsafe {
45089 let ret_val: poly8x8_t = transmute(a);
45090 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45091 }
45092}
45093#[doc = "Vector reinterpret cast operation"]
45094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s16)"]
45095#[inline(always)]
45096#[cfg(target_endian = "little")]
45097#[target_feature(enable = "neon")]
45098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45099#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45100#[cfg_attr(
45101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45102 assert_instr(nop)
45103)]
45104#[cfg_attr(
45105 not(target_arch = "arm"),
45106 stable(feature = "neon_intrinsics", since = "1.59.0")
45107)]
45108#[cfg_attr(
45109 target_arch = "arm",
45110 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45111)]
45112pub fn vreinterpret_p16_s16(a: int16x4_t) -> poly16x4_t {
45113 unsafe { transmute(a) }
45114}
45115#[doc = "Vector reinterpret cast operation"]
45116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s16)"]
45117#[inline(always)]
45118#[cfg(target_endian = "big")]
45119#[target_feature(enable = "neon")]
45120#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45121#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45122#[cfg_attr(
45123 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45124 assert_instr(nop)
45125)]
45126#[cfg_attr(
45127 not(target_arch = "arm"),
45128 stable(feature = "neon_intrinsics", since = "1.59.0")
45129)]
45130#[cfg_attr(
45131 target_arch = "arm",
45132 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45133)]
45134pub fn vreinterpret_p16_s16(a: int16x4_t) -> poly16x4_t {
45135 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45136 unsafe {
45137 let ret_val: poly16x4_t = transmute(a);
45138 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45139 }
45140}
45141#[doc = "Vector reinterpret cast operation"]
45142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s16)"]
45143#[inline(always)]
45144#[cfg(target_endian = "little")]
45145#[target_feature(enable = "neon")]
45146#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45147#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45148#[cfg_attr(
45149 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45150 assert_instr(nop)
45151)]
45152#[cfg_attr(
45153 not(target_arch = "arm"),
45154 stable(feature = "neon_intrinsics", since = "1.59.0")
45155)]
45156#[cfg_attr(
45157 target_arch = "arm",
45158 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45159)]
45160pub fn vreinterpretq_f32_s16(a: int16x8_t) -> float32x4_t {
45161 unsafe { transmute(a) }
45162}
45163#[doc = "Vector reinterpret cast operation"]
45164#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s16)"]
45165#[inline(always)]
45166#[cfg(target_endian = "big")]
45167#[target_feature(enable = "neon")]
45168#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45169#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45170#[cfg_attr(
45171 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45172 assert_instr(nop)
45173)]
45174#[cfg_attr(
45175 not(target_arch = "arm"),
45176 stable(feature = "neon_intrinsics", since = "1.59.0")
45177)]
45178#[cfg_attr(
45179 target_arch = "arm",
45180 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45181)]
45182pub fn vreinterpretq_f32_s16(a: int16x8_t) -> float32x4_t {
45183 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45184 unsafe {
45185 let ret_val: float32x4_t = transmute(a);
45186 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45187 }
45188}
45189#[doc = "Vector reinterpret cast operation"]
45190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s16)"]
45191#[inline(always)]
45192#[cfg(target_endian = "little")]
45193#[target_feature(enable = "neon")]
45194#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45195#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45196#[cfg_attr(
45197 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45198 assert_instr(nop)
45199)]
45200#[cfg_attr(
45201 not(target_arch = "arm"),
45202 stable(feature = "neon_intrinsics", since = "1.59.0")
45203)]
45204#[cfg_attr(
45205 target_arch = "arm",
45206 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45207)]
45208pub fn vreinterpretq_s8_s16(a: int16x8_t) -> int8x16_t {
45209 unsafe { transmute(a) }
45210}
45211#[doc = "Vector reinterpret cast operation"]
45212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s16)"]
45213#[inline(always)]
45214#[cfg(target_endian = "big")]
45215#[target_feature(enable = "neon")]
45216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45217#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45218#[cfg_attr(
45219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45220 assert_instr(nop)
45221)]
45222#[cfg_attr(
45223 not(target_arch = "arm"),
45224 stable(feature = "neon_intrinsics", since = "1.59.0")
45225)]
45226#[cfg_attr(
45227 target_arch = "arm",
45228 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45229)]
45230pub fn vreinterpretq_s8_s16(a: int16x8_t) -> int8x16_t {
45231 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45232 unsafe {
45233 let ret_val: int8x16_t = transmute(a);
45234 simd_shuffle!(
45235 ret_val,
45236 ret_val,
45237 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
45238 )
45239 }
45240}
45241#[doc = "Vector reinterpret cast operation"]
45242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s16)"]
45243#[inline(always)]
45244#[cfg(target_endian = "little")]
45245#[target_feature(enable = "neon")]
45246#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45247#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45248#[cfg_attr(
45249 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45250 assert_instr(nop)
45251)]
45252#[cfg_attr(
45253 not(target_arch = "arm"),
45254 stable(feature = "neon_intrinsics", since = "1.59.0")
45255)]
45256#[cfg_attr(
45257 target_arch = "arm",
45258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45259)]
45260pub fn vreinterpretq_s32_s16(a: int16x8_t) -> int32x4_t {
45261 unsafe { transmute(a) }
45262}
45263#[doc = "Vector reinterpret cast operation"]
45264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s16)"]
45265#[inline(always)]
45266#[cfg(target_endian = "big")]
45267#[target_feature(enable = "neon")]
45268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45269#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45270#[cfg_attr(
45271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45272 assert_instr(nop)
45273)]
45274#[cfg_attr(
45275 not(target_arch = "arm"),
45276 stable(feature = "neon_intrinsics", since = "1.59.0")
45277)]
45278#[cfg_attr(
45279 target_arch = "arm",
45280 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45281)]
45282pub fn vreinterpretq_s32_s16(a: int16x8_t) -> int32x4_t {
45283 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45284 unsafe {
45285 let ret_val: int32x4_t = transmute(a);
45286 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45287 }
45288}
45289#[doc = "Vector reinterpret cast operation"]
45290#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s16)"]
45291#[inline(always)]
45292#[cfg(target_endian = "little")]
45293#[target_feature(enable = "neon")]
45294#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45295#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45296#[cfg_attr(
45297 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45298 assert_instr(nop)
45299)]
45300#[cfg_attr(
45301 not(target_arch = "arm"),
45302 stable(feature = "neon_intrinsics", since = "1.59.0")
45303)]
45304#[cfg_attr(
45305 target_arch = "arm",
45306 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45307)]
45308pub fn vreinterpretq_s64_s16(a: int16x8_t) -> int64x2_t {
45309 unsafe { transmute(a) }
45310}
45311#[doc = "Vector reinterpret cast operation"]
45312#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s16)"]
45313#[inline(always)]
45314#[cfg(target_endian = "big")]
45315#[target_feature(enable = "neon")]
45316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45318#[cfg_attr(
45319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45320 assert_instr(nop)
45321)]
45322#[cfg_attr(
45323 not(target_arch = "arm"),
45324 stable(feature = "neon_intrinsics", since = "1.59.0")
45325)]
45326#[cfg_attr(
45327 target_arch = "arm",
45328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45329)]
45330pub fn vreinterpretq_s64_s16(a: int16x8_t) -> int64x2_t {
45331 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45332 unsafe {
45333 let ret_val: int64x2_t = transmute(a);
45334 simd_shuffle!(ret_val, ret_val, [1, 0])
45335 }
45336}
45337#[doc = "Vector reinterpret cast operation"]
45338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s16)"]
45339#[inline(always)]
45340#[cfg(target_endian = "little")]
45341#[target_feature(enable = "neon")]
45342#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45343#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45344#[cfg_attr(
45345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45346 assert_instr(nop)
45347)]
45348#[cfg_attr(
45349 not(target_arch = "arm"),
45350 stable(feature = "neon_intrinsics", since = "1.59.0")
45351)]
45352#[cfg_attr(
45353 target_arch = "arm",
45354 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45355)]
45356pub fn vreinterpretq_u8_s16(a: int16x8_t) -> uint8x16_t {
45357 unsafe { transmute(a) }
45358}
45359#[doc = "Vector reinterpret cast operation"]
45360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s16)"]
45361#[inline(always)]
45362#[cfg(target_endian = "big")]
45363#[target_feature(enable = "neon")]
45364#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45365#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45366#[cfg_attr(
45367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45368 assert_instr(nop)
45369)]
45370#[cfg_attr(
45371 not(target_arch = "arm"),
45372 stable(feature = "neon_intrinsics", since = "1.59.0")
45373)]
45374#[cfg_attr(
45375 target_arch = "arm",
45376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45377)]
45378pub fn vreinterpretq_u8_s16(a: int16x8_t) -> uint8x16_t {
45379 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45380 unsafe {
45381 let ret_val: uint8x16_t = transmute(a);
45382 simd_shuffle!(
45383 ret_val,
45384 ret_val,
45385 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
45386 )
45387 }
45388}
45389#[doc = "Vector reinterpret cast operation"]
45390#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s16)"]
45391#[inline(always)]
45392#[cfg(target_endian = "little")]
45393#[target_feature(enable = "neon")]
45394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45395#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45396#[cfg_attr(
45397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45398 assert_instr(nop)
45399)]
45400#[cfg_attr(
45401 not(target_arch = "arm"),
45402 stable(feature = "neon_intrinsics", since = "1.59.0")
45403)]
45404#[cfg_attr(
45405 target_arch = "arm",
45406 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45407)]
45408pub fn vreinterpretq_u16_s16(a: int16x8_t) -> uint16x8_t {
45409 unsafe { transmute(a) }
45410}
45411#[doc = "Vector reinterpret cast operation"]
45412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s16)"]
45413#[inline(always)]
45414#[cfg(target_endian = "big")]
45415#[target_feature(enable = "neon")]
45416#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45417#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45418#[cfg_attr(
45419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45420 assert_instr(nop)
45421)]
45422#[cfg_attr(
45423 not(target_arch = "arm"),
45424 stable(feature = "neon_intrinsics", since = "1.59.0")
45425)]
45426#[cfg_attr(
45427 target_arch = "arm",
45428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45429)]
45430pub fn vreinterpretq_u16_s16(a: int16x8_t) -> uint16x8_t {
45431 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45432 unsafe {
45433 let ret_val: uint16x8_t = transmute(a);
45434 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45435 }
45436}
45437#[doc = "Vector reinterpret cast operation"]
45438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s16)"]
45439#[inline(always)]
45440#[cfg(target_endian = "little")]
45441#[target_feature(enable = "neon")]
45442#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45443#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45444#[cfg_attr(
45445 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45446 assert_instr(nop)
45447)]
45448#[cfg_attr(
45449 not(target_arch = "arm"),
45450 stable(feature = "neon_intrinsics", since = "1.59.0")
45451)]
45452#[cfg_attr(
45453 target_arch = "arm",
45454 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45455)]
45456pub fn vreinterpretq_u32_s16(a: int16x8_t) -> uint32x4_t {
45457 unsafe { transmute(a) }
45458}
45459#[doc = "Vector reinterpret cast operation"]
45460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s16)"]
45461#[inline(always)]
45462#[cfg(target_endian = "big")]
45463#[target_feature(enable = "neon")]
45464#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45465#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45466#[cfg_attr(
45467 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45468 assert_instr(nop)
45469)]
45470#[cfg_attr(
45471 not(target_arch = "arm"),
45472 stable(feature = "neon_intrinsics", since = "1.59.0")
45473)]
45474#[cfg_attr(
45475 target_arch = "arm",
45476 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45477)]
45478pub fn vreinterpretq_u32_s16(a: int16x8_t) -> uint32x4_t {
45479 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45480 unsafe {
45481 let ret_val: uint32x4_t = transmute(a);
45482 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45483 }
45484}
45485#[doc = "Vector reinterpret cast operation"]
45486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s16)"]
45487#[inline(always)]
45488#[cfg(target_endian = "little")]
45489#[target_feature(enable = "neon")]
45490#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45491#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45492#[cfg_attr(
45493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45494 assert_instr(nop)
45495)]
45496#[cfg_attr(
45497 not(target_arch = "arm"),
45498 stable(feature = "neon_intrinsics", since = "1.59.0")
45499)]
45500#[cfg_attr(
45501 target_arch = "arm",
45502 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45503)]
45504pub fn vreinterpretq_u64_s16(a: int16x8_t) -> uint64x2_t {
45505 unsafe { transmute(a) }
45506}
45507#[doc = "Vector reinterpret cast operation"]
45508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s16)"]
45509#[inline(always)]
45510#[cfg(target_endian = "big")]
45511#[target_feature(enable = "neon")]
45512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45513#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45514#[cfg_attr(
45515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45516 assert_instr(nop)
45517)]
45518#[cfg_attr(
45519 not(target_arch = "arm"),
45520 stable(feature = "neon_intrinsics", since = "1.59.0")
45521)]
45522#[cfg_attr(
45523 target_arch = "arm",
45524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45525)]
45526pub fn vreinterpretq_u64_s16(a: int16x8_t) -> uint64x2_t {
45527 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45528 unsafe {
45529 let ret_val: uint64x2_t = transmute(a);
45530 simd_shuffle!(ret_val, ret_val, [1, 0])
45531 }
45532}
45533#[doc = "Vector reinterpret cast operation"]
45534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s16)"]
45535#[inline(always)]
45536#[cfg(target_endian = "little")]
45537#[target_feature(enable = "neon")]
45538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45540#[cfg_attr(
45541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45542 assert_instr(nop)
45543)]
45544#[cfg_attr(
45545 not(target_arch = "arm"),
45546 stable(feature = "neon_intrinsics", since = "1.59.0")
45547)]
45548#[cfg_attr(
45549 target_arch = "arm",
45550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45551)]
45552pub fn vreinterpretq_p8_s16(a: int16x8_t) -> poly8x16_t {
45553 unsafe { transmute(a) }
45554}
45555#[doc = "Vector reinterpret cast operation"]
45556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s16)"]
45557#[inline(always)]
45558#[cfg(target_endian = "big")]
45559#[target_feature(enable = "neon")]
45560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45562#[cfg_attr(
45563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45564 assert_instr(nop)
45565)]
45566#[cfg_attr(
45567 not(target_arch = "arm"),
45568 stable(feature = "neon_intrinsics", since = "1.59.0")
45569)]
45570#[cfg_attr(
45571 target_arch = "arm",
45572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45573)]
45574pub fn vreinterpretq_p8_s16(a: int16x8_t) -> poly8x16_t {
45575 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45576 unsafe {
45577 let ret_val: poly8x16_t = transmute(a);
45578 simd_shuffle!(
45579 ret_val,
45580 ret_val,
45581 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
45582 )
45583 }
45584}
45585#[doc = "Vector reinterpret cast operation"]
45586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s16)"]
45587#[inline(always)]
45588#[cfg(target_endian = "little")]
45589#[target_feature(enable = "neon")]
45590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45591#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45592#[cfg_attr(
45593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45594 assert_instr(nop)
45595)]
45596#[cfg_attr(
45597 not(target_arch = "arm"),
45598 stable(feature = "neon_intrinsics", since = "1.59.0")
45599)]
45600#[cfg_attr(
45601 target_arch = "arm",
45602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45603)]
45604pub fn vreinterpretq_p16_s16(a: int16x8_t) -> poly16x8_t {
45605 unsafe { transmute(a) }
45606}
45607#[doc = "Vector reinterpret cast operation"]
45608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s16)"]
45609#[inline(always)]
45610#[cfg(target_endian = "big")]
45611#[target_feature(enable = "neon")]
45612#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45613#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45614#[cfg_attr(
45615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45616 assert_instr(nop)
45617)]
45618#[cfg_attr(
45619 not(target_arch = "arm"),
45620 stable(feature = "neon_intrinsics", since = "1.59.0")
45621)]
45622#[cfg_attr(
45623 target_arch = "arm",
45624 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45625)]
45626pub fn vreinterpretq_p16_s16(a: int16x8_t) -> poly16x8_t {
45627 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45628 unsafe {
45629 let ret_val: poly16x8_t = transmute(a);
45630 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45631 }
45632}
45633#[doc = "Vector reinterpret cast operation"]
45634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s32)"]
45635#[inline(always)]
45636#[cfg(target_endian = "little")]
45637#[target_feature(enable = "neon")]
45638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45640#[cfg_attr(
45641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45642 assert_instr(nop)
45643)]
45644#[cfg_attr(
45645 not(target_arch = "arm"),
45646 stable(feature = "neon_intrinsics", since = "1.59.0")
45647)]
45648#[cfg_attr(
45649 target_arch = "arm",
45650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45651)]
45652pub fn vreinterpret_f32_s32(a: int32x2_t) -> float32x2_t {
45653 unsafe { transmute(a) }
45654}
45655#[doc = "Vector reinterpret cast operation"]
45656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s32)"]
45657#[inline(always)]
45658#[cfg(target_endian = "big")]
45659#[target_feature(enable = "neon")]
45660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45661#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45662#[cfg_attr(
45663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45664 assert_instr(nop)
45665)]
45666#[cfg_attr(
45667 not(target_arch = "arm"),
45668 stable(feature = "neon_intrinsics", since = "1.59.0")
45669)]
45670#[cfg_attr(
45671 target_arch = "arm",
45672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45673)]
45674pub fn vreinterpret_f32_s32(a: int32x2_t) -> float32x2_t {
45675 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45676 unsafe {
45677 let ret_val: float32x2_t = transmute(a);
45678 simd_shuffle!(ret_val, ret_val, [1, 0])
45679 }
45680}
45681#[doc = "Vector reinterpret cast operation"]
45682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s32)"]
45683#[inline(always)]
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 vreinterpret_s8_s32(a: int32x2_t) -> int8x8_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/vreinterpret_s8_s32)"]
45705#[inline(always)]
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 vreinterpret_s8_s32(a: int32x2_t) -> int8x8_t {
45723 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45724 unsafe {
45725 let ret_val: int8x8_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/vreinterpret_s16_s32)"]
45731#[inline(always)]
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 vreinterpret_s16_s32(a: int32x2_t) -> int16x4_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/vreinterpret_s16_s32)"]
45753#[inline(always)]
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 vreinterpret_s16_s32(a: int32x2_t) -> int16x4_t {
45771 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45772 unsafe {
45773 let ret_val: int16x4_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/vreinterpret_s64_s32)"]
45779#[inline(always)]
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 vreinterpret_s64_s32(a: int32x2_t) -> int64x1_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/vreinterpret_s64_s32)"]
45801#[inline(always)]
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 vreinterpret_s64_s32(a: int32x2_t) -> int64x1_t {
45819 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45820 unsafe { transmute(a) }
45821}
45822#[doc = "Vector reinterpret cast operation"]
45823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s32)"]
45824#[inline(always)]
45825#[cfg(target_endian = "little")]
45826#[target_feature(enable = "neon")]
45827#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45828#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45829#[cfg_attr(
45830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45831 assert_instr(nop)
45832)]
45833#[cfg_attr(
45834 not(target_arch = "arm"),
45835 stable(feature = "neon_intrinsics", since = "1.59.0")
45836)]
45837#[cfg_attr(
45838 target_arch = "arm",
45839 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45840)]
45841pub fn vreinterpret_u8_s32(a: int32x2_t) -> uint8x8_t {
45842 unsafe { transmute(a) }
45843}
45844#[doc = "Vector reinterpret cast operation"]
45845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s32)"]
45846#[inline(always)]
45847#[cfg(target_endian = "big")]
45848#[target_feature(enable = "neon")]
45849#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45850#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45851#[cfg_attr(
45852 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45853 assert_instr(nop)
45854)]
45855#[cfg_attr(
45856 not(target_arch = "arm"),
45857 stable(feature = "neon_intrinsics", since = "1.59.0")
45858)]
45859#[cfg_attr(
45860 target_arch = "arm",
45861 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45862)]
45863pub fn vreinterpret_u8_s32(a: int32x2_t) -> uint8x8_t {
45864 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45865 unsafe {
45866 let ret_val: uint8x8_t = transmute(a);
45867 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45868 }
45869}
45870#[doc = "Vector reinterpret cast operation"]
45871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s32)"]
45872#[inline(always)]
45873#[cfg(target_endian = "little")]
45874#[target_feature(enable = "neon")]
45875#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45876#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45877#[cfg_attr(
45878 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45879 assert_instr(nop)
45880)]
45881#[cfg_attr(
45882 not(target_arch = "arm"),
45883 stable(feature = "neon_intrinsics", since = "1.59.0")
45884)]
45885#[cfg_attr(
45886 target_arch = "arm",
45887 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45888)]
45889pub fn vreinterpret_u16_s32(a: int32x2_t) -> uint16x4_t {
45890 unsafe { transmute(a) }
45891}
45892#[doc = "Vector reinterpret cast operation"]
45893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s32)"]
45894#[inline(always)]
45895#[cfg(target_endian = "big")]
45896#[target_feature(enable = "neon")]
45897#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45898#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45899#[cfg_attr(
45900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45901 assert_instr(nop)
45902)]
45903#[cfg_attr(
45904 not(target_arch = "arm"),
45905 stable(feature = "neon_intrinsics", since = "1.59.0")
45906)]
45907#[cfg_attr(
45908 target_arch = "arm",
45909 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45910)]
45911pub fn vreinterpret_u16_s32(a: int32x2_t) -> uint16x4_t {
45912 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45913 unsafe {
45914 let ret_val: uint16x4_t = transmute(a);
45915 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45916 }
45917}
45918#[doc = "Vector reinterpret cast operation"]
45919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s32)"]
45920#[inline(always)]
45921#[cfg(target_endian = "little")]
45922#[target_feature(enable = "neon")]
45923#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45924#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45925#[cfg_attr(
45926 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45927 assert_instr(nop)
45928)]
45929#[cfg_attr(
45930 not(target_arch = "arm"),
45931 stable(feature = "neon_intrinsics", since = "1.59.0")
45932)]
45933#[cfg_attr(
45934 target_arch = "arm",
45935 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45936)]
45937pub fn vreinterpret_u32_s32(a: int32x2_t) -> uint32x2_t {
45938 unsafe { transmute(a) }
45939}
45940#[doc = "Vector reinterpret cast operation"]
45941#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s32)"]
45942#[inline(always)]
45943#[cfg(target_endian = "big")]
45944#[target_feature(enable = "neon")]
45945#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45946#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45947#[cfg_attr(
45948 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45949 assert_instr(nop)
45950)]
45951#[cfg_attr(
45952 not(target_arch = "arm"),
45953 stable(feature = "neon_intrinsics", since = "1.59.0")
45954)]
45955#[cfg_attr(
45956 target_arch = "arm",
45957 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45958)]
45959pub fn vreinterpret_u32_s32(a: int32x2_t) -> uint32x2_t {
45960 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45961 unsafe {
45962 let ret_val: uint32x2_t = transmute(a);
45963 simd_shuffle!(ret_val, ret_val, [1, 0])
45964 }
45965}
45966#[doc = "Vector reinterpret cast operation"]
45967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s32)"]
45968#[inline(always)]
45969#[cfg(target_endian = "little")]
45970#[target_feature(enable = "neon")]
45971#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45972#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45973#[cfg_attr(
45974 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45975 assert_instr(nop)
45976)]
45977#[cfg_attr(
45978 not(target_arch = "arm"),
45979 stable(feature = "neon_intrinsics", since = "1.59.0")
45980)]
45981#[cfg_attr(
45982 target_arch = "arm",
45983 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45984)]
45985pub fn vreinterpret_u64_s32(a: int32x2_t) -> uint64x1_t {
45986 unsafe { transmute(a) }
45987}
45988#[doc = "Vector reinterpret cast operation"]
45989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s32)"]
45990#[inline(always)]
45991#[cfg(target_endian = "big")]
45992#[target_feature(enable = "neon")]
45993#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45994#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45995#[cfg_attr(
45996 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45997 assert_instr(nop)
45998)]
45999#[cfg_attr(
46000 not(target_arch = "arm"),
46001 stable(feature = "neon_intrinsics", since = "1.59.0")
46002)]
46003#[cfg_attr(
46004 target_arch = "arm",
46005 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46006)]
46007pub fn vreinterpret_u64_s32(a: int32x2_t) -> uint64x1_t {
46008 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
46009 unsafe { transmute(a) }
46010}
46011#[doc = "Vector reinterpret cast operation"]
46012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s32)"]
46013#[inline(always)]
46014#[cfg(target_endian = "little")]
46015#[target_feature(enable = "neon")]
46016#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46017#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46018#[cfg_attr(
46019 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46020 assert_instr(nop)
46021)]
46022#[cfg_attr(
46023 not(target_arch = "arm"),
46024 stable(feature = "neon_intrinsics", since = "1.59.0")
46025)]
46026#[cfg_attr(
46027 target_arch = "arm",
46028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46029)]
46030pub fn vreinterpret_p8_s32(a: int32x2_t) -> poly8x8_t {
46031 unsafe { transmute(a) }
46032}
46033#[doc = "Vector reinterpret cast operation"]
46034#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s32)"]
46035#[inline(always)]
46036#[cfg(target_endian = "big")]
46037#[target_feature(enable = "neon")]
46038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46039#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46040#[cfg_attr(
46041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46042 assert_instr(nop)
46043)]
46044#[cfg_attr(
46045 not(target_arch = "arm"),
46046 stable(feature = "neon_intrinsics", since = "1.59.0")
46047)]
46048#[cfg_attr(
46049 target_arch = "arm",
46050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46051)]
46052pub fn vreinterpret_p8_s32(a: int32x2_t) -> poly8x8_t {
46053 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
46054 unsafe {
46055 let ret_val: poly8x8_t = transmute(a);
46056 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46057 }
46058}
46059#[doc = "Vector reinterpret cast operation"]
46060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s32)"]
46061#[inline(always)]
46062#[cfg(target_endian = "little")]
46063#[target_feature(enable = "neon")]
46064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46066#[cfg_attr(
46067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46068 assert_instr(nop)
46069)]
46070#[cfg_attr(
46071 not(target_arch = "arm"),
46072 stable(feature = "neon_intrinsics", since = "1.59.0")
46073)]
46074#[cfg_attr(
46075 target_arch = "arm",
46076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46077)]
46078pub fn vreinterpret_p16_s32(a: int32x2_t) -> poly16x4_t {
46079 unsafe { transmute(a) }
46080}
46081#[doc = "Vector reinterpret cast operation"]
46082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s32)"]
46083#[inline(always)]
46084#[cfg(target_endian = "big")]
46085#[target_feature(enable = "neon")]
46086#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46087#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46088#[cfg_attr(
46089 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46090 assert_instr(nop)
46091)]
46092#[cfg_attr(
46093 not(target_arch = "arm"),
46094 stable(feature = "neon_intrinsics", since = "1.59.0")
46095)]
46096#[cfg_attr(
46097 target_arch = "arm",
46098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46099)]
46100pub fn vreinterpret_p16_s32(a: int32x2_t) -> poly16x4_t {
46101 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
46102 unsafe {
46103 let ret_val: poly16x4_t = transmute(a);
46104 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46105 }
46106}
46107#[doc = "Vector reinterpret cast operation"]
46108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s32)"]
46109#[inline(always)]
46110#[cfg(target_endian = "little")]
46111#[target_feature(enable = "neon")]
46112#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46113#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46114#[cfg_attr(
46115 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46116 assert_instr(nop)
46117)]
46118#[cfg_attr(
46119 not(target_arch = "arm"),
46120 stable(feature = "neon_intrinsics", since = "1.59.0")
46121)]
46122#[cfg_attr(
46123 target_arch = "arm",
46124 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46125)]
46126pub fn vreinterpretq_f32_s32(a: int32x4_t) -> float32x4_t {
46127 unsafe { transmute(a) }
46128}
46129#[doc = "Vector reinterpret cast operation"]
46130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s32)"]
46131#[inline(always)]
46132#[cfg(target_endian = "big")]
46133#[target_feature(enable = "neon")]
46134#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46135#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46136#[cfg_attr(
46137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46138 assert_instr(nop)
46139)]
46140#[cfg_attr(
46141 not(target_arch = "arm"),
46142 stable(feature = "neon_intrinsics", since = "1.59.0")
46143)]
46144#[cfg_attr(
46145 target_arch = "arm",
46146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46147)]
46148pub fn vreinterpretq_f32_s32(a: int32x4_t) -> float32x4_t {
46149 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46150 unsafe {
46151 let ret_val: float32x4_t = transmute(a);
46152 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46153 }
46154}
46155#[doc = "Vector reinterpret cast operation"]
46156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s32)"]
46157#[inline(always)]
46158#[cfg(target_endian = "little")]
46159#[target_feature(enable = "neon")]
46160#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46161#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46162#[cfg_attr(
46163 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46164 assert_instr(nop)
46165)]
46166#[cfg_attr(
46167 not(target_arch = "arm"),
46168 stable(feature = "neon_intrinsics", since = "1.59.0")
46169)]
46170#[cfg_attr(
46171 target_arch = "arm",
46172 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46173)]
46174pub fn vreinterpretq_s8_s32(a: int32x4_t) -> int8x16_t {
46175 unsafe { transmute(a) }
46176}
46177#[doc = "Vector reinterpret cast operation"]
46178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s32)"]
46179#[inline(always)]
46180#[cfg(target_endian = "big")]
46181#[target_feature(enable = "neon")]
46182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46184#[cfg_attr(
46185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46186 assert_instr(nop)
46187)]
46188#[cfg_attr(
46189 not(target_arch = "arm"),
46190 stable(feature = "neon_intrinsics", since = "1.59.0")
46191)]
46192#[cfg_attr(
46193 target_arch = "arm",
46194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46195)]
46196pub fn vreinterpretq_s8_s32(a: int32x4_t) -> int8x16_t {
46197 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46198 unsafe {
46199 let ret_val: int8x16_t = transmute(a);
46200 simd_shuffle!(
46201 ret_val,
46202 ret_val,
46203 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
46204 )
46205 }
46206}
46207#[doc = "Vector reinterpret cast operation"]
46208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s32)"]
46209#[inline(always)]
46210#[cfg(target_endian = "little")]
46211#[target_feature(enable = "neon")]
46212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46213#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46214#[cfg_attr(
46215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46216 assert_instr(nop)
46217)]
46218#[cfg_attr(
46219 not(target_arch = "arm"),
46220 stable(feature = "neon_intrinsics", since = "1.59.0")
46221)]
46222#[cfg_attr(
46223 target_arch = "arm",
46224 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46225)]
46226pub fn vreinterpretq_s16_s32(a: int32x4_t) -> int16x8_t {
46227 unsafe { transmute(a) }
46228}
46229#[doc = "Vector reinterpret cast operation"]
46230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s32)"]
46231#[inline(always)]
46232#[cfg(target_endian = "big")]
46233#[target_feature(enable = "neon")]
46234#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46235#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46236#[cfg_attr(
46237 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46238 assert_instr(nop)
46239)]
46240#[cfg_attr(
46241 not(target_arch = "arm"),
46242 stable(feature = "neon_intrinsics", since = "1.59.0")
46243)]
46244#[cfg_attr(
46245 target_arch = "arm",
46246 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46247)]
46248pub fn vreinterpretq_s16_s32(a: int32x4_t) -> int16x8_t {
46249 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46250 unsafe {
46251 let ret_val: int16x8_t = transmute(a);
46252 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46253 }
46254}
46255#[doc = "Vector reinterpret cast operation"]
46256#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s32)"]
46257#[inline(always)]
46258#[cfg(target_endian = "little")]
46259#[target_feature(enable = "neon")]
46260#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46261#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46262#[cfg_attr(
46263 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46264 assert_instr(nop)
46265)]
46266#[cfg_attr(
46267 not(target_arch = "arm"),
46268 stable(feature = "neon_intrinsics", since = "1.59.0")
46269)]
46270#[cfg_attr(
46271 target_arch = "arm",
46272 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46273)]
46274pub fn vreinterpretq_s64_s32(a: int32x4_t) -> int64x2_t {
46275 unsafe { transmute(a) }
46276}
46277#[doc = "Vector reinterpret cast operation"]
46278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s32)"]
46279#[inline(always)]
46280#[cfg(target_endian = "big")]
46281#[target_feature(enable = "neon")]
46282#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46283#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46284#[cfg_attr(
46285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46286 assert_instr(nop)
46287)]
46288#[cfg_attr(
46289 not(target_arch = "arm"),
46290 stable(feature = "neon_intrinsics", since = "1.59.0")
46291)]
46292#[cfg_attr(
46293 target_arch = "arm",
46294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46295)]
46296pub fn vreinterpretq_s64_s32(a: int32x4_t) -> int64x2_t {
46297 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46298 unsafe {
46299 let ret_val: int64x2_t = transmute(a);
46300 simd_shuffle!(ret_val, ret_val, [1, 0])
46301 }
46302}
46303#[doc = "Vector reinterpret cast operation"]
46304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s32)"]
46305#[inline(always)]
46306#[cfg(target_endian = "little")]
46307#[target_feature(enable = "neon")]
46308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46310#[cfg_attr(
46311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46312 assert_instr(nop)
46313)]
46314#[cfg_attr(
46315 not(target_arch = "arm"),
46316 stable(feature = "neon_intrinsics", since = "1.59.0")
46317)]
46318#[cfg_attr(
46319 target_arch = "arm",
46320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46321)]
46322pub fn vreinterpretq_u8_s32(a: int32x4_t) -> uint8x16_t {
46323 unsafe { transmute(a) }
46324}
46325#[doc = "Vector reinterpret cast operation"]
46326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s32)"]
46327#[inline(always)]
46328#[cfg(target_endian = "big")]
46329#[target_feature(enable = "neon")]
46330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46331#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46332#[cfg_attr(
46333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46334 assert_instr(nop)
46335)]
46336#[cfg_attr(
46337 not(target_arch = "arm"),
46338 stable(feature = "neon_intrinsics", since = "1.59.0")
46339)]
46340#[cfg_attr(
46341 target_arch = "arm",
46342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46343)]
46344pub fn vreinterpretq_u8_s32(a: int32x4_t) -> uint8x16_t {
46345 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46346 unsafe {
46347 let ret_val: uint8x16_t = transmute(a);
46348 simd_shuffle!(
46349 ret_val,
46350 ret_val,
46351 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
46352 )
46353 }
46354}
46355#[doc = "Vector reinterpret cast operation"]
46356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s32)"]
46357#[inline(always)]
46358#[cfg(target_endian = "little")]
46359#[target_feature(enable = "neon")]
46360#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46361#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46362#[cfg_attr(
46363 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46364 assert_instr(nop)
46365)]
46366#[cfg_attr(
46367 not(target_arch = "arm"),
46368 stable(feature = "neon_intrinsics", since = "1.59.0")
46369)]
46370#[cfg_attr(
46371 target_arch = "arm",
46372 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46373)]
46374pub fn vreinterpretq_u16_s32(a: int32x4_t) -> uint16x8_t {
46375 unsafe { transmute(a) }
46376}
46377#[doc = "Vector reinterpret cast operation"]
46378#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s32)"]
46379#[inline(always)]
46380#[cfg(target_endian = "big")]
46381#[target_feature(enable = "neon")]
46382#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46383#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46384#[cfg_attr(
46385 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46386 assert_instr(nop)
46387)]
46388#[cfg_attr(
46389 not(target_arch = "arm"),
46390 stable(feature = "neon_intrinsics", since = "1.59.0")
46391)]
46392#[cfg_attr(
46393 target_arch = "arm",
46394 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46395)]
46396pub fn vreinterpretq_u16_s32(a: int32x4_t) -> uint16x8_t {
46397 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46398 unsafe {
46399 let ret_val: uint16x8_t = transmute(a);
46400 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46401 }
46402}
46403#[doc = "Vector reinterpret cast operation"]
46404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s32)"]
46405#[inline(always)]
46406#[cfg(target_endian = "little")]
46407#[target_feature(enable = "neon")]
46408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46410#[cfg_attr(
46411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46412 assert_instr(nop)
46413)]
46414#[cfg_attr(
46415 not(target_arch = "arm"),
46416 stable(feature = "neon_intrinsics", since = "1.59.0")
46417)]
46418#[cfg_attr(
46419 target_arch = "arm",
46420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46421)]
46422pub fn vreinterpretq_u32_s32(a: int32x4_t) -> uint32x4_t {
46423 unsafe { transmute(a) }
46424}
46425#[doc = "Vector reinterpret cast operation"]
46426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s32)"]
46427#[inline(always)]
46428#[cfg(target_endian = "big")]
46429#[target_feature(enable = "neon")]
46430#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46431#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46432#[cfg_attr(
46433 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46434 assert_instr(nop)
46435)]
46436#[cfg_attr(
46437 not(target_arch = "arm"),
46438 stable(feature = "neon_intrinsics", since = "1.59.0")
46439)]
46440#[cfg_attr(
46441 target_arch = "arm",
46442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46443)]
46444pub fn vreinterpretq_u32_s32(a: int32x4_t) -> uint32x4_t {
46445 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46446 unsafe {
46447 let ret_val: uint32x4_t = transmute(a);
46448 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46449 }
46450}
46451#[doc = "Vector reinterpret cast operation"]
46452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s32)"]
46453#[inline(always)]
46454#[cfg(target_endian = "little")]
46455#[target_feature(enable = "neon")]
46456#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46457#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46458#[cfg_attr(
46459 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46460 assert_instr(nop)
46461)]
46462#[cfg_attr(
46463 not(target_arch = "arm"),
46464 stable(feature = "neon_intrinsics", since = "1.59.0")
46465)]
46466#[cfg_attr(
46467 target_arch = "arm",
46468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46469)]
46470pub fn vreinterpretq_u64_s32(a: int32x4_t) -> uint64x2_t {
46471 unsafe { transmute(a) }
46472}
46473#[doc = "Vector reinterpret cast operation"]
46474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s32)"]
46475#[inline(always)]
46476#[cfg(target_endian = "big")]
46477#[target_feature(enable = "neon")]
46478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46480#[cfg_attr(
46481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46482 assert_instr(nop)
46483)]
46484#[cfg_attr(
46485 not(target_arch = "arm"),
46486 stable(feature = "neon_intrinsics", since = "1.59.0")
46487)]
46488#[cfg_attr(
46489 target_arch = "arm",
46490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46491)]
46492pub fn vreinterpretq_u64_s32(a: int32x4_t) -> uint64x2_t {
46493 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46494 unsafe {
46495 let ret_val: uint64x2_t = transmute(a);
46496 simd_shuffle!(ret_val, ret_val, [1, 0])
46497 }
46498}
46499#[doc = "Vector reinterpret cast operation"]
46500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s32)"]
46501#[inline(always)]
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 vreinterpretq_p8_s32(a: int32x4_t) -> poly8x16_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/vreinterpretq_p8_s32)"]
46523#[inline(always)]
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 vreinterpretq_p8_s32(a: int32x4_t) -> poly8x16_t {
46541 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46542 unsafe {
46543 let ret_val: poly8x16_t = transmute(a);
46544 simd_shuffle!(
46545 ret_val,
46546 ret_val,
46547 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
46548 )
46549 }
46550}
46551#[doc = "Vector reinterpret cast operation"]
46552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s32)"]
46553#[inline(always)]
46554#[cfg(target_endian = "little")]
46555#[target_feature(enable = "neon")]
46556#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46557#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46558#[cfg_attr(
46559 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46560 assert_instr(nop)
46561)]
46562#[cfg_attr(
46563 not(target_arch = "arm"),
46564 stable(feature = "neon_intrinsics", since = "1.59.0")
46565)]
46566#[cfg_attr(
46567 target_arch = "arm",
46568 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46569)]
46570pub fn vreinterpretq_p16_s32(a: int32x4_t) -> poly16x8_t {
46571 unsafe { transmute(a) }
46572}
46573#[doc = "Vector reinterpret cast operation"]
46574#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s32)"]
46575#[inline(always)]
46576#[cfg(target_endian = "big")]
46577#[target_feature(enable = "neon")]
46578#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46579#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46580#[cfg_attr(
46581 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46582 assert_instr(nop)
46583)]
46584#[cfg_attr(
46585 not(target_arch = "arm"),
46586 stable(feature = "neon_intrinsics", since = "1.59.0")
46587)]
46588#[cfg_attr(
46589 target_arch = "arm",
46590 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46591)]
46592pub fn vreinterpretq_p16_s32(a: int32x4_t) -> poly16x8_t {
46593 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46594 unsafe {
46595 let ret_val: poly16x8_t = transmute(a);
46596 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46597 }
46598}
46599#[doc = "Vector reinterpret cast operation"]
46600#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s64)"]
46601#[inline(always)]
46602#[cfg(target_endian = "little")]
46603#[target_feature(enable = "neon")]
46604#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46605#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46606#[cfg_attr(
46607 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46608 assert_instr(nop)
46609)]
46610#[cfg_attr(
46611 not(target_arch = "arm"),
46612 stable(feature = "neon_intrinsics", since = "1.59.0")
46613)]
46614#[cfg_attr(
46615 target_arch = "arm",
46616 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46617)]
46618pub fn vreinterpret_f32_s64(a: int64x1_t) -> float32x2_t {
46619 unsafe { transmute(a) }
46620}
46621#[doc = "Vector reinterpret cast operation"]
46622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s64)"]
46623#[inline(always)]
46624#[cfg(target_endian = "big")]
46625#[target_feature(enable = "neon")]
46626#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46627#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46628#[cfg_attr(
46629 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46630 assert_instr(nop)
46631)]
46632#[cfg_attr(
46633 not(target_arch = "arm"),
46634 stable(feature = "neon_intrinsics", since = "1.59.0")
46635)]
46636#[cfg_attr(
46637 target_arch = "arm",
46638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46639)]
46640pub fn vreinterpret_f32_s64(a: int64x1_t) -> float32x2_t {
46641 unsafe {
46642 let ret_val: float32x2_t = transmute(a);
46643 simd_shuffle!(ret_val, ret_val, [1, 0])
46644 }
46645}
46646#[doc = "Vector reinterpret cast operation"]
46647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s64)"]
46648#[inline(always)]
46649#[cfg(target_endian = "little")]
46650#[target_feature(enable = "neon")]
46651#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46652#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46653#[cfg_attr(
46654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46655 assert_instr(nop)
46656)]
46657#[cfg_attr(
46658 not(target_arch = "arm"),
46659 stable(feature = "neon_intrinsics", since = "1.59.0")
46660)]
46661#[cfg_attr(
46662 target_arch = "arm",
46663 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46664)]
46665pub fn vreinterpret_s8_s64(a: int64x1_t) -> int8x8_t {
46666 unsafe { transmute(a) }
46667}
46668#[doc = "Vector reinterpret cast operation"]
46669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s64)"]
46670#[inline(always)]
46671#[cfg(target_endian = "big")]
46672#[target_feature(enable = "neon")]
46673#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46674#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46675#[cfg_attr(
46676 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46677 assert_instr(nop)
46678)]
46679#[cfg_attr(
46680 not(target_arch = "arm"),
46681 stable(feature = "neon_intrinsics", since = "1.59.0")
46682)]
46683#[cfg_attr(
46684 target_arch = "arm",
46685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46686)]
46687pub fn vreinterpret_s8_s64(a: int64x1_t) -> int8x8_t {
46688 unsafe {
46689 let ret_val: int8x8_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/vreinterpret_s16_s64)"]
46695#[inline(always)]
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 vreinterpret_s16_s64(a: int64x1_t) -> int16x4_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/vreinterpret_s16_s64)"]
46717#[inline(always)]
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 vreinterpret_s16_s64(a: int64x1_t) -> int16x4_t {
46735 unsafe {
46736 let ret_val: int16x4_t = transmute(a);
46737 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46738 }
46739}
46740#[doc = "Vector reinterpret cast operation"]
46741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s64)"]
46742#[inline(always)]
46743#[cfg(target_endian = "little")]
46744#[target_feature(enable = "neon")]
46745#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46746#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46747#[cfg_attr(
46748 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46749 assert_instr(nop)
46750)]
46751#[cfg_attr(
46752 not(target_arch = "arm"),
46753 stable(feature = "neon_intrinsics", since = "1.59.0")
46754)]
46755#[cfg_attr(
46756 target_arch = "arm",
46757 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46758)]
46759pub fn vreinterpret_s32_s64(a: int64x1_t) -> int32x2_t {
46760 unsafe { transmute(a) }
46761}
46762#[doc = "Vector reinterpret cast operation"]
46763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s64)"]
46764#[inline(always)]
46765#[cfg(target_endian = "big")]
46766#[target_feature(enable = "neon")]
46767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46768#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46769#[cfg_attr(
46770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46771 assert_instr(nop)
46772)]
46773#[cfg_attr(
46774 not(target_arch = "arm"),
46775 stable(feature = "neon_intrinsics", since = "1.59.0")
46776)]
46777#[cfg_attr(
46778 target_arch = "arm",
46779 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46780)]
46781pub fn vreinterpret_s32_s64(a: int64x1_t) -> int32x2_t {
46782 unsafe {
46783 let ret_val: int32x2_t = transmute(a);
46784 simd_shuffle!(ret_val, ret_val, [1, 0])
46785 }
46786}
46787#[doc = "Vector reinterpret cast operation"]
46788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s64)"]
46789#[inline(always)]
46790#[cfg(target_endian = "little")]
46791#[target_feature(enable = "neon")]
46792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46793#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46794#[cfg_attr(
46795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46796 assert_instr(nop)
46797)]
46798#[cfg_attr(
46799 not(target_arch = "arm"),
46800 stable(feature = "neon_intrinsics", since = "1.59.0")
46801)]
46802#[cfg_attr(
46803 target_arch = "arm",
46804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46805)]
46806pub fn vreinterpret_u8_s64(a: int64x1_t) -> uint8x8_t {
46807 unsafe { transmute(a) }
46808}
46809#[doc = "Vector reinterpret cast operation"]
46810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s64)"]
46811#[inline(always)]
46812#[cfg(target_endian = "big")]
46813#[target_feature(enable = "neon")]
46814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46815#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46816#[cfg_attr(
46817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46818 assert_instr(nop)
46819)]
46820#[cfg_attr(
46821 not(target_arch = "arm"),
46822 stable(feature = "neon_intrinsics", since = "1.59.0")
46823)]
46824#[cfg_attr(
46825 target_arch = "arm",
46826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46827)]
46828pub fn vreinterpret_u8_s64(a: int64x1_t) -> uint8x8_t {
46829 unsafe {
46830 let ret_val: uint8x8_t = transmute(a);
46831 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46832 }
46833}
46834#[doc = "Vector reinterpret cast operation"]
46835#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s64)"]
46836#[inline(always)]
46837#[cfg(target_endian = "little")]
46838#[target_feature(enable = "neon")]
46839#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46840#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46841#[cfg_attr(
46842 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46843 assert_instr(nop)
46844)]
46845#[cfg_attr(
46846 not(target_arch = "arm"),
46847 stable(feature = "neon_intrinsics", since = "1.59.0")
46848)]
46849#[cfg_attr(
46850 target_arch = "arm",
46851 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46852)]
46853pub fn vreinterpret_u16_s64(a: int64x1_t) -> uint16x4_t {
46854 unsafe { transmute(a) }
46855}
46856#[doc = "Vector reinterpret cast operation"]
46857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s64)"]
46858#[inline(always)]
46859#[cfg(target_endian = "big")]
46860#[target_feature(enable = "neon")]
46861#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46862#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46863#[cfg_attr(
46864 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46865 assert_instr(nop)
46866)]
46867#[cfg_attr(
46868 not(target_arch = "arm"),
46869 stable(feature = "neon_intrinsics", since = "1.59.0")
46870)]
46871#[cfg_attr(
46872 target_arch = "arm",
46873 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46874)]
46875pub fn vreinterpret_u16_s64(a: int64x1_t) -> uint16x4_t {
46876 unsafe {
46877 let ret_val: uint16x4_t = transmute(a);
46878 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46879 }
46880}
46881#[doc = "Vector reinterpret cast operation"]
46882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s64)"]
46883#[inline(always)]
46884#[cfg(target_endian = "little")]
46885#[target_feature(enable = "neon")]
46886#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46887#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46888#[cfg_attr(
46889 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46890 assert_instr(nop)
46891)]
46892#[cfg_attr(
46893 not(target_arch = "arm"),
46894 stable(feature = "neon_intrinsics", since = "1.59.0")
46895)]
46896#[cfg_attr(
46897 target_arch = "arm",
46898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46899)]
46900pub fn vreinterpret_u32_s64(a: int64x1_t) -> uint32x2_t {
46901 unsafe { transmute(a) }
46902}
46903#[doc = "Vector reinterpret cast operation"]
46904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s64)"]
46905#[inline(always)]
46906#[cfg(target_endian = "big")]
46907#[target_feature(enable = "neon")]
46908#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46909#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46910#[cfg_attr(
46911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46912 assert_instr(nop)
46913)]
46914#[cfg_attr(
46915 not(target_arch = "arm"),
46916 stable(feature = "neon_intrinsics", since = "1.59.0")
46917)]
46918#[cfg_attr(
46919 target_arch = "arm",
46920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46921)]
46922pub fn vreinterpret_u32_s64(a: int64x1_t) -> uint32x2_t {
46923 unsafe {
46924 let ret_val: uint32x2_t = transmute(a);
46925 simd_shuffle!(ret_val, ret_val, [1, 0])
46926 }
46927}
46928#[doc = "Vector reinterpret cast operation"]
46929#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s64)"]
46930#[inline(always)]
46931#[target_feature(enable = "neon")]
46932#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46933#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46934#[cfg_attr(
46935 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46936 assert_instr(nop)
46937)]
46938#[cfg_attr(
46939 not(target_arch = "arm"),
46940 stable(feature = "neon_intrinsics", since = "1.59.0")
46941)]
46942#[cfg_attr(
46943 target_arch = "arm",
46944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46945)]
46946pub fn vreinterpret_u64_s64(a: int64x1_t) -> uint64x1_t {
46947 unsafe { transmute(a) }
46948}
46949#[doc = "Vector reinterpret cast operation"]
46950#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s64)"]
46951#[inline(always)]
46952#[cfg(target_endian = "little")]
46953#[target_feature(enable = "neon")]
46954#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46955#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46956#[cfg_attr(
46957 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46958 assert_instr(nop)
46959)]
46960#[cfg_attr(
46961 not(target_arch = "arm"),
46962 stable(feature = "neon_intrinsics", since = "1.59.0")
46963)]
46964#[cfg_attr(
46965 target_arch = "arm",
46966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46967)]
46968pub fn vreinterpret_p8_s64(a: int64x1_t) -> poly8x8_t {
46969 unsafe { transmute(a) }
46970}
46971#[doc = "Vector reinterpret cast operation"]
46972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s64)"]
46973#[inline(always)]
46974#[cfg(target_endian = "big")]
46975#[target_feature(enable = "neon")]
46976#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46977#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46978#[cfg_attr(
46979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46980 assert_instr(nop)
46981)]
46982#[cfg_attr(
46983 not(target_arch = "arm"),
46984 stable(feature = "neon_intrinsics", since = "1.59.0")
46985)]
46986#[cfg_attr(
46987 target_arch = "arm",
46988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46989)]
46990pub fn vreinterpret_p8_s64(a: int64x1_t) -> poly8x8_t {
46991 unsafe {
46992 let ret_val: poly8x8_t = transmute(a);
46993 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46994 }
46995}
46996#[doc = "Vector reinterpret cast operation"]
46997#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s64)"]
46998#[inline(always)]
46999#[cfg(target_endian = "little")]
47000#[target_feature(enable = "neon")]
47001#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47002#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47003#[cfg_attr(
47004 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47005 assert_instr(nop)
47006)]
47007#[cfg_attr(
47008 not(target_arch = "arm"),
47009 stable(feature = "neon_intrinsics", since = "1.59.0")
47010)]
47011#[cfg_attr(
47012 target_arch = "arm",
47013 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47014)]
47015pub fn vreinterpret_p16_s64(a: int64x1_t) -> poly16x4_t {
47016 unsafe { transmute(a) }
47017}
47018#[doc = "Vector reinterpret cast operation"]
47019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s64)"]
47020#[inline(always)]
47021#[cfg(target_endian = "big")]
47022#[target_feature(enable = "neon")]
47023#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47024#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47025#[cfg_attr(
47026 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47027 assert_instr(nop)
47028)]
47029#[cfg_attr(
47030 not(target_arch = "arm"),
47031 stable(feature = "neon_intrinsics", since = "1.59.0")
47032)]
47033#[cfg_attr(
47034 target_arch = "arm",
47035 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47036)]
47037pub fn vreinterpret_p16_s64(a: int64x1_t) -> poly16x4_t {
47038 unsafe {
47039 let ret_val: poly16x4_t = transmute(a);
47040 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47041 }
47042}
47043#[doc = "Vector reinterpret cast operation"]
47044#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s64)"]
47045#[inline(always)]
47046#[cfg(target_endian = "little")]
47047#[target_feature(enable = "neon")]
47048#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47049#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47050#[cfg_attr(
47051 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47052 assert_instr(nop)
47053)]
47054#[cfg_attr(
47055 not(target_arch = "arm"),
47056 stable(feature = "neon_intrinsics", since = "1.59.0")
47057)]
47058#[cfg_attr(
47059 target_arch = "arm",
47060 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47061)]
47062pub fn vreinterpretq_f32_s64(a: int64x2_t) -> float32x4_t {
47063 unsafe { transmute(a) }
47064}
47065#[doc = "Vector reinterpret cast operation"]
47066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s64)"]
47067#[inline(always)]
47068#[cfg(target_endian = "big")]
47069#[target_feature(enable = "neon")]
47070#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47071#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47072#[cfg_attr(
47073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47074 assert_instr(nop)
47075)]
47076#[cfg_attr(
47077 not(target_arch = "arm"),
47078 stable(feature = "neon_intrinsics", since = "1.59.0")
47079)]
47080#[cfg_attr(
47081 target_arch = "arm",
47082 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47083)]
47084pub fn vreinterpretq_f32_s64(a: int64x2_t) -> float32x4_t {
47085 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47086 unsafe {
47087 let ret_val: float32x4_t = transmute(a);
47088 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47089 }
47090}
47091#[doc = "Vector reinterpret cast operation"]
47092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s64)"]
47093#[inline(always)]
47094#[cfg(target_endian = "little")]
47095#[target_feature(enable = "neon")]
47096#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47097#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47098#[cfg_attr(
47099 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47100 assert_instr(nop)
47101)]
47102#[cfg_attr(
47103 not(target_arch = "arm"),
47104 stable(feature = "neon_intrinsics", since = "1.59.0")
47105)]
47106#[cfg_attr(
47107 target_arch = "arm",
47108 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47109)]
47110pub fn vreinterpretq_s8_s64(a: int64x2_t) -> int8x16_t {
47111 unsafe { transmute(a) }
47112}
47113#[doc = "Vector reinterpret cast operation"]
47114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s64)"]
47115#[inline(always)]
47116#[cfg(target_endian = "big")]
47117#[target_feature(enable = "neon")]
47118#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47119#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47120#[cfg_attr(
47121 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47122 assert_instr(nop)
47123)]
47124#[cfg_attr(
47125 not(target_arch = "arm"),
47126 stable(feature = "neon_intrinsics", since = "1.59.0")
47127)]
47128#[cfg_attr(
47129 target_arch = "arm",
47130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47131)]
47132pub fn vreinterpretq_s8_s64(a: int64x2_t) -> int8x16_t {
47133 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47134 unsafe {
47135 let ret_val: int8x16_t = transmute(a);
47136 simd_shuffle!(
47137 ret_val,
47138 ret_val,
47139 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
47140 )
47141 }
47142}
47143#[doc = "Vector reinterpret cast operation"]
47144#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s64)"]
47145#[inline(always)]
47146#[cfg(target_endian = "little")]
47147#[target_feature(enable = "neon")]
47148#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47149#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47150#[cfg_attr(
47151 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47152 assert_instr(nop)
47153)]
47154#[cfg_attr(
47155 not(target_arch = "arm"),
47156 stable(feature = "neon_intrinsics", since = "1.59.0")
47157)]
47158#[cfg_attr(
47159 target_arch = "arm",
47160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47161)]
47162pub fn vreinterpretq_s16_s64(a: int64x2_t) -> int16x8_t {
47163 unsafe { transmute(a) }
47164}
47165#[doc = "Vector reinterpret cast operation"]
47166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s64)"]
47167#[inline(always)]
47168#[cfg(target_endian = "big")]
47169#[target_feature(enable = "neon")]
47170#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47171#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47172#[cfg_attr(
47173 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47174 assert_instr(nop)
47175)]
47176#[cfg_attr(
47177 not(target_arch = "arm"),
47178 stable(feature = "neon_intrinsics", since = "1.59.0")
47179)]
47180#[cfg_attr(
47181 target_arch = "arm",
47182 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47183)]
47184pub fn vreinterpretq_s16_s64(a: int64x2_t) -> int16x8_t {
47185 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47186 unsafe {
47187 let ret_val: int16x8_t = transmute(a);
47188 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47189 }
47190}
47191#[doc = "Vector reinterpret cast operation"]
47192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s64)"]
47193#[inline(always)]
47194#[cfg(target_endian = "little")]
47195#[target_feature(enable = "neon")]
47196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47197#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47198#[cfg_attr(
47199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47200 assert_instr(nop)
47201)]
47202#[cfg_attr(
47203 not(target_arch = "arm"),
47204 stable(feature = "neon_intrinsics", since = "1.59.0")
47205)]
47206#[cfg_attr(
47207 target_arch = "arm",
47208 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47209)]
47210pub fn vreinterpretq_s32_s64(a: int64x2_t) -> int32x4_t {
47211 unsafe { transmute(a) }
47212}
47213#[doc = "Vector reinterpret cast operation"]
47214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s64)"]
47215#[inline(always)]
47216#[cfg(target_endian = "big")]
47217#[target_feature(enable = "neon")]
47218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47219#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47220#[cfg_attr(
47221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47222 assert_instr(nop)
47223)]
47224#[cfg_attr(
47225 not(target_arch = "arm"),
47226 stable(feature = "neon_intrinsics", since = "1.59.0")
47227)]
47228#[cfg_attr(
47229 target_arch = "arm",
47230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47231)]
47232pub fn vreinterpretq_s32_s64(a: int64x2_t) -> int32x4_t {
47233 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47234 unsafe {
47235 let ret_val: int32x4_t = transmute(a);
47236 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47237 }
47238}
47239#[doc = "Vector reinterpret cast operation"]
47240#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s64)"]
47241#[inline(always)]
47242#[cfg(target_endian = "little")]
47243#[target_feature(enable = "neon")]
47244#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47245#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47246#[cfg_attr(
47247 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47248 assert_instr(nop)
47249)]
47250#[cfg_attr(
47251 not(target_arch = "arm"),
47252 stable(feature = "neon_intrinsics", since = "1.59.0")
47253)]
47254#[cfg_attr(
47255 target_arch = "arm",
47256 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47257)]
47258pub fn vreinterpretq_u8_s64(a: int64x2_t) -> uint8x16_t {
47259 unsafe { transmute(a) }
47260}
47261#[doc = "Vector reinterpret cast operation"]
47262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s64)"]
47263#[inline(always)]
47264#[cfg(target_endian = "big")]
47265#[target_feature(enable = "neon")]
47266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47267#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47268#[cfg_attr(
47269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47270 assert_instr(nop)
47271)]
47272#[cfg_attr(
47273 not(target_arch = "arm"),
47274 stable(feature = "neon_intrinsics", since = "1.59.0")
47275)]
47276#[cfg_attr(
47277 target_arch = "arm",
47278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47279)]
47280pub fn vreinterpretq_u8_s64(a: int64x2_t) -> uint8x16_t {
47281 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47282 unsafe {
47283 let ret_val: uint8x16_t = transmute(a);
47284 simd_shuffle!(
47285 ret_val,
47286 ret_val,
47287 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
47288 )
47289 }
47290}
47291#[doc = "Vector reinterpret cast operation"]
47292#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s64)"]
47293#[inline(always)]
47294#[cfg(target_endian = "little")]
47295#[target_feature(enable = "neon")]
47296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47298#[cfg_attr(
47299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47300 assert_instr(nop)
47301)]
47302#[cfg_attr(
47303 not(target_arch = "arm"),
47304 stable(feature = "neon_intrinsics", since = "1.59.0")
47305)]
47306#[cfg_attr(
47307 target_arch = "arm",
47308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47309)]
47310pub fn vreinterpretq_u16_s64(a: int64x2_t) -> uint16x8_t {
47311 unsafe { transmute(a) }
47312}
47313#[doc = "Vector reinterpret cast operation"]
47314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s64)"]
47315#[inline(always)]
47316#[cfg(target_endian = "big")]
47317#[target_feature(enable = "neon")]
47318#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47319#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47320#[cfg_attr(
47321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47322 assert_instr(nop)
47323)]
47324#[cfg_attr(
47325 not(target_arch = "arm"),
47326 stable(feature = "neon_intrinsics", since = "1.59.0")
47327)]
47328#[cfg_attr(
47329 target_arch = "arm",
47330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47331)]
47332pub fn vreinterpretq_u16_s64(a: int64x2_t) -> uint16x8_t {
47333 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47334 unsafe {
47335 let ret_val: uint16x8_t = transmute(a);
47336 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47337 }
47338}
47339#[doc = "Vector reinterpret cast operation"]
47340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s64)"]
47341#[inline(always)]
47342#[cfg(target_endian = "little")]
47343#[target_feature(enable = "neon")]
47344#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47345#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47346#[cfg_attr(
47347 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47348 assert_instr(nop)
47349)]
47350#[cfg_attr(
47351 not(target_arch = "arm"),
47352 stable(feature = "neon_intrinsics", since = "1.59.0")
47353)]
47354#[cfg_attr(
47355 target_arch = "arm",
47356 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47357)]
47358pub fn vreinterpretq_u32_s64(a: int64x2_t) -> uint32x4_t {
47359 unsafe { transmute(a) }
47360}
47361#[doc = "Vector reinterpret cast operation"]
47362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s64)"]
47363#[inline(always)]
47364#[cfg(target_endian = "big")]
47365#[target_feature(enable = "neon")]
47366#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47367#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47368#[cfg_attr(
47369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47370 assert_instr(nop)
47371)]
47372#[cfg_attr(
47373 not(target_arch = "arm"),
47374 stable(feature = "neon_intrinsics", since = "1.59.0")
47375)]
47376#[cfg_attr(
47377 target_arch = "arm",
47378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47379)]
47380pub fn vreinterpretq_u32_s64(a: int64x2_t) -> uint32x4_t {
47381 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47382 unsafe {
47383 let ret_val: uint32x4_t = transmute(a);
47384 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47385 }
47386}
47387#[doc = "Vector reinterpret cast operation"]
47388#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s64)"]
47389#[inline(always)]
47390#[cfg(target_endian = "little")]
47391#[target_feature(enable = "neon")]
47392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47394#[cfg_attr(
47395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47396 assert_instr(nop)
47397)]
47398#[cfg_attr(
47399 not(target_arch = "arm"),
47400 stable(feature = "neon_intrinsics", since = "1.59.0")
47401)]
47402#[cfg_attr(
47403 target_arch = "arm",
47404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47405)]
47406pub fn vreinterpretq_u64_s64(a: int64x2_t) -> uint64x2_t {
47407 unsafe { transmute(a) }
47408}
47409#[doc = "Vector reinterpret cast operation"]
47410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s64)"]
47411#[inline(always)]
47412#[cfg(target_endian = "big")]
47413#[target_feature(enable = "neon")]
47414#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47415#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47416#[cfg_attr(
47417 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47418 assert_instr(nop)
47419)]
47420#[cfg_attr(
47421 not(target_arch = "arm"),
47422 stable(feature = "neon_intrinsics", since = "1.59.0")
47423)]
47424#[cfg_attr(
47425 target_arch = "arm",
47426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47427)]
47428pub fn vreinterpretq_u64_s64(a: int64x2_t) -> uint64x2_t {
47429 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47430 unsafe {
47431 let ret_val: uint64x2_t = transmute(a);
47432 simd_shuffle!(ret_val, ret_val, [1, 0])
47433 }
47434}
47435#[doc = "Vector reinterpret cast operation"]
47436#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s64)"]
47437#[inline(always)]
47438#[cfg(target_endian = "little")]
47439#[target_feature(enable = "neon")]
47440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47442#[cfg_attr(
47443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47444 assert_instr(nop)
47445)]
47446#[cfg_attr(
47447 not(target_arch = "arm"),
47448 stable(feature = "neon_intrinsics", since = "1.59.0")
47449)]
47450#[cfg_attr(
47451 target_arch = "arm",
47452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47453)]
47454pub fn vreinterpretq_p8_s64(a: int64x2_t) -> poly8x16_t {
47455 unsafe { transmute(a) }
47456}
47457#[doc = "Vector reinterpret cast operation"]
47458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s64)"]
47459#[inline(always)]
47460#[cfg(target_endian = "big")]
47461#[target_feature(enable = "neon")]
47462#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47464#[cfg_attr(
47465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47466 assert_instr(nop)
47467)]
47468#[cfg_attr(
47469 not(target_arch = "arm"),
47470 stable(feature = "neon_intrinsics", since = "1.59.0")
47471)]
47472#[cfg_attr(
47473 target_arch = "arm",
47474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47475)]
47476pub fn vreinterpretq_p8_s64(a: int64x2_t) -> poly8x16_t {
47477 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47478 unsafe {
47479 let ret_val: poly8x16_t = transmute(a);
47480 simd_shuffle!(
47481 ret_val,
47482 ret_val,
47483 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
47484 )
47485 }
47486}
47487#[doc = "Vector reinterpret cast operation"]
47488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s64)"]
47489#[inline(always)]
47490#[cfg(target_endian = "little")]
47491#[target_feature(enable = "neon")]
47492#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47493#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47494#[cfg_attr(
47495 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47496 assert_instr(nop)
47497)]
47498#[cfg_attr(
47499 not(target_arch = "arm"),
47500 stable(feature = "neon_intrinsics", since = "1.59.0")
47501)]
47502#[cfg_attr(
47503 target_arch = "arm",
47504 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47505)]
47506pub fn vreinterpretq_p16_s64(a: int64x2_t) -> poly16x8_t {
47507 unsafe { transmute(a) }
47508}
47509#[doc = "Vector reinterpret cast operation"]
47510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s64)"]
47511#[inline(always)]
47512#[cfg(target_endian = "big")]
47513#[target_feature(enable = "neon")]
47514#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47515#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47516#[cfg_attr(
47517 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47518 assert_instr(nop)
47519)]
47520#[cfg_attr(
47521 not(target_arch = "arm"),
47522 stable(feature = "neon_intrinsics", since = "1.59.0")
47523)]
47524#[cfg_attr(
47525 target_arch = "arm",
47526 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47527)]
47528pub fn vreinterpretq_p16_s64(a: int64x2_t) -> poly16x8_t {
47529 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47530 unsafe {
47531 let ret_val: poly16x8_t = transmute(a);
47532 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47533 }
47534}
47535#[doc = "Vector reinterpret cast operation"]
47536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u8)"]
47537#[inline(always)]
47538#[cfg(target_endian = "little")]
47539#[target_feature(enable = "neon")]
47540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47542#[cfg_attr(
47543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47544 assert_instr(nop)
47545)]
47546#[cfg_attr(
47547 not(target_arch = "arm"),
47548 stable(feature = "neon_intrinsics", since = "1.59.0")
47549)]
47550#[cfg_attr(
47551 target_arch = "arm",
47552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47553)]
47554pub fn vreinterpret_f32_u8(a: uint8x8_t) -> float32x2_t {
47555 unsafe { transmute(a) }
47556}
47557#[doc = "Vector reinterpret cast operation"]
47558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u8)"]
47559#[inline(always)]
47560#[cfg(target_endian = "big")]
47561#[target_feature(enable = "neon")]
47562#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47563#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47564#[cfg_attr(
47565 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47566 assert_instr(nop)
47567)]
47568#[cfg_attr(
47569 not(target_arch = "arm"),
47570 stable(feature = "neon_intrinsics", since = "1.59.0")
47571)]
47572#[cfg_attr(
47573 target_arch = "arm",
47574 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47575)]
47576pub fn vreinterpret_f32_u8(a: uint8x8_t) -> float32x2_t {
47577 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47578 unsafe {
47579 let ret_val: float32x2_t = transmute(a);
47580 simd_shuffle!(ret_val, ret_val, [1, 0])
47581 }
47582}
47583#[doc = "Vector reinterpret cast operation"]
47584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u8)"]
47585#[inline(always)]
47586#[cfg(target_endian = "little")]
47587#[target_feature(enable = "neon")]
47588#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47589#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47590#[cfg_attr(
47591 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47592 assert_instr(nop)
47593)]
47594#[cfg_attr(
47595 not(target_arch = "arm"),
47596 stable(feature = "neon_intrinsics", since = "1.59.0")
47597)]
47598#[cfg_attr(
47599 target_arch = "arm",
47600 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47601)]
47602pub fn vreinterpret_s8_u8(a: uint8x8_t) -> int8x8_t {
47603 unsafe { transmute(a) }
47604}
47605#[doc = "Vector reinterpret cast operation"]
47606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u8)"]
47607#[inline(always)]
47608#[cfg(target_endian = "big")]
47609#[target_feature(enable = "neon")]
47610#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47611#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47612#[cfg_attr(
47613 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47614 assert_instr(nop)
47615)]
47616#[cfg_attr(
47617 not(target_arch = "arm"),
47618 stable(feature = "neon_intrinsics", since = "1.59.0")
47619)]
47620#[cfg_attr(
47621 target_arch = "arm",
47622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47623)]
47624pub fn vreinterpret_s8_u8(a: uint8x8_t) -> int8x8_t {
47625 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47626 unsafe {
47627 let ret_val: int8x8_t = transmute(a);
47628 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47629 }
47630}
47631#[doc = "Vector reinterpret cast operation"]
47632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u8)"]
47633#[inline(always)]
47634#[cfg(target_endian = "little")]
47635#[target_feature(enable = "neon")]
47636#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47637#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47638#[cfg_attr(
47639 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47640 assert_instr(nop)
47641)]
47642#[cfg_attr(
47643 not(target_arch = "arm"),
47644 stable(feature = "neon_intrinsics", since = "1.59.0")
47645)]
47646#[cfg_attr(
47647 target_arch = "arm",
47648 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47649)]
47650pub fn vreinterpret_s16_u8(a: uint8x8_t) -> int16x4_t {
47651 unsafe { transmute(a) }
47652}
47653#[doc = "Vector reinterpret cast operation"]
47654#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u8)"]
47655#[inline(always)]
47656#[cfg(target_endian = "big")]
47657#[target_feature(enable = "neon")]
47658#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47659#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47660#[cfg_attr(
47661 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47662 assert_instr(nop)
47663)]
47664#[cfg_attr(
47665 not(target_arch = "arm"),
47666 stable(feature = "neon_intrinsics", since = "1.59.0")
47667)]
47668#[cfg_attr(
47669 target_arch = "arm",
47670 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47671)]
47672pub fn vreinterpret_s16_u8(a: uint8x8_t) -> int16x4_t {
47673 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47674 unsafe {
47675 let ret_val: int16x4_t = transmute(a);
47676 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47677 }
47678}
47679#[doc = "Vector reinterpret cast operation"]
47680#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u8)"]
47681#[inline(always)]
47682#[cfg(target_endian = "little")]
47683#[target_feature(enable = "neon")]
47684#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47685#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47686#[cfg_attr(
47687 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47688 assert_instr(nop)
47689)]
47690#[cfg_attr(
47691 not(target_arch = "arm"),
47692 stable(feature = "neon_intrinsics", since = "1.59.0")
47693)]
47694#[cfg_attr(
47695 target_arch = "arm",
47696 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47697)]
47698pub fn vreinterpret_s32_u8(a: uint8x8_t) -> int32x2_t {
47699 unsafe { transmute(a) }
47700}
47701#[doc = "Vector reinterpret cast operation"]
47702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u8)"]
47703#[inline(always)]
47704#[cfg(target_endian = "big")]
47705#[target_feature(enable = "neon")]
47706#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47707#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47708#[cfg_attr(
47709 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47710 assert_instr(nop)
47711)]
47712#[cfg_attr(
47713 not(target_arch = "arm"),
47714 stable(feature = "neon_intrinsics", since = "1.59.0")
47715)]
47716#[cfg_attr(
47717 target_arch = "arm",
47718 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47719)]
47720pub fn vreinterpret_s32_u8(a: uint8x8_t) -> int32x2_t {
47721 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47722 unsafe {
47723 let ret_val: int32x2_t = transmute(a);
47724 simd_shuffle!(ret_val, ret_val, [1, 0])
47725 }
47726}
47727#[doc = "Vector reinterpret cast operation"]
47728#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u8)"]
47729#[inline(always)]
47730#[cfg(target_endian = "little")]
47731#[target_feature(enable = "neon")]
47732#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47733#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47734#[cfg_attr(
47735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47736 assert_instr(nop)
47737)]
47738#[cfg_attr(
47739 not(target_arch = "arm"),
47740 stable(feature = "neon_intrinsics", since = "1.59.0")
47741)]
47742#[cfg_attr(
47743 target_arch = "arm",
47744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47745)]
47746pub fn vreinterpret_s64_u8(a: uint8x8_t) -> int64x1_t {
47747 unsafe { transmute(a) }
47748}
47749#[doc = "Vector reinterpret cast operation"]
47750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u8)"]
47751#[inline(always)]
47752#[cfg(target_endian = "big")]
47753#[target_feature(enable = "neon")]
47754#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47755#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47756#[cfg_attr(
47757 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47758 assert_instr(nop)
47759)]
47760#[cfg_attr(
47761 not(target_arch = "arm"),
47762 stable(feature = "neon_intrinsics", since = "1.59.0")
47763)]
47764#[cfg_attr(
47765 target_arch = "arm",
47766 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47767)]
47768pub fn vreinterpret_s64_u8(a: uint8x8_t) -> int64x1_t {
47769 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47770 unsafe { transmute(a) }
47771}
47772#[doc = "Vector reinterpret cast operation"]
47773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u8)"]
47774#[inline(always)]
47775#[cfg(target_endian = "little")]
47776#[target_feature(enable = "neon")]
47777#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47778#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47779#[cfg_attr(
47780 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47781 assert_instr(nop)
47782)]
47783#[cfg_attr(
47784 not(target_arch = "arm"),
47785 stable(feature = "neon_intrinsics", since = "1.59.0")
47786)]
47787#[cfg_attr(
47788 target_arch = "arm",
47789 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47790)]
47791pub fn vreinterpret_u16_u8(a: uint8x8_t) -> uint16x4_t {
47792 unsafe { transmute(a) }
47793}
47794#[doc = "Vector reinterpret cast operation"]
47795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u8)"]
47796#[inline(always)]
47797#[cfg(target_endian = "big")]
47798#[target_feature(enable = "neon")]
47799#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47800#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47801#[cfg_attr(
47802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47803 assert_instr(nop)
47804)]
47805#[cfg_attr(
47806 not(target_arch = "arm"),
47807 stable(feature = "neon_intrinsics", since = "1.59.0")
47808)]
47809#[cfg_attr(
47810 target_arch = "arm",
47811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47812)]
47813pub fn vreinterpret_u16_u8(a: uint8x8_t) -> uint16x4_t {
47814 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47815 unsafe {
47816 let ret_val: uint16x4_t = transmute(a);
47817 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47818 }
47819}
47820#[doc = "Vector reinterpret cast operation"]
47821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u8)"]
47822#[inline(always)]
47823#[cfg(target_endian = "little")]
47824#[target_feature(enable = "neon")]
47825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47826#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47827#[cfg_attr(
47828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47829 assert_instr(nop)
47830)]
47831#[cfg_attr(
47832 not(target_arch = "arm"),
47833 stable(feature = "neon_intrinsics", since = "1.59.0")
47834)]
47835#[cfg_attr(
47836 target_arch = "arm",
47837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47838)]
47839pub fn vreinterpret_u32_u8(a: uint8x8_t) -> uint32x2_t {
47840 unsafe { transmute(a) }
47841}
47842#[doc = "Vector reinterpret cast operation"]
47843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u8)"]
47844#[inline(always)]
47845#[cfg(target_endian = "big")]
47846#[target_feature(enable = "neon")]
47847#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47849#[cfg_attr(
47850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47851 assert_instr(nop)
47852)]
47853#[cfg_attr(
47854 not(target_arch = "arm"),
47855 stable(feature = "neon_intrinsics", since = "1.59.0")
47856)]
47857#[cfg_attr(
47858 target_arch = "arm",
47859 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47860)]
47861pub fn vreinterpret_u32_u8(a: uint8x8_t) -> uint32x2_t {
47862 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47863 unsafe {
47864 let ret_val: uint32x2_t = transmute(a);
47865 simd_shuffle!(ret_val, ret_val, [1, 0])
47866 }
47867}
47868#[doc = "Vector reinterpret cast operation"]
47869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u8)"]
47870#[inline(always)]
47871#[cfg(target_endian = "little")]
47872#[target_feature(enable = "neon")]
47873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47874#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47875#[cfg_attr(
47876 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47877 assert_instr(nop)
47878)]
47879#[cfg_attr(
47880 not(target_arch = "arm"),
47881 stable(feature = "neon_intrinsics", since = "1.59.0")
47882)]
47883#[cfg_attr(
47884 target_arch = "arm",
47885 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47886)]
47887pub fn vreinterpret_u64_u8(a: uint8x8_t) -> uint64x1_t {
47888 unsafe { transmute(a) }
47889}
47890#[doc = "Vector reinterpret cast operation"]
47891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u8)"]
47892#[inline(always)]
47893#[cfg(target_endian = "big")]
47894#[target_feature(enable = "neon")]
47895#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47896#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47897#[cfg_attr(
47898 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47899 assert_instr(nop)
47900)]
47901#[cfg_attr(
47902 not(target_arch = "arm"),
47903 stable(feature = "neon_intrinsics", since = "1.59.0")
47904)]
47905#[cfg_attr(
47906 target_arch = "arm",
47907 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47908)]
47909pub fn vreinterpret_u64_u8(a: uint8x8_t) -> uint64x1_t {
47910 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47911 unsafe { transmute(a) }
47912}
47913#[doc = "Vector reinterpret cast operation"]
47914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u8)"]
47915#[inline(always)]
47916#[cfg(target_endian = "little")]
47917#[target_feature(enable = "neon")]
47918#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47919#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47920#[cfg_attr(
47921 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47922 assert_instr(nop)
47923)]
47924#[cfg_attr(
47925 not(target_arch = "arm"),
47926 stable(feature = "neon_intrinsics", since = "1.59.0")
47927)]
47928#[cfg_attr(
47929 target_arch = "arm",
47930 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47931)]
47932pub fn vreinterpret_p8_u8(a: uint8x8_t) -> poly8x8_t {
47933 unsafe { transmute(a) }
47934}
47935#[doc = "Vector reinterpret cast operation"]
47936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u8)"]
47937#[inline(always)]
47938#[cfg(target_endian = "big")]
47939#[target_feature(enable = "neon")]
47940#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47941#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47942#[cfg_attr(
47943 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47944 assert_instr(nop)
47945)]
47946#[cfg_attr(
47947 not(target_arch = "arm"),
47948 stable(feature = "neon_intrinsics", since = "1.59.0")
47949)]
47950#[cfg_attr(
47951 target_arch = "arm",
47952 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47953)]
47954pub fn vreinterpret_p8_u8(a: uint8x8_t) -> poly8x8_t {
47955 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47956 unsafe {
47957 let ret_val: poly8x8_t = transmute(a);
47958 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47959 }
47960}
47961#[doc = "Vector reinterpret cast operation"]
47962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u8)"]
47963#[inline(always)]
47964#[cfg(target_endian = "little")]
47965#[target_feature(enable = "neon")]
47966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47967#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47968#[cfg_attr(
47969 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47970 assert_instr(nop)
47971)]
47972#[cfg_attr(
47973 not(target_arch = "arm"),
47974 stable(feature = "neon_intrinsics", since = "1.59.0")
47975)]
47976#[cfg_attr(
47977 target_arch = "arm",
47978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47979)]
47980pub fn vreinterpret_p16_u8(a: uint8x8_t) -> poly16x4_t {
47981 unsafe { transmute(a) }
47982}
47983#[doc = "Vector reinterpret cast operation"]
47984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u8)"]
47985#[inline(always)]
47986#[cfg(target_endian = "big")]
47987#[target_feature(enable = "neon")]
47988#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47989#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47990#[cfg_attr(
47991 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47992 assert_instr(nop)
47993)]
47994#[cfg_attr(
47995 not(target_arch = "arm"),
47996 stable(feature = "neon_intrinsics", since = "1.59.0")
47997)]
47998#[cfg_attr(
47999 target_arch = "arm",
48000 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48001)]
48002pub fn vreinterpret_p16_u8(a: uint8x8_t) -> poly16x4_t {
48003 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
48004 unsafe {
48005 let ret_val: poly16x4_t = transmute(a);
48006 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48007 }
48008}
48009#[doc = "Vector reinterpret cast operation"]
48010#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u8)"]
48011#[inline(always)]
48012#[cfg(target_endian = "little")]
48013#[target_feature(enable = "neon")]
48014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48015#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48016#[cfg_attr(
48017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48018 assert_instr(nop)
48019)]
48020#[cfg_attr(
48021 not(target_arch = "arm"),
48022 stable(feature = "neon_intrinsics", since = "1.59.0")
48023)]
48024#[cfg_attr(
48025 target_arch = "arm",
48026 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48027)]
48028pub fn vreinterpretq_f32_u8(a: uint8x16_t) -> float32x4_t {
48029 unsafe { transmute(a) }
48030}
48031#[doc = "Vector reinterpret cast operation"]
48032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u8)"]
48033#[inline(always)]
48034#[cfg(target_endian = "big")]
48035#[target_feature(enable = "neon")]
48036#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48037#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48038#[cfg_attr(
48039 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48040 assert_instr(nop)
48041)]
48042#[cfg_attr(
48043 not(target_arch = "arm"),
48044 stable(feature = "neon_intrinsics", since = "1.59.0")
48045)]
48046#[cfg_attr(
48047 target_arch = "arm",
48048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48049)]
48050pub fn vreinterpretq_f32_u8(a: uint8x16_t) -> float32x4_t {
48051 let a: uint8x16_t =
48052 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48053 unsafe {
48054 let ret_val: float32x4_t = transmute(a);
48055 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48056 }
48057}
48058#[doc = "Vector reinterpret cast operation"]
48059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u8)"]
48060#[inline(always)]
48061#[cfg(target_endian = "little")]
48062#[target_feature(enable = "neon")]
48063#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48064#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48065#[cfg_attr(
48066 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48067 assert_instr(nop)
48068)]
48069#[cfg_attr(
48070 not(target_arch = "arm"),
48071 stable(feature = "neon_intrinsics", since = "1.59.0")
48072)]
48073#[cfg_attr(
48074 target_arch = "arm",
48075 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48076)]
48077pub fn vreinterpretq_s8_u8(a: uint8x16_t) -> int8x16_t {
48078 unsafe { transmute(a) }
48079}
48080#[doc = "Vector reinterpret cast operation"]
48081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u8)"]
48082#[inline(always)]
48083#[cfg(target_endian = "big")]
48084#[target_feature(enable = "neon")]
48085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48086#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48087#[cfg_attr(
48088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48089 assert_instr(nop)
48090)]
48091#[cfg_attr(
48092 not(target_arch = "arm"),
48093 stable(feature = "neon_intrinsics", since = "1.59.0")
48094)]
48095#[cfg_attr(
48096 target_arch = "arm",
48097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48098)]
48099pub fn vreinterpretq_s8_u8(a: uint8x16_t) -> int8x16_t {
48100 let a: uint8x16_t =
48101 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48102 unsafe {
48103 let ret_val: int8x16_t = transmute(a);
48104 simd_shuffle!(
48105 ret_val,
48106 ret_val,
48107 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
48108 )
48109 }
48110}
48111#[doc = "Vector reinterpret cast operation"]
48112#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u8)"]
48113#[inline(always)]
48114#[cfg(target_endian = "little")]
48115#[target_feature(enable = "neon")]
48116#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48117#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48118#[cfg_attr(
48119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48120 assert_instr(nop)
48121)]
48122#[cfg_attr(
48123 not(target_arch = "arm"),
48124 stable(feature = "neon_intrinsics", since = "1.59.0")
48125)]
48126#[cfg_attr(
48127 target_arch = "arm",
48128 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48129)]
48130pub fn vreinterpretq_s16_u8(a: uint8x16_t) -> int16x8_t {
48131 unsafe { transmute(a) }
48132}
48133#[doc = "Vector reinterpret cast operation"]
48134#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u8)"]
48135#[inline(always)]
48136#[cfg(target_endian = "big")]
48137#[target_feature(enable = "neon")]
48138#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48139#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48140#[cfg_attr(
48141 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48142 assert_instr(nop)
48143)]
48144#[cfg_attr(
48145 not(target_arch = "arm"),
48146 stable(feature = "neon_intrinsics", since = "1.59.0")
48147)]
48148#[cfg_attr(
48149 target_arch = "arm",
48150 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48151)]
48152pub fn vreinterpretq_s16_u8(a: uint8x16_t) -> int16x8_t {
48153 let a: uint8x16_t =
48154 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48155 unsafe {
48156 let ret_val: int16x8_t = transmute(a);
48157 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48158 }
48159}
48160#[doc = "Vector reinterpret cast operation"]
48161#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u8)"]
48162#[inline(always)]
48163#[cfg(target_endian = "little")]
48164#[target_feature(enable = "neon")]
48165#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48166#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48167#[cfg_attr(
48168 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48169 assert_instr(nop)
48170)]
48171#[cfg_attr(
48172 not(target_arch = "arm"),
48173 stable(feature = "neon_intrinsics", since = "1.59.0")
48174)]
48175#[cfg_attr(
48176 target_arch = "arm",
48177 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48178)]
48179pub fn vreinterpretq_s32_u8(a: uint8x16_t) -> int32x4_t {
48180 unsafe { transmute(a) }
48181}
48182#[doc = "Vector reinterpret cast operation"]
48183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u8)"]
48184#[inline(always)]
48185#[cfg(target_endian = "big")]
48186#[target_feature(enable = "neon")]
48187#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48188#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48189#[cfg_attr(
48190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48191 assert_instr(nop)
48192)]
48193#[cfg_attr(
48194 not(target_arch = "arm"),
48195 stable(feature = "neon_intrinsics", since = "1.59.0")
48196)]
48197#[cfg_attr(
48198 target_arch = "arm",
48199 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48200)]
48201pub fn vreinterpretq_s32_u8(a: uint8x16_t) -> int32x4_t {
48202 let a: uint8x16_t =
48203 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48204 unsafe {
48205 let ret_val: int32x4_t = transmute(a);
48206 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48207 }
48208}
48209#[doc = "Vector reinterpret cast operation"]
48210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u8)"]
48211#[inline(always)]
48212#[cfg(target_endian = "little")]
48213#[target_feature(enable = "neon")]
48214#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48216#[cfg_attr(
48217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48218 assert_instr(nop)
48219)]
48220#[cfg_attr(
48221 not(target_arch = "arm"),
48222 stable(feature = "neon_intrinsics", since = "1.59.0")
48223)]
48224#[cfg_attr(
48225 target_arch = "arm",
48226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48227)]
48228pub fn vreinterpretq_s64_u8(a: uint8x16_t) -> int64x2_t {
48229 unsafe { transmute(a) }
48230}
48231#[doc = "Vector reinterpret cast operation"]
48232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u8)"]
48233#[inline(always)]
48234#[cfg(target_endian = "big")]
48235#[target_feature(enable = "neon")]
48236#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48237#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48238#[cfg_attr(
48239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48240 assert_instr(nop)
48241)]
48242#[cfg_attr(
48243 not(target_arch = "arm"),
48244 stable(feature = "neon_intrinsics", since = "1.59.0")
48245)]
48246#[cfg_attr(
48247 target_arch = "arm",
48248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48249)]
48250pub fn vreinterpretq_s64_u8(a: uint8x16_t) -> int64x2_t {
48251 let a: uint8x16_t =
48252 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48253 unsafe {
48254 let ret_val: int64x2_t = transmute(a);
48255 simd_shuffle!(ret_val, ret_val, [1, 0])
48256 }
48257}
48258#[doc = "Vector reinterpret cast operation"]
48259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u8)"]
48260#[inline(always)]
48261#[cfg(target_endian = "little")]
48262#[target_feature(enable = "neon")]
48263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48264#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48265#[cfg_attr(
48266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48267 assert_instr(nop)
48268)]
48269#[cfg_attr(
48270 not(target_arch = "arm"),
48271 stable(feature = "neon_intrinsics", since = "1.59.0")
48272)]
48273#[cfg_attr(
48274 target_arch = "arm",
48275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48276)]
48277pub fn vreinterpretq_u16_u8(a: uint8x16_t) -> uint16x8_t {
48278 unsafe { transmute(a) }
48279}
48280#[doc = "Vector reinterpret cast operation"]
48281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u8)"]
48282#[inline(always)]
48283#[cfg(target_endian = "big")]
48284#[target_feature(enable = "neon")]
48285#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48286#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48287#[cfg_attr(
48288 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48289 assert_instr(nop)
48290)]
48291#[cfg_attr(
48292 not(target_arch = "arm"),
48293 stable(feature = "neon_intrinsics", since = "1.59.0")
48294)]
48295#[cfg_attr(
48296 target_arch = "arm",
48297 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48298)]
48299pub fn vreinterpretq_u16_u8(a: uint8x16_t) -> uint16x8_t {
48300 let a: uint8x16_t =
48301 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48302 unsafe {
48303 let ret_val: uint16x8_t = transmute(a);
48304 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48305 }
48306}
48307#[doc = "Vector reinterpret cast operation"]
48308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u8)"]
48309#[inline(always)]
48310#[cfg(target_endian = "little")]
48311#[target_feature(enable = "neon")]
48312#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48313#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48314#[cfg_attr(
48315 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48316 assert_instr(nop)
48317)]
48318#[cfg_attr(
48319 not(target_arch = "arm"),
48320 stable(feature = "neon_intrinsics", since = "1.59.0")
48321)]
48322#[cfg_attr(
48323 target_arch = "arm",
48324 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48325)]
48326pub fn vreinterpretq_u32_u8(a: uint8x16_t) -> uint32x4_t {
48327 unsafe { transmute(a) }
48328}
48329#[doc = "Vector reinterpret cast operation"]
48330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u8)"]
48331#[inline(always)]
48332#[cfg(target_endian = "big")]
48333#[target_feature(enable = "neon")]
48334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48335#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48336#[cfg_attr(
48337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48338 assert_instr(nop)
48339)]
48340#[cfg_attr(
48341 not(target_arch = "arm"),
48342 stable(feature = "neon_intrinsics", since = "1.59.0")
48343)]
48344#[cfg_attr(
48345 target_arch = "arm",
48346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48347)]
48348pub fn vreinterpretq_u32_u8(a: uint8x16_t) -> uint32x4_t {
48349 let a: uint8x16_t =
48350 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48351 unsafe {
48352 let ret_val: uint32x4_t = transmute(a);
48353 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48354 }
48355}
48356#[doc = "Vector reinterpret cast operation"]
48357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u8)"]
48358#[inline(always)]
48359#[cfg(target_endian = "little")]
48360#[target_feature(enable = "neon")]
48361#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48362#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48363#[cfg_attr(
48364 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48365 assert_instr(nop)
48366)]
48367#[cfg_attr(
48368 not(target_arch = "arm"),
48369 stable(feature = "neon_intrinsics", since = "1.59.0")
48370)]
48371#[cfg_attr(
48372 target_arch = "arm",
48373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48374)]
48375pub fn vreinterpretq_u64_u8(a: uint8x16_t) -> uint64x2_t {
48376 unsafe { transmute(a) }
48377}
48378#[doc = "Vector reinterpret cast operation"]
48379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u8)"]
48380#[inline(always)]
48381#[cfg(target_endian = "big")]
48382#[target_feature(enable = "neon")]
48383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48384#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48385#[cfg_attr(
48386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48387 assert_instr(nop)
48388)]
48389#[cfg_attr(
48390 not(target_arch = "arm"),
48391 stable(feature = "neon_intrinsics", since = "1.59.0")
48392)]
48393#[cfg_attr(
48394 target_arch = "arm",
48395 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48396)]
48397pub fn vreinterpretq_u64_u8(a: uint8x16_t) -> uint64x2_t {
48398 let a: uint8x16_t =
48399 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48400 unsafe {
48401 let ret_val: uint64x2_t = transmute(a);
48402 simd_shuffle!(ret_val, ret_val, [1, 0])
48403 }
48404}
48405#[doc = "Vector reinterpret cast operation"]
48406#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u8)"]
48407#[inline(always)]
48408#[cfg(target_endian = "little")]
48409#[target_feature(enable = "neon")]
48410#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48411#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48412#[cfg_attr(
48413 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48414 assert_instr(nop)
48415)]
48416#[cfg_attr(
48417 not(target_arch = "arm"),
48418 stable(feature = "neon_intrinsics", since = "1.59.0")
48419)]
48420#[cfg_attr(
48421 target_arch = "arm",
48422 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48423)]
48424pub fn vreinterpretq_p8_u8(a: uint8x16_t) -> poly8x16_t {
48425 unsafe { transmute(a) }
48426}
48427#[doc = "Vector reinterpret cast operation"]
48428#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u8)"]
48429#[inline(always)]
48430#[cfg(target_endian = "big")]
48431#[target_feature(enable = "neon")]
48432#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48433#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48434#[cfg_attr(
48435 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48436 assert_instr(nop)
48437)]
48438#[cfg_attr(
48439 not(target_arch = "arm"),
48440 stable(feature = "neon_intrinsics", since = "1.59.0")
48441)]
48442#[cfg_attr(
48443 target_arch = "arm",
48444 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48445)]
48446pub fn vreinterpretq_p8_u8(a: uint8x16_t) -> poly8x16_t {
48447 let a: uint8x16_t =
48448 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48449 unsafe {
48450 let ret_val: poly8x16_t = transmute(a);
48451 simd_shuffle!(
48452 ret_val,
48453 ret_val,
48454 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
48455 )
48456 }
48457}
48458#[doc = "Vector reinterpret cast operation"]
48459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u8)"]
48460#[inline(always)]
48461#[cfg(target_endian = "little")]
48462#[target_feature(enable = "neon")]
48463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48464#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48465#[cfg_attr(
48466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48467 assert_instr(nop)
48468)]
48469#[cfg_attr(
48470 not(target_arch = "arm"),
48471 stable(feature = "neon_intrinsics", since = "1.59.0")
48472)]
48473#[cfg_attr(
48474 target_arch = "arm",
48475 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48476)]
48477pub fn vreinterpretq_p16_u8(a: uint8x16_t) -> poly16x8_t {
48478 unsafe { transmute(a) }
48479}
48480#[doc = "Vector reinterpret cast operation"]
48481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u8)"]
48482#[inline(always)]
48483#[cfg(target_endian = "big")]
48484#[target_feature(enable = "neon")]
48485#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48486#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48487#[cfg_attr(
48488 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48489 assert_instr(nop)
48490)]
48491#[cfg_attr(
48492 not(target_arch = "arm"),
48493 stable(feature = "neon_intrinsics", since = "1.59.0")
48494)]
48495#[cfg_attr(
48496 target_arch = "arm",
48497 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48498)]
48499pub fn vreinterpretq_p16_u8(a: uint8x16_t) -> poly16x8_t {
48500 let a: uint8x16_t =
48501 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48502 unsafe {
48503 let ret_val: poly16x8_t = transmute(a);
48504 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48505 }
48506}
48507#[doc = "Vector reinterpret cast operation"]
48508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u16)"]
48509#[inline(always)]
48510#[cfg(target_endian = "little")]
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_f32_u16(a: uint16x4_t) -> float32x2_t {
48527 unsafe { transmute(a) }
48528}
48529#[doc = "Vector reinterpret cast operation"]
48530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u16)"]
48531#[inline(always)]
48532#[cfg(target_endian = "big")]
48533#[target_feature(enable = "neon")]
48534#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48536#[cfg_attr(
48537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48538 assert_instr(nop)
48539)]
48540#[cfg_attr(
48541 not(target_arch = "arm"),
48542 stable(feature = "neon_intrinsics", since = "1.59.0")
48543)]
48544#[cfg_attr(
48545 target_arch = "arm",
48546 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48547)]
48548pub fn vreinterpret_f32_u16(a: uint16x4_t) -> float32x2_t {
48549 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48550 unsafe {
48551 let ret_val: float32x2_t = transmute(a);
48552 simd_shuffle!(ret_val, ret_val, [1, 0])
48553 }
48554}
48555#[doc = "Vector reinterpret cast operation"]
48556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u16)"]
48557#[inline(always)]
48558#[cfg(target_endian = "little")]
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 vreinterpret_s8_u16(a: uint16x4_t) -> int8x8_t {
48575 unsafe { transmute(a) }
48576}
48577#[doc = "Vector reinterpret cast operation"]
48578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u16)"]
48579#[inline(always)]
48580#[cfg(target_endian = "big")]
48581#[target_feature(enable = "neon")]
48582#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48583#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48584#[cfg_attr(
48585 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48586 assert_instr(nop)
48587)]
48588#[cfg_attr(
48589 not(target_arch = "arm"),
48590 stable(feature = "neon_intrinsics", since = "1.59.0")
48591)]
48592#[cfg_attr(
48593 target_arch = "arm",
48594 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48595)]
48596pub fn vreinterpret_s8_u16(a: uint16x4_t) -> int8x8_t {
48597 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48598 unsafe {
48599 let ret_val: int8x8_t = transmute(a);
48600 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48601 }
48602}
48603#[doc = "Vector reinterpret cast operation"]
48604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u16)"]
48605#[inline(always)]
48606#[cfg(target_endian = "little")]
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 vreinterpret_s16_u16(a: uint16x4_t) -> int16x4_t {
48623 unsafe { transmute(a) }
48624}
48625#[doc = "Vector reinterpret cast operation"]
48626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u16)"]
48627#[inline(always)]
48628#[cfg(target_endian = "big")]
48629#[target_feature(enable = "neon")]
48630#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48631#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48632#[cfg_attr(
48633 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48634 assert_instr(nop)
48635)]
48636#[cfg_attr(
48637 not(target_arch = "arm"),
48638 stable(feature = "neon_intrinsics", since = "1.59.0")
48639)]
48640#[cfg_attr(
48641 target_arch = "arm",
48642 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48643)]
48644pub fn vreinterpret_s16_u16(a: uint16x4_t) -> int16x4_t {
48645 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48646 unsafe {
48647 let ret_val: int16x4_t = transmute(a);
48648 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48649 }
48650}
48651#[doc = "Vector reinterpret cast operation"]
48652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u16)"]
48653#[inline(always)]
48654#[cfg(target_endian = "little")]
48655#[target_feature(enable = "neon")]
48656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48657#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48658#[cfg_attr(
48659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48660 assert_instr(nop)
48661)]
48662#[cfg_attr(
48663 not(target_arch = "arm"),
48664 stable(feature = "neon_intrinsics", since = "1.59.0")
48665)]
48666#[cfg_attr(
48667 target_arch = "arm",
48668 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48669)]
48670pub fn vreinterpret_s32_u16(a: uint16x4_t) -> int32x2_t {
48671 unsafe { transmute(a) }
48672}
48673#[doc = "Vector reinterpret cast operation"]
48674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u16)"]
48675#[inline(always)]
48676#[cfg(target_endian = "big")]
48677#[target_feature(enable = "neon")]
48678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48679#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48680#[cfg_attr(
48681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48682 assert_instr(nop)
48683)]
48684#[cfg_attr(
48685 not(target_arch = "arm"),
48686 stable(feature = "neon_intrinsics", since = "1.59.0")
48687)]
48688#[cfg_attr(
48689 target_arch = "arm",
48690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48691)]
48692pub fn vreinterpret_s32_u16(a: uint16x4_t) -> int32x2_t {
48693 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48694 unsafe {
48695 let ret_val: int32x2_t = transmute(a);
48696 simd_shuffle!(ret_val, ret_val, [1, 0])
48697 }
48698}
48699#[doc = "Vector reinterpret cast operation"]
48700#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u16)"]
48701#[inline(always)]
48702#[cfg(target_endian = "little")]
48703#[target_feature(enable = "neon")]
48704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48705#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48706#[cfg_attr(
48707 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48708 assert_instr(nop)
48709)]
48710#[cfg_attr(
48711 not(target_arch = "arm"),
48712 stable(feature = "neon_intrinsics", since = "1.59.0")
48713)]
48714#[cfg_attr(
48715 target_arch = "arm",
48716 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48717)]
48718pub fn vreinterpret_s64_u16(a: uint16x4_t) -> int64x1_t {
48719 unsafe { transmute(a) }
48720}
48721#[doc = "Vector reinterpret cast operation"]
48722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u16)"]
48723#[inline(always)]
48724#[cfg(target_endian = "big")]
48725#[target_feature(enable = "neon")]
48726#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48727#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48728#[cfg_attr(
48729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48730 assert_instr(nop)
48731)]
48732#[cfg_attr(
48733 not(target_arch = "arm"),
48734 stable(feature = "neon_intrinsics", since = "1.59.0")
48735)]
48736#[cfg_attr(
48737 target_arch = "arm",
48738 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48739)]
48740pub fn vreinterpret_s64_u16(a: uint16x4_t) -> int64x1_t {
48741 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48742 unsafe { transmute(a) }
48743}
48744#[doc = "Vector reinterpret cast operation"]
48745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u16)"]
48746#[inline(always)]
48747#[cfg(target_endian = "little")]
48748#[target_feature(enable = "neon")]
48749#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48750#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48751#[cfg_attr(
48752 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48753 assert_instr(nop)
48754)]
48755#[cfg_attr(
48756 not(target_arch = "arm"),
48757 stable(feature = "neon_intrinsics", since = "1.59.0")
48758)]
48759#[cfg_attr(
48760 target_arch = "arm",
48761 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48762)]
48763pub fn vreinterpret_u8_u16(a: uint16x4_t) -> uint8x8_t {
48764 unsafe { transmute(a) }
48765}
48766#[doc = "Vector reinterpret cast operation"]
48767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u16)"]
48768#[inline(always)]
48769#[cfg(target_endian = "big")]
48770#[target_feature(enable = "neon")]
48771#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48772#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48773#[cfg_attr(
48774 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48775 assert_instr(nop)
48776)]
48777#[cfg_attr(
48778 not(target_arch = "arm"),
48779 stable(feature = "neon_intrinsics", since = "1.59.0")
48780)]
48781#[cfg_attr(
48782 target_arch = "arm",
48783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48784)]
48785pub fn vreinterpret_u8_u16(a: uint16x4_t) -> uint8x8_t {
48786 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48787 unsafe {
48788 let ret_val: uint8x8_t = transmute(a);
48789 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48790 }
48791}
48792#[doc = "Vector reinterpret cast operation"]
48793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u16)"]
48794#[inline(always)]
48795#[cfg(target_endian = "little")]
48796#[target_feature(enable = "neon")]
48797#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48798#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48799#[cfg_attr(
48800 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48801 assert_instr(nop)
48802)]
48803#[cfg_attr(
48804 not(target_arch = "arm"),
48805 stable(feature = "neon_intrinsics", since = "1.59.0")
48806)]
48807#[cfg_attr(
48808 target_arch = "arm",
48809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48810)]
48811pub fn vreinterpret_u32_u16(a: uint16x4_t) -> uint32x2_t {
48812 unsafe { transmute(a) }
48813}
48814#[doc = "Vector reinterpret cast operation"]
48815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u16)"]
48816#[inline(always)]
48817#[cfg(target_endian = "big")]
48818#[target_feature(enable = "neon")]
48819#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48820#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48821#[cfg_attr(
48822 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48823 assert_instr(nop)
48824)]
48825#[cfg_attr(
48826 not(target_arch = "arm"),
48827 stable(feature = "neon_intrinsics", since = "1.59.0")
48828)]
48829#[cfg_attr(
48830 target_arch = "arm",
48831 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48832)]
48833pub fn vreinterpret_u32_u16(a: uint16x4_t) -> uint32x2_t {
48834 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48835 unsafe {
48836 let ret_val: uint32x2_t = transmute(a);
48837 simd_shuffle!(ret_val, ret_val, [1, 0])
48838 }
48839}
48840#[doc = "Vector reinterpret cast operation"]
48841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u16)"]
48842#[inline(always)]
48843#[cfg(target_endian = "little")]
48844#[target_feature(enable = "neon")]
48845#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48846#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48847#[cfg_attr(
48848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48849 assert_instr(nop)
48850)]
48851#[cfg_attr(
48852 not(target_arch = "arm"),
48853 stable(feature = "neon_intrinsics", since = "1.59.0")
48854)]
48855#[cfg_attr(
48856 target_arch = "arm",
48857 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48858)]
48859pub fn vreinterpret_u64_u16(a: uint16x4_t) -> uint64x1_t {
48860 unsafe { transmute(a) }
48861}
48862#[doc = "Vector reinterpret cast operation"]
48863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u16)"]
48864#[inline(always)]
48865#[cfg(target_endian = "big")]
48866#[target_feature(enable = "neon")]
48867#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48868#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48869#[cfg_attr(
48870 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48871 assert_instr(nop)
48872)]
48873#[cfg_attr(
48874 not(target_arch = "arm"),
48875 stable(feature = "neon_intrinsics", since = "1.59.0")
48876)]
48877#[cfg_attr(
48878 target_arch = "arm",
48879 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48880)]
48881pub fn vreinterpret_u64_u16(a: uint16x4_t) -> uint64x1_t {
48882 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48883 unsafe { transmute(a) }
48884}
48885#[doc = "Vector reinterpret cast operation"]
48886#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u16)"]
48887#[inline(always)]
48888#[cfg(target_endian = "little")]
48889#[target_feature(enable = "neon")]
48890#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48891#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48892#[cfg_attr(
48893 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48894 assert_instr(nop)
48895)]
48896#[cfg_attr(
48897 not(target_arch = "arm"),
48898 stable(feature = "neon_intrinsics", since = "1.59.0")
48899)]
48900#[cfg_attr(
48901 target_arch = "arm",
48902 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48903)]
48904pub fn vreinterpret_p8_u16(a: uint16x4_t) -> poly8x8_t {
48905 unsafe { transmute(a) }
48906}
48907#[doc = "Vector reinterpret cast operation"]
48908#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u16)"]
48909#[inline(always)]
48910#[cfg(target_endian = "big")]
48911#[target_feature(enable = "neon")]
48912#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48913#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48914#[cfg_attr(
48915 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48916 assert_instr(nop)
48917)]
48918#[cfg_attr(
48919 not(target_arch = "arm"),
48920 stable(feature = "neon_intrinsics", since = "1.59.0")
48921)]
48922#[cfg_attr(
48923 target_arch = "arm",
48924 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48925)]
48926pub fn vreinterpret_p8_u16(a: uint16x4_t) -> poly8x8_t {
48927 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48928 unsafe {
48929 let ret_val: poly8x8_t = transmute(a);
48930 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48931 }
48932}
48933#[doc = "Vector reinterpret cast operation"]
48934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u16)"]
48935#[inline(always)]
48936#[cfg(target_endian = "little")]
48937#[target_feature(enable = "neon")]
48938#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48940#[cfg_attr(
48941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48942 assert_instr(nop)
48943)]
48944#[cfg_attr(
48945 not(target_arch = "arm"),
48946 stable(feature = "neon_intrinsics", since = "1.59.0")
48947)]
48948#[cfg_attr(
48949 target_arch = "arm",
48950 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48951)]
48952pub fn vreinterpret_p16_u16(a: uint16x4_t) -> poly16x4_t {
48953 unsafe { transmute(a) }
48954}
48955#[doc = "Vector reinterpret cast operation"]
48956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u16)"]
48957#[inline(always)]
48958#[cfg(target_endian = "big")]
48959#[target_feature(enable = "neon")]
48960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48961#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48962#[cfg_attr(
48963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48964 assert_instr(nop)
48965)]
48966#[cfg_attr(
48967 not(target_arch = "arm"),
48968 stable(feature = "neon_intrinsics", since = "1.59.0")
48969)]
48970#[cfg_attr(
48971 target_arch = "arm",
48972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48973)]
48974pub fn vreinterpret_p16_u16(a: uint16x4_t) -> poly16x4_t {
48975 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48976 unsafe {
48977 let ret_val: poly16x4_t = transmute(a);
48978 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48979 }
48980}
48981#[doc = "Vector reinterpret cast operation"]
48982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u16)"]
48983#[inline(always)]
48984#[cfg(target_endian = "little")]
48985#[target_feature(enable = "neon")]
48986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48988#[cfg_attr(
48989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48990 assert_instr(nop)
48991)]
48992#[cfg_attr(
48993 not(target_arch = "arm"),
48994 stable(feature = "neon_intrinsics", since = "1.59.0")
48995)]
48996#[cfg_attr(
48997 target_arch = "arm",
48998 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48999)]
49000pub fn vreinterpretq_f32_u16(a: uint16x8_t) -> float32x4_t {
49001 unsafe { transmute(a) }
49002}
49003#[doc = "Vector reinterpret cast operation"]
49004#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u16)"]
49005#[inline(always)]
49006#[cfg(target_endian = "big")]
49007#[target_feature(enable = "neon")]
49008#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49009#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49010#[cfg_attr(
49011 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49012 assert_instr(nop)
49013)]
49014#[cfg_attr(
49015 not(target_arch = "arm"),
49016 stable(feature = "neon_intrinsics", since = "1.59.0")
49017)]
49018#[cfg_attr(
49019 target_arch = "arm",
49020 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49021)]
49022pub fn vreinterpretq_f32_u16(a: uint16x8_t) -> float32x4_t {
49023 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49024 unsafe {
49025 let ret_val: float32x4_t = transmute(a);
49026 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49027 }
49028}
49029#[doc = "Vector reinterpret cast operation"]
49030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u16)"]
49031#[inline(always)]
49032#[cfg(target_endian = "little")]
49033#[target_feature(enable = "neon")]
49034#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49035#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49036#[cfg_attr(
49037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49038 assert_instr(nop)
49039)]
49040#[cfg_attr(
49041 not(target_arch = "arm"),
49042 stable(feature = "neon_intrinsics", since = "1.59.0")
49043)]
49044#[cfg_attr(
49045 target_arch = "arm",
49046 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49047)]
49048pub fn vreinterpretq_s8_u16(a: uint16x8_t) -> int8x16_t {
49049 unsafe { transmute(a) }
49050}
49051#[doc = "Vector reinterpret cast operation"]
49052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u16)"]
49053#[inline(always)]
49054#[cfg(target_endian = "big")]
49055#[target_feature(enable = "neon")]
49056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49058#[cfg_attr(
49059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49060 assert_instr(nop)
49061)]
49062#[cfg_attr(
49063 not(target_arch = "arm"),
49064 stable(feature = "neon_intrinsics", since = "1.59.0")
49065)]
49066#[cfg_attr(
49067 target_arch = "arm",
49068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49069)]
49070pub fn vreinterpretq_s8_u16(a: uint16x8_t) -> int8x16_t {
49071 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49072 unsafe {
49073 let ret_val: int8x16_t = transmute(a);
49074 simd_shuffle!(
49075 ret_val,
49076 ret_val,
49077 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
49078 )
49079 }
49080}
49081#[doc = "Vector reinterpret cast operation"]
49082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u16)"]
49083#[inline(always)]
49084#[cfg(target_endian = "little")]
49085#[target_feature(enable = "neon")]
49086#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49087#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49088#[cfg_attr(
49089 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49090 assert_instr(nop)
49091)]
49092#[cfg_attr(
49093 not(target_arch = "arm"),
49094 stable(feature = "neon_intrinsics", since = "1.59.0")
49095)]
49096#[cfg_attr(
49097 target_arch = "arm",
49098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49099)]
49100pub fn vreinterpretq_s16_u16(a: uint16x8_t) -> int16x8_t {
49101 unsafe { transmute(a) }
49102}
49103#[doc = "Vector reinterpret cast operation"]
49104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u16)"]
49105#[inline(always)]
49106#[cfg(target_endian = "big")]
49107#[target_feature(enable = "neon")]
49108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49109#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49110#[cfg_attr(
49111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49112 assert_instr(nop)
49113)]
49114#[cfg_attr(
49115 not(target_arch = "arm"),
49116 stable(feature = "neon_intrinsics", since = "1.59.0")
49117)]
49118#[cfg_attr(
49119 target_arch = "arm",
49120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49121)]
49122pub fn vreinterpretq_s16_u16(a: uint16x8_t) -> int16x8_t {
49123 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49124 unsafe {
49125 let ret_val: int16x8_t = transmute(a);
49126 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49127 }
49128}
49129#[doc = "Vector reinterpret cast operation"]
49130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u16)"]
49131#[inline(always)]
49132#[cfg(target_endian = "little")]
49133#[target_feature(enable = "neon")]
49134#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49135#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49136#[cfg_attr(
49137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49138 assert_instr(nop)
49139)]
49140#[cfg_attr(
49141 not(target_arch = "arm"),
49142 stable(feature = "neon_intrinsics", since = "1.59.0")
49143)]
49144#[cfg_attr(
49145 target_arch = "arm",
49146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49147)]
49148pub fn vreinterpretq_s32_u16(a: uint16x8_t) -> int32x4_t {
49149 unsafe { transmute(a) }
49150}
49151#[doc = "Vector reinterpret cast operation"]
49152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u16)"]
49153#[inline(always)]
49154#[cfg(target_endian = "big")]
49155#[target_feature(enable = "neon")]
49156#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49157#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49158#[cfg_attr(
49159 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49160 assert_instr(nop)
49161)]
49162#[cfg_attr(
49163 not(target_arch = "arm"),
49164 stable(feature = "neon_intrinsics", since = "1.59.0")
49165)]
49166#[cfg_attr(
49167 target_arch = "arm",
49168 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49169)]
49170pub fn vreinterpretq_s32_u16(a: uint16x8_t) -> int32x4_t {
49171 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49172 unsafe {
49173 let ret_val: int32x4_t = transmute(a);
49174 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49175 }
49176}
49177#[doc = "Vector reinterpret cast operation"]
49178#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u16)"]
49179#[inline(always)]
49180#[cfg(target_endian = "little")]
49181#[target_feature(enable = "neon")]
49182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49184#[cfg_attr(
49185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49186 assert_instr(nop)
49187)]
49188#[cfg_attr(
49189 not(target_arch = "arm"),
49190 stable(feature = "neon_intrinsics", since = "1.59.0")
49191)]
49192#[cfg_attr(
49193 target_arch = "arm",
49194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49195)]
49196pub fn vreinterpretq_s64_u16(a: uint16x8_t) -> int64x2_t {
49197 unsafe { transmute(a) }
49198}
49199#[doc = "Vector reinterpret cast operation"]
49200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u16)"]
49201#[inline(always)]
49202#[cfg(target_endian = "big")]
49203#[target_feature(enable = "neon")]
49204#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49205#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49206#[cfg_attr(
49207 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49208 assert_instr(nop)
49209)]
49210#[cfg_attr(
49211 not(target_arch = "arm"),
49212 stable(feature = "neon_intrinsics", since = "1.59.0")
49213)]
49214#[cfg_attr(
49215 target_arch = "arm",
49216 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49217)]
49218pub fn vreinterpretq_s64_u16(a: uint16x8_t) -> int64x2_t {
49219 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49220 unsafe {
49221 let ret_val: int64x2_t = transmute(a);
49222 simd_shuffle!(ret_val, ret_val, [1, 0])
49223 }
49224}
49225#[doc = "Vector reinterpret cast operation"]
49226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u16)"]
49227#[inline(always)]
49228#[cfg(target_endian = "little")]
49229#[target_feature(enable = "neon")]
49230#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49231#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49232#[cfg_attr(
49233 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49234 assert_instr(nop)
49235)]
49236#[cfg_attr(
49237 not(target_arch = "arm"),
49238 stable(feature = "neon_intrinsics", since = "1.59.0")
49239)]
49240#[cfg_attr(
49241 target_arch = "arm",
49242 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49243)]
49244pub fn vreinterpretq_u8_u16(a: uint16x8_t) -> uint8x16_t {
49245 unsafe { transmute(a) }
49246}
49247#[doc = "Vector reinterpret cast operation"]
49248#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u16)"]
49249#[inline(always)]
49250#[cfg(target_endian = "big")]
49251#[target_feature(enable = "neon")]
49252#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49253#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49254#[cfg_attr(
49255 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49256 assert_instr(nop)
49257)]
49258#[cfg_attr(
49259 not(target_arch = "arm"),
49260 stable(feature = "neon_intrinsics", since = "1.59.0")
49261)]
49262#[cfg_attr(
49263 target_arch = "arm",
49264 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49265)]
49266pub fn vreinterpretq_u8_u16(a: uint16x8_t) -> uint8x16_t {
49267 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49268 unsafe {
49269 let ret_val: uint8x16_t = transmute(a);
49270 simd_shuffle!(
49271 ret_val,
49272 ret_val,
49273 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
49274 )
49275 }
49276}
49277#[doc = "Vector reinterpret cast operation"]
49278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u16)"]
49279#[inline(always)]
49280#[cfg(target_endian = "little")]
49281#[target_feature(enable = "neon")]
49282#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49283#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49284#[cfg_attr(
49285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49286 assert_instr(nop)
49287)]
49288#[cfg_attr(
49289 not(target_arch = "arm"),
49290 stable(feature = "neon_intrinsics", since = "1.59.0")
49291)]
49292#[cfg_attr(
49293 target_arch = "arm",
49294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49295)]
49296pub fn vreinterpretq_u32_u16(a: uint16x8_t) -> uint32x4_t {
49297 unsafe { transmute(a) }
49298}
49299#[doc = "Vector reinterpret cast operation"]
49300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u16)"]
49301#[inline(always)]
49302#[cfg(target_endian = "big")]
49303#[target_feature(enable = "neon")]
49304#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49305#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49306#[cfg_attr(
49307 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49308 assert_instr(nop)
49309)]
49310#[cfg_attr(
49311 not(target_arch = "arm"),
49312 stable(feature = "neon_intrinsics", since = "1.59.0")
49313)]
49314#[cfg_attr(
49315 target_arch = "arm",
49316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49317)]
49318pub fn vreinterpretq_u32_u16(a: uint16x8_t) -> uint32x4_t {
49319 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49320 unsafe {
49321 let ret_val: uint32x4_t = transmute(a);
49322 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49323 }
49324}
49325#[doc = "Vector reinterpret cast operation"]
49326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u16)"]
49327#[inline(always)]
49328#[cfg(target_endian = "little")]
49329#[target_feature(enable = "neon")]
49330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49331#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49332#[cfg_attr(
49333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49334 assert_instr(nop)
49335)]
49336#[cfg_attr(
49337 not(target_arch = "arm"),
49338 stable(feature = "neon_intrinsics", since = "1.59.0")
49339)]
49340#[cfg_attr(
49341 target_arch = "arm",
49342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49343)]
49344pub fn vreinterpretq_u64_u16(a: uint16x8_t) -> uint64x2_t {
49345 unsafe { transmute(a) }
49346}
49347#[doc = "Vector reinterpret cast operation"]
49348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u16)"]
49349#[inline(always)]
49350#[cfg(target_endian = "big")]
49351#[target_feature(enable = "neon")]
49352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49354#[cfg_attr(
49355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49356 assert_instr(nop)
49357)]
49358#[cfg_attr(
49359 not(target_arch = "arm"),
49360 stable(feature = "neon_intrinsics", since = "1.59.0")
49361)]
49362#[cfg_attr(
49363 target_arch = "arm",
49364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49365)]
49366pub fn vreinterpretq_u64_u16(a: uint16x8_t) -> uint64x2_t {
49367 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49368 unsafe {
49369 let ret_val: uint64x2_t = transmute(a);
49370 simd_shuffle!(ret_val, ret_val, [1, 0])
49371 }
49372}
49373#[doc = "Vector reinterpret cast operation"]
49374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u16)"]
49375#[inline(always)]
49376#[cfg(target_endian = "little")]
49377#[target_feature(enable = "neon")]
49378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49379#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49380#[cfg_attr(
49381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49382 assert_instr(nop)
49383)]
49384#[cfg_attr(
49385 not(target_arch = "arm"),
49386 stable(feature = "neon_intrinsics", since = "1.59.0")
49387)]
49388#[cfg_attr(
49389 target_arch = "arm",
49390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49391)]
49392pub fn vreinterpretq_p8_u16(a: uint16x8_t) -> poly8x16_t {
49393 unsafe { transmute(a) }
49394}
49395#[doc = "Vector reinterpret cast operation"]
49396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u16)"]
49397#[inline(always)]
49398#[cfg(target_endian = "big")]
49399#[target_feature(enable = "neon")]
49400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49401#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49402#[cfg_attr(
49403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49404 assert_instr(nop)
49405)]
49406#[cfg_attr(
49407 not(target_arch = "arm"),
49408 stable(feature = "neon_intrinsics", since = "1.59.0")
49409)]
49410#[cfg_attr(
49411 target_arch = "arm",
49412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49413)]
49414pub fn vreinterpretq_p8_u16(a: uint16x8_t) -> poly8x16_t {
49415 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49416 unsafe {
49417 let ret_val: poly8x16_t = transmute(a);
49418 simd_shuffle!(
49419 ret_val,
49420 ret_val,
49421 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
49422 )
49423 }
49424}
49425#[doc = "Vector reinterpret cast operation"]
49426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u16)"]
49427#[inline(always)]
49428#[cfg(target_endian = "little")]
49429#[target_feature(enable = "neon")]
49430#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49431#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49432#[cfg_attr(
49433 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49434 assert_instr(nop)
49435)]
49436#[cfg_attr(
49437 not(target_arch = "arm"),
49438 stable(feature = "neon_intrinsics", since = "1.59.0")
49439)]
49440#[cfg_attr(
49441 target_arch = "arm",
49442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49443)]
49444pub fn vreinterpretq_p16_u16(a: uint16x8_t) -> poly16x8_t {
49445 unsafe { transmute(a) }
49446}
49447#[doc = "Vector reinterpret cast operation"]
49448#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u16)"]
49449#[inline(always)]
49450#[cfg(target_endian = "big")]
49451#[target_feature(enable = "neon")]
49452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49453#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49454#[cfg_attr(
49455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49456 assert_instr(nop)
49457)]
49458#[cfg_attr(
49459 not(target_arch = "arm"),
49460 stable(feature = "neon_intrinsics", since = "1.59.0")
49461)]
49462#[cfg_attr(
49463 target_arch = "arm",
49464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49465)]
49466pub fn vreinterpretq_p16_u16(a: uint16x8_t) -> poly16x8_t {
49467 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49468 unsafe {
49469 let ret_val: poly16x8_t = transmute(a);
49470 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49471 }
49472}
49473#[doc = "Vector reinterpret cast operation"]
49474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u32)"]
49475#[inline(always)]
49476#[cfg(target_endian = "little")]
49477#[target_feature(enable = "neon")]
49478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49480#[cfg_attr(
49481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49482 assert_instr(nop)
49483)]
49484#[cfg_attr(
49485 not(target_arch = "arm"),
49486 stable(feature = "neon_intrinsics", since = "1.59.0")
49487)]
49488#[cfg_attr(
49489 target_arch = "arm",
49490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49491)]
49492pub fn vreinterpret_f32_u32(a: uint32x2_t) -> float32x2_t {
49493 unsafe { transmute(a) }
49494}
49495#[doc = "Vector reinterpret cast operation"]
49496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u32)"]
49497#[inline(always)]
49498#[cfg(target_endian = "big")]
49499#[target_feature(enable = "neon")]
49500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49501#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49502#[cfg_attr(
49503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49504 assert_instr(nop)
49505)]
49506#[cfg_attr(
49507 not(target_arch = "arm"),
49508 stable(feature = "neon_intrinsics", since = "1.59.0")
49509)]
49510#[cfg_attr(
49511 target_arch = "arm",
49512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49513)]
49514pub fn vreinterpret_f32_u32(a: uint32x2_t) -> float32x2_t {
49515 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49516 unsafe {
49517 let ret_val: float32x2_t = transmute(a);
49518 simd_shuffle!(ret_val, ret_val, [1, 0])
49519 }
49520}
49521#[doc = "Vector reinterpret cast operation"]
49522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u32)"]
49523#[inline(always)]
49524#[cfg(target_endian = "little")]
49525#[target_feature(enable = "neon")]
49526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49528#[cfg_attr(
49529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49530 assert_instr(nop)
49531)]
49532#[cfg_attr(
49533 not(target_arch = "arm"),
49534 stable(feature = "neon_intrinsics", since = "1.59.0")
49535)]
49536#[cfg_attr(
49537 target_arch = "arm",
49538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49539)]
49540pub fn vreinterpret_s8_u32(a: uint32x2_t) -> int8x8_t {
49541 unsafe { transmute(a) }
49542}
49543#[doc = "Vector reinterpret cast operation"]
49544#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u32)"]
49545#[inline(always)]
49546#[cfg(target_endian = "big")]
49547#[target_feature(enable = "neon")]
49548#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49549#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49550#[cfg_attr(
49551 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49552 assert_instr(nop)
49553)]
49554#[cfg_attr(
49555 not(target_arch = "arm"),
49556 stable(feature = "neon_intrinsics", since = "1.59.0")
49557)]
49558#[cfg_attr(
49559 target_arch = "arm",
49560 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49561)]
49562pub fn vreinterpret_s8_u32(a: uint32x2_t) -> int8x8_t {
49563 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49564 unsafe {
49565 let ret_val: int8x8_t = transmute(a);
49566 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49567 }
49568}
49569#[doc = "Vector reinterpret cast operation"]
49570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u32)"]
49571#[inline(always)]
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 vreinterpret_s16_u32(a: uint32x2_t) -> int16x4_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/vreinterpret_s16_u32)"]
49593#[inline(always)]
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 vreinterpret_s16_u32(a: uint32x2_t) -> int16x4_t {
49611 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49612 unsafe {
49613 let ret_val: int16x4_t = transmute(a);
49614 simd_shuffle!(ret_val, ret_val, [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/vreinterpret_s32_u32)"]
49619#[inline(always)]
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 vreinterpret_s32_u32(a: uint32x2_t) -> int32x2_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/vreinterpret_s32_u32)"]
49641#[inline(always)]
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 vreinterpret_s32_u32(a: uint32x2_t) -> int32x2_t {
49659 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49660 unsafe {
49661 let ret_val: int32x2_t = transmute(a);
49662 simd_shuffle!(ret_val, ret_val, [1, 0])
49663 }
49664}
49665#[doc = "Vector reinterpret cast operation"]
49666#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u32)"]
49667#[inline(always)]
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 vreinterpret_s64_u32(a: uint32x2_t) -> int64x1_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/vreinterpret_s64_u32)"]
49689#[inline(always)]
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 vreinterpret_s64_u32(a: uint32x2_t) -> int64x1_t {
49707 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49708 unsafe { transmute(a) }
49709}
49710#[doc = "Vector reinterpret cast operation"]
49711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u32)"]
49712#[inline(always)]
49713#[cfg(target_endian = "little")]
49714#[target_feature(enable = "neon")]
49715#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49716#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49717#[cfg_attr(
49718 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49719 assert_instr(nop)
49720)]
49721#[cfg_attr(
49722 not(target_arch = "arm"),
49723 stable(feature = "neon_intrinsics", since = "1.59.0")
49724)]
49725#[cfg_attr(
49726 target_arch = "arm",
49727 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49728)]
49729pub fn vreinterpret_u8_u32(a: uint32x2_t) -> uint8x8_t {
49730 unsafe { transmute(a) }
49731}
49732#[doc = "Vector reinterpret cast operation"]
49733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u32)"]
49734#[inline(always)]
49735#[cfg(target_endian = "big")]
49736#[target_feature(enable = "neon")]
49737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49738#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49739#[cfg_attr(
49740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49741 assert_instr(nop)
49742)]
49743#[cfg_attr(
49744 not(target_arch = "arm"),
49745 stable(feature = "neon_intrinsics", since = "1.59.0")
49746)]
49747#[cfg_attr(
49748 target_arch = "arm",
49749 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49750)]
49751pub fn vreinterpret_u8_u32(a: uint32x2_t) -> uint8x8_t {
49752 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49753 unsafe {
49754 let ret_val: uint8x8_t = transmute(a);
49755 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49756 }
49757}
49758#[doc = "Vector reinterpret cast operation"]
49759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u32)"]
49760#[inline(always)]
49761#[cfg(target_endian = "little")]
49762#[target_feature(enable = "neon")]
49763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49764#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49765#[cfg_attr(
49766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49767 assert_instr(nop)
49768)]
49769#[cfg_attr(
49770 not(target_arch = "arm"),
49771 stable(feature = "neon_intrinsics", since = "1.59.0")
49772)]
49773#[cfg_attr(
49774 target_arch = "arm",
49775 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49776)]
49777pub fn vreinterpret_u16_u32(a: uint32x2_t) -> uint16x4_t {
49778 unsafe { transmute(a) }
49779}
49780#[doc = "Vector reinterpret cast operation"]
49781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u32)"]
49782#[inline(always)]
49783#[cfg(target_endian = "big")]
49784#[target_feature(enable = "neon")]
49785#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49786#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49787#[cfg_attr(
49788 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49789 assert_instr(nop)
49790)]
49791#[cfg_attr(
49792 not(target_arch = "arm"),
49793 stable(feature = "neon_intrinsics", since = "1.59.0")
49794)]
49795#[cfg_attr(
49796 target_arch = "arm",
49797 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49798)]
49799pub fn vreinterpret_u16_u32(a: uint32x2_t) -> uint16x4_t {
49800 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49801 unsafe {
49802 let ret_val: uint16x4_t = transmute(a);
49803 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49804 }
49805}
49806#[doc = "Vector reinterpret cast operation"]
49807#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u32)"]
49808#[inline(always)]
49809#[cfg(target_endian = "little")]
49810#[target_feature(enable = "neon")]
49811#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49812#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49813#[cfg_attr(
49814 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49815 assert_instr(nop)
49816)]
49817#[cfg_attr(
49818 not(target_arch = "arm"),
49819 stable(feature = "neon_intrinsics", since = "1.59.0")
49820)]
49821#[cfg_attr(
49822 target_arch = "arm",
49823 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49824)]
49825pub fn vreinterpret_u64_u32(a: uint32x2_t) -> uint64x1_t {
49826 unsafe { transmute(a) }
49827}
49828#[doc = "Vector reinterpret cast operation"]
49829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u32)"]
49830#[inline(always)]
49831#[cfg(target_endian = "big")]
49832#[target_feature(enable = "neon")]
49833#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49834#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49835#[cfg_attr(
49836 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49837 assert_instr(nop)
49838)]
49839#[cfg_attr(
49840 not(target_arch = "arm"),
49841 stable(feature = "neon_intrinsics", since = "1.59.0")
49842)]
49843#[cfg_attr(
49844 target_arch = "arm",
49845 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49846)]
49847pub fn vreinterpret_u64_u32(a: uint32x2_t) -> uint64x1_t {
49848 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49849 unsafe { transmute(a) }
49850}
49851#[doc = "Vector reinterpret cast operation"]
49852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u32)"]
49853#[inline(always)]
49854#[cfg(target_endian = "little")]
49855#[target_feature(enable = "neon")]
49856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49858#[cfg_attr(
49859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49860 assert_instr(nop)
49861)]
49862#[cfg_attr(
49863 not(target_arch = "arm"),
49864 stable(feature = "neon_intrinsics", since = "1.59.0")
49865)]
49866#[cfg_attr(
49867 target_arch = "arm",
49868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49869)]
49870pub fn vreinterpret_p8_u32(a: uint32x2_t) -> poly8x8_t {
49871 unsafe { transmute(a) }
49872}
49873#[doc = "Vector reinterpret cast operation"]
49874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u32)"]
49875#[inline(always)]
49876#[cfg(target_endian = "big")]
49877#[target_feature(enable = "neon")]
49878#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49879#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49880#[cfg_attr(
49881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49882 assert_instr(nop)
49883)]
49884#[cfg_attr(
49885 not(target_arch = "arm"),
49886 stable(feature = "neon_intrinsics", since = "1.59.0")
49887)]
49888#[cfg_attr(
49889 target_arch = "arm",
49890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49891)]
49892pub fn vreinterpret_p8_u32(a: uint32x2_t) -> poly8x8_t {
49893 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49894 unsafe {
49895 let ret_val: poly8x8_t = transmute(a);
49896 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49897 }
49898}
49899#[doc = "Vector reinterpret cast operation"]
49900#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u32)"]
49901#[inline(always)]
49902#[cfg(target_endian = "little")]
49903#[target_feature(enable = "neon")]
49904#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49905#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49906#[cfg_attr(
49907 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49908 assert_instr(nop)
49909)]
49910#[cfg_attr(
49911 not(target_arch = "arm"),
49912 stable(feature = "neon_intrinsics", since = "1.59.0")
49913)]
49914#[cfg_attr(
49915 target_arch = "arm",
49916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49917)]
49918pub fn vreinterpret_p16_u32(a: uint32x2_t) -> poly16x4_t {
49919 unsafe { transmute(a) }
49920}
49921#[doc = "Vector reinterpret cast operation"]
49922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u32)"]
49923#[inline(always)]
49924#[cfg(target_endian = "big")]
49925#[target_feature(enable = "neon")]
49926#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49927#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49928#[cfg_attr(
49929 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49930 assert_instr(nop)
49931)]
49932#[cfg_attr(
49933 not(target_arch = "arm"),
49934 stable(feature = "neon_intrinsics", since = "1.59.0")
49935)]
49936#[cfg_attr(
49937 target_arch = "arm",
49938 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49939)]
49940pub fn vreinterpret_p16_u32(a: uint32x2_t) -> poly16x4_t {
49941 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49942 unsafe {
49943 let ret_val: poly16x4_t = transmute(a);
49944 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49945 }
49946}
49947#[doc = "Vector reinterpret cast operation"]
49948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u32)"]
49949#[inline(always)]
49950#[cfg(target_endian = "little")]
49951#[target_feature(enable = "neon")]
49952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49954#[cfg_attr(
49955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49956 assert_instr(nop)
49957)]
49958#[cfg_attr(
49959 not(target_arch = "arm"),
49960 stable(feature = "neon_intrinsics", since = "1.59.0")
49961)]
49962#[cfg_attr(
49963 target_arch = "arm",
49964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49965)]
49966pub fn vreinterpretq_f32_u32(a: uint32x4_t) -> float32x4_t {
49967 unsafe { transmute(a) }
49968}
49969#[doc = "Vector reinterpret cast operation"]
49970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u32)"]
49971#[inline(always)]
49972#[cfg(target_endian = "big")]
49973#[target_feature(enable = "neon")]
49974#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49975#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49976#[cfg_attr(
49977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49978 assert_instr(nop)
49979)]
49980#[cfg_attr(
49981 not(target_arch = "arm"),
49982 stable(feature = "neon_intrinsics", since = "1.59.0")
49983)]
49984#[cfg_attr(
49985 target_arch = "arm",
49986 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49987)]
49988pub fn vreinterpretq_f32_u32(a: uint32x4_t) -> float32x4_t {
49989 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
49990 unsafe {
49991 let ret_val: float32x4_t = transmute(a);
49992 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49993 }
49994}
49995#[doc = "Vector reinterpret cast operation"]
49996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u32)"]
49997#[inline(always)]
49998#[cfg(target_endian = "little")]
49999#[target_feature(enable = "neon")]
50000#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50001#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50002#[cfg_attr(
50003 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50004 assert_instr(nop)
50005)]
50006#[cfg_attr(
50007 not(target_arch = "arm"),
50008 stable(feature = "neon_intrinsics", since = "1.59.0")
50009)]
50010#[cfg_attr(
50011 target_arch = "arm",
50012 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50013)]
50014pub fn vreinterpretq_s8_u32(a: uint32x4_t) -> int8x16_t {
50015 unsafe { transmute(a) }
50016}
50017#[doc = "Vector reinterpret cast operation"]
50018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u32)"]
50019#[inline(always)]
50020#[cfg(target_endian = "big")]
50021#[target_feature(enable = "neon")]
50022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50023#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50024#[cfg_attr(
50025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50026 assert_instr(nop)
50027)]
50028#[cfg_attr(
50029 not(target_arch = "arm"),
50030 stable(feature = "neon_intrinsics", since = "1.59.0")
50031)]
50032#[cfg_attr(
50033 target_arch = "arm",
50034 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50035)]
50036pub fn vreinterpretq_s8_u32(a: uint32x4_t) -> int8x16_t {
50037 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50038 unsafe {
50039 let ret_val: int8x16_t = transmute(a);
50040 simd_shuffle!(
50041 ret_val,
50042 ret_val,
50043 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
50044 )
50045 }
50046}
50047#[doc = "Vector reinterpret cast operation"]
50048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u32)"]
50049#[inline(always)]
50050#[cfg(target_endian = "little")]
50051#[target_feature(enable = "neon")]
50052#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50053#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50054#[cfg_attr(
50055 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50056 assert_instr(nop)
50057)]
50058#[cfg_attr(
50059 not(target_arch = "arm"),
50060 stable(feature = "neon_intrinsics", since = "1.59.0")
50061)]
50062#[cfg_attr(
50063 target_arch = "arm",
50064 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50065)]
50066pub fn vreinterpretq_s16_u32(a: uint32x4_t) -> int16x8_t {
50067 unsafe { transmute(a) }
50068}
50069#[doc = "Vector reinterpret cast operation"]
50070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u32)"]
50071#[inline(always)]
50072#[cfg(target_endian = "big")]
50073#[target_feature(enable = "neon")]
50074#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50075#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50076#[cfg_attr(
50077 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50078 assert_instr(nop)
50079)]
50080#[cfg_attr(
50081 not(target_arch = "arm"),
50082 stable(feature = "neon_intrinsics", since = "1.59.0")
50083)]
50084#[cfg_attr(
50085 target_arch = "arm",
50086 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50087)]
50088pub fn vreinterpretq_s16_u32(a: uint32x4_t) -> int16x8_t {
50089 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50090 unsafe {
50091 let ret_val: int16x8_t = transmute(a);
50092 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50093 }
50094}
50095#[doc = "Vector reinterpret cast operation"]
50096#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u32)"]
50097#[inline(always)]
50098#[cfg(target_endian = "little")]
50099#[target_feature(enable = "neon")]
50100#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50101#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50102#[cfg_attr(
50103 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50104 assert_instr(nop)
50105)]
50106#[cfg_attr(
50107 not(target_arch = "arm"),
50108 stable(feature = "neon_intrinsics", since = "1.59.0")
50109)]
50110#[cfg_attr(
50111 target_arch = "arm",
50112 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50113)]
50114pub fn vreinterpretq_s32_u32(a: uint32x4_t) -> int32x4_t {
50115 unsafe { transmute(a) }
50116}
50117#[doc = "Vector reinterpret cast operation"]
50118#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u32)"]
50119#[inline(always)]
50120#[cfg(target_endian = "big")]
50121#[target_feature(enable = "neon")]
50122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50123#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50124#[cfg_attr(
50125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50126 assert_instr(nop)
50127)]
50128#[cfg_attr(
50129 not(target_arch = "arm"),
50130 stable(feature = "neon_intrinsics", since = "1.59.0")
50131)]
50132#[cfg_attr(
50133 target_arch = "arm",
50134 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50135)]
50136pub fn vreinterpretq_s32_u32(a: uint32x4_t) -> int32x4_t {
50137 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50138 unsafe {
50139 let ret_val: int32x4_t = transmute(a);
50140 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50141 }
50142}
50143#[doc = "Vector reinterpret cast operation"]
50144#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u32)"]
50145#[inline(always)]
50146#[cfg(target_endian = "little")]
50147#[target_feature(enable = "neon")]
50148#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50149#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50150#[cfg_attr(
50151 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50152 assert_instr(nop)
50153)]
50154#[cfg_attr(
50155 not(target_arch = "arm"),
50156 stable(feature = "neon_intrinsics", since = "1.59.0")
50157)]
50158#[cfg_attr(
50159 target_arch = "arm",
50160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50161)]
50162pub fn vreinterpretq_s64_u32(a: uint32x4_t) -> int64x2_t {
50163 unsafe { transmute(a) }
50164}
50165#[doc = "Vector reinterpret cast operation"]
50166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u32)"]
50167#[inline(always)]
50168#[cfg(target_endian = "big")]
50169#[target_feature(enable = "neon")]
50170#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50171#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50172#[cfg_attr(
50173 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50174 assert_instr(nop)
50175)]
50176#[cfg_attr(
50177 not(target_arch = "arm"),
50178 stable(feature = "neon_intrinsics", since = "1.59.0")
50179)]
50180#[cfg_attr(
50181 target_arch = "arm",
50182 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50183)]
50184pub fn vreinterpretq_s64_u32(a: uint32x4_t) -> int64x2_t {
50185 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50186 unsafe {
50187 let ret_val: int64x2_t = transmute(a);
50188 simd_shuffle!(ret_val, ret_val, [1, 0])
50189 }
50190}
50191#[doc = "Vector reinterpret cast operation"]
50192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u32)"]
50193#[inline(always)]
50194#[cfg(target_endian = "little")]
50195#[target_feature(enable = "neon")]
50196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50197#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50198#[cfg_attr(
50199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50200 assert_instr(nop)
50201)]
50202#[cfg_attr(
50203 not(target_arch = "arm"),
50204 stable(feature = "neon_intrinsics", since = "1.59.0")
50205)]
50206#[cfg_attr(
50207 target_arch = "arm",
50208 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50209)]
50210pub fn vreinterpretq_u8_u32(a: uint32x4_t) -> uint8x16_t {
50211 unsafe { transmute(a) }
50212}
50213#[doc = "Vector reinterpret cast operation"]
50214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u32)"]
50215#[inline(always)]
50216#[cfg(target_endian = "big")]
50217#[target_feature(enable = "neon")]
50218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50219#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50220#[cfg_attr(
50221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50222 assert_instr(nop)
50223)]
50224#[cfg_attr(
50225 not(target_arch = "arm"),
50226 stable(feature = "neon_intrinsics", since = "1.59.0")
50227)]
50228#[cfg_attr(
50229 target_arch = "arm",
50230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50231)]
50232pub fn vreinterpretq_u8_u32(a: uint32x4_t) -> uint8x16_t {
50233 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50234 unsafe {
50235 let ret_val: uint8x16_t = transmute(a);
50236 simd_shuffle!(
50237 ret_val,
50238 ret_val,
50239 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
50240 )
50241 }
50242}
50243#[doc = "Vector reinterpret cast operation"]
50244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u32)"]
50245#[inline(always)]
50246#[cfg(target_endian = "little")]
50247#[target_feature(enable = "neon")]
50248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50250#[cfg_attr(
50251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50252 assert_instr(nop)
50253)]
50254#[cfg_attr(
50255 not(target_arch = "arm"),
50256 stable(feature = "neon_intrinsics", since = "1.59.0")
50257)]
50258#[cfg_attr(
50259 target_arch = "arm",
50260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50261)]
50262pub fn vreinterpretq_u16_u32(a: uint32x4_t) -> uint16x8_t {
50263 unsafe { transmute(a) }
50264}
50265#[doc = "Vector reinterpret cast operation"]
50266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u32)"]
50267#[inline(always)]
50268#[cfg(target_endian = "big")]
50269#[target_feature(enable = "neon")]
50270#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50271#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50272#[cfg_attr(
50273 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50274 assert_instr(nop)
50275)]
50276#[cfg_attr(
50277 not(target_arch = "arm"),
50278 stable(feature = "neon_intrinsics", since = "1.59.0")
50279)]
50280#[cfg_attr(
50281 target_arch = "arm",
50282 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50283)]
50284pub fn vreinterpretq_u16_u32(a: uint32x4_t) -> uint16x8_t {
50285 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50286 unsafe {
50287 let ret_val: uint16x8_t = transmute(a);
50288 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50289 }
50290}
50291#[doc = "Vector reinterpret cast operation"]
50292#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u32)"]
50293#[inline(always)]
50294#[cfg(target_endian = "little")]
50295#[target_feature(enable = "neon")]
50296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50298#[cfg_attr(
50299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50300 assert_instr(nop)
50301)]
50302#[cfg_attr(
50303 not(target_arch = "arm"),
50304 stable(feature = "neon_intrinsics", since = "1.59.0")
50305)]
50306#[cfg_attr(
50307 target_arch = "arm",
50308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50309)]
50310pub fn vreinterpretq_u64_u32(a: uint32x4_t) -> uint64x2_t {
50311 unsafe { transmute(a) }
50312}
50313#[doc = "Vector reinterpret cast operation"]
50314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u32)"]
50315#[inline(always)]
50316#[cfg(target_endian = "big")]
50317#[target_feature(enable = "neon")]
50318#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50319#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50320#[cfg_attr(
50321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50322 assert_instr(nop)
50323)]
50324#[cfg_attr(
50325 not(target_arch = "arm"),
50326 stable(feature = "neon_intrinsics", since = "1.59.0")
50327)]
50328#[cfg_attr(
50329 target_arch = "arm",
50330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50331)]
50332pub fn vreinterpretq_u64_u32(a: uint32x4_t) -> uint64x2_t {
50333 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50334 unsafe {
50335 let ret_val: uint64x2_t = transmute(a);
50336 simd_shuffle!(ret_val, ret_val, [1, 0])
50337 }
50338}
50339#[doc = "Vector reinterpret cast operation"]
50340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u32)"]
50341#[inline(always)]
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 vreinterpretq_p8_u32(a: uint32x4_t) -> poly8x16_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/vreinterpretq_p8_u32)"]
50363#[inline(always)]
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 vreinterpretq_p8_u32(a: uint32x4_t) -> poly8x16_t {
50381 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50382 unsafe {
50383 let ret_val: poly8x16_t = transmute(a);
50384 simd_shuffle!(
50385 ret_val,
50386 ret_val,
50387 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
50388 )
50389 }
50390}
50391#[doc = "Vector reinterpret cast operation"]
50392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u32)"]
50393#[inline(always)]
50394#[cfg(target_endian = "little")]
50395#[target_feature(enable = "neon")]
50396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50397#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50398#[cfg_attr(
50399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50400 assert_instr(nop)
50401)]
50402#[cfg_attr(
50403 not(target_arch = "arm"),
50404 stable(feature = "neon_intrinsics", since = "1.59.0")
50405)]
50406#[cfg_attr(
50407 target_arch = "arm",
50408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50409)]
50410pub fn vreinterpretq_p16_u32(a: uint32x4_t) -> poly16x8_t {
50411 unsafe { transmute(a) }
50412}
50413#[doc = "Vector reinterpret cast operation"]
50414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u32)"]
50415#[inline(always)]
50416#[cfg(target_endian = "big")]
50417#[target_feature(enable = "neon")]
50418#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50419#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50420#[cfg_attr(
50421 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50422 assert_instr(nop)
50423)]
50424#[cfg_attr(
50425 not(target_arch = "arm"),
50426 stable(feature = "neon_intrinsics", since = "1.59.0")
50427)]
50428#[cfg_attr(
50429 target_arch = "arm",
50430 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50431)]
50432pub fn vreinterpretq_p16_u32(a: uint32x4_t) -> poly16x8_t {
50433 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50434 unsafe {
50435 let ret_val: poly16x8_t = transmute(a);
50436 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50437 }
50438}
50439#[doc = "Vector reinterpret cast operation"]
50440#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u64)"]
50441#[inline(always)]
50442#[cfg(target_endian = "little")]
50443#[target_feature(enable = "neon")]
50444#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50445#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50446#[cfg_attr(
50447 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50448 assert_instr(nop)
50449)]
50450#[cfg_attr(
50451 not(target_arch = "arm"),
50452 stable(feature = "neon_intrinsics", since = "1.59.0")
50453)]
50454#[cfg_attr(
50455 target_arch = "arm",
50456 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50457)]
50458pub fn vreinterpret_f32_u64(a: uint64x1_t) -> float32x2_t {
50459 unsafe { transmute(a) }
50460}
50461#[doc = "Vector reinterpret cast operation"]
50462#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u64)"]
50463#[inline(always)]
50464#[cfg(target_endian = "big")]
50465#[target_feature(enable = "neon")]
50466#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50467#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50468#[cfg_attr(
50469 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50470 assert_instr(nop)
50471)]
50472#[cfg_attr(
50473 not(target_arch = "arm"),
50474 stable(feature = "neon_intrinsics", since = "1.59.0")
50475)]
50476#[cfg_attr(
50477 target_arch = "arm",
50478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50479)]
50480pub fn vreinterpret_f32_u64(a: uint64x1_t) -> float32x2_t {
50481 unsafe {
50482 let ret_val: float32x2_t = transmute(a);
50483 simd_shuffle!(ret_val, ret_val, [1, 0])
50484 }
50485}
50486#[doc = "Vector reinterpret cast operation"]
50487#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u64)"]
50488#[inline(always)]
50489#[cfg(target_endian = "little")]
50490#[target_feature(enable = "neon")]
50491#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50492#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50493#[cfg_attr(
50494 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50495 assert_instr(nop)
50496)]
50497#[cfg_attr(
50498 not(target_arch = "arm"),
50499 stable(feature = "neon_intrinsics", since = "1.59.0")
50500)]
50501#[cfg_attr(
50502 target_arch = "arm",
50503 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50504)]
50505pub fn vreinterpret_s8_u64(a: uint64x1_t) -> int8x8_t {
50506 unsafe { transmute(a) }
50507}
50508#[doc = "Vector reinterpret cast operation"]
50509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u64)"]
50510#[inline(always)]
50511#[cfg(target_endian = "big")]
50512#[target_feature(enable = "neon")]
50513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50514#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50515#[cfg_attr(
50516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50517 assert_instr(nop)
50518)]
50519#[cfg_attr(
50520 not(target_arch = "arm"),
50521 stable(feature = "neon_intrinsics", since = "1.59.0")
50522)]
50523#[cfg_attr(
50524 target_arch = "arm",
50525 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50526)]
50527pub fn vreinterpret_s8_u64(a: uint64x1_t) -> int8x8_t {
50528 unsafe {
50529 let ret_val: int8x8_t = transmute(a);
50530 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50531 }
50532}
50533#[doc = "Vector reinterpret cast operation"]
50534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u64)"]
50535#[inline(always)]
50536#[cfg(target_endian = "little")]
50537#[target_feature(enable = "neon")]
50538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50540#[cfg_attr(
50541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50542 assert_instr(nop)
50543)]
50544#[cfg_attr(
50545 not(target_arch = "arm"),
50546 stable(feature = "neon_intrinsics", since = "1.59.0")
50547)]
50548#[cfg_attr(
50549 target_arch = "arm",
50550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50551)]
50552pub fn vreinterpret_s16_u64(a: uint64x1_t) -> int16x4_t {
50553 unsafe { transmute(a) }
50554}
50555#[doc = "Vector reinterpret cast operation"]
50556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u64)"]
50557#[inline(always)]
50558#[cfg(target_endian = "big")]
50559#[target_feature(enable = "neon")]
50560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50562#[cfg_attr(
50563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50564 assert_instr(nop)
50565)]
50566#[cfg_attr(
50567 not(target_arch = "arm"),
50568 stable(feature = "neon_intrinsics", since = "1.59.0")
50569)]
50570#[cfg_attr(
50571 target_arch = "arm",
50572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50573)]
50574pub fn vreinterpret_s16_u64(a: uint64x1_t) -> int16x4_t {
50575 unsafe {
50576 let ret_val: int16x4_t = transmute(a);
50577 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50578 }
50579}
50580#[doc = "Vector reinterpret cast operation"]
50581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u64)"]
50582#[inline(always)]
50583#[cfg(target_endian = "little")]
50584#[target_feature(enable = "neon")]
50585#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50586#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50587#[cfg_attr(
50588 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50589 assert_instr(nop)
50590)]
50591#[cfg_attr(
50592 not(target_arch = "arm"),
50593 stable(feature = "neon_intrinsics", since = "1.59.0")
50594)]
50595#[cfg_attr(
50596 target_arch = "arm",
50597 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50598)]
50599pub fn vreinterpret_s32_u64(a: uint64x1_t) -> int32x2_t {
50600 unsafe { transmute(a) }
50601}
50602#[doc = "Vector reinterpret cast operation"]
50603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u64)"]
50604#[inline(always)]
50605#[cfg(target_endian = "big")]
50606#[target_feature(enable = "neon")]
50607#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50608#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50609#[cfg_attr(
50610 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50611 assert_instr(nop)
50612)]
50613#[cfg_attr(
50614 not(target_arch = "arm"),
50615 stable(feature = "neon_intrinsics", since = "1.59.0")
50616)]
50617#[cfg_attr(
50618 target_arch = "arm",
50619 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50620)]
50621pub fn vreinterpret_s32_u64(a: uint64x1_t) -> int32x2_t {
50622 unsafe {
50623 let ret_val: int32x2_t = transmute(a);
50624 simd_shuffle!(ret_val, ret_val, [1, 0])
50625 }
50626}
50627#[doc = "Vector reinterpret cast operation"]
50628#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u64)"]
50629#[inline(always)]
50630#[target_feature(enable = "neon")]
50631#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50633#[cfg_attr(
50634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50635 assert_instr(nop)
50636)]
50637#[cfg_attr(
50638 not(target_arch = "arm"),
50639 stable(feature = "neon_intrinsics", since = "1.59.0")
50640)]
50641#[cfg_attr(
50642 target_arch = "arm",
50643 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50644)]
50645pub fn vreinterpret_s64_u64(a: uint64x1_t) -> int64x1_t {
50646 unsafe { transmute(a) }
50647}
50648#[doc = "Vector reinterpret cast operation"]
50649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u64)"]
50650#[inline(always)]
50651#[cfg(target_endian = "little")]
50652#[target_feature(enable = "neon")]
50653#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50654#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50655#[cfg_attr(
50656 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50657 assert_instr(nop)
50658)]
50659#[cfg_attr(
50660 not(target_arch = "arm"),
50661 stable(feature = "neon_intrinsics", since = "1.59.0")
50662)]
50663#[cfg_attr(
50664 target_arch = "arm",
50665 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50666)]
50667pub fn vreinterpret_u8_u64(a: uint64x1_t) -> uint8x8_t {
50668 unsafe { transmute(a) }
50669}
50670#[doc = "Vector reinterpret cast operation"]
50671#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u64)"]
50672#[inline(always)]
50673#[cfg(target_endian = "big")]
50674#[target_feature(enable = "neon")]
50675#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50676#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50677#[cfg_attr(
50678 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50679 assert_instr(nop)
50680)]
50681#[cfg_attr(
50682 not(target_arch = "arm"),
50683 stable(feature = "neon_intrinsics", since = "1.59.0")
50684)]
50685#[cfg_attr(
50686 target_arch = "arm",
50687 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50688)]
50689pub fn vreinterpret_u8_u64(a: uint64x1_t) -> uint8x8_t {
50690 unsafe {
50691 let ret_val: uint8x8_t = transmute(a);
50692 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50693 }
50694}
50695#[doc = "Vector reinterpret cast operation"]
50696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u64)"]
50697#[inline(always)]
50698#[cfg(target_endian = "little")]
50699#[target_feature(enable = "neon")]
50700#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50701#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50702#[cfg_attr(
50703 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50704 assert_instr(nop)
50705)]
50706#[cfg_attr(
50707 not(target_arch = "arm"),
50708 stable(feature = "neon_intrinsics", since = "1.59.0")
50709)]
50710#[cfg_attr(
50711 target_arch = "arm",
50712 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50713)]
50714pub fn vreinterpret_u16_u64(a: uint64x1_t) -> uint16x4_t {
50715 unsafe { transmute(a) }
50716}
50717#[doc = "Vector reinterpret cast operation"]
50718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u64)"]
50719#[inline(always)]
50720#[cfg(target_endian = "big")]
50721#[target_feature(enable = "neon")]
50722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50724#[cfg_attr(
50725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50726 assert_instr(nop)
50727)]
50728#[cfg_attr(
50729 not(target_arch = "arm"),
50730 stable(feature = "neon_intrinsics", since = "1.59.0")
50731)]
50732#[cfg_attr(
50733 target_arch = "arm",
50734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50735)]
50736pub fn vreinterpret_u16_u64(a: uint64x1_t) -> uint16x4_t {
50737 unsafe {
50738 let ret_val: uint16x4_t = transmute(a);
50739 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50740 }
50741}
50742#[doc = "Vector reinterpret cast operation"]
50743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u64)"]
50744#[inline(always)]
50745#[cfg(target_endian = "little")]
50746#[target_feature(enable = "neon")]
50747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50748#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50749#[cfg_attr(
50750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50751 assert_instr(nop)
50752)]
50753#[cfg_attr(
50754 not(target_arch = "arm"),
50755 stable(feature = "neon_intrinsics", since = "1.59.0")
50756)]
50757#[cfg_attr(
50758 target_arch = "arm",
50759 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50760)]
50761pub fn vreinterpret_u32_u64(a: uint64x1_t) -> uint32x2_t {
50762 unsafe { transmute(a) }
50763}
50764#[doc = "Vector reinterpret cast operation"]
50765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u64)"]
50766#[inline(always)]
50767#[cfg(target_endian = "big")]
50768#[target_feature(enable = "neon")]
50769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50771#[cfg_attr(
50772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50773 assert_instr(nop)
50774)]
50775#[cfg_attr(
50776 not(target_arch = "arm"),
50777 stable(feature = "neon_intrinsics", since = "1.59.0")
50778)]
50779#[cfg_attr(
50780 target_arch = "arm",
50781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50782)]
50783pub fn vreinterpret_u32_u64(a: uint64x1_t) -> uint32x2_t {
50784 unsafe {
50785 let ret_val: uint32x2_t = transmute(a);
50786 simd_shuffle!(ret_val, ret_val, [1, 0])
50787 }
50788}
50789#[doc = "Vector reinterpret cast operation"]
50790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u64)"]
50791#[inline(always)]
50792#[cfg(target_endian = "little")]
50793#[target_feature(enable = "neon")]
50794#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50795#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50796#[cfg_attr(
50797 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50798 assert_instr(nop)
50799)]
50800#[cfg_attr(
50801 not(target_arch = "arm"),
50802 stable(feature = "neon_intrinsics", since = "1.59.0")
50803)]
50804#[cfg_attr(
50805 target_arch = "arm",
50806 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50807)]
50808pub fn vreinterpret_p8_u64(a: uint64x1_t) -> poly8x8_t {
50809 unsafe { transmute(a) }
50810}
50811#[doc = "Vector reinterpret cast operation"]
50812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u64)"]
50813#[inline(always)]
50814#[cfg(target_endian = "big")]
50815#[target_feature(enable = "neon")]
50816#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50817#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50818#[cfg_attr(
50819 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50820 assert_instr(nop)
50821)]
50822#[cfg_attr(
50823 not(target_arch = "arm"),
50824 stable(feature = "neon_intrinsics", since = "1.59.0")
50825)]
50826#[cfg_attr(
50827 target_arch = "arm",
50828 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50829)]
50830pub fn vreinterpret_p8_u64(a: uint64x1_t) -> poly8x8_t {
50831 unsafe {
50832 let ret_val: poly8x8_t = transmute(a);
50833 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50834 }
50835}
50836#[doc = "Vector reinterpret cast operation"]
50837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u64)"]
50838#[inline(always)]
50839#[cfg(target_endian = "little")]
50840#[target_feature(enable = "neon")]
50841#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50842#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50843#[cfg_attr(
50844 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50845 assert_instr(nop)
50846)]
50847#[cfg_attr(
50848 not(target_arch = "arm"),
50849 stable(feature = "neon_intrinsics", since = "1.59.0")
50850)]
50851#[cfg_attr(
50852 target_arch = "arm",
50853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50854)]
50855pub fn vreinterpret_p16_u64(a: uint64x1_t) -> poly16x4_t {
50856 unsafe { transmute(a) }
50857}
50858#[doc = "Vector reinterpret cast operation"]
50859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u64)"]
50860#[inline(always)]
50861#[cfg(target_endian = "big")]
50862#[target_feature(enable = "neon")]
50863#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50864#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50865#[cfg_attr(
50866 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50867 assert_instr(nop)
50868)]
50869#[cfg_attr(
50870 not(target_arch = "arm"),
50871 stable(feature = "neon_intrinsics", since = "1.59.0")
50872)]
50873#[cfg_attr(
50874 target_arch = "arm",
50875 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50876)]
50877pub fn vreinterpret_p16_u64(a: uint64x1_t) -> poly16x4_t {
50878 unsafe {
50879 let ret_val: poly16x4_t = transmute(a);
50880 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50881 }
50882}
50883#[doc = "Vector reinterpret cast operation"]
50884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u64)"]
50885#[inline(always)]
50886#[cfg(target_endian = "little")]
50887#[target_feature(enable = "neon")]
50888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50890#[cfg_attr(
50891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50892 assert_instr(nop)
50893)]
50894#[cfg_attr(
50895 not(target_arch = "arm"),
50896 stable(feature = "neon_intrinsics", since = "1.59.0")
50897)]
50898#[cfg_attr(
50899 target_arch = "arm",
50900 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50901)]
50902pub fn vreinterpretq_f32_u64(a: uint64x2_t) -> float32x4_t {
50903 unsafe { transmute(a) }
50904}
50905#[doc = "Vector reinterpret cast operation"]
50906#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u64)"]
50907#[inline(always)]
50908#[cfg(target_endian = "big")]
50909#[target_feature(enable = "neon")]
50910#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50911#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50912#[cfg_attr(
50913 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50914 assert_instr(nop)
50915)]
50916#[cfg_attr(
50917 not(target_arch = "arm"),
50918 stable(feature = "neon_intrinsics", since = "1.59.0")
50919)]
50920#[cfg_attr(
50921 target_arch = "arm",
50922 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50923)]
50924pub fn vreinterpretq_f32_u64(a: uint64x2_t) -> float32x4_t {
50925 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
50926 unsafe {
50927 let ret_val: float32x4_t = transmute(a);
50928 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50929 }
50930}
50931#[doc = "Vector reinterpret cast operation"]
50932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u64)"]
50933#[inline(always)]
50934#[cfg(target_endian = "little")]
50935#[target_feature(enable = "neon")]
50936#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50937#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50938#[cfg_attr(
50939 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50940 assert_instr(nop)
50941)]
50942#[cfg_attr(
50943 not(target_arch = "arm"),
50944 stable(feature = "neon_intrinsics", since = "1.59.0")
50945)]
50946#[cfg_attr(
50947 target_arch = "arm",
50948 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50949)]
50950pub fn vreinterpretq_s8_u64(a: uint64x2_t) -> int8x16_t {
50951 unsafe { transmute(a) }
50952}
50953#[doc = "Vector reinterpret cast operation"]
50954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u64)"]
50955#[inline(always)]
50956#[cfg(target_endian = "big")]
50957#[target_feature(enable = "neon")]
50958#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50959#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50960#[cfg_attr(
50961 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50962 assert_instr(nop)
50963)]
50964#[cfg_attr(
50965 not(target_arch = "arm"),
50966 stable(feature = "neon_intrinsics", since = "1.59.0")
50967)]
50968#[cfg_attr(
50969 target_arch = "arm",
50970 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50971)]
50972pub fn vreinterpretq_s8_u64(a: uint64x2_t) -> int8x16_t {
50973 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
50974 unsafe {
50975 let ret_val: int8x16_t = transmute(a);
50976 simd_shuffle!(
50977 ret_val,
50978 ret_val,
50979 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
50980 )
50981 }
50982}
50983#[doc = "Vector reinterpret cast operation"]
50984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u64)"]
50985#[inline(always)]
50986#[cfg(target_endian = "little")]
50987#[target_feature(enable = "neon")]
50988#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50989#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50990#[cfg_attr(
50991 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50992 assert_instr(nop)
50993)]
50994#[cfg_attr(
50995 not(target_arch = "arm"),
50996 stable(feature = "neon_intrinsics", since = "1.59.0")
50997)]
50998#[cfg_attr(
50999 target_arch = "arm",
51000 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51001)]
51002pub fn vreinterpretq_s16_u64(a: uint64x2_t) -> int16x8_t {
51003 unsafe { transmute(a) }
51004}
51005#[doc = "Vector reinterpret cast operation"]
51006#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u64)"]
51007#[inline(always)]
51008#[cfg(target_endian = "big")]
51009#[target_feature(enable = "neon")]
51010#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51011#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51012#[cfg_attr(
51013 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51014 assert_instr(nop)
51015)]
51016#[cfg_attr(
51017 not(target_arch = "arm"),
51018 stable(feature = "neon_intrinsics", since = "1.59.0")
51019)]
51020#[cfg_attr(
51021 target_arch = "arm",
51022 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51023)]
51024pub fn vreinterpretq_s16_u64(a: uint64x2_t) -> int16x8_t {
51025 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51026 unsafe {
51027 let ret_val: int16x8_t = transmute(a);
51028 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51029 }
51030}
51031#[doc = "Vector reinterpret cast operation"]
51032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u64)"]
51033#[inline(always)]
51034#[cfg(target_endian = "little")]
51035#[target_feature(enable = "neon")]
51036#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51037#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51038#[cfg_attr(
51039 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51040 assert_instr(nop)
51041)]
51042#[cfg_attr(
51043 not(target_arch = "arm"),
51044 stable(feature = "neon_intrinsics", since = "1.59.0")
51045)]
51046#[cfg_attr(
51047 target_arch = "arm",
51048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51049)]
51050pub fn vreinterpretq_s32_u64(a: uint64x2_t) -> int32x4_t {
51051 unsafe { transmute(a) }
51052}
51053#[doc = "Vector reinterpret cast operation"]
51054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u64)"]
51055#[inline(always)]
51056#[cfg(target_endian = "big")]
51057#[target_feature(enable = "neon")]
51058#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51059#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51060#[cfg_attr(
51061 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51062 assert_instr(nop)
51063)]
51064#[cfg_attr(
51065 not(target_arch = "arm"),
51066 stable(feature = "neon_intrinsics", since = "1.59.0")
51067)]
51068#[cfg_attr(
51069 target_arch = "arm",
51070 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51071)]
51072pub fn vreinterpretq_s32_u64(a: uint64x2_t) -> int32x4_t {
51073 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51074 unsafe {
51075 let ret_val: int32x4_t = transmute(a);
51076 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51077 }
51078}
51079#[doc = "Vector reinterpret cast operation"]
51080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u64)"]
51081#[inline(always)]
51082#[cfg(target_endian = "little")]
51083#[target_feature(enable = "neon")]
51084#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51085#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51086#[cfg_attr(
51087 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51088 assert_instr(nop)
51089)]
51090#[cfg_attr(
51091 not(target_arch = "arm"),
51092 stable(feature = "neon_intrinsics", since = "1.59.0")
51093)]
51094#[cfg_attr(
51095 target_arch = "arm",
51096 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51097)]
51098pub fn vreinterpretq_s64_u64(a: uint64x2_t) -> int64x2_t {
51099 unsafe { transmute(a) }
51100}
51101#[doc = "Vector reinterpret cast operation"]
51102#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u64)"]
51103#[inline(always)]
51104#[cfg(target_endian = "big")]
51105#[target_feature(enable = "neon")]
51106#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51107#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51108#[cfg_attr(
51109 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51110 assert_instr(nop)
51111)]
51112#[cfg_attr(
51113 not(target_arch = "arm"),
51114 stable(feature = "neon_intrinsics", since = "1.59.0")
51115)]
51116#[cfg_attr(
51117 target_arch = "arm",
51118 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51119)]
51120pub fn vreinterpretq_s64_u64(a: uint64x2_t) -> int64x2_t {
51121 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51122 unsafe {
51123 let ret_val: int64x2_t = transmute(a);
51124 simd_shuffle!(ret_val, ret_val, [1, 0])
51125 }
51126}
51127#[doc = "Vector reinterpret cast operation"]
51128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u64)"]
51129#[inline(always)]
51130#[cfg(target_endian = "little")]
51131#[target_feature(enable = "neon")]
51132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51133#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51134#[cfg_attr(
51135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51136 assert_instr(nop)
51137)]
51138#[cfg_attr(
51139 not(target_arch = "arm"),
51140 stable(feature = "neon_intrinsics", since = "1.59.0")
51141)]
51142#[cfg_attr(
51143 target_arch = "arm",
51144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51145)]
51146pub fn vreinterpretq_u8_u64(a: uint64x2_t) -> uint8x16_t {
51147 unsafe { transmute(a) }
51148}
51149#[doc = "Vector reinterpret cast operation"]
51150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u64)"]
51151#[inline(always)]
51152#[cfg(target_endian = "big")]
51153#[target_feature(enable = "neon")]
51154#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51155#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51156#[cfg_attr(
51157 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51158 assert_instr(nop)
51159)]
51160#[cfg_attr(
51161 not(target_arch = "arm"),
51162 stable(feature = "neon_intrinsics", since = "1.59.0")
51163)]
51164#[cfg_attr(
51165 target_arch = "arm",
51166 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51167)]
51168pub fn vreinterpretq_u8_u64(a: uint64x2_t) -> uint8x16_t {
51169 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51170 unsafe {
51171 let ret_val: uint8x16_t = transmute(a);
51172 simd_shuffle!(
51173 ret_val,
51174 ret_val,
51175 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
51176 )
51177 }
51178}
51179#[doc = "Vector reinterpret cast operation"]
51180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u64)"]
51181#[inline(always)]
51182#[cfg(target_endian = "little")]
51183#[target_feature(enable = "neon")]
51184#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51185#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51186#[cfg_attr(
51187 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51188 assert_instr(nop)
51189)]
51190#[cfg_attr(
51191 not(target_arch = "arm"),
51192 stable(feature = "neon_intrinsics", since = "1.59.0")
51193)]
51194#[cfg_attr(
51195 target_arch = "arm",
51196 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51197)]
51198pub fn vreinterpretq_u16_u64(a: uint64x2_t) -> uint16x8_t {
51199 unsafe { transmute(a) }
51200}
51201#[doc = "Vector reinterpret cast operation"]
51202#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u64)"]
51203#[inline(always)]
51204#[cfg(target_endian = "big")]
51205#[target_feature(enable = "neon")]
51206#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51207#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51208#[cfg_attr(
51209 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51210 assert_instr(nop)
51211)]
51212#[cfg_attr(
51213 not(target_arch = "arm"),
51214 stable(feature = "neon_intrinsics", since = "1.59.0")
51215)]
51216#[cfg_attr(
51217 target_arch = "arm",
51218 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51219)]
51220pub fn vreinterpretq_u16_u64(a: uint64x2_t) -> uint16x8_t {
51221 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51222 unsafe {
51223 let ret_val: uint16x8_t = transmute(a);
51224 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51225 }
51226}
51227#[doc = "Vector reinterpret cast operation"]
51228#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u64)"]
51229#[inline(always)]
51230#[cfg(target_endian = "little")]
51231#[target_feature(enable = "neon")]
51232#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51233#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51234#[cfg_attr(
51235 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51236 assert_instr(nop)
51237)]
51238#[cfg_attr(
51239 not(target_arch = "arm"),
51240 stable(feature = "neon_intrinsics", since = "1.59.0")
51241)]
51242#[cfg_attr(
51243 target_arch = "arm",
51244 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51245)]
51246pub fn vreinterpretq_u32_u64(a: uint64x2_t) -> uint32x4_t {
51247 unsafe { transmute(a) }
51248}
51249#[doc = "Vector reinterpret cast operation"]
51250#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u64)"]
51251#[inline(always)]
51252#[cfg(target_endian = "big")]
51253#[target_feature(enable = "neon")]
51254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51255#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51256#[cfg_attr(
51257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51258 assert_instr(nop)
51259)]
51260#[cfg_attr(
51261 not(target_arch = "arm"),
51262 stable(feature = "neon_intrinsics", since = "1.59.0")
51263)]
51264#[cfg_attr(
51265 target_arch = "arm",
51266 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51267)]
51268pub fn vreinterpretq_u32_u64(a: uint64x2_t) -> uint32x4_t {
51269 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51270 unsafe {
51271 let ret_val: uint32x4_t = transmute(a);
51272 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51273 }
51274}
51275#[doc = "Vector reinterpret cast operation"]
51276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u64)"]
51277#[inline(always)]
51278#[cfg(target_endian = "little")]
51279#[target_feature(enable = "neon")]
51280#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51281#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51282#[cfg_attr(
51283 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51284 assert_instr(nop)
51285)]
51286#[cfg_attr(
51287 not(target_arch = "arm"),
51288 stable(feature = "neon_intrinsics", since = "1.59.0")
51289)]
51290#[cfg_attr(
51291 target_arch = "arm",
51292 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51293)]
51294pub fn vreinterpretq_p8_u64(a: uint64x2_t) -> poly8x16_t {
51295 unsafe { transmute(a) }
51296}
51297#[doc = "Vector reinterpret cast operation"]
51298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u64)"]
51299#[inline(always)]
51300#[cfg(target_endian = "big")]
51301#[target_feature(enable = "neon")]
51302#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51303#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51304#[cfg_attr(
51305 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51306 assert_instr(nop)
51307)]
51308#[cfg_attr(
51309 not(target_arch = "arm"),
51310 stable(feature = "neon_intrinsics", since = "1.59.0")
51311)]
51312#[cfg_attr(
51313 target_arch = "arm",
51314 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51315)]
51316pub fn vreinterpretq_p8_u64(a: uint64x2_t) -> poly8x16_t {
51317 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51318 unsafe {
51319 let ret_val: poly8x16_t = transmute(a);
51320 simd_shuffle!(
51321 ret_val,
51322 ret_val,
51323 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
51324 )
51325 }
51326}
51327#[doc = "Vector reinterpret cast operation"]
51328#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u64)"]
51329#[inline(always)]
51330#[cfg(target_endian = "little")]
51331#[target_feature(enable = "neon")]
51332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51333#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51334#[cfg_attr(
51335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51336 assert_instr(nop)
51337)]
51338#[cfg_attr(
51339 not(target_arch = "arm"),
51340 stable(feature = "neon_intrinsics", since = "1.59.0")
51341)]
51342#[cfg_attr(
51343 target_arch = "arm",
51344 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51345)]
51346pub fn vreinterpretq_p16_u64(a: uint64x2_t) -> poly16x8_t {
51347 unsafe { transmute(a) }
51348}
51349#[doc = "Vector reinterpret cast operation"]
51350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u64)"]
51351#[inline(always)]
51352#[cfg(target_endian = "big")]
51353#[target_feature(enable = "neon")]
51354#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51355#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51356#[cfg_attr(
51357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51358 assert_instr(nop)
51359)]
51360#[cfg_attr(
51361 not(target_arch = "arm"),
51362 stable(feature = "neon_intrinsics", since = "1.59.0")
51363)]
51364#[cfg_attr(
51365 target_arch = "arm",
51366 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51367)]
51368pub fn vreinterpretq_p16_u64(a: uint64x2_t) -> poly16x8_t {
51369 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51370 unsafe {
51371 let ret_val: poly16x8_t = transmute(a);
51372 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51373 }
51374}
51375#[doc = "Vector reinterpret cast operation"]
51376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p8)"]
51377#[inline(always)]
51378#[cfg(target_endian = "little")]
51379#[target_feature(enable = "neon")]
51380#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51381#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51382#[cfg_attr(
51383 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51384 assert_instr(nop)
51385)]
51386#[cfg_attr(
51387 not(target_arch = "arm"),
51388 stable(feature = "neon_intrinsics", since = "1.59.0")
51389)]
51390#[cfg_attr(
51391 target_arch = "arm",
51392 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51393)]
51394pub fn vreinterpret_f32_p8(a: poly8x8_t) -> float32x2_t {
51395 unsafe { transmute(a) }
51396}
51397#[doc = "Vector reinterpret cast operation"]
51398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p8)"]
51399#[inline(always)]
51400#[cfg(target_endian = "big")]
51401#[target_feature(enable = "neon")]
51402#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51403#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51404#[cfg_attr(
51405 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51406 assert_instr(nop)
51407)]
51408#[cfg_attr(
51409 not(target_arch = "arm"),
51410 stable(feature = "neon_intrinsics", since = "1.59.0")
51411)]
51412#[cfg_attr(
51413 target_arch = "arm",
51414 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51415)]
51416pub fn vreinterpret_f32_p8(a: poly8x8_t) -> float32x2_t {
51417 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51418 unsafe {
51419 let ret_val: float32x2_t = transmute(a);
51420 simd_shuffle!(ret_val, ret_val, [1, 0])
51421 }
51422}
51423#[doc = "Vector reinterpret cast operation"]
51424#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p8)"]
51425#[inline(always)]
51426#[cfg(target_endian = "little")]
51427#[target_feature(enable = "neon")]
51428#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51429#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51430#[cfg_attr(
51431 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51432 assert_instr(nop)
51433)]
51434#[cfg_attr(
51435 not(target_arch = "arm"),
51436 stable(feature = "neon_intrinsics", since = "1.59.0")
51437)]
51438#[cfg_attr(
51439 target_arch = "arm",
51440 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51441)]
51442pub fn vreinterpret_s8_p8(a: poly8x8_t) -> int8x8_t {
51443 unsafe { transmute(a) }
51444}
51445#[doc = "Vector reinterpret cast operation"]
51446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p8)"]
51447#[inline(always)]
51448#[cfg(target_endian = "big")]
51449#[target_feature(enable = "neon")]
51450#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51451#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51452#[cfg_attr(
51453 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51454 assert_instr(nop)
51455)]
51456#[cfg_attr(
51457 not(target_arch = "arm"),
51458 stable(feature = "neon_intrinsics", since = "1.59.0")
51459)]
51460#[cfg_attr(
51461 target_arch = "arm",
51462 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51463)]
51464pub fn vreinterpret_s8_p8(a: poly8x8_t) -> int8x8_t {
51465 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51466 unsafe {
51467 let ret_val: int8x8_t = transmute(a);
51468 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51469 }
51470}
51471#[doc = "Vector reinterpret cast operation"]
51472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p8)"]
51473#[inline(always)]
51474#[cfg(target_endian = "little")]
51475#[target_feature(enable = "neon")]
51476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51477#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51478#[cfg_attr(
51479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51480 assert_instr(nop)
51481)]
51482#[cfg_attr(
51483 not(target_arch = "arm"),
51484 stable(feature = "neon_intrinsics", since = "1.59.0")
51485)]
51486#[cfg_attr(
51487 target_arch = "arm",
51488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51489)]
51490pub fn vreinterpret_s16_p8(a: poly8x8_t) -> int16x4_t {
51491 unsafe { transmute(a) }
51492}
51493#[doc = "Vector reinterpret cast operation"]
51494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p8)"]
51495#[inline(always)]
51496#[cfg(target_endian = "big")]
51497#[target_feature(enable = "neon")]
51498#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51499#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51500#[cfg_attr(
51501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51502 assert_instr(nop)
51503)]
51504#[cfg_attr(
51505 not(target_arch = "arm"),
51506 stable(feature = "neon_intrinsics", since = "1.59.0")
51507)]
51508#[cfg_attr(
51509 target_arch = "arm",
51510 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51511)]
51512pub fn vreinterpret_s16_p8(a: poly8x8_t) -> int16x4_t {
51513 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51514 unsafe {
51515 let ret_val: int16x4_t = transmute(a);
51516 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51517 }
51518}
51519#[doc = "Vector reinterpret cast operation"]
51520#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p8)"]
51521#[inline(always)]
51522#[cfg(target_endian = "little")]
51523#[target_feature(enable = "neon")]
51524#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51525#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51526#[cfg_attr(
51527 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51528 assert_instr(nop)
51529)]
51530#[cfg_attr(
51531 not(target_arch = "arm"),
51532 stable(feature = "neon_intrinsics", since = "1.59.0")
51533)]
51534#[cfg_attr(
51535 target_arch = "arm",
51536 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51537)]
51538pub fn vreinterpret_s32_p8(a: poly8x8_t) -> int32x2_t {
51539 unsafe { transmute(a) }
51540}
51541#[doc = "Vector reinterpret cast operation"]
51542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p8)"]
51543#[inline(always)]
51544#[cfg(target_endian = "big")]
51545#[target_feature(enable = "neon")]
51546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51547#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51548#[cfg_attr(
51549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51550 assert_instr(nop)
51551)]
51552#[cfg_attr(
51553 not(target_arch = "arm"),
51554 stable(feature = "neon_intrinsics", since = "1.59.0")
51555)]
51556#[cfg_attr(
51557 target_arch = "arm",
51558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51559)]
51560pub fn vreinterpret_s32_p8(a: poly8x8_t) -> int32x2_t {
51561 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51562 unsafe {
51563 let ret_val: int32x2_t = transmute(a);
51564 simd_shuffle!(ret_val, ret_val, [1, 0])
51565 }
51566}
51567#[doc = "Vector reinterpret cast operation"]
51568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p8)"]
51569#[inline(always)]
51570#[cfg(target_endian = "little")]
51571#[target_feature(enable = "neon")]
51572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51573#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51574#[cfg_attr(
51575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51576 assert_instr(nop)
51577)]
51578#[cfg_attr(
51579 not(target_arch = "arm"),
51580 stable(feature = "neon_intrinsics", since = "1.59.0")
51581)]
51582#[cfg_attr(
51583 target_arch = "arm",
51584 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51585)]
51586pub fn vreinterpret_s64_p8(a: poly8x8_t) -> int64x1_t {
51587 unsafe { transmute(a) }
51588}
51589#[doc = "Vector reinterpret cast operation"]
51590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p8)"]
51591#[inline(always)]
51592#[cfg(target_endian = "big")]
51593#[target_feature(enable = "neon")]
51594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51595#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51596#[cfg_attr(
51597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51598 assert_instr(nop)
51599)]
51600#[cfg_attr(
51601 not(target_arch = "arm"),
51602 stable(feature = "neon_intrinsics", since = "1.59.0")
51603)]
51604#[cfg_attr(
51605 target_arch = "arm",
51606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51607)]
51608pub fn vreinterpret_s64_p8(a: poly8x8_t) -> int64x1_t {
51609 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51610 unsafe { transmute(a) }
51611}
51612#[doc = "Vector reinterpret cast operation"]
51613#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p8)"]
51614#[inline(always)]
51615#[cfg(target_endian = "little")]
51616#[target_feature(enable = "neon")]
51617#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51618#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51619#[cfg_attr(
51620 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51621 assert_instr(nop)
51622)]
51623#[cfg_attr(
51624 not(target_arch = "arm"),
51625 stable(feature = "neon_intrinsics", since = "1.59.0")
51626)]
51627#[cfg_attr(
51628 target_arch = "arm",
51629 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51630)]
51631pub fn vreinterpret_u8_p8(a: poly8x8_t) -> uint8x8_t {
51632 unsafe { transmute(a) }
51633}
51634#[doc = "Vector reinterpret cast operation"]
51635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p8)"]
51636#[inline(always)]
51637#[cfg(target_endian = "big")]
51638#[target_feature(enable = "neon")]
51639#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51640#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51641#[cfg_attr(
51642 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51643 assert_instr(nop)
51644)]
51645#[cfg_attr(
51646 not(target_arch = "arm"),
51647 stable(feature = "neon_intrinsics", since = "1.59.0")
51648)]
51649#[cfg_attr(
51650 target_arch = "arm",
51651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51652)]
51653pub fn vreinterpret_u8_p8(a: poly8x8_t) -> uint8x8_t {
51654 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51655 unsafe {
51656 let ret_val: uint8x8_t = transmute(a);
51657 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51658 }
51659}
51660#[doc = "Vector reinterpret cast operation"]
51661#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p8)"]
51662#[inline(always)]
51663#[cfg(target_endian = "little")]
51664#[target_feature(enable = "neon")]
51665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51666#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51667#[cfg_attr(
51668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51669 assert_instr(nop)
51670)]
51671#[cfg_attr(
51672 not(target_arch = "arm"),
51673 stable(feature = "neon_intrinsics", since = "1.59.0")
51674)]
51675#[cfg_attr(
51676 target_arch = "arm",
51677 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51678)]
51679pub fn vreinterpret_u16_p8(a: poly8x8_t) -> uint16x4_t {
51680 unsafe { transmute(a) }
51681}
51682#[doc = "Vector reinterpret cast operation"]
51683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p8)"]
51684#[inline(always)]
51685#[cfg(target_endian = "big")]
51686#[target_feature(enable = "neon")]
51687#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51688#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51689#[cfg_attr(
51690 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51691 assert_instr(nop)
51692)]
51693#[cfg_attr(
51694 not(target_arch = "arm"),
51695 stable(feature = "neon_intrinsics", since = "1.59.0")
51696)]
51697#[cfg_attr(
51698 target_arch = "arm",
51699 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51700)]
51701pub fn vreinterpret_u16_p8(a: poly8x8_t) -> uint16x4_t {
51702 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51703 unsafe {
51704 let ret_val: uint16x4_t = transmute(a);
51705 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51706 }
51707}
51708#[doc = "Vector reinterpret cast operation"]
51709#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p8)"]
51710#[inline(always)]
51711#[cfg(target_endian = "little")]
51712#[target_feature(enable = "neon")]
51713#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51714#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51715#[cfg_attr(
51716 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51717 assert_instr(nop)
51718)]
51719#[cfg_attr(
51720 not(target_arch = "arm"),
51721 stable(feature = "neon_intrinsics", since = "1.59.0")
51722)]
51723#[cfg_attr(
51724 target_arch = "arm",
51725 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51726)]
51727pub fn vreinterpret_u32_p8(a: poly8x8_t) -> uint32x2_t {
51728 unsafe { transmute(a) }
51729}
51730#[doc = "Vector reinterpret cast operation"]
51731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p8)"]
51732#[inline(always)]
51733#[cfg(target_endian = "big")]
51734#[target_feature(enable = "neon")]
51735#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51736#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51737#[cfg_attr(
51738 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51739 assert_instr(nop)
51740)]
51741#[cfg_attr(
51742 not(target_arch = "arm"),
51743 stable(feature = "neon_intrinsics", since = "1.59.0")
51744)]
51745#[cfg_attr(
51746 target_arch = "arm",
51747 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51748)]
51749pub fn vreinterpret_u32_p8(a: poly8x8_t) -> uint32x2_t {
51750 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51751 unsafe {
51752 let ret_val: uint32x2_t = transmute(a);
51753 simd_shuffle!(ret_val, ret_val, [1, 0])
51754 }
51755}
51756#[doc = "Vector reinterpret cast operation"]
51757#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p8)"]
51758#[inline(always)]
51759#[cfg(target_endian = "little")]
51760#[target_feature(enable = "neon")]
51761#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51762#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51763#[cfg_attr(
51764 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51765 assert_instr(nop)
51766)]
51767#[cfg_attr(
51768 not(target_arch = "arm"),
51769 stable(feature = "neon_intrinsics", since = "1.59.0")
51770)]
51771#[cfg_attr(
51772 target_arch = "arm",
51773 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51774)]
51775pub fn vreinterpret_u64_p8(a: poly8x8_t) -> uint64x1_t {
51776 unsafe { transmute(a) }
51777}
51778#[doc = "Vector reinterpret cast operation"]
51779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p8)"]
51780#[inline(always)]
51781#[cfg(target_endian = "big")]
51782#[target_feature(enable = "neon")]
51783#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51784#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51785#[cfg_attr(
51786 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51787 assert_instr(nop)
51788)]
51789#[cfg_attr(
51790 not(target_arch = "arm"),
51791 stable(feature = "neon_intrinsics", since = "1.59.0")
51792)]
51793#[cfg_attr(
51794 target_arch = "arm",
51795 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51796)]
51797pub fn vreinterpret_u64_p8(a: poly8x8_t) -> uint64x1_t {
51798 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51799 unsafe { transmute(a) }
51800}
51801#[doc = "Vector reinterpret cast operation"]
51802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p8)"]
51803#[inline(always)]
51804#[cfg(target_endian = "little")]
51805#[target_feature(enable = "neon")]
51806#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51807#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51808#[cfg_attr(
51809 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51810 assert_instr(nop)
51811)]
51812#[cfg_attr(
51813 not(target_arch = "arm"),
51814 stable(feature = "neon_intrinsics", since = "1.59.0")
51815)]
51816#[cfg_attr(
51817 target_arch = "arm",
51818 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51819)]
51820pub fn vreinterpret_p16_p8(a: poly8x8_t) -> poly16x4_t {
51821 unsafe { transmute(a) }
51822}
51823#[doc = "Vector reinterpret cast operation"]
51824#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p8)"]
51825#[inline(always)]
51826#[cfg(target_endian = "big")]
51827#[target_feature(enable = "neon")]
51828#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51829#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51830#[cfg_attr(
51831 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51832 assert_instr(nop)
51833)]
51834#[cfg_attr(
51835 not(target_arch = "arm"),
51836 stable(feature = "neon_intrinsics", since = "1.59.0")
51837)]
51838#[cfg_attr(
51839 target_arch = "arm",
51840 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51841)]
51842pub fn vreinterpret_p16_p8(a: poly8x8_t) -> poly16x4_t {
51843 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51844 unsafe {
51845 let ret_val: poly16x4_t = transmute(a);
51846 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51847 }
51848}
51849#[doc = "Vector reinterpret cast operation"]
51850#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p8)"]
51851#[inline(always)]
51852#[cfg(target_endian = "little")]
51853#[target_feature(enable = "neon")]
51854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51855#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51856#[cfg_attr(
51857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51858 assert_instr(nop)
51859)]
51860#[cfg_attr(
51861 not(target_arch = "arm"),
51862 stable(feature = "neon_intrinsics", since = "1.59.0")
51863)]
51864#[cfg_attr(
51865 target_arch = "arm",
51866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51867)]
51868pub fn vreinterpretq_f32_p8(a: poly8x16_t) -> float32x4_t {
51869 unsafe { transmute(a) }
51870}
51871#[doc = "Vector reinterpret cast operation"]
51872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p8)"]
51873#[inline(always)]
51874#[cfg(target_endian = "big")]
51875#[target_feature(enable = "neon")]
51876#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51877#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51878#[cfg_attr(
51879 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51880 assert_instr(nop)
51881)]
51882#[cfg_attr(
51883 not(target_arch = "arm"),
51884 stable(feature = "neon_intrinsics", since = "1.59.0")
51885)]
51886#[cfg_attr(
51887 target_arch = "arm",
51888 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51889)]
51890pub fn vreinterpretq_f32_p8(a: poly8x16_t) -> float32x4_t {
51891 let a: poly8x16_t =
51892 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
51893 unsafe {
51894 let ret_val: float32x4_t = transmute(a);
51895 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51896 }
51897}
51898#[doc = "Vector reinterpret cast operation"]
51899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p8)"]
51900#[inline(always)]
51901#[cfg(target_endian = "little")]
51902#[target_feature(enable = "neon")]
51903#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51904#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51905#[cfg_attr(
51906 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51907 assert_instr(nop)
51908)]
51909#[cfg_attr(
51910 not(target_arch = "arm"),
51911 stable(feature = "neon_intrinsics", since = "1.59.0")
51912)]
51913#[cfg_attr(
51914 target_arch = "arm",
51915 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51916)]
51917pub fn vreinterpretq_s8_p8(a: poly8x16_t) -> int8x16_t {
51918 unsafe { transmute(a) }
51919}
51920#[doc = "Vector reinterpret cast operation"]
51921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p8)"]
51922#[inline(always)]
51923#[cfg(target_endian = "big")]
51924#[target_feature(enable = "neon")]
51925#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51926#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51927#[cfg_attr(
51928 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51929 assert_instr(nop)
51930)]
51931#[cfg_attr(
51932 not(target_arch = "arm"),
51933 stable(feature = "neon_intrinsics", since = "1.59.0")
51934)]
51935#[cfg_attr(
51936 target_arch = "arm",
51937 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51938)]
51939pub fn vreinterpretq_s8_p8(a: poly8x16_t) -> int8x16_t {
51940 let a: poly8x16_t =
51941 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
51942 unsafe {
51943 let ret_val: int8x16_t = transmute(a);
51944 simd_shuffle!(
51945 ret_val,
51946 ret_val,
51947 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
51948 )
51949 }
51950}
51951#[doc = "Vector reinterpret cast operation"]
51952#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p8)"]
51953#[inline(always)]
51954#[cfg(target_endian = "little")]
51955#[target_feature(enable = "neon")]
51956#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51957#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51958#[cfg_attr(
51959 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51960 assert_instr(nop)
51961)]
51962#[cfg_attr(
51963 not(target_arch = "arm"),
51964 stable(feature = "neon_intrinsics", since = "1.59.0")
51965)]
51966#[cfg_attr(
51967 target_arch = "arm",
51968 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51969)]
51970pub fn vreinterpretq_s16_p8(a: poly8x16_t) -> int16x8_t {
51971 unsafe { transmute(a) }
51972}
51973#[doc = "Vector reinterpret cast operation"]
51974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p8)"]
51975#[inline(always)]
51976#[cfg(target_endian = "big")]
51977#[target_feature(enable = "neon")]
51978#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51979#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51980#[cfg_attr(
51981 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51982 assert_instr(nop)
51983)]
51984#[cfg_attr(
51985 not(target_arch = "arm"),
51986 stable(feature = "neon_intrinsics", since = "1.59.0")
51987)]
51988#[cfg_attr(
51989 target_arch = "arm",
51990 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51991)]
51992pub fn vreinterpretq_s16_p8(a: poly8x16_t) -> int16x8_t {
51993 let a: poly8x16_t =
51994 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
51995 unsafe {
51996 let ret_val: int16x8_t = transmute(a);
51997 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51998 }
51999}
52000#[doc = "Vector reinterpret cast operation"]
52001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p8)"]
52002#[inline(always)]
52003#[cfg(target_endian = "little")]
52004#[target_feature(enable = "neon")]
52005#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52006#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52007#[cfg_attr(
52008 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52009 assert_instr(nop)
52010)]
52011#[cfg_attr(
52012 not(target_arch = "arm"),
52013 stable(feature = "neon_intrinsics", since = "1.59.0")
52014)]
52015#[cfg_attr(
52016 target_arch = "arm",
52017 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52018)]
52019pub fn vreinterpretq_s32_p8(a: poly8x16_t) -> int32x4_t {
52020 unsafe { transmute(a) }
52021}
52022#[doc = "Vector reinterpret cast operation"]
52023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p8)"]
52024#[inline(always)]
52025#[cfg(target_endian = "big")]
52026#[target_feature(enable = "neon")]
52027#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52028#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52029#[cfg_attr(
52030 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52031 assert_instr(nop)
52032)]
52033#[cfg_attr(
52034 not(target_arch = "arm"),
52035 stable(feature = "neon_intrinsics", since = "1.59.0")
52036)]
52037#[cfg_attr(
52038 target_arch = "arm",
52039 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52040)]
52041pub fn vreinterpretq_s32_p8(a: poly8x16_t) -> int32x4_t {
52042 let a: poly8x16_t =
52043 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52044 unsafe {
52045 let ret_val: int32x4_t = transmute(a);
52046 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52047 }
52048}
52049#[doc = "Vector reinterpret cast operation"]
52050#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p8)"]
52051#[inline(always)]
52052#[cfg(target_endian = "little")]
52053#[target_feature(enable = "neon")]
52054#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52055#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52056#[cfg_attr(
52057 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52058 assert_instr(nop)
52059)]
52060#[cfg_attr(
52061 not(target_arch = "arm"),
52062 stable(feature = "neon_intrinsics", since = "1.59.0")
52063)]
52064#[cfg_attr(
52065 target_arch = "arm",
52066 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52067)]
52068pub fn vreinterpretq_s64_p8(a: poly8x16_t) -> int64x2_t {
52069 unsafe { transmute(a) }
52070}
52071#[doc = "Vector reinterpret cast operation"]
52072#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p8)"]
52073#[inline(always)]
52074#[cfg(target_endian = "big")]
52075#[target_feature(enable = "neon")]
52076#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52077#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52078#[cfg_attr(
52079 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52080 assert_instr(nop)
52081)]
52082#[cfg_attr(
52083 not(target_arch = "arm"),
52084 stable(feature = "neon_intrinsics", since = "1.59.0")
52085)]
52086#[cfg_attr(
52087 target_arch = "arm",
52088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52089)]
52090pub fn vreinterpretq_s64_p8(a: poly8x16_t) -> int64x2_t {
52091 let a: poly8x16_t =
52092 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52093 unsafe {
52094 let ret_val: int64x2_t = transmute(a);
52095 simd_shuffle!(ret_val, ret_val, [1, 0])
52096 }
52097}
52098#[doc = "Vector reinterpret cast operation"]
52099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p8)"]
52100#[inline(always)]
52101#[cfg(target_endian = "little")]
52102#[target_feature(enable = "neon")]
52103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52104#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52105#[cfg_attr(
52106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52107 assert_instr(nop)
52108)]
52109#[cfg_attr(
52110 not(target_arch = "arm"),
52111 stable(feature = "neon_intrinsics", since = "1.59.0")
52112)]
52113#[cfg_attr(
52114 target_arch = "arm",
52115 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52116)]
52117pub fn vreinterpretq_u8_p8(a: poly8x16_t) -> uint8x16_t {
52118 unsafe { transmute(a) }
52119}
52120#[doc = "Vector reinterpret cast operation"]
52121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p8)"]
52122#[inline(always)]
52123#[cfg(target_endian = "big")]
52124#[target_feature(enable = "neon")]
52125#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52126#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52127#[cfg_attr(
52128 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52129 assert_instr(nop)
52130)]
52131#[cfg_attr(
52132 not(target_arch = "arm"),
52133 stable(feature = "neon_intrinsics", since = "1.59.0")
52134)]
52135#[cfg_attr(
52136 target_arch = "arm",
52137 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52138)]
52139pub fn vreinterpretq_u8_p8(a: poly8x16_t) -> uint8x16_t {
52140 let a: poly8x16_t =
52141 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52142 unsafe {
52143 let ret_val: uint8x16_t = transmute(a);
52144 simd_shuffle!(
52145 ret_val,
52146 ret_val,
52147 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
52148 )
52149 }
52150}
52151#[doc = "Vector reinterpret cast operation"]
52152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p8)"]
52153#[inline(always)]
52154#[cfg(target_endian = "little")]
52155#[target_feature(enable = "neon")]
52156#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52157#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52158#[cfg_attr(
52159 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52160 assert_instr(nop)
52161)]
52162#[cfg_attr(
52163 not(target_arch = "arm"),
52164 stable(feature = "neon_intrinsics", since = "1.59.0")
52165)]
52166#[cfg_attr(
52167 target_arch = "arm",
52168 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52169)]
52170pub fn vreinterpretq_u16_p8(a: poly8x16_t) -> uint16x8_t {
52171 unsafe { transmute(a) }
52172}
52173#[doc = "Vector reinterpret cast operation"]
52174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p8)"]
52175#[inline(always)]
52176#[cfg(target_endian = "big")]
52177#[target_feature(enable = "neon")]
52178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52179#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52180#[cfg_attr(
52181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52182 assert_instr(nop)
52183)]
52184#[cfg_attr(
52185 not(target_arch = "arm"),
52186 stable(feature = "neon_intrinsics", since = "1.59.0")
52187)]
52188#[cfg_attr(
52189 target_arch = "arm",
52190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52191)]
52192pub fn vreinterpretq_u16_p8(a: poly8x16_t) -> uint16x8_t {
52193 let a: poly8x16_t =
52194 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52195 unsafe {
52196 let ret_val: uint16x8_t = transmute(a);
52197 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52198 }
52199}
52200#[doc = "Vector reinterpret cast operation"]
52201#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p8)"]
52202#[inline(always)]
52203#[cfg(target_endian = "little")]
52204#[target_feature(enable = "neon")]
52205#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52206#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52207#[cfg_attr(
52208 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52209 assert_instr(nop)
52210)]
52211#[cfg_attr(
52212 not(target_arch = "arm"),
52213 stable(feature = "neon_intrinsics", since = "1.59.0")
52214)]
52215#[cfg_attr(
52216 target_arch = "arm",
52217 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52218)]
52219pub fn vreinterpretq_u32_p8(a: poly8x16_t) -> uint32x4_t {
52220 unsafe { transmute(a) }
52221}
52222#[doc = "Vector reinterpret cast operation"]
52223#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p8)"]
52224#[inline(always)]
52225#[cfg(target_endian = "big")]
52226#[target_feature(enable = "neon")]
52227#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52228#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52229#[cfg_attr(
52230 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52231 assert_instr(nop)
52232)]
52233#[cfg_attr(
52234 not(target_arch = "arm"),
52235 stable(feature = "neon_intrinsics", since = "1.59.0")
52236)]
52237#[cfg_attr(
52238 target_arch = "arm",
52239 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52240)]
52241pub fn vreinterpretq_u32_p8(a: poly8x16_t) -> uint32x4_t {
52242 let a: poly8x16_t =
52243 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52244 unsafe {
52245 let ret_val: uint32x4_t = transmute(a);
52246 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52247 }
52248}
52249#[doc = "Vector reinterpret cast operation"]
52250#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p8)"]
52251#[inline(always)]
52252#[cfg(target_endian = "little")]
52253#[target_feature(enable = "neon")]
52254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52255#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52256#[cfg_attr(
52257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52258 assert_instr(nop)
52259)]
52260#[cfg_attr(
52261 not(target_arch = "arm"),
52262 stable(feature = "neon_intrinsics", since = "1.59.0")
52263)]
52264#[cfg_attr(
52265 target_arch = "arm",
52266 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52267)]
52268pub fn vreinterpretq_u64_p8(a: poly8x16_t) -> uint64x2_t {
52269 unsafe { transmute(a) }
52270}
52271#[doc = "Vector reinterpret cast operation"]
52272#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p8)"]
52273#[inline(always)]
52274#[cfg(target_endian = "big")]
52275#[target_feature(enable = "neon")]
52276#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52277#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52278#[cfg_attr(
52279 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52280 assert_instr(nop)
52281)]
52282#[cfg_attr(
52283 not(target_arch = "arm"),
52284 stable(feature = "neon_intrinsics", since = "1.59.0")
52285)]
52286#[cfg_attr(
52287 target_arch = "arm",
52288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52289)]
52290pub fn vreinterpretq_u64_p8(a: poly8x16_t) -> uint64x2_t {
52291 let a: poly8x16_t =
52292 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52293 unsafe {
52294 let ret_val: uint64x2_t = transmute(a);
52295 simd_shuffle!(ret_val, ret_val, [1, 0])
52296 }
52297}
52298#[doc = "Vector reinterpret cast operation"]
52299#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p8)"]
52300#[inline(always)]
52301#[cfg(target_endian = "little")]
52302#[target_feature(enable = "neon")]
52303#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52304#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52305#[cfg_attr(
52306 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52307 assert_instr(nop)
52308)]
52309#[cfg_attr(
52310 not(target_arch = "arm"),
52311 stable(feature = "neon_intrinsics", since = "1.59.0")
52312)]
52313#[cfg_attr(
52314 target_arch = "arm",
52315 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52316)]
52317pub fn vreinterpretq_p16_p8(a: poly8x16_t) -> poly16x8_t {
52318 unsafe { transmute(a) }
52319}
52320#[doc = "Vector reinterpret cast operation"]
52321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p8)"]
52322#[inline(always)]
52323#[cfg(target_endian = "big")]
52324#[target_feature(enable = "neon")]
52325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52326#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52327#[cfg_attr(
52328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52329 assert_instr(nop)
52330)]
52331#[cfg_attr(
52332 not(target_arch = "arm"),
52333 stable(feature = "neon_intrinsics", since = "1.59.0")
52334)]
52335#[cfg_attr(
52336 target_arch = "arm",
52337 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52338)]
52339pub fn vreinterpretq_p16_p8(a: poly8x16_t) -> poly16x8_t {
52340 let a: poly8x16_t =
52341 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52342 unsafe {
52343 let ret_val: poly16x8_t = transmute(a);
52344 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52345 }
52346}
52347#[doc = "Vector reinterpret cast operation"]
52348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p16)"]
52349#[inline(always)]
52350#[cfg(target_endian = "little")]
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_f32_p16(a: poly16x4_t) -> float32x2_t {
52367 unsafe { transmute(a) }
52368}
52369#[doc = "Vector reinterpret cast operation"]
52370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p16)"]
52371#[inline(always)]
52372#[cfg(target_endian = "big")]
52373#[target_feature(enable = "neon")]
52374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52376#[cfg_attr(
52377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52378 assert_instr(nop)
52379)]
52380#[cfg_attr(
52381 not(target_arch = "arm"),
52382 stable(feature = "neon_intrinsics", since = "1.59.0")
52383)]
52384#[cfg_attr(
52385 target_arch = "arm",
52386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52387)]
52388pub fn vreinterpret_f32_p16(a: poly16x4_t) -> float32x2_t {
52389 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52390 unsafe {
52391 let ret_val: float32x2_t = transmute(a);
52392 simd_shuffle!(ret_val, ret_val, [1, 0])
52393 }
52394}
52395#[doc = "Vector reinterpret cast operation"]
52396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p16)"]
52397#[inline(always)]
52398#[cfg(target_endian = "little")]
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 vreinterpret_s8_p16(a: poly16x4_t) -> int8x8_t {
52415 unsafe { transmute(a) }
52416}
52417#[doc = "Vector reinterpret cast operation"]
52418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p16)"]
52419#[inline(always)]
52420#[cfg(target_endian = "big")]
52421#[target_feature(enable = "neon")]
52422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52424#[cfg_attr(
52425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52426 assert_instr(nop)
52427)]
52428#[cfg_attr(
52429 not(target_arch = "arm"),
52430 stable(feature = "neon_intrinsics", since = "1.59.0")
52431)]
52432#[cfg_attr(
52433 target_arch = "arm",
52434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52435)]
52436pub fn vreinterpret_s8_p16(a: poly16x4_t) -> int8x8_t {
52437 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52438 unsafe {
52439 let ret_val: int8x8_t = transmute(a);
52440 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52441 }
52442}
52443#[doc = "Vector reinterpret cast operation"]
52444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p16)"]
52445#[inline(always)]
52446#[cfg(target_endian = "little")]
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 vreinterpret_s16_p16(a: poly16x4_t) -> int16x4_t {
52463 unsafe { transmute(a) }
52464}
52465#[doc = "Vector reinterpret cast operation"]
52466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p16)"]
52467#[inline(always)]
52468#[cfg(target_endian = "big")]
52469#[target_feature(enable = "neon")]
52470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52472#[cfg_attr(
52473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52474 assert_instr(nop)
52475)]
52476#[cfg_attr(
52477 not(target_arch = "arm"),
52478 stable(feature = "neon_intrinsics", since = "1.59.0")
52479)]
52480#[cfg_attr(
52481 target_arch = "arm",
52482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52483)]
52484pub fn vreinterpret_s16_p16(a: poly16x4_t) -> int16x4_t {
52485 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52486 unsafe {
52487 let ret_val: int16x4_t = transmute(a);
52488 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52489 }
52490}
52491#[doc = "Vector reinterpret cast operation"]
52492#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p16)"]
52493#[inline(always)]
52494#[cfg(target_endian = "little")]
52495#[target_feature(enable = "neon")]
52496#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52497#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52498#[cfg_attr(
52499 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52500 assert_instr(nop)
52501)]
52502#[cfg_attr(
52503 not(target_arch = "arm"),
52504 stable(feature = "neon_intrinsics", since = "1.59.0")
52505)]
52506#[cfg_attr(
52507 target_arch = "arm",
52508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52509)]
52510pub fn vreinterpret_s32_p16(a: poly16x4_t) -> int32x2_t {
52511 unsafe { transmute(a) }
52512}
52513#[doc = "Vector reinterpret cast operation"]
52514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p16)"]
52515#[inline(always)]
52516#[cfg(target_endian = "big")]
52517#[target_feature(enable = "neon")]
52518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52519#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52520#[cfg_attr(
52521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52522 assert_instr(nop)
52523)]
52524#[cfg_attr(
52525 not(target_arch = "arm"),
52526 stable(feature = "neon_intrinsics", since = "1.59.0")
52527)]
52528#[cfg_attr(
52529 target_arch = "arm",
52530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52531)]
52532pub fn vreinterpret_s32_p16(a: poly16x4_t) -> int32x2_t {
52533 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52534 unsafe {
52535 let ret_val: int32x2_t = transmute(a);
52536 simd_shuffle!(ret_val, ret_val, [1, 0])
52537 }
52538}
52539#[doc = "Vector reinterpret cast operation"]
52540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p16)"]
52541#[inline(always)]
52542#[cfg(target_endian = "little")]
52543#[target_feature(enable = "neon")]
52544#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52545#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52546#[cfg_attr(
52547 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52548 assert_instr(nop)
52549)]
52550#[cfg_attr(
52551 not(target_arch = "arm"),
52552 stable(feature = "neon_intrinsics", since = "1.59.0")
52553)]
52554#[cfg_attr(
52555 target_arch = "arm",
52556 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52557)]
52558pub fn vreinterpret_s64_p16(a: poly16x4_t) -> int64x1_t {
52559 unsafe { transmute(a) }
52560}
52561#[doc = "Vector reinterpret cast operation"]
52562#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p16)"]
52563#[inline(always)]
52564#[cfg(target_endian = "big")]
52565#[target_feature(enable = "neon")]
52566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52567#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52568#[cfg_attr(
52569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52570 assert_instr(nop)
52571)]
52572#[cfg_attr(
52573 not(target_arch = "arm"),
52574 stable(feature = "neon_intrinsics", since = "1.59.0")
52575)]
52576#[cfg_attr(
52577 target_arch = "arm",
52578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52579)]
52580pub fn vreinterpret_s64_p16(a: poly16x4_t) -> int64x1_t {
52581 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52582 unsafe { transmute(a) }
52583}
52584#[doc = "Vector reinterpret cast operation"]
52585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p16)"]
52586#[inline(always)]
52587#[cfg(target_endian = "little")]
52588#[target_feature(enable = "neon")]
52589#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52590#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52591#[cfg_attr(
52592 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52593 assert_instr(nop)
52594)]
52595#[cfg_attr(
52596 not(target_arch = "arm"),
52597 stable(feature = "neon_intrinsics", since = "1.59.0")
52598)]
52599#[cfg_attr(
52600 target_arch = "arm",
52601 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52602)]
52603pub fn vreinterpret_u8_p16(a: poly16x4_t) -> uint8x8_t {
52604 unsafe { transmute(a) }
52605}
52606#[doc = "Vector reinterpret cast operation"]
52607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p16)"]
52608#[inline(always)]
52609#[cfg(target_endian = "big")]
52610#[target_feature(enable = "neon")]
52611#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52612#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52613#[cfg_attr(
52614 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52615 assert_instr(nop)
52616)]
52617#[cfg_attr(
52618 not(target_arch = "arm"),
52619 stable(feature = "neon_intrinsics", since = "1.59.0")
52620)]
52621#[cfg_attr(
52622 target_arch = "arm",
52623 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52624)]
52625pub fn vreinterpret_u8_p16(a: poly16x4_t) -> uint8x8_t {
52626 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52627 unsafe {
52628 let ret_val: uint8x8_t = transmute(a);
52629 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52630 }
52631}
52632#[doc = "Vector reinterpret cast operation"]
52633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p16)"]
52634#[inline(always)]
52635#[cfg(target_endian = "little")]
52636#[target_feature(enable = "neon")]
52637#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52638#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52639#[cfg_attr(
52640 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52641 assert_instr(nop)
52642)]
52643#[cfg_attr(
52644 not(target_arch = "arm"),
52645 stable(feature = "neon_intrinsics", since = "1.59.0")
52646)]
52647#[cfg_attr(
52648 target_arch = "arm",
52649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52650)]
52651pub fn vreinterpret_u16_p16(a: poly16x4_t) -> uint16x4_t {
52652 unsafe { transmute(a) }
52653}
52654#[doc = "Vector reinterpret cast operation"]
52655#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p16)"]
52656#[inline(always)]
52657#[cfg(target_endian = "big")]
52658#[target_feature(enable = "neon")]
52659#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52660#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52661#[cfg_attr(
52662 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52663 assert_instr(nop)
52664)]
52665#[cfg_attr(
52666 not(target_arch = "arm"),
52667 stable(feature = "neon_intrinsics", since = "1.59.0")
52668)]
52669#[cfg_attr(
52670 target_arch = "arm",
52671 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52672)]
52673pub fn vreinterpret_u16_p16(a: poly16x4_t) -> uint16x4_t {
52674 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52675 unsafe {
52676 let ret_val: uint16x4_t = transmute(a);
52677 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52678 }
52679}
52680#[doc = "Vector reinterpret cast operation"]
52681#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p16)"]
52682#[inline(always)]
52683#[cfg(target_endian = "little")]
52684#[target_feature(enable = "neon")]
52685#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52686#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52687#[cfg_attr(
52688 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52689 assert_instr(nop)
52690)]
52691#[cfg_attr(
52692 not(target_arch = "arm"),
52693 stable(feature = "neon_intrinsics", since = "1.59.0")
52694)]
52695#[cfg_attr(
52696 target_arch = "arm",
52697 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52698)]
52699pub fn vreinterpret_u32_p16(a: poly16x4_t) -> uint32x2_t {
52700 unsafe { transmute(a) }
52701}
52702#[doc = "Vector reinterpret cast operation"]
52703#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p16)"]
52704#[inline(always)]
52705#[cfg(target_endian = "big")]
52706#[target_feature(enable = "neon")]
52707#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52708#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52709#[cfg_attr(
52710 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52711 assert_instr(nop)
52712)]
52713#[cfg_attr(
52714 not(target_arch = "arm"),
52715 stable(feature = "neon_intrinsics", since = "1.59.0")
52716)]
52717#[cfg_attr(
52718 target_arch = "arm",
52719 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52720)]
52721pub fn vreinterpret_u32_p16(a: poly16x4_t) -> uint32x2_t {
52722 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52723 unsafe {
52724 let ret_val: uint32x2_t = transmute(a);
52725 simd_shuffle!(ret_val, ret_val, [1, 0])
52726 }
52727}
52728#[doc = "Vector reinterpret cast operation"]
52729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p16)"]
52730#[inline(always)]
52731#[cfg(target_endian = "little")]
52732#[target_feature(enable = "neon")]
52733#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52734#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52735#[cfg_attr(
52736 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52737 assert_instr(nop)
52738)]
52739#[cfg_attr(
52740 not(target_arch = "arm"),
52741 stable(feature = "neon_intrinsics", since = "1.59.0")
52742)]
52743#[cfg_attr(
52744 target_arch = "arm",
52745 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52746)]
52747pub fn vreinterpret_u64_p16(a: poly16x4_t) -> uint64x1_t {
52748 unsafe { transmute(a) }
52749}
52750#[doc = "Vector reinterpret cast operation"]
52751#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p16)"]
52752#[inline(always)]
52753#[cfg(target_endian = "big")]
52754#[target_feature(enable = "neon")]
52755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52756#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52757#[cfg_attr(
52758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52759 assert_instr(nop)
52760)]
52761#[cfg_attr(
52762 not(target_arch = "arm"),
52763 stable(feature = "neon_intrinsics", since = "1.59.0")
52764)]
52765#[cfg_attr(
52766 target_arch = "arm",
52767 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52768)]
52769pub fn vreinterpret_u64_p16(a: poly16x4_t) -> uint64x1_t {
52770 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52771 unsafe { transmute(a) }
52772}
52773#[doc = "Vector reinterpret cast operation"]
52774#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p16)"]
52775#[inline(always)]
52776#[cfg(target_endian = "little")]
52777#[target_feature(enable = "neon")]
52778#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52779#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52780#[cfg_attr(
52781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52782 assert_instr(nop)
52783)]
52784#[cfg_attr(
52785 not(target_arch = "arm"),
52786 stable(feature = "neon_intrinsics", since = "1.59.0")
52787)]
52788#[cfg_attr(
52789 target_arch = "arm",
52790 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52791)]
52792pub fn vreinterpret_p8_p16(a: poly16x4_t) -> poly8x8_t {
52793 unsafe { transmute(a) }
52794}
52795#[doc = "Vector reinterpret cast operation"]
52796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p16)"]
52797#[inline(always)]
52798#[cfg(target_endian = "big")]
52799#[target_feature(enable = "neon")]
52800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52802#[cfg_attr(
52803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52804 assert_instr(nop)
52805)]
52806#[cfg_attr(
52807 not(target_arch = "arm"),
52808 stable(feature = "neon_intrinsics", since = "1.59.0")
52809)]
52810#[cfg_attr(
52811 target_arch = "arm",
52812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52813)]
52814pub fn vreinterpret_p8_p16(a: poly16x4_t) -> poly8x8_t {
52815 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52816 unsafe {
52817 let ret_val: poly8x8_t = transmute(a);
52818 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52819 }
52820}
52821#[doc = "Vector reinterpret cast operation"]
52822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p16)"]
52823#[inline(always)]
52824#[cfg(target_endian = "little")]
52825#[target_feature(enable = "neon")]
52826#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52827#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52828#[cfg_attr(
52829 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52830 assert_instr(nop)
52831)]
52832#[cfg_attr(
52833 not(target_arch = "arm"),
52834 stable(feature = "neon_intrinsics", since = "1.59.0")
52835)]
52836#[cfg_attr(
52837 target_arch = "arm",
52838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52839)]
52840pub fn vreinterpretq_f32_p16(a: poly16x8_t) -> float32x4_t {
52841 unsafe { transmute(a) }
52842}
52843#[doc = "Vector reinterpret cast operation"]
52844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p16)"]
52845#[inline(always)]
52846#[cfg(target_endian = "big")]
52847#[target_feature(enable = "neon")]
52848#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52849#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52850#[cfg_attr(
52851 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52852 assert_instr(nop)
52853)]
52854#[cfg_attr(
52855 not(target_arch = "arm"),
52856 stable(feature = "neon_intrinsics", since = "1.59.0")
52857)]
52858#[cfg_attr(
52859 target_arch = "arm",
52860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52861)]
52862pub fn vreinterpretq_f32_p16(a: poly16x8_t) -> float32x4_t {
52863 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
52864 unsafe {
52865 let ret_val: float32x4_t = transmute(a);
52866 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52867 }
52868}
52869#[doc = "Vector reinterpret cast operation"]
52870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p16)"]
52871#[inline(always)]
52872#[cfg(target_endian = "little")]
52873#[target_feature(enable = "neon")]
52874#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52875#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52876#[cfg_attr(
52877 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52878 assert_instr(nop)
52879)]
52880#[cfg_attr(
52881 not(target_arch = "arm"),
52882 stable(feature = "neon_intrinsics", since = "1.59.0")
52883)]
52884#[cfg_attr(
52885 target_arch = "arm",
52886 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52887)]
52888pub fn vreinterpretq_s8_p16(a: poly16x8_t) -> int8x16_t {
52889 unsafe { transmute(a) }
52890}
52891#[doc = "Vector reinterpret cast operation"]
52892#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p16)"]
52893#[inline(always)]
52894#[cfg(target_endian = "big")]
52895#[target_feature(enable = "neon")]
52896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52897#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52898#[cfg_attr(
52899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52900 assert_instr(nop)
52901)]
52902#[cfg_attr(
52903 not(target_arch = "arm"),
52904 stable(feature = "neon_intrinsics", since = "1.59.0")
52905)]
52906#[cfg_attr(
52907 target_arch = "arm",
52908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52909)]
52910pub fn vreinterpretq_s8_p16(a: poly16x8_t) -> int8x16_t {
52911 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
52912 unsafe {
52913 let ret_val: int8x16_t = transmute(a);
52914 simd_shuffle!(
52915 ret_val,
52916 ret_val,
52917 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
52918 )
52919 }
52920}
52921#[doc = "Vector reinterpret cast operation"]
52922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p16)"]
52923#[inline(always)]
52924#[cfg(target_endian = "little")]
52925#[target_feature(enable = "neon")]
52926#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52927#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52928#[cfg_attr(
52929 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52930 assert_instr(nop)
52931)]
52932#[cfg_attr(
52933 not(target_arch = "arm"),
52934 stable(feature = "neon_intrinsics", since = "1.59.0")
52935)]
52936#[cfg_attr(
52937 target_arch = "arm",
52938 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52939)]
52940pub fn vreinterpretq_s16_p16(a: poly16x8_t) -> int16x8_t {
52941 unsafe { transmute(a) }
52942}
52943#[doc = "Vector reinterpret cast operation"]
52944#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p16)"]
52945#[inline(always)]
52946#[cfg(target_endian = "big")]
52947#[target_feature(enable = "neon")]
52948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52949#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52950#[cfg_attr(
52951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52952 assert_instr(nop)
52953)]
52954#[cfg_attr(
52955 not(target_arch = "arm"),
52956 stable(feature = "neon_intrinsics", since = "1.59.0")
52957)]
52958#[cfg_attr(
52959 target_arch = "arm",
52960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52961)]
52962pub fn vreinterpretq_s16_p16(a: poly16x8_t) -> int16x8_t {
52963 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
52964 unsafe {
52965 let ret_val: int16x8_t = transmute(a);
52966 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52967 }
52968}
52969#[doc = "Vector reinterpret cast operation"]
52970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p16)"]
52971#[inline(always)]
52972#[cfg(target_endian = "little")]
52973#[target_feature(enable = "neon")]
52974#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52975#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52976#[cfg_attr(
52977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52978 assert_instr(nop)
52979)]
52980#[cfg_attr(
52981 not(target_arch = "arm"),
52982 stable(feature = "neon_intrinsics", since = "1.59.0")
52983)]
52984#[cfg_attr(
52985 target_arch = "arm",
52986 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52987)]
52988pub fn vreinterpretq_s32_p16(a: poly16x8_t) -> int32x4_t {
52989 unsafe { transmute(a) }
52990}
52991#[doc = "Vector reinterpret cast operation"]
52992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p16)"]
52993#[inline(always)]
52994#[cfg(target_endian = "big")]
52995#[target_feature(enable = "neon")]
52996#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52997#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52998#[cfg_attr(
52999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53000 assert_instr(nop)
53001)]
53002#[cfg_attr(
53003 not(target_arch = "arm"),
53004 stable(feature = "neon_intrinsics", since = "1.59.0")
53005)]
53006#[cfg_attr(
53007 target_arch = "arm",
53008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53009)]
53010pub fn vreinterpretq_s32_p16(a: poly16x8_t) -> int32x4_t {
53011 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53012 unsafe {
53013 let ret_val: int32x4_t = transmute(a);
53014 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53015 }
53016}
53017#[doc = "Vector reinterpret cast operation"]
53018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p16)"]
53019#[inline(always)]
53020#[cfg(target_endian = "little")]
53021#[target_feature(enable = "neon")]
53022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53023#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53024#[cfg_attr(
53025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53026 assert_instr(nop)
53027)]
53028#[cfg_attr(
53029 not(target_arch = "arm"),
53030 stable(feature = "neon_intrinsics", since = "1.59.0")
53031)]
53032#[cfg_attr(
53033 target_arch = "arm",
53034 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53035)]
53036pub fn vreinterpretq_s64_p16(a: poly16x8_t) -> int64x2_t {
53037 unsafe { transmute(a) }
53038}
53039#[doc = "Vector reinterpret cast operation"]
53040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p16)"]
53041#[inline(always)]
53042#[cfg(target_endian = "big")]
53043#[target_feature(enable = "neon")]
53044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53045#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53046#[cfg_attr(
53047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53048 assert_instr(nop)
53049)]
53050#[cfg_attr(
53051 not(target_arch = "arm"),
53052 stable(feature = "neon_intrinsics", since = "1.59.0")
53053)]
53054#[cfg_attr(
53055 target_arch = "arm",
53056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53057)]
53058pub fn vreinterpretq_s64_p16(a: poly16x8_t) -> int64x2_t {
53059 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53060 unsafe {
53061 let ret_val: int64x2_t = transmute(a);
53062 simd_shuffle!(ret_val, ret_val, [1, 0])
53063 }
53064}
53065#[doc = "Vector reinterpret cast operation"]
53066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p16)"]
53067#[inline(always)]
53068#[cfg(target_endian = "little")]
53069#[target_feature(enable = "neon")]
53070#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53071#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53072#[cfg_attr(
53073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53074 assert_instr(nop)
53075)]
53076#[cfg_attr(
53077 not(target_arch = "arm"),
53078 stable(feature = "neon_intrinsics", since = "1.59.0")
53079)]
53080#[cfg_attr(
53081 target_arch = "arm",
53082 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53083)]
53084pub fn vreinterpretq_u8_p16(a: poly16x8_t) -> uint8x16_t {
53085 unsafe { transmute(a) }
53086}
53087#[doc = "Vector reinterpret cast operation"]
53088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p16)"]
53089#[inline(always)]
53090#[cfg(target_endian = "big")]
53091#[target_feature(enable = "neon")]
53092#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53093#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53094#[cfg_attr(
53095 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53096 assert_instr(nop)
53097)]
53098#[cfg_attr(
53099 not(target_arch = "arm"),
53100 stable(feature = "neon_intrinsics", since = "1.59.0")
53101)]
53102#[cfg_attr(
53103 target_arch = "arm",
53104 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53105)]
53106pub fn vreinterpretq_u8_p16(a: poly16x8_t) -> uint8x16_t {
53107 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53108 unsafe {
53109 let ret_val: uint8x16_t = transmute(a);
53110 simd_shuffle!(
53111 ret_val,
53112 ret_val,
53113 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53114 )
53115 }
53116}
53117#[doc = "Vector reinterpret cast operation"]
53118#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p16)"]
53119#[inline(always)]
53120#[cfg(target_endian = "little")]
53121#[target_feature(enable = "neon")]
53122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53123#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53124#[cfg_attr(
53125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53126 assert_instr(nop)
53127)]
53128#[cfg_attr(
53129 not(target_arch = "arm"),
53130 stable(feature = "neon_intrinsics", since = "1.59.0")
53131)]
53132#[cfg_attr(
53133 target_arch = "arm",
53134 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53135)]
53136pub fn vreinterpretq_u16_p16(a: poly16x8_t) -> uint16x8_t {
53137 unsafe { transmute(a) }
53138}
53139#[doc = "Vector reinterpret cast operation"]
53140#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p16)"]
53141#[inline(always)]
53142#[cfg(target_endian = "big")]
53143#[target_feature(enable = "neon")]
53144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53145#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53146#[cfg_attr(
53147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53148 assert_instr(nop)
53149)]
53150#[cfg_attr(
53151 not(target_arch = "arm"),
53152 stable(feature = "neon_intrinsics", since = "1.59.0")
53153)]
53154#[cfg_attr(
53155 target_arch = "arm",
53156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53157)]
53158pub fn vreinterpretq_u16_p16(a: poly16x8_t) -> uint16x8_t {
53159 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53160 unsafe {
53161 let ret_val: uint16x8_t = transmute(a);
53162 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53163 }
53164}
53165#[doc = "Vector reinterpret cast operation"]
53166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p16)"]
53167#[inline(always)]
53168#[cfg(target_endian = "little")]
53169#[target_feature(enable = "neon")]
53170#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53171#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53172#[cfg_attr(
53173 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53174 assert_instr(nop)
53175)]
53176#[cfg_attr(
53177 not(target_arch = "arm"),
53178 stable(feature = "neon_intrinsics", since = "1.59.0")
53179)]
53180#[cfg_attr(
53181 target_arch = "arm",
53182 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53183)]
53184pub fn vreinterpretq_u32_p16(a: poly16x8_t) -> uint32x4_t {
53185 unsafe { transmute(a) }
53186}
53187#[doc = "Vector reinterpret cast operation"]
53188#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p16)"]
53189#[inline(always)]
53190#[cfg(target_endian = "big")]
53191#[target_feature(enable = "neon")]
53192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53193#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53194#[cfg_attr(
53195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53196 assert_instr(nop)
53197)]
53198#[cfg_attr(
53199 not(target_arch = "arm"),
53200 stable(feature = "neon_intrinsics", since = "1.59.0")
53201)]
53202#[cfg_attr(
53203 target_arch = "arm",
53204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53205)]
53206pub fn vreinterpretq_u32_p16(a: poly16x8_t) -> uint32x4_t {
53207 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53208 unsafe {
53209 let ret_val: uint32x4_t = transmute(a);
53210 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53211 }
53212}
53213#[doc = "Vector reinterpret cast operation"]
53214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p16)"]
53215#[inline(always)]
53216#[cfg(target_endian = "little")]
53217#[target_feature(enable = "neon")]
53218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53219#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53220#[cfg_attr(
53221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53222 assert_instr(nop)
53223)]
53224#[cfg_attr(
53225 not(target_arch = "arm"),
53226 stable(feature = "neon_intrinsics", since = "1.59.0")
53227)]
53228#[cfg_attr(
53229 target_arch = "arm",
53230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53231)]
53232pub fn vreinterpretq_u64_p16(a: poly16x8_t) -> uint64x2_t {
53233 unsafe { transmute(a) }
53234}
53235#[doc = "Vector reinterpret cast operation"]
53236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p16)"]
53237#[inline(always)]
53238#[cfg(target_endian = "big")]
53239#[target_feature(enable = "neon")]
53240#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53241#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53242#[cfg_attr(
53243 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53244 assert_instr(nop)
53245)]
53246#[cfg_attr(
53247 not(target_arch = "arm"),
53248 stable(feature = "neon_intrinsics", since = "1.59.0")
53249)]
53250#[cfg_attr(
53251 target_arch = "arm",
53252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53253)]
53254pub fn vreinterpretq_u64_p16(a: poly16x8_t) -> uint64x2_t {
53255 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53256 unsafe {
53257 let ret_val: uint64x2_t = transmute(a);
53258 simd_shuffle!(ret_val, ret_val, [1, 0])
53259 }
53260}
53261#[doc = "Vector reinterpret cast operation"]
53262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p16)"]
53263#[inline(always)]
53264#[cfg(target_endian = "little")]
53265#[target_feature(enable = "neon")]
53266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53267#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53268#[cfg_attr(
53269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53270 assert_instr(nop)
53271)]
53272#[cfg_attr(
53273 not(target_arch = "arm"),
53274 stable(feature = "neon_intrinsics", since = "1.59.0")
53275)]
53276#[cfg_attr(
53277 target_arch = "arm",
53278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53279)]
53280pub fn vreinterpretq_p8_p16(a: poly16x8_t) -> poly8x16_t {
53281 unsafe { transmute(a) }
53282}
53283#[doc = "Vector reinterpret cast operation"]
53284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p16)"]
53285#[inline(always)]
53286#[cfg(target_endian = "big")]
53287#[target_feature(enable = "neon")]
53288#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53289#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53290#[cfg_attr(
53291 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53292 assert_instr(nop)
53293)]
53294#[cfg_attr(
53295 not(target_arch = "arm"),
53296 stable(feature = "neon_intrinsics", since = "1.59.0")
53297)]
53298#[cfg_attr(
53299 target_arch = "arm",
53300 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53301)]
53302pub fn vreinterpretq_p8_p16(a: poly16x8_t) -> poly8x16_t {
53303 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53304 unsafe {
53305 let ret_val: poly8x16_t = transmute(a);
53306 simd_shuffle!(
53307 ret_val,
53308 ret_val,
53309 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53310 )
53311 }
53312}
53313#[doc = "Vector reinterpret cast operation"]
53314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p128)"]
53315#[inline(always)]
53316#[cfg(target_endian = "little")]
53317#[target_feature(enable = "neon,aes")]
53318#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53319#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53320#[cfg_attr(
53321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53322 assert_instr(nop)
53323)]
53324#[cfg_attr(
53325 not(target_arch = "arm"),
53326 stable(feature = "neon_intrinsics", since = "1.59.0")
53327)]
53328#[cfg_attr(
53329 target_arch = "arm",
53330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53331)]
53332pub fn vreinterpretq_s8_p128(a: p128) -> int8x16_t {
53333 unsafe { transmute(a) }
53334}
53335#[doc = "Vector reinterpret cast operation"]
53336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p128)"]
53337#[inline(always)]
53338#[cfg(target_endian = "big")]
53339#[target_feature(enable = "neon,aes")]
53340#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53342#[cfg_attr(
53343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53344 assert_instr(nop)
53345)]
53346#[cfg_attr(
53347 not(target_arch = "arm"),
53348 stable(feature = "neon_intrinsics", since = "1.59.0")
53349)]
53350#[cfg_attr(
53351 target_arch = "arm",
53352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53353)]
53354pub fn vreinterpretq_s8_p128(a: p128) -> int8x16_t {
53355 unsafe {
53356 let ret_val: int8x16_t = transmute(a);
53357 simd_shuffle!(
53358 ret_val,
53359 ret_val,
53360 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53361 )
53362 }
53363}
53364#[doc = "Vector reinterpret cast operation"]
53365#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p128)"]
53366#[inline(always)]
53367#[cfg(target_endian = "little")]
53368#[target_feature(enable = "neon,aes")]
53369#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53370#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53371#[cfg_attr(
53372 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53373 assert_instr(nop)
53374)]
53375#[cfg_attr(
53376 not(target_arch = "arm"),
53377 stable(feature = "neon_intrinsics", since = "1.59.0")
53378)]
53379#[cfg_attr(
53380 target_arch = "arm",
53381 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53382)]
53383pub fn vreinterpretq_s16_p128(a: p128) -> int16x8_t {
53384 unsafe { transmute(a) }
53385}
53386#[doc = "Vector reinterpret cast operation"]
53387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p128)"]
53388#[inline(always)]
53389#[cfg(target_endian = "big")]
53390#[target_feature(enable = "neon,aes")]
53391#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53392#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53393#[cfg_attr(
53394 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53395 assert_instr(nop)
53396)]
53397#[cfg_attr(
53398 not(target_arch = "arm"),
53399 stable(feature = "neon_intrinsics", since = "1.59.0")
53400)]
53401#[cfg_attr(
53402 target_arch = "arm",
53403 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53404)]
53405pub fn vreinterpretq_s16_p128(a: p128) -> int16x8_t {
53406 unsafe {
53407 let ret_val: int16x8_t = transmute(a);
53408 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53409 }
53410}
53411#[doc = "Vector reinterpret cast operation"]
53412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p128)"]
53413#[inline(always)]
53414#[cfg(target_endian = "little")]
53415#[target_feature(enable = "neon,aes")]
53416#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53417#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53418#[cfg_attr(
53419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53420 assert_instr(nop)
53421)]
53422#[cfg_attr(
53423 not(target_arch = "arm"),
53424 stable(feature = "neon_intrinsics", since = "1.59.0")
53425)]
53426#[cfg_attr(
53427 target_arch = "arm",
53428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53429)]
53430pub fn vreinterpretq_s32_p128(a: p128) -> int32x4_t {
53431 unsafe { transmute(a) }
53432}
53433#[doc = "Vector reinterpret cast operation"]
53434#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p128)"]
53435#[inline(always)]
53436#[cfg(target_endian = "big")]
53437#[target_feature(enable = "neon,aes")]
53438#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53440#[cfg_attr(
53441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53442 assert_instr(nop)
53443)]
53444#[cfg_attr(
53445 not(target_arch = "arm"),
53446 stable(feature = "neon_intrinsics", since = "1.59.0")
53447)]
53448#[cfg_attr(
53449 target_arch = "arm",
53450 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53451)]
53452pub fn vreinterpretq_s32_p128(a: p128) -> int32x4_t {
53453 unsafe {
53454 let ret_val: int32x4_t = transmute(a);
53455 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53456 }
53457}
53458#[doc = "Vector reinterpret cast operation"]
53459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p128)"]
53460#[inline(always)]
53461#[cfg(target_endian = "little")]
53462#[target_feature(enable = "neon,aes")]
53463#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53464#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53465#[cfg_attr(
53466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53467 assert_instr(nop)
53468)]
53469#[cfg_attr(
53470 not(target_arch = "arm"),
53471 stable(feature = "neon_intrinsics", since = "1.59.0")
53472)]
53473#[cfg_attr(
53474 target_arch = "arm",
53475 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53476)]
53477pub fn vreinterpretq_s64_p128(a: p128) -> int64x2_t {
53478 unsafe { transmute(a) }
53479}
53480#[doc = "Vector reinterpret cast operation"]
53481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p128)"]
53482#[inline(always)]
53483#[cfg(target_endian = "big")]
53484#[target_feature(enable = "neon,aes")]
53485#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53486#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53487#[cfg_attr(
53488 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53489 assert_instr(nop)
53490)]
53491#[cfg_attr(
53492 not(target_arch = "arm"),
53493 stable(feature = "neon_intrinsics", since = "1.59.0")
53494)]
53495#[cfg_attr(
53496 target_arch = "arm",
53497 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53498)]
53499pub fn vreinterpretq_s64_p128(a: p128) -> int64x2_t {
53500 unsafe {
53501 let ret_val: int64x2_t = transmute(a);
53502 simd_shuffle!(ret_val, ret_val, [1, 0])
53503 }
53504}
53505#[doc = "Vector reinterpret cast operation"]
53506#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p128)"]
53507#[inline(always)]
53508#[cfg(target_endian = "little")]
53509#[target_feature(enable = "neon,aes")]
53510#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
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_u8_p128(a: p128) -> uint8x16_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_u8_p128)"]
53529#[inline(always)]
53530#[cfg(target_endian = "big")]
53531#[target_feature(enable = "neon,aes")]
53532#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
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_u8_p128(a: p128) -> uint8x16_t {
53547 unsafe {
53548 let ret_val: uint8x16_t = transmute(a);
53549 simd_shuffle!(
53550 ret_val,
53551 ret_val,
53552 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53553 )
53554 }
53555}
53556#[doc = "Vector reinterpret cast operation"]
53557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p128)"]
53558#[inline(always)]
53559#[cfg(target_endian = "little")]
53560#[target_feature(enable = "neon,aes")]
53561#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53562#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53563#[cfg_attr(
53564 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53565 assert_instr(nop)
53566)]
53567#[cfg_attr(
53568 not(target_arch = "arm"),
53569 stable(feature = "neon_intrinsics", since = "1.59.0")
53570)]
53571#[cfg_attr(
53572 target_arch = "arm",
53573 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53574)]
53575pub fn vreinterpretq_u16_p128(a: p128) -> uint16x8_t {
53576 unsafe { transmute(a) }
53577}
53578#[doc = "Vector reinterpret cast operation"]
53579#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p128)"]
53580#[inline(always)]
53581#[cfg(target_endian = "big")]
53582#[target_feature(enable = "neon,aes")]
53583#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53584#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53585#[cfg_attr(
53586 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53587 assert_instr(nop)
53588)]
53589#[cfg_attr(
53590 not(target_arch = "arm"),
53591 stable(feature = "neon_intrinsics", since = "1.59.0")
53592)]
53593#[cfg_attr(
53594 target_arch = "arm",
53595 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53596)]
53597pub fn vreinterpretq_u16_p128(a: p128) -> uint16x8_t {
53598 unsafe {
53599 let ret_val: uint16x8_t = transmute(a);
53600 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53601 }
53602}
53603#[doc = "Vector reinterpret cast operation"]
53604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p128)"]
53605#[inline(always)]
53606#[cfg(target_endian = "little")]
53607#[target_feature(enable = "neon,aes")]
53608#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53610#[cfg_attr(
53611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53612 assert_instr(nop)
53613)]
53614#[cfg_attr(
53615 not(target_arch = "arm"),
53616 stable(feature = "neon_intrinsics", since = "1.59.0")
53617)]
53618#[cfg_attr(
53619 target_arch = "arm",
53620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53621)]
53622pub fn vreinterpretq_u32_p128(a: p128) -> uint32x4_t {
53623 unsafe { transmute(a) }
53624}
53625#[doc = "Vector reinterpret cast operation"]
53626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p128)"]
53627#[inline(always)]
53628#[cfg(target_endian = "big")]
53629#[target_feature(enable = "neon,aes")]
53630#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53631#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53632#[cfg_attr(
53633 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53634 assert_instr(nop)
53635)]
53636#[cfg_attr(
53637 not(target_arch = "arm"),
53638 stable(feature = "neon_intrinsics", since = "1.59.0")
53639)]
53640#[cfg_attr(
53641 target_arch = "arm",
53642 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53643)]
53644pub fn vreinterpretq_u32_p128(a: p128) -> uint32x4_t {
53645 unsafe {
53646 let ret_val: uint32x4_t = transmute(a);
53647 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53648 }
53649}
53650#[doc = "Vector reinterpret cast operation"]
53651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p128)"]
53652#[inline(always)]
53653#[cfg(target_endian = "little")]
53654#[target_feature(enable = "neon,aes")]
53655#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53656#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53657#[cfg_attr(
53658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53659 assert_instr(nop)
53660)]
53661#[cfg_attr(
53662 not(target_arch = "arm"),
53663 stable(feature = "neon_intrinsics", since = "1.59.0")
53664)]
53665#[cfg_attr(
53666 target_arch = "arm",
53667 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53668)]
53669pub fn vreinterpretq_u64_p128(a: p128) -> uint64x2_t {
53670 unsafe { transmute(a) }
53671}
53672#[doc = "Vector reinterpret cast operation"]
53673#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p128)"]
53674#[inline(always)]
53675#[cfg(target_endian = "big")]
53676#[target_feature(enable = "neon,aes")]
53677#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53678#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53679#[cfg_attr(
53680 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53681 assert_instr(nop)
53682)]
53683#[cfg_attr(
53684 not(target_arch = "arm"),
53685 stable(feature = "neon_intrinsics", since = "1.59.0")
53686)]
53687#[cfg_attr(
53688 target_arch = "arm",
53689 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53690)]
53691pub fn vreinterpretq_u64_p128(a: p128) -> uint64x2_t {
53692 unsafe {
53693 let ret_val: uint64x2_t = transmute(a);
53694 simd_shuffle!(ret_val, ret_val, [1, 0])
53695 }
53696}
53697#[doc = "Vector reinterpret cast operation"]
53698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p128)"]
53699#[inline(always)]
53700#[cfg(target_endian = "little")]
53701#[target_feature(enable = "neon,aes")]
53702#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53703#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53704#[cfg_attr(
53705 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53706 assert_instr(nop)
53707)]
53708#[cfg_attr(
53709 not(target_arch = "arm"),
53710 stable(feature = "neon_intrinsics", since = "1.59.0")
53711)]
53712#[cfg_attr(
53713 target_arch = "arm",
53714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53715)]
53716pub fn vreinterpretq_p8_p128(a: p128) -> poly8x16_t {
53717 unsafe { transmute(a) }
53718}
53719#[doc = "Vector reinterpret cast operation"]
53720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p128)"]
53721#[inline(always)]
53722#[cfg(target_endian = "big")]
53723#[target_feature(enable = "neon,aes")]
53724#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53726#[cfg_attr(
53727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53728 assert_instr(nop)
53729)]
53730#[cfg_attr(
53731 not(target_arch = "arm"),
53732 stable(feature = "neon_intrinsics", since = "1.59.0")
53733)]
53734#[cfg_attr(
53735 target_arch = "arm",
53736 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53737)]
53738pub fn vreinterpretq_p8_p128(a: p128) -> poly8x16_t {
53739 unsafe {
53740 let ret_val: poly8x16_t = transmute(a);
53741 simd_shuffle!(
53742 ret_val,
53743 ret_val,
53744 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53745 )
53746 }
53747}
53748#[doc = "Vector reinterpret cast operation"]
53749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p128)"]
53750#[inline(always)]
53751#[cfg(target_endian = "little")]
53752#[target_feature(enable = "neon,aes")]
53753#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53754#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53755#[cfg_attr(
53756 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53757 assert_instr(nop)
53758)]
53759#[cfg_attr(
53760 not(target_arch = "arm"),
53761 stable(feature = "neon_intrinsics", since = "1.59.0")
53762)]
53763#[cfg_attr(
53764 target_arch = "arm",
53765 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53766)]
53767pub fn vreinterpretq_p16_p128(a: p128) -> poly16x8_t {
53768 unsafe { transmute(a) }
53769}
53770#[doc = "Vector reinterpret cast operation"]
53771#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p128)"]
53772#[inline(always)]
53773#[cfg(target_endian = "big")]
53774#[target_feature(enable = "neon,aes")]
53775#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53776#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53777#[cfg_attr(
53778 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53779 assert_instr(nop)
53780)]
53781#[cfg_attr(
53782 not(target_arch = "arm"),
53783 stable(feature = "neon_intrinsics", since = "1.59.0")
53784)]
53785#[cfg_attr(
53786 target_arch = "arm",
53787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53788)]
53789pub fn vreinterpretq_p16_p128(a: p128) -> poly16x8_t {
53790 unsafe {
53791 let ret_val: poly16x8_t = transmute(a);
53792 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53793 }
53794}
53795#[doc = "Vector reinterpret cast operation"]
53796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p128)"]
53797#[inline(always)]
53798#[cfg(target_endian = "little")]
53799#[target_feature(enable = "neon,aes")]
53800#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53802#[cfg_attr(
53803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53804 assert_instr(nop)
53805)]
53806#[cfg_attr(
53807 not(target_arch = "arm"),
53808 stable(feature = "neon_intrinsics", since = "1.59.0")
53809)]
53810#[cfg_attr(
53811 target_arch = "arm",
53812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53813)]
53814pub fn vreinterpretq_p64_p128(a: p128) -> poly64x2_t {
53815 unsafe { transmute(a) }
53816}
53817#[doc = "Vector reinterpret cast operation"]
53818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p128)"]
53819#[inline(always)]
53820#[cfg(target_endian = "big")]
53821#[target_feature(enable = "neon,aes")]
53822#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53823#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53824#[cfg_attr(
53825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53826 assert_instr(nop)
53827)]
53828#[cfg_attr(
53829 not(target_arch = "arm"),
53830 stable(feature = "neon_intrinsics", since = "1.59.0")
53831)]
53832#[cfg_attr(
53833 target_arch = "arm",
53834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53835)]
53836pub fn vreinterpretq_p64_p128(a: p128) -> poly64x2_t {
53837 unsafe {
53838 let ret_val: poly64x2_t = transmute(a);
53839 simd_shuffle!(ret_val, ret_val, [1, 0])
53840 }
53841}
53842#[doc = "Vector reinterpret cast operation"]
53843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s8)"]
53844#[inline(always)]
53845#[cfg(target_endian = "little")]
53846#[target_feature(enable = "neon,aes")]
53847#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53849#[cfg_attr(
53850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53851 assert_instr(nop)
53852)]
53853#[cfg_attr(
53854 not(target_arch = "arm"),
53855 stable(feature = "neon_intrinsics", since = "1.59.0")
53856)]
53857#[cfg_attr(
53858 target_arch = "arm",
53859 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53860)]
53861pub fn vreinterpret_p64_s8(a: int8x8_t) -> poly64x1_t {
53862 unsafe { transmute(a) }
53863}
53864#[doc = "Vector reinterpret cast operation"]
53865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s8)"]
53866#[inline(always)]
53867#[cfg(target_endian = "big")]
53868#[target_feature(enable = "neon,aes")]
53869#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53870#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53871#[cfg_attr(
53872 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53873 assert_instr(nop)
53874)]
53875#[cfg_attr(
53876 not(target_arch = "arm"),
53877 stable(feature = "neon_intrinsics", since = "1.59.0")
53878)]
53879#[cfg_attr(
53880 target_arch = "arm",
53881 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53882)]
53883pub fn vreinterpret_p64_s8(a: int8x8_t) -> poly64x1_t {
53884 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53885 unsafe { transmute(a) }
53886}
53887#[doc = "Vector reinterpret cast operation"]
53888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s8)"]
53889#[inline(always)]
53890#[cfg(target_endian = "little")]
53891#[target_feature(enable = "neon,aes")]
53892#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53893#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53894#[cfg_attr(
53895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53896 assert_instr(nop)
53897)]
53898#[cfg_attr(
53899 not(target_arch = "arm"),
53900 stable(feature = "neon_intrinsics", since = "1.59.0")
53901)]
53902#[cfg_attr(
53903 target_arch = "arm",
53904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53905)]
53906pub fn vreinterpretq_p128_s8(a: int8x16_t) -> p128 {
53907 unsafe { transmute(a) }
53908}
53909#[doc = "Vector reinterpret cast operation"]
53910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s8)"]
53911#[inline(always)]
53912#[cfg(target_endian = "big")]
53913#[target_feature(enable = "neon,aes")]
53914#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53915#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53916#[cfg_attr(
53917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53918 assert_instr(nop)
53919)]
53920#[cfg_attr(
53921 not(target_arch = "arm"),
53922 stable(feature = "neon_intrinsics", since = "1.59.0")
53923)]
53924#[cfg_attr(
53925 target_arch = "arm",
53926 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53927)]
53928pub fn vreinterpretq_p128_s8(a: int8x16_t) -> p128 {
53929 let a: int8x16_t =
53930 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
53931 unsafe { transmute(a) }
53932}
53933#[doc = "Vector reinterpret cast operation"]
53934#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s8)"]
53935#[inline(always)]
53936#[cfg(target_endian = "little")]
53937#[target_feature(enable = "neon,aes")]
53938#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53940#[cfg_attr(
53941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53942 assert_instr(nop)
53943)]
53944#[cfg_attr(
53945 not(target_arch = "arm"),
53946 stable(feature = "neon_intrinsics", since = "1.59.0")
53947)]
53948#[cfg_attr(
53949 target_arch = "arm",
53950 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53951)]
53952pub fn vreinterpretq_p64_s8(a: int8x16_t) -> poly64x2_t {
53953 unsafe { transmute(a) }
53954}
53955#[doc = "Vector reinterpret cast operation"]
53956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s8)"]
53957#[inline(always)]
53958#[cfg(target_endian = "big")]
53959#[target_feature(enable = "neon,aes")]
53960#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53961#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53962#[cfg_attr(
53963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53964 assert_instr(nop)
53965)]
53966#[cfg_attr(
53967 not(target_arch = "arm"),
53968 stable(feature = "neon_intrinsics", since = "1.59.0")
53969)]
53970#[cfg_attr(
53971 target_arch = "arm",
53972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53973)]
53974pub fn vreinterpretq_p64_s8(a: int8x16_t) -> poly64x2_t {
53975 let a: int8x16_t =
53976 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
53977 unsafe {
53978 let ret_val: poly64x2_t = transmute(a);
53979 simd_shuffle!(ret_val, ret_val, [1, 0])
53980 }
53981}
53982#[doc = "Vector reinterpret cast operation"]
53983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s16)"]
53984#[inline(always)]
53985#[cfg(target_endian = "little")]
53986#[target_feature(enable = "neon,aes")]
53987#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53988#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53989#[cfg_attr(
53990 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53991 assert_instr(nop)
53992)]
53993#[cfg_attr(
53994 not(target_arch = "arm"),
53995 stable(feature = "neon_intrinsics", since = "1.59.0")
53996)]
53997#[cfg_attr(
53998 target_arch = "arm",
53999 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54000)]
54001pub fn vreinterpret_p64_s16(a: int16x4_t) -> poly64x1_t {
54002 unsafe { transmute(a) }
54003}
54004#[doc = "Vector reinterpret cast operation"]
54005#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s16)"]
54006#[inline(always)]
54007#[cfg(target_endian = "big")]
54008#[target_feature(enable = "neon,aes")]
54009#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54011#[cfg_attr(
54012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54013 assert_instr(nop)
54014)]
54015#[cfg_attr(
54016 not(target_arch = "arm"),
54017 stable(feature = "neon_intrinsics", since = "1.59.0")
54018)]
54019#[cfg_attr(
54020 target_arch = "arm",
54021 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54022)]
54023pub fn vreinterpret_p64_s16(a: int16x4_t) -> poly64x1_t {
54024 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54025 unsafe { transmute(a) }
54026}
54027#[doc = "Vector reinterpret cast operation"]
54028#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s16)"]
54029#[inline(always)]
54030#[cfg(target_endian = "little")]
54031#[target_feature(enable = "neon,aes")]
54032#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54033#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54034#[cfg_attr(
54035 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54036 assert_instr(nop)
54037)]
54038#[cfg_attr(
54039 not(target_arch = "arm"),
54040 stable(feature = "neon_intrinsics", since = "1.59.0")
54041)]
54042#[cfg_attr(
54043 target_arch = "arm",
54044 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54045)]
54046pub fn vreinterpretq_p128_s16(a: int16x8_t) -> p128 {
54047 unsafe { transmute(a) }
54048}
54049#[doc = "Vector reinterpret cast operation"]
54050#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s16)"]
54051#[inline(always)]
54052#[cfg(target_endian = "big")]
54053#[target_feature(enable = "neon,aes")]
54054#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54055#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54056#[cfg_attr(
54057 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54058 assert_instr(nop)
54059)]
54060#[cfg_attr(
54061 not(target_arch = "arm"),
54062 stable(feature = "neon_intrinsics", since = "1.59.0")
54063)]
54064#[cfg_attr(
54065 target_arch = "arm",
54066 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54067)]
54068pub fn vreinterpretq_p128_s16(a: int16x8_t) -> p128 {
54069 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54070 unsafe { transmute(a) }
54071}
54072#[doc = "Vector reinterpret cast operation"]
54073#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s16)"]
54074#[inline(always)]
54075#[cfg(target_endian = "little")]
54076#[target_feature(enable = "neon,aes")]
54077#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54078#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54079#[cfg_attr(
54080 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54081 assert_instr(nop)
54082)]
54083#[cfg_attr(
54084 not(target_arch = "arm"),
54085 stable(feature = "neon_intrinsics", since = "1.59.0")
54086)]
54087#[cfg_attr(
54088 target_arch = "arm",
54089 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54090)]
54091pub fn vreinterpretq_p64_s16(a: int16x8_t) -> poly64x2_t {
54092 unsafe { transmute(a) }
54093}
54094#[doc = "Vector reinterpret cast operation"]
54095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s16)"]
54096#[inline(always)]
54097#[cfg(target_endian = "big")]
54098#[target_feature(enable = "neon,aes")]
54099#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54100#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54101#[cfg_attr(
54102 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54103 assert_instr(nop)
54104)]
54105#[cfg_attr(
54106 not(target_arch = "arm"),
54107 stable(feature = "neon_intrinsics", since = "1.59.0")
54108)]
54109#[cfg_attr(
54110 target_arch = "arm",
54111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54112)]
54113pub fn vreinterpretq_p64_s16(a: int16x8_t) -> poly64x2_t {
54114 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54115 unsafe {
54116 let ret_val: poly64x2_t = transmute(a);
54117 simd_shuffle!(ret_val, ret_val, [1, 0])
54118 }
54119}
54120#[doc = "Vector reinterpret cast operation"]
54121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s32)"]
54122#[inline(always)]
54123#[cfg(target_endian = "little")]
54124#[target_feature(enable = "neon,aes")]
54125#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54126#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54127#[cfg_attr(
54128 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54129 assert_instr(nop)
54130)]
54131#[cfg_attr(
54132 not(target_arch = "arm"),
54133 stable(feature = "neon_intrinsics", since = "1.59.0")
54134)]
54135#[cfg_attr(
54136 target_arch = "arm",
54137 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54138)]
54139pub fn vreinterpret_p64_s32(a: int32x2_t) -> poly64x1_t {
54140 unsafe { transmute(a) }
54141}
54142#[doc = "Vector reinterpret cast operation"]
54143#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s32)"]
54144#[inline(always)]
54145#[cfg(target_endian = "big")]
54146#[target_feature(enable = "neon,aes")]
54147#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54148#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54149#[cfg_attr(
54150 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54151 assert_instr(nop)
54152)]
54153#[cfg_attr(
54154 not(target_arch = "arm"),
54155 stable(feature = "neon_intrinsics", since = "1.59.0")
54156)]
54157#[cfg_attr(
54158 target_arch = "arm",
54159 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54160)]
54161pub fn vreinterpret_p64_s32(a: int32x2_t) -> poly64x1_t {
54162 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
54163 unsafe { transmute(a) }
54164}
54165#[doc = "Vector reinterpret cast operation"]
54166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s32)"]
54167#[inline(always)]
54168#[cfg(target_endian = "little")]
54169#[target_feature(enable = "neon,aes")]
54170#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54171#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54172#[cfg_attr(
54173 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54174 assert_instr(nop)
54175)]
54176#[cfg_attr(
54177 not(target_arch = "arm"),
54178 stable(feature = "neon_intrinsics", since = "1.59.0")
54179)]
54180#[cfg_attr(
54181 target_arch = "arm",
54182 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54183)]
54184pub fn vreinterpretq_p128_s32(a: int32x4_t) -> p128 {
54185 unsafe { transmute(a) }
54186}
54187#[doc = "Vector reinterpret cast operation"]
54188#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s32)"]
54189#[inline(always)]
54190#[cfg(target_endian = "big")]
54191#[target_feature(enable = "neon,aes")]
54192#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54193#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54194#[cfg_attr(
54195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54196 assert_instr(nop)
54197)]
54198#[cfg_attr(
54199 not(target_arch = "arm"),
54200 stable(feature = "neon_intrinsics", since = "1.59.0")
54201)]
54202#[cfg_attr(
54203 target_arch = "arm",
54204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54205)]
54206pub fn vreinterpretq_p128_s32(a: int32x4_t) -> p128 {
54207 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54208 unsafe { transmute(a) }
54209}
54210#[doc = "Vector reinterpret cast operation"]
54211#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s32)"]
54212#[inline(always)]
54213#[cfg(target_endian = "little")]
54214#[target_feature(enable = "neon,aes")]
54215#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54216#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54217#[cfg_attr(
54218 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54219 assert_instr(nop)
54220)]
54221#[cfg_attr(
54222 not(target_arch = "arm"),
54223 stable(feature = "neon_intrinsics", since = "1.59.0")
54224)]
54225#[cfg_attr(
54226 target_arch = "arm",
54227 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54228)]
54229pub fn vreinterpretq_p64_s32(a: int32x4_t) -> poly64x2_t {
54230 unsafe { transmute(a) }
54231}
54232#[doc = "Vector reinterpret cast operation"]
54233#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s32)"]
54234#[inline(always)]
54235#[cfg(target_endian = "big")]
54236#[target_feature(enable = "neon,aes")]
54237#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54238#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54239#[cfg_attr(
54240 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54241 assert_instr(nop)
54242)]
54243#[cfg_attr(
54244 not(target_arch = "arm"),
54245 stable(feature = "neon_intrinsics", since = "1.59.0")
54246)]
54247#[cfg_attr(
54248 target_arch = "arm",
54249 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54250)]
54251pub fn vreinterpretq_p64_s32(a: int32x4_t) -> poly64x2_t {
54252 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54253 unsafe {
54254 let ret_val: poly64x2_t = transmute(a);
54255 simd_shuffle!(ret_val, ret_val, [1, 0])
54256 }
54257}
54258#[doc = "Vector reinterpret cast operation"]
54259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s64)"]
54260#[inline(always)]
54261#[cfg(target_endian = "little")]
54262#[target_feature(enable = "neon,aes")]
54263#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54264#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54265#[cfg_attr(
54266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54267 assert_instr(nop)
54268)]
54269#[cfg_attr(
54270 not(target_arch = "arm"),
54271 stable(feature = "neon_intrinsics", since = "1.59.0")
54272)]
54273#[cfg_attr(
54274 target_arch = "arm",
54275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54276)]
54277pub fn vreinterpretq_p128_s64(a: int64x2_t) -> p128 {
54278 unsafe { transmute(a) }
54279}
54280#[doc = "Vector reinterpret cast operation"]
54281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s64)"]
54282#[inline(always)]
54283#[cfg(target_endian = "big")]
54284#[target_feature(enable = "neon,aes")]
54285#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54286#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54287#[cfg_attr(
54288 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54289 assert_instr(nop)
54290)]
54291#[cfg_attr(
54292 not(target_arch = "arm"),
54293 stable(feature = "neon_intrinsics", since = "1.59.0")
54294)]
54295#[cfg_attr(
54296 target_arch = "arm",
54297 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54298)]
54299pub fn vreinterpretq_p128_s64(a: int64x2_t) -> p128 {
54300 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
54301 unsafe { transmute(a) }
54302}
54303#[doc = "Vector reinterpret cast operation"]
54304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u8)"]
54305#[inline(always)]
54306#[cfg(target_endian = "little")]
54307#[target_feature(enable = "neon,aes")]
54308#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54310#[cfg_attr(
54311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54312 assert_instr(nop)
54313)]
54314#[cfg_attr(
54315 not(target_arch = "arm"),
54316 stable(feature = "neon_intrinsics", since = "1.59.0")
54317)]
54318#[cfg_attr(
54319 target_arch = "arm",
54320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54321)]
54322pub fn vreinterpret_p64_u8(a: uint8x8_t) -> poly64x1_t {
54323 unsafe { transmute(a) }
54324}
54325#[doc = "Vector reinterpret cast operation"]
54326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u8)"]
54327#[inline(always)]
54328#[cfg(target_endian = "big")]
54329#[target_feature(enable = "neon,aes")]
54330#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54331#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54332#[cfg_attr(
54333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54334 assert_instr(nop)
54335)]
54336#[cfg_attr(
54337 not(target_arch = "arm"),
54338 stable(feature = "neon_intrinsics", since = "1.59.0")
54339)]
54340#[cfg_attr(
54341 target_arch = "arm",
54342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54343)]
54344pub fn vreinterpret_p64_u8(a: uint8x8_t) -> poly64x1_t {
54345 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54346 unsafe { transmute(a) }
54347}
54348#[doc = "Vector reinterpret cast operation"]
54349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u8)"]
54350#[inline(always)]
54351#[cfg(target_endian = "little")]
54352#[target_feature(enable = "neon,aes")]
54353#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54354#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54355#[cfg_attr(
54356 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54357 assert_instr(nop)
54358)]
54359#[cfg_attr(
54360 not(target_arch = "arm"),
54361 stable(feature = "neon_intrinsics", since = "1.59.0")
54362)]
54363#[cfg_attr(
54364 target_arch = "arm",
54365 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54366)]
54367pub fn vreinterpretq_p128_u8(a: uint8x16_t) -> p128 {
54368 unsafe { transmute(a) }
54369}
54370#[doc = "Vector reinterpret cast operation"]
54371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u8)"]
54372#[inline(always)]
54373#[cfg(target_endian = "big")]
54374#[target_feature(enable = "neon,aes")]
54375#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54376#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54377#[cfg_attr(
54378 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54379 assert_instr(nop)
54380)]
54381#[cfg_attr(
54382 not(target_arch = "arm"),
54383 stable(feature = "neon_intrinsics", since = "1.59.0")
54384)]
54385#[cfg_attr(
54386 target_arch = "arm",
54387 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54388)]
54389pub fn vreinterpretq_p128_u8(a: uint8x16_t) -> p128 {
54390 let a: uint8x16_t =
54391 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54392 unsafe { transmute(a) }
54393}
54394#[doc = "Vector reinterpret cast operation"]
54395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u8)"]
54396#[inline(always)]
54397#[cfg(target_endian = "little")]
54398#[target_feature(enable = "neon,aes")]
54399#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54400#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54401#[cfg_attr(
54402 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54403 assert_instr(nop)
54404)]
54405#[cfg_attr(
54406 not(target_arch = "arm"),
54407 stable(feature = "neon_intrinsics", since = "1.59.0")
54408)]
54409#[cfg_attr(
54410 target_arch = "arm",
54411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54412)]
54413pub fn vreinterpretq_p64_u8(a: uint8x16_t) -> poly64x2_t {
54414 unsafe { transmute(a) }
54415}
54416#[doc = "Vector reinterpret cast operation"]
54417#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u8)"]
54418#[inline(always)]
54419#[cfg(target_endian = "big")]
54420#[target_feature(enable = "neon,aes")]
54421#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54422#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54423#[cfg_attr(
54424 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54425 assert_instr(nop)
54426)]
54427#[cfg_attr(
54428 not(target_arch = "arm"),
54429 stable(feature = "neon_intrinsics", since = "1.59.0")
54430)]
54431#[cfg_attr(
54432 target_arch = "arm",
54433 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54434)]
54435pub fn vreinterpretq_p64_u8(a: uint8x16_t) -> poly64x2_t {
54436 let a: uint8x16_t =
54437 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54438 unsafe {
54439 let ret_val: poly64x2_t = transmute(a);
54440 simd_shuffle!(ret_val, ret_val, [1, 0])
54441 }
54442}
54443#[doc = "Vector reinterpret cast operation"]
54444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u16)"]
54445#[inline(always)]
54446#[cfg(target_endian = "little")]
54447#[target_feature(enable = "neon,aes")]
54448#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54449#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54450#[cfg_attr(
54451 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54452 assert_instr(nop)
54453)]
54454#[cfg_attr(
54455 not(target_arch = "arm"),
54456 stable(feature = "neon_intrinsics", since = "1.59.0")
54457)]
54458#[cfg_attr(
54459 target_arch = "arm",
54460 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54461)]
54462pub fn vreinterpret_p64_u16(a: uint16x4_t) -> poly64x1_t {
54463 unsafe { transmute(a) }
54464}
54465#[doc = "Vector reinterpret cast operation"]
54466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u16)"]
54467#[inline(always)]
54468#[cfg(target_endian = "big")]
54469#[target_feature(enable = "neon,aes")]
54470#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54472#[cfg_attr(
54473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54474 assert_instr(nop)
54475)]
54476#[cfg_attr(
54477 not(target_arch = "arm"),
54478 stable(feature = "neon_intrinsics", since = "1.59.0")
54479)]
54480#[cfg_attr(
54481 target_arch = "arm",
54482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54483)]
54484pub fn vreinterpret_p64_u16(a: uint16x4_t) -> poly64x1_t {
54485 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54486 unsafe { transmute(a) }
54487}
54488#[doc = "Vector reinterpret cast operation"]
54489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u16)"]
54490#[inline(always)]
54491#[cfg(target_endian = "little")]
54492#[target_feature(enable = "neon,aes")]
54493#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54494#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54495#[cfg_attr(
54496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54497 assert_instr(nop)
54498)]
54499#[cfg_attr(
54500 not(target_arch = "arm"),
54501 stable(feature = "neon_intrinsics", since = "1.59.0")
54502)]
54503#[cfg_attr(
54504 target_arch = "arm",
54505 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54506)]
54507pub fn vreinterpretq_p128_u16(a: uint16x8_t) -> p128 {
54508 unsafe { transmute(a) }
54509}
54510#[doc = "Vector reinterpret cast operation"]
54511#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u16)"]
54512#[inline(always)]
54513#[cfg(target_endian = "big")]
54514#[target_feature(enable = "neon,aes")]
54515#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54516#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54517#[cfg_attr(
54518 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54519 assert_instr(nop)
54520)]
54521#[cfg_attr(
54522 not(target_arch = "arm"),
54523 stable(feature = "neon_intrinsics", since = "1.59.0")
54524)]
54525#[cfg_attr(
54526 target_arch = "arm",
54527 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54528)]
54529pub fn vreinterpretq_p128_u16(a: uint16x8_t) -> p128 {
54530 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54531 unsafe { transmute(a) }
54532}
54533#[doc = "Vector reinterpret cast operation"]
54534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u16)"]
54535#[inline(always)]
54536#[cfg(target_endian = "little")]
54537#[target_feature(enable = "neon,aes")]
54538#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54540#[cfg_attr(
54541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54542 assert_instr(nop)
54543)]
54544#[cfg_attr(
54545 not(target_arch = "arm"),
54546 stable(feature = "neon_intrinsics", since = "1.59.0")
54547)]
54548#[cfg_attr(
54549 target_arch = "arm",
54550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54551)]
54552pub fn vreinterpretq_p64_u16(a: uint16x8_t) -> poly64x2_t {
54553 unsafe { transmute(a) }
54554}
54555#[doc = "Vector reinterpret cast operation"]
54556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u16)"]
54557#[inline(always)]
54558#[cfg(target_endian = "big")]
54559#[target_feature(enable = "neon,aes")]
54560#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54562#[cfg_attr(
54563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54564 assert_instr(nop)
54565)]
54566#[cfg_attr(
54567 not(target_arch = "arm"),
54568 stable(feature = "neon_intrinsics", since = "1.59.0")
54569)]
54570#[cfg_attr(
54571 target_arch = "arm",
54572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54573)]
54574pub fn vreinterpretq_p64_u16(a: uint16x8_t) -> poly64x2_t {
54575 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54576 unsafe {
54577 let ret_val: poly64x2_t = transmute(a);
54578 simd_shuffle!(ret_val, ret_val, [1, 0])
54579 }
54580}
54581#[doc = "Vector reinterpret cast operation"]
54582#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u32)"]
54583#[inline(always)]
54584#[cfg(target_endian = "little")]
54585#[target_feature(enable = "neon,aes")]
54586#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54587#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54588#[cfg_attr(
54589 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54590 assert_instr(nop)
54591)]
54592#[cfg_attr(
54593 not(target_arch = "arm"),
54594 stable(feature = "neon_intrinsics", since = "1.59.0")
54595)]
54596#[cfg_attr(
54597 target_arch = "arm",
54598 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54599)]
54600pub fn vreinterpret_p64_u32(a: uint32x2_t) -> poly64x1_t {
54601 unsafe { transmute(a) }
54602}
54603#[doc = "Vector reinterpret cast operation"]
54604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u32)"]
54605#[inline(always)]
54606#[cfg(target_endian = "big")]
54607#[target_feature(enable = "neon,aes")]
54608#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54609#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54610#[cfg_attr(
54611 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54612 assert_instr(nop)
54613)]
54614#[cfg_attr(
54615 not(target_arch = "arm"),
54616 stable(feature = "neon_intrinsics", since = "1.59.0")
54617)]
54618#[cfg_attr(
54619 target_arch = "arm",
54620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54621)]
54622pub fn vreinterpret_p64_u32(a: uint32x2_t) -> poly64x1_t {
54623 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
54624 unsafe { transmute(a) }
54625}
54626#[doc = "Vector reinterpret cast operation"]
54627#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u32)"]
54628#[inline(always)]
54629#[cfg(target_endian = "little")]
54630#[target_feature(enable = "neon,aes")]
54631#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
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_p128_u32(a: uint32x4_t) -> p128 {
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_p128_u32)"]
54650#[inline(always)]
54651#[cfg(target_endian = "big")]
54652#[target_feature(enable = "neon,aes")]
54653#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
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_p128_u32(a: uint32x4_t) -> p128 {
54668 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54669 unsafe { transmute(a) }
54670}
54671#[doc = "Vector reinterpret cast operation"]
54672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u32)"]
54673#[inline(always)]
54674#[cfg(target_endian = "little")]
54675#[target_feature(enable = "neon,aes")]
54676#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54678#[cfg_attr(
54679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54680 assert_instr(nop)
54681)]
54682#[cfg_attr(
54683 not(target_arch = "arm"),
54684 stable(feature = "neon_intrinsics", since = "1.59.0")
54685)]
54686#[cfg_attr(
54687 target_arch = "arm",
54688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54689)]
54690pub fn vreinterpretq_p64_u32(a: uint32x4_t) -> poly64x2_t {
54691 unsafe { transmute(a) }
54692}
54693#[doc = "Vector reinterpret cast operation"]
54694#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u32)"]
54695#[inline(always)]
54696#[cfg(target_endian = "big")]
54697#[target_feature(enable = "neon,aes")]
54698#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54699#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54700#[cfg_attr(
54701 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54702 assert_instr(nop)
54703)]
54704#[cfg_attr(
54705 not(target_arch = "arm"),
54706 stable(feature = "neon_intrinsics", since = "1.59.0")
54707)]
54708#[cfg_attr(
54709 target_arch = "arm",
54710 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54711)]
54712pub fn vreinterpretq_p64_u32(a: uint32x4_t) -> poly64x2_t {
54713 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54714 unsafe {
54715 let ret_val: poly64x2_t = transmute(a);
54716 simd_shuffle!(ret_val, ret_val, [1, 0])
54717 }
54718}
54719#[doc = "Vector reinterpret cast operation"]
54720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u64)"]
54721#[inline(always)]
54722#[cfg(target_endian = "little")]
54723#[target_feature(enable = "neon,aes")]
54724#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54726#[cfg_attr(
54727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54728 assert_instr(nop)
54729)]
54730#[cfg_attr(
54731 not(target_arch = "arm"),
54732 stable(feature = "neon_intrinsics", since = "1.59.0")
54733)]
54734#[cfg_attr(
54735 target_arch = "arm",
54736 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54737)]
54738pub fn vreinterpretq_p128_u64(a: uint64x2_t) -> p128 {
54739 unsafe { transmute(a) }
54740}
54741#[doc = "Vector reinterpret cast operation"]
54742#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u64)"]
54743#[inline(always)]
54744#[cfg(target_endian = "big")]
54745#[target_feature(enable = "neon,aes")]
54746#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54748#[cfg_attr(
54749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54750 assert_instr(nop)
54751)]
54752#[cfg_attr(
54753 not(target_arch = "arm"),
54754 stable(feature = "neon_intrinsics", since = "1.59.0")
54755)]
54756#[cfg_attr(
54757 target_arch = "arm",
54758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54759)]
54760pub fn vreinterpretq_p128_u64(a: uint64x2_t) -> p128 {
54761 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
54762 unsafe { transmute(a) }
54763}
54764#[doc = "Vector reinterpret cast operation"]
54765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p8)"]
54766#[inline(always)]
54767#[cfg(target_endian = "little")]
54768#[target_feature(enable = "neon,aes")]
54769#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54771#[cfg_attr(
54772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54773 assert_instr(nop)
54774)]
54775#[cfg_attr(
54776 not(target_arch = "arm"),
54777 stable(feature = "neon_intrinsics", since = "1.59.0")
54778)]
54779#[cfg_attr(
54780 target_arch = "arm",
54781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54782)]
54783pub fn vreinterpret_p64_p8(a: poly8x8_t) -> poly64x1_t {
54784 unsafe { transmute(a) }
54785}
54786#[doc = "Vector reinterpret cast operation"]
54787#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p8)"]
54788#[inline(always)]
54789#[cfg(target_endian = "big")]
54790#[target_feature(enable = "neon,aes")]
54791#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54793#[cfg_attr(
54794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54795 assert_instr(nop)
54796)]
54797#[cfg_attr(
54798 not(target_arch = "arm"),
54799 stable(feature = "neon_intrinsics", since = "1.59.0")
54800)]
54801#[cfg_attr(
54802 target_arch = "arm",
54803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54804)]
54805pub fn vreinterpret_p64_p8(a: poly8x8_t) -> poly64x1_t {
54806 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54807 unsafe { transmute(a) }
54808}
54809#[doc = "Vector reinterpret cast operation"]
54810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p8)"]
54811#[inline(always)]
54812#[cfg(target_endian = "little")]
54813#[target_feature(enable = "neon,aes")]
54814#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54815#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54816#[cfg_attr(
54817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54818 assert_instr(nop)
54819)]
54820#[cfg_attr(
54821 not(target_arch = "arm"),
54822 stable(feature = "neon_intrinsics", since = "1.59.0")
54823)]
54824#[cfg_attr(
54825 target_arch = "arm",
54826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54827)]
54828pub fn vreinterpretq_p128_p8(a: poly8x16_t) -> p128 {
54829 unsafe { transmute(a) }
54830}
54831#[doc = "Vector reinterpret cast operation"]
54832#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p8)"]
54833#[inline(always)]
54834#[cfg(target_endian = "big")]
54835#[target_feature(enable = "neon,aes")]
54836#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54837#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54838#[cfg_attr(
54839 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54840 assert_instr(nop)
54841)]
54842#[cfg_attr(
54843 not(target_arch = "arm"),
54844 stable(feature = "neon_intrinsics", since = "1.59.0")
54845)]
54846#[cfg_attr(
54847 target_arch = "arm",
54848 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54849)]
54850pub fn vreinterpretq_p128_p8(a: poly8x16_t) -> p128 {
54851 let a: poly8x16_t =
54852 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54853 unsafe { transmute(a) }
54854}
54855#[doc = "Vector reinterpret cast operation"]
54856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p8)"]
54857#[inline(always)]
54858#[cfg(target_endian = "little")]
54859#[target_feature(enable = "neon,aes")]
54860#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54861#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54862#[cfg_attr(
54863 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54864 assert_instr(nop)
54865)]
54866#[cfg_attr(
54867 not(target_arch = "arm"),
54868 stable(feature = "neon_intrinsics", since = "1.59.0")
54869)]
54870#[cfg_attr(
54871 target_arch = "arm",
54872 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54873)]
54874pub fn vreinterpretq_p64_p8(a: poly8x16_t) -> poly64x2_t {
54875 unsafe { transmute(a) }
54876}
54877#[doc = "Vector reinterpret cast operation"]
54878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p8)"]
54879#[inline(always)]
54880#[cfg(target_endian = "big")]
54881#[target_feature(enable = "neon,aes")]
54882#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54883#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54884#[cfg_attr(
54885 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54886 assert_instr(nop)
54887)]
54888#[cfg_attr(
54889 not(target_arch = "arm"),
54890 stable(feature = "neon_intrinsics", since = "1.59.0")
54891)]
54892#[cfg_attr(
54893 target_arch = "arm",
54894 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54895)]
54896pub fn vreinterpretq_p64_p8(a: poly8x16_t) -> poly64x2_t {
54897 let a: poly8x16_t =
54898 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54899 unsafe {
54900 let ret_val: poly64x2_t = transmute(a);
54901 simd_shuffle!(ret_val, ret_val, [1, 0])
54902 }
54903}
54904#[doc = "Vector reinterpret cast operation"]
54905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p16)"]
54906#[inline(always)]
54907#[cfg(target_endian = "little")]
54908#[target_feature(enable = "neon,aes")]
54909#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54910#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54911#[cfg_attr(
54912 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54913 assert_instr(nop)
54914)]
54915#[cfg_attr(
54916 not(target_arch = "arm"),
54917 stable(feature = "neon_intrinsics", since = "1.59.0")
54918)]
54919#[cfg_attr(
54920 target_arch = "arm",
54921 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54922)]
54923pub fn vreinterpret_p64_p16(a: poly16x4_t) -> poly64x1_t {
54924 unsafe { transmute(a) }
54925}
54926#[doc = "Vector reinterpret cast operation"]
54927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p16)"]
54928#[inline(always)]
54929#[cfg(target_endian = "big")]
54930#[target_feature(enable = "neon,aes")]
54931#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54933#[cfg_attr(
54934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54935 assert_instr(nop)
54936)]
54937#[cfg_attr(
54938 not(target_arch = "arm"),
54939 stable(feature = "neon_intrinsics", since = "1.59.0")
54940)]
54941#[cfg_attr(
54942 target_arch = "arm",
54943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54944)]
54945pub fn vreinterpret_p64_p16(a: poly16x4_t) -> poly64x1_t {
54946 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54947 unsafe { transmute(a) }
54948}
54949#[doc = "Vector reinterpret cast operation"]
54950#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p16)"]
54951#[inline(always)]
54952#[cfg(target_endian = "little")]
54953#[target_feature(enable = "neon,aes")]
54954#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54955#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54956#[cfg_attr(
54957 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54958 assert_instr(nop)
54959)]
54960#[cfg_attr(
54961 not(target_arch = "arm"),
54962 stable(feature = "neon_intrinsics", since = "1.59.0")
54963)]
54964#[cfg_attr(
54965 target_arch = "arm",
54966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54967)]
54968pub fn vreinterpretq_p128_p16(a: poly16x8_t) -> p128 {
54969 unsafe { transmute(a) }
54970}
54971#[doc = "Vector reinterpret cast operation"]
54972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p16)"]
54973#[inline(always)]
54974#[cfg(target_endian = "big")]
54975#[target_feature(enable = "neon,aes")]
54976#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54977#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54978#[cfg_attr(
54979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54980 assert_instr(nop)
54981)]
54982#[cfg_attr(
54983 not(target_arch = "arm"),
54984 stable(feature = "neon_intrinsics", since = "1.59.0")
54985)]
54986#[cfg_attr(
54987 target_arch = "arm",
54988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54989)]
54990pub fn vreinterpretq_p128_p16(a: poly16x8_t) -> p128 {
54991 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54992 unsafe { transmute(a) }
54993}
54994#[doc = "Vector reinterpret cast operation"]
54995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p16)"]
54996#[inline(always)]
54997#[cfg(target_endian = "little")]
54998#[target_feature(enable = "neon,aes")]
54999#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55000#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55001#[cfg_attr(
55002 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55003 assert_instr(nop)
55004)]
55005#[cfg_attr(
55006 not(target_arch = "arm"),
55007 stable(feature = "neon_intrinsics", since = "1.59.0")
55008)]
55009#[cfg_attr(
55010 target_arch = "arm",
55011 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55012)]
55013pub fn vreinterpretq_p64_p16(a: poly16x8_t) -> poly64x2_t {
55014 unsafe { transmute(a) }
55015}
55016#[doc = "Vector reinterpret cast operation"]
55017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p16)"]
55018#[inline(always)]
55019#[cfg(target_endian = "big")]
55020#[target_feature(enable = "neon,aes")]
55021#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55022#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55023#[cfg_attr(
55024 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55025 assert_instr(nop)
55026)]
55027#[cfg_attr(
55028 not(target_arch = "arm"),
55029 stable(feature = "neon_intrinsics", since = "1.59.0")
55030)]
55031#[cfg_attr(
55032 target_arch = "arm",
55033 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55034)]
55035pub fn vreinterpretq_p64_p16(a: poly16x8_t) -> poly64x2_t {
55036 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
55037 unsafe {
55038 let ret_val: poly64x2_t = transmute(a);
55039 simd_shuffle!(ret_val, ret_val, [1, 0])
55040 }
55041}
55042#[doc = "Vector reinterpret cast operation"]
55043#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p64)"]
55044#[inline(always)]
55045#[cfg(target_endian = "little")]
55046#[target_feature(enable = "neon,aes")]
55047#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55048#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55049#[cfg_attr(
55050 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55051 assert_instr(nop)
55052)]
55053#[cfg_attr(
55054 not(target_arch = "arm"),
55055 stable(feature = "neon_intrinsics", since = "1.59.0")
55056)]
55057#[cfg_attr(
55058 target_arch = "arm",
55059 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55060)]
55061pub fn vreinterpret_s8_p64(a: poly64x1_t) -> int8x8_t {
55062 unsafe { transmute(a) }
55063}
55064#[doc = "Vector reinterpret cast operation"]
55065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p64)"]
55066#[inline(always)]
55067#[cfg(target_endian = "big")]
55068#[target_feature(enable = "neon,aes")]
55069#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55070#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55071#[cfg_attr(
55072 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55073 assert_instr(nop)
55074)]
55075#[cfg_attr(
55076 not(target_arch = "arm"),
55077 stable(feature = "neon_intrinsics", since = "1.59.0")
55078)]
55079#[cfg_attr(
55080 target_arch = "arm",
55081 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55082)]
55083pub fn vreinterpret_s8_p64(a: poly64x1_t) -> int8x8_t {
55084 unsafe {
55085 let ret_val: int8x8_t = transmute(a);
55086 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55087 }
55088}
55089#[doc = "Vector reinterpret cast operation"]
55090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p64)"]
55091#[inline(always)]
55092#[cfg(target_endian = "little")]
55093#[target_feature(enable = "neon,aes")]
55094#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55095#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55096#[cfg_attr(
55097 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55098 assert_instr(nop)
55099)]
55100#[cfg_attr(
55101 not(target_arch = "arm"),
55102 stable(feature = "neon_intrinsics", since = "1.59.0")
55103)]
55104#[cfg_attr(
55105 target_arch = "arm",
55106 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55107)]
55108pub fn vreinterpret_s16_p64(a: poly64x1_t) -> int16x4_t {
55109 unsafe { transmute(a) }
55110}
55111#[doc = "Vector reinterpret cast operation"]
55112#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p64)"]
55113#[inline(always)]
55114#[cfg(target_endian = "big")]
55115#[target_feature(enable = "neon,aes")]
55116#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55117#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55118#[cfg_attr(
55119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55120 assert_instr(nop)
55121)]
55122#[cfg_attr(
55123 not(target_arch = "arm"),
55124 stable(feature = "neon_intrinsics", since = "1.59.0")
55125)]
55126#[cfg_attr(
55127 target_arch = "arm",
55128 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55129)]
55130pub fn vreinterpret_s16_p64(a: poly64x1_t) -> int16x4_t {
55131 unsafe {
55132 let ret_val: int16x4_t = transmute(a);
55133 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55134 }
55135}
55136#[doc = "Vector reinterpret cast operation"]
55137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p64)"]
55138#[inline(always)]
55139#[cfg(target_endian = "little")]
55140#[target_feature(enable = "neon,aes")]
55141#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55142#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55143#[cfg_attr(
55144 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55145 assert_instr(nop)
55146)]
55147#[cfg_attr(
55148 not(target_arch = "arm"),
55149 stable(feature = "neon_intrinsics", since = "1.59.0")
55150)]
55151#[cfg_attr(
55152 target_arch = "arm",
55153 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55154)]
55155pub fn vreinterpret_s32_p64(a: poly64x1_t) -> int32x2_t {
55156 unsafe { transmute(a) }
55157}
55158#[doc = "Vector reinterpret cast operation"]
55159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p64)"]
55160#[inline(always)]
55161#[cfg(target_endian = "big")]
55162#[target_feature(enable = "neon,aes")]
55163#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55164#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55165#[cfg_attr(
55166 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55167 assert_instr(nop)
55168)]
55169#[cfg_attr(
55170 not(target_arch = "arm"),
55171 stable(feature = "neon_intrinsics", since = "1.59.0")
55172)]
55173#[cfg_attr(
55174 target_arch = "arm",
55175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55176)]
55177pub fn vreinterpret_s32_p64(a: poly64x1_t) -> int32x2_t {
55178 unsafe {
55179 let ret_val: int32x2_t = transmute(a);
55180 simd_shuffle!(ret_val, ret_val, [1, 0])
55181 }
55182}
55183#[doc = "Vector reinterpret cast operation"]
55184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p64)"]
55185#[inline(always)]
55186#[cfg(target_endian = "little")]
55187#[target_feature(enable = "neon,aes")]
55188#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55189#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55190#[cfg_attr(
55191 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55192 assert_instr(nop)
55193)]
55194#[cfg_attr(
55195 not(target_arch = "arm"),
55196 stable(feature = "neon_intrinsics", since = "1.59.0")
55197)]
55198#[cfg_attr(
55199 target_arch = "arm",
55200 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55201)]
55202pub fn vreinterpret_u8_p64(a: poly64x1_t) -> uint8x8_t {
55203 unsafe { transmute(a) }
55204}
55205#[doc = "Vector reinterpret cast operation"]
55206#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p64)"]
55207#[inline(always)]
55208#[cfg(target_endian = "big")]
55209#[target_feature(enable = "neon,aes")]
55210#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55211#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55212#[cfg_attr(
55213 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55214 assert_instr(nop)
55215)]
55216#[cfg_attr(
55217 not(target_arch = "arm"),
55218 stable(feature = "neon_intrinsics", since = "1.59.0")
55219)]
55220#[cfg_attr(
55221 target_arch = "arm",
55222 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55223)]
55224pub fn vreinterpret_u8_p64(a: poly64x1_t) -> uint8x8_t {
55225 unsafe {
55226 let ret_val: uint8x8_t = transmute(a);
55227 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55228 }
55229}
55230#[doc = "Vector reinterpret cast operation"]
55231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p64)"]
55232#[inline(always)]
55233#[cfg(target_endian = "little")]
55234#[target_feature(enable = "neon,aes")]
55235#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55236#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55237#[cfg_attr(
55238 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55239 assert_instr(nop)
55240)]
55241#[cfg_attr(
55242 not(target_arch = "arm"),
55243 stable(feature = "neon_intrinsics", since = "1.59.0")
55244)]
55245#[cfg_attr(
55246 target_arch = "arm",
55247 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55248)]
55249pub fn vreinterpret_u16_p64(a: poly64x1_t) -> uint16x4_t {
55250 unsafe { transmute(a) }
55251}
55252#[doc = "Vector reinterpret cast operation"]
55253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p64)"]
55254#[inline(always)]
55255#[cfg(target_endian = "big")]
55256#[target_feature(enable = "neon,aes")]
55257#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55258#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55259#[cfg_attr(
55260 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55261 assert_instr(nop)
55262)]
55263#[cfg_attr(
55264 not(target_arch = "arm"),
55265 stable(feature = "neon_intrinsics", since = "1.59.0")
55266)]
55267#[cfg_attr(
55268 target_arch = "arm",
55269 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55270)]
55271pub fn vreinterpret_u16_p64(a: poly64x1_t) -> uint16x4_t {
55272 unsafe {
55273 let ret_val: uint16x4_t = transmute(a);
55274 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55275 }
55276}
55277#[doc = "Vector reinterpret cast operation"]
55278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p64)"]
55279#[inline(always)]
55280#[cfg(target_endian = "little")]
55281#[target_feature(enable = "neon,aes")]
55282#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55283#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55284#[cfg_attr(
55285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55286 assert_instr(nop)
55287)]
55288#[cfg_attr(
55289 not(target_arch = "arm"),
55290 stable(feature = "neon_intrinsics", since = "1.59.0")
55291)]
55292#[cfg_attr(
55293 target_arch = "arm",
55294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55295)]
55296pub fn vreinterpret_u32_p64(a: poly64x1_t) -> uint32x2_t {
55297 unsafe { transmute(a) }
55298}
55299#[doc = "Vector reinterpret cast operation"]
55300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p64)"]
55301#[inline(always)]
55302#[cfg(target_endian = "big")]
55303#[target_feature(enable = "neon,aes")]
55304#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55305#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55306#[cfg_attr(
55307 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55308 assert_instr(nop)
55309)]
55310#[cfg_attr(
55311 not(target_arch = "arm"),
55312 stable(feature = "neon_intrinsics", since = "1.59.0")
55313)]
55314#[cfg_attr(
55315 target_arch = "arm",
55316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55317)]
55318pub fn vreinterpret_u32_p64(a: poly64x1_t) -> uint32x2_t {
55319 unsafe {
55320 let ret_val: uint32x2_t = transmute(a);
55321 simd_shuffle!(ret_val, ret_val, [1, 0])
55322 }
55323}
55324#[doc = "Vector reinterpret cast operation"]
55325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p64)"]
55326#[inline(always)]
55327#[cfg(target_endian = "little")]
55328#[target_feature(enable = "neon,aes")]
55329#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55330#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55331#[cfg_attr(
55332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55333 assert_instr(nop)
55334)]
55335#[cfg_attr(
55336 not(target_arch = "arm"),
55337 stable(feature = "neon_intrinsics", since = "1.59.0")
55338)]
55339#[cfg_attr(
55340 target_arch = "arm",
55341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55342)]
55343pub fn vreinterpret_p8_p64(a: poly64x1_t) -> poly8x8_t {
55344 unsafe { transmute(a) }
55345}
55346#[doc = "Vector reinterpret cast operation"]
55347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p64)"]
55348#[inline(always)]
55349#[cfg(target_endian = "big")]
55350#[target_feature(enable = "neon,aes")]
55351#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55352#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55353#[cfg_attr(
55354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55355 assert_instr(nop)
55356)]
55357#[cfg_attr(
55358 not(target_arch = "arm"),
55359 stable(feature = "neon_intrinsics", since = "1.59.0")
55360)]
55361#[cfg_attr(
55362 target_arch = "arm",
55363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55364)]
55365pub fn vreinterpret_p8_p64(a: poly64x1_t) -> poly8x8_t {
55366 unsafe {
55367 let ret_val: poly8x8_t = transmute(a);
55368 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55369 }
55370}
55371#[doc = "Vector reinterpret cast operation"]
55372#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p64)"]
55373#[inline(always)]
55374#[cfg(target_endian = "little")]
55375#[target_feature(enable = "neon,aes")]
55376#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55377#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55378#[cfg_attr(
55379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55380 assert_instr(nop)
55381)]
55382#[cfg_attr(
55383 not(target_arch = "arm"),
55384 stable(feature = "neon_intrinsics", since = "1.59.0")
55385)]
55386#[cfg_attr(
55387 target_arch = "arm",
55388 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55389)]
55390pub fn vreinterpret_p16_p64(a: poly64x1_t) -> poly16x4_t {
55391 unsafe { transmute(a) }
55392}
55393#[doc = "Vector reinterpret cast operation"]
55394#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p64)"]
55395#[inline(always)]
55396#[cfg(target_endian = "big")]
55397#[target_feature(enable = "neon,aes")]
55398#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55399#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55400#[cfg_attr(
55401 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55402 assert_instr(nop)
55403)]
55404#[cfg_attr(
55405 not(target_arch = "arm"),
55406 stable(feature = "neon_intrinsics", since = "1.59.0")
55407)]
55408#[cfg_attr(
55409 target_arch = "arm",
55410 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55411)]
55412pub fn vreinterpret_p16_p64(a: poly64x1_t) -> poly16x4_t {
55413 unsafe {
55414 let ret_val: poly16x4_t = transmute(a);
55415 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55416 }
55417}
55418#[doc = "Vector reinterpret cast operation"]
55419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p64)"]
55420#[inline(always)]
55421#[cfg(target_endian = "little")]
55422#[target_feature(enable = "neon,aes")]
55423#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55424#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55425#[cfg_attr(
55426 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55427 assert_instr(nop)
55428)]
55429#[cfg_attr(
55430 not(target_arch = "arm"),
55431 stable(feature = "neon_intrinsics", since = "1.59.0")
55432)]
55433#[cfg_attr(
55434 target_arch = "arm",
55435 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55436)]
55437pub fn vreinterpretq_p128_p64(a: poly64x2_t) -> p128 {
55438 unsafe { transmute(a) }
55439}
55440#[doc = "Vector reinterpret cast operation"]
55441#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p64)"]
55442#[inline(always)]
55443#[cfg(target_endian = "big")]
55444#[target_feature(enable = "neon,aes")]
55445#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55446#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55447#[cfg_attr(
55448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55449 assert_instr(nop)
55450)]
55451#[cfg_attr(
55452 not(target_arch = "arm"),
55453 stable(feature = "neon_intrinsics", since = "1.59.0")
55454)]
55455#[cfg_attr(
55456 target_arch = "arm",
55457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55458)]
55459pub fn vreinterpretq_p128_p64(a: poly64x2_t) -> p128 {
55460 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55461 unsafe { transmute(a) }
55462}
55463#[doc = "Vector reinterpret cast operation"]
55464#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p64)"]
55465#[inline(always)]
55466#[cfg(target_endian = "little")]
55467#[target_feature(enable = "neon,aes")]
55468#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55469#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55470#[cfg_attr(
55471 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55472 assert_instr(nop)
55473)]
55474#[cfg_attr(
55475 not(target_arch = "arm"),
55476 stable(feature = "neon_intrinsics", since = "1.59.0")
55477)]
55478#[cfg_attr(
55479 target_arch = "arm",
55480 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55481)]
55482pub fn vreinterpretq_s8_p64(a: poly64x2_t) -> int8x16_t {
55483 unsafe { transmute(a) }
55484}
55485#[doc = "Vector reinterpret cast operation"]
55486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p64)"]
55487#[inline(always)]
55488#[cfg(target_endian = "big")]
55489#[target_feature(enable = "neon,aes")]
55490#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55491#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55492#[cfg_attr(
55493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55494 assert_instr(nop)
55495)]
55496#[cfg_attr(
55497 not(target_arch = "arm"),
55498 stable(feature = "neon_intrinsics", since = "1.59.0")
55499)]
55500#[cfg_attr(
55501 target_arch = "arm",
55502 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55503)]
55504pub fn vreinterpretq_s8_p64(a: poly64x2_t) -> int8x16_t {
55505 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55506 unsafe {
55507 let ret_val: int8x16_t = transmute(a);
55508 simd_shuffle!(
55509 ret_val,
55510 ret_val,
55511 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55512 )
55513 }
55514}
55515#[doc = "Vector reinterpret cast operation"]
55516#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p64)"]
55517#[inline(always)]
55518#[cfg(target_endian = "little")]
55519#[target_feature(enable = "neon,aes")]
55520#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55521#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55522#[cfg_attr(
55523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55524 assert_instr(nop)
55525)]
55526#[cfg_attr(
55527 not(target_arch = "arm"),
55528 stable(feature = "neon_intrinsics", since = "1.59.0")
55529)]
55530#[cfg_attr(
55531 target_arch = "arm",
55532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55533)]
55534pub fn vreinterpretq_s16_p64(a: poly64x2_t) -> int16x8_t {
55535 unsafe { transmute(a) }
55536}
55537#[doc = "Vector reinterpret cast operation"]
55538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p64)"]
55539#[inline(always)]
55540#[cfg(target_endian = "big")]
55541#[target_feature(enable = "neon,aes")]
55542#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55543#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55544#[cfg_attr(
55545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55546 assert_instr(nop)
55547)]
55548#[cfg_attr(
55549 not(target_arch = "arm"),
55550 stable(feature = "neon_intrinsics", since = "1.59.0")
55551)]
55552#[cfg_attr(
55553 target_arch = "arm",
55554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55555)]
55556pub fn vreinterpretq_s16_p64(a: poly64x2_t) -> int16x8_t {
55557 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55558 unsafe {
55559 let ret_val: int16x8_t = transmute(a);
55560 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55561 }
55562}
55563#[doc = "Vector reinterpret cast operation"]
55564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p64)"]
55565#[inline(always)]
55566#[cfg(target_endian = "little")]
55567#[target_feature(enable = "neon,aes")]
55568#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55569#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55570#[cfg_attr(
55571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55572 assert_instr(nop)
55573)]
55574#[cfg_attr(
55575 not(target_arch = "arm"),
55576 stable(feature = "neon_intrinsics", since = "1.59.0")
55577)]
55578#[cfg_attr(
55579 target_arch = "arm",
55580 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55581)]
55582pub fn vreinterpretq_s32_p64(a: poly64x2_t) -> int32x4_t {
55583 unsafe { transmute(a) }
55584}
55585#[doc = "Vector reinterpret cast operation"]
55586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p64)"]
55587#[inline(always)]
55588#[cfg(target_endian = "big")]
55589#[target_feature(enable = "neon,aes")]
55590#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55591#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55592#[cfg_attr(
55593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55594 assert_instr(nop)
55595)]
55596#[cfg_attr(
55597 not(target_arch = "arm"),
55598 stable(feature = "neon_intrinsics", since = "1.59.0")
55599)]
55600#[cfg_attr(
55601 target_arch = "arm",
55602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55603)]
55604pub fn vreinterpretq_s32_p64(a: poly64x2_t) -> int32x4_t {
55605 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55606 unsafe {
55607 let ret_val: int32x4_t = transmute(a);
55608 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55609 }
55610}
55611#[doc = "Vector reinterpret cast operation"]
55612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p64)"]
55613#[inline(always)]
55614#[cfg(target_endian = "little")]
55615#[target_feature(enable = "neon,aes")]
55616#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55617#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55618#[cfg_attr(
55619 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55620 assert_instr(nop)
55621)]
55622#[cfg_attr(
55623 not(target_arch = "arm"),
55624 stable(feature = "neon_intrinsics", since = "1.59.0")
55625)]
55626#[cfg_attr(
55627 target_arch = "arm",
55628 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55629)]
55630pub fn vreinterpretq_u8_p64(a: poly64x2_t) -> uint8x16_t {
55631 unsafe { transmute(a) }
55632}
55633#[doc = "Vector reinterpret cast operation"]
55634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p64)"]
55635#[inline(always)]
55636#[cfg(target_endian = "big")]
55637#[target_feature(enable = "neon,aes")]
55638#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55640#[cfg_attr(
55641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55642 assert_instr(nop)
55643)]
55644#[cfg_attr(
55645 not(target_arch = "arm"),
55646 stable(feature = "neon_intrinsics", since = "1.59.0")
55647)]
55648#[cfg_attr(
55649 target_arch = "arm",
55650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55651)]
55652pub fn vreinterpretq_u8_p64(a: poly64x2_t) -> uint8x16_t {
55653 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55654 unsafe {
55655 let ret_val: uint8x16_t = transmute(a);
55656 simd_shuffle!(
55657 ret_val,
55658 ret_val,
55659 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55660 )
55661 }
55662}
55663#[doc = "Vector reinterpret cast operation"]
55664#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p64)"]
55665#[inline(always)]
55666#[cfg(target_endian = "little")]
55667#[target_feature(enable = "neon,aes")]
55668#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55669#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55670#[cfg_attr(
55671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55672 assert_instr(nop)
55673)]
55674#[cfg_attr(
55675 not(target_arch = "arm"),
55676 stable(feature = "neon_intrinsics", since = "1.59.0")
55677)]
55678#[cfg_attr(
55679 target_arch = "arm",
55680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55681)]
55682pub fn vreinterpretq_u16_p64(a: poly64x2_t) -> uint16x8_t {
55683 unsafe { transmute(a) }
55684}
55685#[doc = "Vector reinterpret cast operation"]
55686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p64)"]
55687#[inline(always)]
55688#[cfg(target_endian = "big")]
55689#[target_feature(enable = "neon,aes")]
55690#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55691#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55692#[cfg_attr(
55693 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55694 assert_instr(nop)
55695)]
55696#[cfg_attr(
55697 not(target_arch = "arm"),
55698 stable(feature = "neon_intrinsics", since = "1.59.0")
55699)]
55700#[cfg_attr(
55701 target_arch = "arm",
55702 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55703)]
55704pub fn vreinterpretq_u16_p64(a: poly64x2_t) -> uint16x8_t {
55705 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55706 unsafe {
55707 let ret_val: uint16x8_t = transmute(a);
55708 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55709 }
55710}
55711#[doc = "Vector reinterpret cast operation"]
55712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p64)"]
55713#[inline(always)]
55714#[cfg(target_endian = "little")]
55715#[target_feature(enable = "neon,aes")]
55716#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55717#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55718#[cfg_attr(
55719 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55720 assert_instr(nop)
55721)]
55722#[cfg_attr(
55723 not(target_arch = "arm"),
55724 stable(feature = "neon_intrinsics", since = "1.59.0")
55725)]
55726#[cfg_attr(
55727 target_arch = "arm",
55728 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55729)]
55730pub fn vreinterpretq_u32_p64(a: poly64x2_t) -> uint32x4_t {
55731 unsafe { transmute(a) }
55732}
55733#[doc = "Vector reinterpret cast operation"]
55734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p64)"]
55735#[inline(always)]
55736#[cfg(target_endian = "big")]
55737#[target_feature(enable = "neon,aes")]
55738#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55739#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55740#[cfg_attr(
55741 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55742 assert_instr(nop)
55743)]
55744#[cfg_attr(
55745 not(target_arch = "arm"),
55746 stable(feature = "neon_intrinsics", since = "1.59.0")
55747)]
55748#[cfg_attr(
55749 target_arch = "arm",
55750 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55751)]
55752pub fn vreinterpretq_u32_p64(a: poly64x2_t) -> uint32x4_t {
55753 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55754 unsafe {
55755 let ret_val: uint32x4_t = transmute(a);
55756 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55757 }
55758}
55759#[doc = "Vector reinterpret cast operation"]
55760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p64)"]
55761#[inline(always)]
55762#[cfg(target_endian = "little")]
55763#[target_feature(enable = "neon,aes")]
55764#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55765#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55766#[cfg_attr(
55767 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55768 assert_instr(nop)
55769)]
55770#[cfg_attr(
55771 not(target_arch = "arm"),
55772 stable(feature = "neon_intrinsics", since = "1.59.0")
55773)]
55774#[cfg_attr(
55775 target_arch = "arm",
55776 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55777)]
55778pub fn vreinterpretq_p8_p64(a: poly64x2_t) -> poly8x16_t {
55779 unsafe { transmute(a) }
55780}
55781#[doc = "Vector reinterpret cast operation"]
55782#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p64)"]
55783#[inline(always)]
55784#[cfg(target_endian = "big")]
55785#[target_feature(enable = "neon,aes")]
55786#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55787#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55788#[cfg_attr(
55789 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55790 assert_instr(nop)
55791)]
55792#[cfg_attr(
55793 not(target_arch = "arm"),
55794 stable(feature = "neon_intrinsics", since = "1.59.0")
55795)]
55796#[cfg_attr(
55797 target_arch = "arm",
55798 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55799)]
55800pub fn vreinterpretq_p8_p64(a: poly64x2_t) -> poly8x16_t {
55801 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55802 unsafe {
55803 let ret_val: poly8x16_t = transmute(a);
55804 simd_shuffle!(
55805 ret_val,
55806 ret_val,
55807 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55808 )
55809 }
55810}
55811#[doc = "Vector reinterpret cast operation"]
55812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p64)"]
55813#[inline(always)]
55814#[cfg(target_endian = "little")]
55815#[target_feature(enable = "neon,aes")]
55816#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55817#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55818#[cfg_attr(
55819 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55820 assert_instr(nop)
55821)]
55822#[cfg_attr(
55823 not(target_arch = "arm"),
55824 stable(feature = "neon_intrinsics", since = "1.59.0")
55825)]
55826#[cfg_attr(
55827 target_arch = "arm",
55828 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55829)]
55830pub fn vreinterpretq_p16_p64(a: poly64x2_t) -> poly16x8_t {
55831 unsafe { transmute(a) }
55832}
55833#[doc = "Vector reinterpret cast operation"]
55834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p64)"]
55835#[inline(always)]
55836#[cfg(target_endian = "big")]
55837#[target_feature(enable = "neon,aes")]
55838#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55839#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55840#[cfg_attr(
55841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55842 assert_instr(nop)
55843)]
55844#[cfg_attr(
55845 not(target_arch = "arm"),
55846 stable(feature = "neon_intrinsics", since = "1.59.0")
55847)]
55848#[cfg_attr(
55849 target_arch = "arm",
55850 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55851)]
55852pub fn vreinterpretq_p16_p64(a: poly64x2_t) -> poly16x8_t {
55853 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55854 unsafe {
55855 let ret_val: poly16x8_t = transmute(a);
55856 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55857 }
55858}
55859#[doc = "Reversing vector elements (swap endianness)"]
55860#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_p8)"]
55861#[inline(always)]
55862#[target_feature(enable = "neon")]
55863#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55864#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55865#[cfg_attr(
55866 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55867 assert_instr(rev16)
55868)]
55869#[cfg_attr(
55870 not(target_arch = "arm"),
55871 stable(feature = "neon_intrinsics", since = "1.59.0")
55872)]
55873#[cfg_attr(
55874 target_arch = "arm",
55875 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55876)]
55877pub fn vrev16_p8(a: poly8x8_t) -> poly8x8_t {
55878 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
55879}
55880#[doc = "Reversing vector elements (swap endianness)"]
55881#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_s8)"]
55882#[inline(always)]
55883#[target_feature(enable = "neon")]
55884#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55885#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55886#[cfg_attr(
55887 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55888 assert_instr(rev16)
55889)]
55890#[cfg_attr(
55891 not(target_arch = "arm"),
55892 stable(feature = "neon_intrinsics", since = "1.59.0")
55893)]
55894#[cfg_attr(
55895 target_arch = "arm",
55896 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55897)]
55898pub fn vrev16_s8(a: int8x8_t) -> int8x8_t {
55899 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
55900}
55901#[doc = "Reversing vector elements (swap endianness)"]
55902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_u8)"]
55903#[inline(always)]
55904#[target_feature(enable = "neon")]
55905#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55906#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55907#[cfg_attr(
55908 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55909 assert_instr(rev16)
55910)]
55911#[cfg_attr(
55912 not(target_arch = "arm"),
55913 stable(feature = "neon_intrinsics", since = "1.59.0")
55914)]
55915#[cfg_attr(
55916 target_arch = "arm",
55917 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55918)]
55919pub fn vrev16_u8(a: uint8x8_t) -> uint8x8_t {
55920 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
55921}
55922#[doc = "Reversing vector elements (swap endianness)"]
55923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_p8)"]
55924#[inline(always)]
55925#[target_feature(enable = "neon")]
55926#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55927#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55928#[cfg_attr(
55929 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55930 assert_instr(rev16)
55931)]
55932#[cfg_attr(
55933 not(target_arch = "arm"),
55934 stable(feature = "neon_intrinsics", since = "1.59.0")
55935)]
55936#[cfg_attr(
55937 target_arch = "arm",
55938 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55939)]
55940pub fn vrev16q_p8(a: poly8x16_t) -> poly8x16_t {
55941 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
55942}
55943#[doc = "Reversing vector elements (swap endianness)"]
55944#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_s8)"]
55945#[inline(always)]
55946#[target_feature(enable = "neon")]
55947#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55948#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55949#[cfg_attr(
55950 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55951 assert_instr(rev16)
55952)]
55953#[cfg_attr(
55954 not(target_arch = "arm"),
55955 stable(feature = "neon_intrinsics", since = "1.59.0")
55956)]
55957#[cfg_attr(
55958 target_arch = "arm",
55959 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55960)]
55961pub fn vrev16q_s8(a: int8x16_t) -> int8x16_t {
55962 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
55963}
55964#[doc = "Reversing vector elements (swap endianness)"]
55965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_u8)"]
55966#[inline(always)]
55967#[target_feature(enable = "neon")]
55968#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55969#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55970#[cfg_attr(
55971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55972 assert_instr(rev16)
55973)]
55974#[cfg_attr(
55975 not(target_arch = "arm"),
55976 stable(feature = "neon_intrinsics", since = "1.59.0")
55977)]
55978#[cfg_attr(
55979 target_arch = "arm",
55980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55981)]
55982pub fn vrev16q_u8(a: uint8x16_t) -> uint8x16_t {
55983 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
55984}
55985#[doc = "Reversing vector elements (swap endianness)"]
55986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_p16)"]
55987#[inline(always)]
55988#[target_feature(enable = "neon")]
55989#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55990#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
55991#[cfg_attr(
55992 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55993 assert_instr(rev32)
55994)]
55995#[cfg_attr(
55996 not(target_arch = "arm"),
55997 stable(feature = "neon_intrinsics", since = "1.59.0")
55998)]
55999#[cfg_attr(
56000 target_arch = "arm",
56001 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56002)]
56003pub fn vrev32_p16(a: poly16x4_t) -> poly16x4_t {
56004 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
56005}
56006#[doc = "Reversing vector elements (swap endianness)"]
56007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_p8)"]
56008#[inline(always)]
56009#[target_feature(enable = "neon")]
56010#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56011#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
56012#[cfg_attr(
56013 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56014 assert_instr(rev32)
56015)]
56016#[cfg_attr(
56017 not(target_arch = "arm"),
56018 stable(feature = "neon_intrinsics", since = "1.59.0")
56019)]
56020#[cfg_attr(
56021 target_arch = "arm",
56022 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56023)]
56024pub fn vrev32_p8(a: poly8x8_t) -> poly8x8_t {
56025 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56026}
56027#[doc = "Reversing vector elements (swap endianness)"]
56028#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_s16)"]
56029#[inline(always)]
56030#[target_feature(enable = "neon")]
56031#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56032#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
56033#[cfg_attr(
56034 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56035 assert_instr(rev32)
56036)]
56037#[cfg_attr(
56038 not(target_arch = "arm"),
56039 stable(feature = "neon_intrinsics", since = "1.59.0")
56040)]
56041#[cfg_attr(
56042 target_arch = "arm",
56043 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56044)]
56045pub fn vrev32_s16(a: int16x4_t) -> int16x4_t {
56046 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
56047}
56048#[doc = "Reversing vector elements (swap endianness)"]
56049#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_s8)"]
56050#[inline(always)]
56051#[target_feature(enable = "neon")]
56052#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56053#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
56054#[cfg_attr(
56055 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56056 assert_instr(rev32)
56057)]
56058#[cfg_attr(
56059 not(target_arch = "arm"),
56060 stable(feature = "neon_intrinsics", since = "1.59.0")
56061)]
56062#[cfg_attr(
56063 target_arch = "arm",
56064 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56065)]
56066pub fn vrev32_s8(a: int8x8_t) -> int8x8_t {
56067 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56068}
56069#[doc = "Reversing vector elements (swap endianness)"]
56070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_u16)"]
56071#[inline(always)]
56072#[target_feature(enable = "neon")]
56073#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56074#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
56075#[cfg_attr(
56076 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56077 assert_instr(rev32)
56078)]
56079#[cfg_attr(
56080 not(target_arch = "arm"),
56081 stable(feature = "neon_intrinsics", since = "1.59.0")
56082)]
56083#[cfg_attr(
56084 target_arch = "arm",
56085 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56086)]
56087pub fn vrev32_u16(a: uint16x4_t) -> uint16x4_t {
56088 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
56089}
56090#[doc = "Reversing vector elements (swap endianness)"]
56091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_u8)"]
56092#[inline(always)]
56093#[target_feature(enable = "neon")]
56094#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56095#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
56096#[cfg_attr(
56097 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56098 assert_instr(rev32)
56099)]
56100#[cfg_attr(
56101 not(target_arch = "arm"),
56102 stable(feature = "neon_intrinsics", since = "1.59.0")
56103)]
56104#[cfg_attr(
56105 target_arch = "arm",
56106 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56107)]
56108pub fn vrev32_u8(a: uint8x8_t) -> uint8x8_t {
56109 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56110}
56111#[doc = "Reversing vector elements (swap endianness)"]
56112#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_p16)"]
56113#[inline(always)]
56114#[target_feature(enable = "neon")]
56115#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56116#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
56117#[cfg_attr(
56118 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56119 assert_instr(rev32)
56120)]
56121#[cfg_attr(
56122 not(target_arch = "arm"),
56123 stable(feature = "neon_intrinsics", since = "1.59.0")
56124)]
56125#[cfg_attr(
56126 target_arch = "arm",
56127 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56128)]
56129pub fn vrev32q_p16(a: poly16x8_t) -> poly16x8_t {
56130 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
56131}
56132#[doc = "Reversing vector elements (swap endianness)"]
56133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_p8)"]
56134#[inline(always)]
56135#[target_feature(enable = "neon")]
56136#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56137#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
56138#[cfg_attr(
56139 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56140 assert_instr(rev32)
56141)]
56142#[cfg_attr(
56143 not(target_arch = "arm"),
56144 stable(feature = "neon_intrinsics", since = "1.59.0")
56145)]
56146#[cfg_attr(
56147 target_arch = "arm",
56148 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56149)]
56150pub fn vrev32q_p8(a: poly8x16_t) -> poly8x16_t {
56151 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
56152}
56153#[doc = "Reversing vector elements (swap endianness)"]
56154#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_s16)"]
56155#[inline(always)]
56156#[target_feature(enable = "neon")]
56157#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56158#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
56159#[cfg_attr(
56160 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56161 assert_instr(rev32)
56162)]
56163#[cfg_attr(
56164 not(target_arch = "arm"),
56165 stable(feature = "neon_intrinsics", since = "1.59.0")
56166)]
56167#[cfg_attr(
56168 target_arch = "arm",
56169 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56170)]
56171pub fn vrev32q_s16(a: int16x8_t) -> int16x8_t {
56172 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
56173}
56174#[doc = "Reversing vector elements (swap endianness)"]
56175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_s8)"]
56176#[inline(always)]
56177#[target_feature(enable = "neon")]
56178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56179#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
56180#[cfg_attr(
56181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56182 assert_instr(rev32)
56183)]
56184#[cfg_attr(
56185 not(target_arch = "arm"),
56186 stable(feature = "neon_intrinsics", since = "1.59.0")
56187)]
56188#[cfg_attr(
56189 target_arch = "arm",
56190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56191)]
56192pub fn vrev32q_s8(a: int8x16_t) -> int8x16_t {
56193 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
56194}
56195#[doc = "Reversing vector elements (swap endianness)"]
56196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_u16)"]
56197#[inline(always)]
56198#[target_feature(enable = "neon")]
56199#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56200#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
56201#[cfg_attr(
56202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56203 assert_instr(rev32)
56204)]
56205#[cfg_attr(
56206 not(target_arch = "arm"),
56207 stable(feature = "neon_intrinsics", since = "1.59.0")
56208)]
56209#[cfg_attr(
56210 target_arch = "arm",
56211 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56212)]
56213pub fn vrev32q_u16(a: uint16x8_t) -> uint16x8_t {
56214 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
56215}
56216#[doc = "Reversing vector elements (swap endianness)"]
56217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_u8)"]
56218#[inline(always)]
56219#[target_feature(enable = "neon")]
56220#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56221#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
56222#[cfg_attr(
56223 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56224 assert_instr(rev32)
56225)]
56226#[cfg_attr(
56227 not(target_arch = "arm"),
56228 stable(feature = "neon_intrinsics", since = "1.59.0")
56229)]
56230#[cfg_attr(
56231 target_arch = "arm",
56232 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56233)]
56234pub fn vrev32q_u8(a: uint8x16_t) -> uint8x16_t {
56235 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
56236}
56237#[doc = "Reversing vector elements (swap endianness)"]
56238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_f32)"]
56239#[inline(always)]
56240#[target_feature(enable = "neon")]
56241#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56242#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56243#[cfg_attr(
56244 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56245 assert_instr(rev64)
56246)]
56247#[cfg_attr(
56248 not(target_arch = "arm"),
56249 stable(feature = "neon_intrinsics", since = "1.59.0")
56250)]
56251#[cfg_attr(
56252 target_arch = "arm",
56253 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56254)]
56255pub fn vrev64_f32(a: float32x2_t) -> float32x2_t {
56256 unsafe { simd_shuffle!(a, a, [1, 0]) }
56257}
56258#[doc = "Reversing vector elements (swap endianness)"]
56259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_p16)"]
56260#[inline(always)]
56261#[target_feature(enable = "neon")]
56262#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56263#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56264#[cfg_attr(
56265 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56266 assert_instr(rev64)
56267)]
56268#[cfg_attr(
56269 not(target_arch = "arm"),
56270 stable(feature = "neon_intrinsics", since = "1.59.0")
56271)]
56272#[cfg_attr(
56273 target_arch = "arm",
56274 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56275)]
56276pub fn vrev64_p16(a: poly16x4_t) -> poly16x4_t {
56277 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
56278}
56279#[doc = "Reversing vector elements (swap endianness)"]
56280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_p8)"]
56281#[inline(always)]
56282#[target_feature(enable = "neon")]
56283#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56284#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56285#[cfg_attr(
56286 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56287 assert_instr(rev64)
56288)]
56289#[cfg_attr(
56290 not(target_arch = "arm"),
56291 stable(feature = "neon_intrinsics", since = "1.59.0")
56292)]
56293#[cfg_attr(
56294 target_arch = "arm",
56295 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56296)]
56297pub fn vrev64_p8(a: poly8x8_t) -> poly8x8_t {
56298 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
56299}
56300#[doc = "Reversing vector elements (swap endianness)"]
56301#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s16)"]
56302#[inline(always)]
56303#[target_feature(enable = "neon")]
56304#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56305#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56306#[cfg_attr(
56307 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56308 assert_instr(rev64)
56309)]
56310#[cfg_attr(
56311 not(target_arch = "arm"),
56312 stable(feature = "neon_intrinsics", since = "1.59.0")
56313)]
56314#[cfg_attr(
56315 target_arch = "arm",
56316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56317)]
56318pub fn vrev64_s16(a: int16x4_t) -> int16x4_t {
56319 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
56320}
56321#[doc = "Reversing vector elements (swap endianness)"]
56322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s32)"]
56323#[inline(always)]
56324#[target_feature(enable = "neon")]
56325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56326#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56327#[cfg_attr(
56328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56329 assert_instr(rev64)
56330)]
56331#[cfg_attr(
56332 not(target_arch = "arm"),
56333 stable(feature = "neon_intrinsics", since = "1.59.0")
56334)]
56335#[cfg_attr(
56336 target_arch = "arm",
56337 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56338)]
56339pub fn vrev64_s32(a: int32x2_t) -> int32x2_t {
56340 unsafe { simd_shuffle!(a, a, [1, 0]) }
56341}
56342#[doc = "Reversing vector elements (swap endianness)"]
56343#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s8)"]
56344#[inline(always)]
56345#[target_feature(enable = "neon")]
56346#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56347#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56348#[cfg_attr(
56349 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56350 assert_instr(rev64)
56351)]
56352#[cfg_attr(
56353 not(target_arch = "arm"),
56354 stable(feature = "neon_intrinsics", since = "1.59.0")
56355)]
56356#[cfg_attr(
56357 target_arch = "arm",
56358 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56359)]
56360pub fn vrev64_s8(a: int8x8_t) -> int8x8_t {
56361 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
56362}
56363#[doc = "Reversing vector elements (swap endianness)"]
56364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u16)"]
56365#[inline(always)]
56366#[target_feature(enable = "neon")]
56367#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56368#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56369#[cfg_attr(
56370 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56371 assert_instr(rev64)
56372)]
56373#[cfg_attr(
56374 not(target_arch = "arm"),
56375 stable(feature = "neon_intrinsics", since = "1.59.0")
56376)]
56377#[cfg_attr(
56378 target_arch = "arm",
56379 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56380)]
56381pub fn vrev64_u16(a: uint16x4_t) -> uint16x4_t {
56382 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
56383}
56384#[doc = "Reversing vector elements (swap endianness)"]
56385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u32)"]
56386#[inline(always)]
56387#[target_feature(enable = "neon")]
56388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56389#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56390#[cfg_attr(
56391 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56392 assert_instr(rev64)
56393)]
56394#[cfg_attr(
56395 not(target_arch = "arm"),
56396 stable(feature = "neon_intrinsics", since = "1.59.0")
56397)]
56398#[cfg_attr(
56399 target_arch = "arm",
56400 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56401)]
56402pub fn vrev64_u32(a: uint32x2_t) -> uint32x2_t {
56403 unsafe { simd_shuffle!(a, a, [1, 0]) }
56404}
56405#[doc = "Reversing vector elements (swap endianness)"]
56406#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u8)"]
56407#[inline(always)]
56408#[target_feature(enable = "neon")]
56409#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56410#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56411#[cfg_attr(
56412 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56413 assert_instr(rev64)
56414)]
56415#[cfg_attr(
56416 not(target_arch = "arm"),
56417 stable(feature = "neon_intrinsics", since = "1.59.0")
56418)]
56419#[cfg_attr(
56420 target_arch = "arm",
56421 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56422)]
56423pub fn vrev64_u8(a: uint8x8_t) -> uint8x8_t {
56424 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
56425}
56426#[doc = "Reversing vector elements (swap endianness)"]
56427#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_f32)"]
56428#[inline(always)]
56429#[target_feature(enable = "neon")]
56430#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56431#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56432#[cfg_attr(
56433 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56434 assert_instr(rev64)
56435)]
56436#[cfg_attr(
56437 not(target_arch = "arm"),
56438 stable(feature = "neon_intrinsics", since = "1.59.0")
56439)]
56440#[cfg_attr(
56441 target_arch = "arm",
56442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56443)]
56444pub fn vrev64q_f32(a: float32x4_t) -> float32x4_t {
56445 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
56446}
56447#[doc = "Reversing vector elements (swap endianness)"]
56448#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_p16)"]
56449#[inline(always)]
56450#[target_feature(enable = "neon")]
56451#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56452#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56453#[cfg_attr(
56454 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56455 assert_instr(rev64)
56456)]
56457#[cfg_attr(
56458 not(target_arch = "arm"),
56459 stable(feature = "neon_intrinsics", since = "1.59.0")
56460)]
56461#[cfg_attr(
56462 target_arch = "arm",
56463 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56464)]
56465pub fn vrev64q_p16(a: poly16x8_t) -> poly16x8_t {
56466 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56467}
56468#[doc = "Reversing vector elements (swap endianness)"]
56469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_p8)"]
56470#[inline(always)]
56471#[target_feature(enable = "neon")]
56472#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56473#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56474#[cfg_attr(
56475 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56476 assert_instr(rev64)
56477)]
56478#[cfg_attr(
56479 not(target_arch = "arm"),
56480 stable(feature = "neon_intrinsics", since = "1.59.0")
56481)]
56482#[cfg_attr(
56483 target_arch = "arm",
56484 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56485)]
56486pub fn vrev64q_p8(a: poly8x16_t) -> poly8x16_t {
56487 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
56488}
56489#[doc = "Reversing vector elements (swap endianness)"]
56490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s16)"]
56491#[inline(always)]
56492#[target_feature(enable = "neon")]
56493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56494#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56495#[cfg_attr(
56496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56497 assert_instr(rev64)
56498)]
56499#[cfg_attr(
56500 not(target_arch = "arm"),
56501 stable(feature = "neon_intrinsics", since = "1.59.0")
56502)]
56503#[cfg_attr(
56504 target_arch = "arm",
56505 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56506)]
56507pub fn vrev64q_s16(a: int16x8_t) -> int16x8_t {
56508 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56509}
56510#[doc = "Reversing vector elements (swap endianness)"]
56511#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s32)"]
56512#[inline(always)]
56513#[target_feature(enable = "neon")]
56514#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56515#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56516#[cfg_attr(
56517 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56518 assert_instr(rev64)
56519)]
56520#[cfg_attr(
56521 not(target_arch = "arm"),
56522 stable(feature = "neon_intrinsics", since = "1.59.0")
56523)]
56524#[cfg_attr(
56525 target_arch = "arm",
56526 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56527)]
56528pub fn vrev64q_s32(a: int32x4_t) -> int32x4_t {
56529 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
56530}
56531#[doc = "Reversing vector elements (swap endianness)"]
56532#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s8)"]
56533#[inline(always)]
56534#[target_feature(enable = "neon")]
56535#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56536#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56537#[cfg_attr(
56538 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56539 assert_instr(rev64)
56540)]
56541#[cfg_attr(
56542 not(target_arch = "arm"),
56543 stable(feature = "neon_intrinsics", since = "1.59.0")
56544)]
56545#[cfg_attr(
56546 target_arch = "arm",
56547 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56548)]
56549pub fn vrev64q_s8(a: int8x16_t) -> int8x16_t {
56550 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
56551}
56552#[doc = "Reversing vector elements (swap endianness)"]
56553#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u16)"]
56554#[inline(always)]
56555#[target_feature(enable = "neon")]
56556#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56557#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56558#[cfg_attr(
56559 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56560 assert_instr(rev64)
56561)]
56562#[cfg_attr(
56563 not(target_arch = "arm"),
56564 stable(feature = "neon_intrinsics", since = "1.59.0")
56565)]
56566#[cfg_attr(
56567 target_arch = "arm",
56568 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56569)]
56570pub fn vrev64q_u16(a: uint16x8_t) -> uint16x8_t {
56571 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56572}
56573#[doc = "Reversing vector elements (swap endianness)"]
56574#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u32)"]
56575#[inline(always)]
56576#[target_feature(enable = "neon")]
56577#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56578#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56579#[cfg_attr(
56580 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56581 assert_instr(rev64)
56582)]
56583#[cfg_attr(
56584 not(target_arch = "arm"),
56585 stable(feature = "neon_intrinsics", since = "1.59.0")
56586)]
56587#[cfg_attr(
56588 target_arch = "arm",
56589 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56590)]
56591pub fn vrev64q_u32(a: uint32x4_t) -> uint32x4_t {
56592 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
56593}
56594#[doc = "Reversing vector elements (swap endianness)"]
56595#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u8)"]
56596#[inline(always)]
56597#[target_feature(enable = "neon")]
56598#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56599#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56600#[cfg_attr(
56601 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56602 assert_instr(rev64)
56603)]
56604#[cfg_attr(
56605 not(target_arch = "arm"),
56606 stable(feature = "neon_intrinsics", since = "1.59.0")
56607)]
56608#[cfg_attr(
56609 target_arch = "arm",
56610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56611)]
56612pub fn vrev64q_u8(a: uint8x16_t) -> uint8x16_t {
56613 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
56614}
56615#[doc = "Reverse elements in 64-bit doublewords"]
56616#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_f16)"]
56617#[inline(always)]
56618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrev64))]
56620#[cfg_attr(
56621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56622 assert_instr(rev64)
56623)]
56624#[target_feature(enable = "neon,fp16")]
56625#[cfg_attr(
56626 not(target_arch = "arm"),
56627 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
56628)]
56629#[cfg_attr(
56630 target_arch = "arm",
56631 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56632)]
56633#[cfg(not(target_arch = "arm64ec"))]
56634pub fn vrev64_f16(a: float16x4_t) -> float16x4_t {
56635 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
56636}
56637#[doc = "Reverse elements in 64-bit doublewords"]
56638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_f16)"]
56639#[inline(always)]
56640#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56641#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrev64))]
56642#[cfg_attr(
56643 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56644 assert_instr(rev64)
56645)]
56646#[target_feature(enable = "neon,fp16")]
56647#[cfg_attr(
56648 not(target_arch = "arm"),
56649 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
56650)]
56651#[cfg_attr(
56652 target_arch = "arm",
56653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56654)]
56655#[cfg(not(target_arch = "arm64ec"))]
56656pub fn vrev64q_f16(a: float16x8_t) -> float16x8_t {
56657 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56658}
56659#[doc = "Rounding halving add"]
56660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s8)"]
56661#[inline(always)]
56662#[target_feature(enable = "neon")]
56663#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56664#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s8"))]
56665#[cfg_attr(
56666 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56667 assert_instr(srhadd)
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 vrhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
56678 unsafe extern "unadjusted" {
56679 #[cfg_attr(
56680 any(target_arch = "aarch64", target_arch = "arm64ec"),
56681 link_name = "llvm.aarch64.neon.srhadd.v8i8"
56682 )]
56683 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v8i8")]
56684 fn _vrhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
56685 }
56686 unsafe { _vrhadd_s8(a, b) }
56687}
56688#[doc = "Rounding halving add"]
56689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s8)"]
56690#[inline(always)]
56691#[target_feature(enable = "neon")]
56692#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56693#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s8"))]
56694#[cfg_attr(
56695 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56696 assert_instr(srhadd)
56697)]
56698#[cfg_attr(
56699 not(target_arch = "arm"),
56700 stable(feature = "neon_intrinsics", since = "1.59.0")
56701)]
56702#[cfg_attr(
56703 target_arch = "arm",
56704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56705)]
56706pub fn vrhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
56707 unsafe extern "unadjusted" {
56708 #[cfg_attr(
56709 any(target_arch = "aarch64", target_arch = "arm64ec"),
56710 link_name = "llvm.aarch64.neon.srhadd.v16i8"
56711 )]
56712 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v16i8")]
56713 fn _vrhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
56714 }
56715 unsafe { _vrhaddq_s8(a, b) }
56716}
56717#[doc = "Rounding halving add"]
56718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s16)"]
56719#[inline(always)]
56720#[target_feature(enable = "neon")]
56721#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56722#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s16"))]
56723#[cfg_attr(
56724 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56725 assert_instr(srhadd)
56726)]
56727#[cfg_attr(
56728 not(target_arch = "arm"),
56729 stable(feature = "neon_intrinsics", since = "1.59.0")
56730)]
56731#[cfg_attr(
56732 target_arch = "arm",
56733 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56734)]
56735pub fn vrhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
56736 unsafe extern "unadjusted" {
56737 #[cfg_attr(
56738 any(target_arch = "aarch64", target_arch = "arm64ec"),
56739 link_name = "llvm.aarch64.neon.srhadd.v4i16"
56740 )]
56741 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v4i16")]
56742 fn _vrhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
56743 }
56744 unsafe { _vrhadd_s16(a, b) }
56745}
56746#[doc = "Rounding halving add"]
56747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s16)"]
56748#[inline(always)]
56749#[target_feature(enable = "neon")]
56750#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56751#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s16"))]
56752#[cfg_attr(
56753 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56754 assert_instr(srhadd)
56755)]
56756#[cfg_attr(
56757 not(target_arch = "arm"),
56758 stable(feature = "neon_intrinsics", since = "1.59.0")
56759)]
56760#[cfg_attr(
56761 target_arch = "arm",
56762 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56763)]
56764pub fn vrhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
56765 unsafe extern "unadjusted" {
56766 #[cfg_attr(
56767 any(target_arch = "aarch64", target_arch = "arm64ec"),
56768 link_name = "llvm.aarch64.neon.srhadd.v8i16"
56769 )]
56770 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v8i16")]
56771 fn _vrhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
56772 }
56773 unsafe { _vrhaddq_s16(a, b) }
56774}
56775#[doc = "Rounding halving add"]
56776#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s32)"]
56777#[inline(always)]
56778#[target_feature(enable = "neon")]
56779#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56780#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s32"))]
56781#[cfg_attr(
56782 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56783 assert_instr(srhadd)
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 vrhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
56794 unsafe extern "unadjusted" {
56795 #[cfg_attr(
56796 any(target_arch = "aarch64", target_arch = "arm64ec"),
56797 link_name = "llvm.aarch64.neon.srhadd.v2i32"
56798 )]
56799 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v2i32")]
56800 fn _vrhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
56801 }
56802 unsafe { _vrhadd_s32(a, b) }
56803}
56804#[doc = "Rounding halving add"]
56805#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s32)"]
56806#[inline(always)]
56807#[target_feature(enable = "neon")]
56808#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56809#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s32"))]
56810#[cfg_attr(
56811 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56812 assert_instr(srhadd)
56813)]
56814#[cfg_attr(
56815 not(target_arch = "arm"),
56816 stable(feature = "neon_intrinsics", since = "1.59.0")
56817)]
56818#[cfg_attr(
56819 target_arch = "arm",
56820 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56821)]
56822pub fn vrhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
56823 unsafe extern "unadjusted" {
56824 #[cfg_attr(
56825 any(target_arch = "aarch64", target_arch = "arm64ec"),
56826 link_name = "llvm.aarch64.neon.srhadd.v4i32"
56827 )]
56828 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v4i32")]
56829 fn _vrhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
56830 }
56831 unsafe { _vrhaddq_s32(a, b) }
56832}
56833#[doc = "Rounding halving add"]
56834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u8)"]
56835#[inline(always)]
56836#[target_feature(enable = "neon")]
56837#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56838#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u8"))]
56839#[cfg_attr(
56840 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56841 assert_instr(urhadd)
56842)]
56843#[cfg_attr(
56844 not(target_arch = "arm"),
56845 stable(feature = "neon_intrinsics", since = "1.59.0")
56846)]
56847#[cfg_attr(
56848 target_arch = "arm",
56849 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56850)]
56851pub fn vrhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
56852 unsafe extern "unadjusted" {
56853 #[cfg_attr(
56854 any(target_arch = "aarch64", target_arch = "arm64ec"),
56855 link_name = "llvm.aarch64.neon.urhadd.v8i8"
56856 )]
56857 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v8i8")]
56858 fn _vrhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
56859 }
56860 unsafe { _vrhadd_u8(a, b) }
56861}
56862#[doc = "Rounding halving add"]
56863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u8)"]
56864#[inline(always)]
56865#[target_feature(enable = "neon")]
56866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56867#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u8"))]
56868#[cfg_attr(
56869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56870 assert_instr(urhadd)
56871)]
56872#[cfg_attr(
56873 not(target_arch = "arm"),
56874 stable(feature = "neon_intrinsics", since = "1.59.0")
56875)]
56876#[cfg_attr(
56877 target_arch = "arm",
56878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56879)]
56880pub fn vrhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
56881 unsafe extern "unadjusted" {
56882 #[cfg_attr(
56883 any(target_arch = "aarch64", target_arch = "arm64ec"),
56884 link_name = "llvm.aarch64.neon.urhadd.v16i8"
56885 )]
56886 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v16i8")]
56887 fn _vrhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
56888 }
56889 unsafe { _vrhaddq_u8(a, b) }
56890}
56891#[doc = "Rounding halving add"]
56892#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u16)"]
56893#[inline(always)]
56894#[target_feature(enable = "neon")]
56895#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56896#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u16"))]
56897#[cfg_attr(
56898 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56899 assert_instr(urhadd)
56900)]
56901#[cfg_attr(
56902 not(target_arch = "arm"),
56903 stable(feature = "neon_intrinsics", since = "1.59.0")
56904)]
56905#[cfg_attr(
56906 target_arch = "arm",
56907 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56908)]
56909pub fn vrhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
56910 unsafe extern "unadjusted" {
56911 #[cfg_attr(
56912 any(target_arch = "aarch64", target_arch = "arm64ec"),
56913 link_name = "llvm.aarch64.neon.urhadd.v4i16"
56914 )]
56915 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v4i16")]
56916 fn _vrhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
56917 }
56918 unsafe { _vrhadd_u16(a, b) }
56919}
56920#[doc = "Rounding halving add"]
56921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u16)"]
56922#[inline(always)]
56923#[target_feature(enable = "neon")]
56924#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56925#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u16"))]
56926#[cfg_attr(
56927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56928 assert_instr(urhadd)
56929)]
56930#[cfg_attr(
56931 not(target_arch = "arm"),
56932 stable(feature = "neon_intrinsics", since = "1.59.0")
56933)]
56934#[cfg_attr(
56935 target_arch = "arm",
56936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56937)]
56938pub fn vrhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
56939 unsafe extern "unadjusted" {
56940 #[cfg_attr(
56941 any(target_arch = "aarch64", target_arch = "arm64ec"),
56942 link_name = "llvm.aarch64.neon.urhadd.v8i16"
56943 )]
56944 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v8i16")]
56945 fn _vrhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
56946 }
56947 unsafe { _vrhaddq_u16(a, b) }
56948}
56949#[doc = "Rounding halving add"]
56950#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u32)"]
56951#[inline(always)]
56952#[target_feature(enable = "neon")]
56953#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56954#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u32"))]
56955#[cfg_attr(
56956 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56957 assert_instr(urhadd)
56958)]
56959#[cfg_attr(
56960 not(target_arch = "arm"),
56961 stable(feature = "neon_intrinsics", since = "1.59.0")
56962)]
56963#[cfg_attr(
56964 target_arch = "arm",
56965 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56966)]
56967pub fn vrhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
56968 unsafe extern "unadjusted" {
56969 #[cfg_attr(
56970 any(target_arch = "aarch64", target_arch = "arm64ec"),
56971 link_name = "llvm.aarch64.neon.urhadd.v2i32"
56972 )]
56973 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v2i32")]
56974 fn _vrhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
56975 }
56976 unsafe { _vrhadd_u32(a, b) }
56977}
56978#[doc = "Rounding halving add"]
56979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u32)"]
56980#[inline(always)]
56981#[target_feature(enable = "neon")]
56982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56983#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u32"))]
56984#[cfg_attr(
56985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56986 assert_instr(urhadd)
56987)]
56988#[cfg_attr(
56989 not(target_arch = "arm"),
56990 stable(feature = "neon_intrinsics", since = "1.59.0")
56991)]
56992#[cfg_attr(
56993 target_arch = "arm",
56994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56995)]
56996pub fn vrhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
56997 unsafe extern "unadjusted" {
56998 #[cfg_attr(
56999 any(target_arch = "aarch64", target_arch = "arm64ec"),
57000 link_name = "llvm.aarch64.neon.urhadd.v4i32"
57001 )]
57002 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v4i32")]
57003 fn _vrhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
57004 }
57005 unsafe { _vrhaddq_u32(a, b) }
57006}
57007#[doc = "Floating-point round to integral, to nearest with ties to even"]
57008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndn_f16)"]
57009#[inline(always)]
57010#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
57011#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
57012#[cfg_attr(
57013 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57014 assert_instr(frintn)
57015)]
57016#[target_feature(enable = "neon,fp16")]
57017#[cfg_attr(
57018 not(target_arch = "arm"),
57019 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
57020)]
57021#[cfg_attr(
57022 target_arch = "arm",
57023 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57024)]
57025#[cfg(not(target_arch = "arm64ec"))]
57026pub fn vrndn_f16(a: float16x4_t) -> float16x4_t {
57027 unsafe extern "unadjusted" {
57028 #[cfg_attr(
57029 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
57030 link_name = "llvm.roundeven.v4f16"
57031 )]
57032 fn _vrndn_f16(a: float16x4_t) -> float16x4_t;
57033 }
57034 unsafe { _vrndn_f16(a) }
57035}
57036#[doc = "Floating-point round to integral, to nearest with ties to even"]
57037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndnq_f16)"]
57038#[inline(always)]
57039#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
57040#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
57041#[cfg_attr(
57042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57043 assert_instr(frintn)
57044)]
57045#[target_feature(enable = "neon,fp16")]
57046#[cfg_attr(
57047 not(target_arch = "arm"),
57048 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
57049)]
57050#[cfg_attr(
57051 target_arch = "arm",
57052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57053)]
57054#[cfg(not(target_arch = "arm64ec"))]
57055pub fn vrndnq_f16(a: float16x8_t) -> float16x8_t {
57056 unsafe extern "unadjusted" {
57057 #[cfg_attr(
57058 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
57059 link_name = "llvm.roundeven.v8f16"
57060 )]
57061 fn _vrndnq_f16(a: float16x8_t) -> float16x8_t;
57062 }
57063 unsafe { _vrndnq_f16(a) }
57064}
57065#[doc = "Floating-point round to integral, to nearest with ties to even"]
57066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndn_f32)"]
57067#[inline(always)]
57068#[target_feature(enable = "neon")]
57069#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
57070#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
57071#[cfg_attr(
57072 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57073 assert_instr(frintn)
57074)]
57075#[cfg_attr(
57076 not(target_arch = "arm"),
57077 stable(feature = "neon_intrinsics", since = "1.59.0")
57078)]
57079#[cfg_attr(
57080 target_arch = "arm",
57081 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57082)]
57083pub fn vrndn_f32(a: float32x2_t) -> float32x2_t {
57084 unsafe extern "unadjusted" {
57085 #[cfg_attr(
57086 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
57087 link_name = "llvm.roundeven.v2f32"
57088 )]
57089 fn _vrndn_f32(a: float32x2_t) -> float32x2_t;
57090 }
57091 unsafe { _vrndn_f32(a) }
57092}
57093#[doc = "Floating-point round to integral, to nearest with ties to even"]
57094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndnq_f32)"]
57095#[inline(always)]
57096#[target_feature(enable = "neon")]
57097#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
57098#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
57099#[cfg_attr(
57100 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57101 assert_instr(frintn)
57102)]
57103#[cfg_attr(
57104 not(target_arch = "arm"),
57105 stable(feature = "neon_intrinsics", since = "1.59.0")
57106)]
57107#[cfg_attr(
57108 target_arch = "arm",
57109 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57110)]
57111pub fn vrndnq_f32(a: float32x4_t) -> float32x4_t {
57112 unsafe extern "unadjusted" {
57113 #[cfg_attr(
57114 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
57115 link_name = "llvm.roundeven.v4f32"
57116 )]
57117 fn _vrndnq_f32(a: float32x4_t) -> float32x4_t;
57118 }
57119 unsafe { _vrndnq_f32(a) }
57120}
57121#[doc = "Signed rounding shift left"]
57122#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s8)"]
57123#[inline(always)]
57124#[target_feature(enable = "neon")]
57125#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57126#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57127#[cfg_attr(
57128 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57129 assert_instr(srshl)
57130)]
57131#[cfg_attr(
57132 not(target_arch = "arm"),
57133 stable(feature = "neon_intrinsics", since = "1.59.0")
57134)]
57135#[cfg_attr(
57136 target_arch = "arm",
57137 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57138)]
57139pub fn vrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
57140 unsafe extern "unadjusted" {
57141 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v8i8")]
57142 #[cfg_attr(
57143 any(target_arch = "aarch64", target_arch = "arm64ec"),
57144 link_name = "llvm.aarch64.neon.srshl.v8i8"
57145 )]
57146 fn _vrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
57147 }
57148 unsafe { _vrshl_s8(a, b) }
57149}
57150#[doc = "Signed rounding shift left"]
57151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s8)"]
57152#[inline(always)]
57153#[target_feature(enable = "neon")]
57154#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57155#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57156#[cfg_attr(
57157 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57158 assert_instr(srshl)
57159)]
57160#[cfg_attr(
57161 not(target_arch = "arm"),
57162 stable(feature = "neon_intrinsics", since = "1.59.0")
57163)]
57164#[cfg_attr(
57165 target_arch = "arm",
57166 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57167)]
57168pub fn vrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
57169 unsafe extern "unadjusted" {
57170 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v16i8")]
57171 #[cfg_attr(
57172 any(target_arch = "aarch64", target_arch = "arm64ec"),
57173 link_name = "llvm.aarch64.neon.srshl.v16i8"
57174 )]
57175 fn _vrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
57176 }
57177 unsafe { _vrshlq_s8(a, b) }
57178}
57179#[doc = "Signed rounding shift left"]
57180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s16)"]
57181#[inline(always)]
57182#[target_feature(enable = "neon")]
57183#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57184#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57185#[cfg_attr(
57186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57187 assert_instr(srshl)
57188)]
57189#[cfg_attr(
57190 not(target_arch = "arm"),
57191 stable(feature = "neon_intrinsics", since = "1.59.0")
57192)]
57193#[cfg_attr(
57194 target_arch = "arm",
57195 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57196)]
57197pub fn vrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
57198 unsafe extern "unadjusted" {
57199 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v4i16")]
57200 #[cfg_attr(
57201 any(target_arch = "aarch64", target_arch = "arm64ec"),
57202 link_name = "llvm.aarch64.neon.srshl.v4i16"
57203 )]
57204 fn _vrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
57205 }
57206 unsafe { _vrshl_s16(a, b) }
57207}
57208#[doc = "Signed rounding shift left"]
57209#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s16)"]
57210#[inline(always)]
57211#[target_feature(enable = "neon")]
57212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57213#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57214#[cfg_attr(
57215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57216 assert_instr(srshl)
57217)]
57218#[cfg_attr(
57219 not(target_arch = "arm"),
57220 stable(feature = "neon_intrinsics", since = "1.59.0")
57221)]
57222#[cfg_attr(
57223 target_arch = "arm",
57224 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57225)]
57226pub fn vrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
57227 unsafe extern "unadjusted" {
57228 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v8i16")]
57229 #[cfg_attr(
57230 any(target_arch = "aarch64", target_arch = "arm64ec"),
57231 link_name = "llvm.aarch64.neon.srshl.v8i16"
57232 )]
57233 fn _vrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
57234 }
57235 unsafe { _vrshlq_s16(a, b) }
57236}
57237#[doc = "Signed rounding shift left"]
57238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s32)"]
57239#[inline(always)]
57240#[target_feature(enable = "neon")]
57241#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57242#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57243#[cfg_attr(
57244 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57245 assert_instr(srshl)
57246)]
57247#[cfg_attr(
57248 not(target_arch = "arm"),
57249 stable(feature = "neon_intrinsics", since = "1.59.0")
57250)]
57251#[cfg_attr(
57252 target_arch = "arm",
57253 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57254)]
57255pub fn vrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
57256 unsafe extern "unadjusted" {
57257 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v2i32")]
57258 #[cfg_attr(
57259 any(target_arch = "aarch64", target_arch = "arm64ec"),
57260 link_name = "llvm.aarch64.neon.srshl.v2i32"
57261 )]
57262 fn _vrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
57263 }
57264 unsafe { _vrshl_s32(a, b) }
57265}
57266#[doc = "Signed rounding shift left"]
57267#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s32)"]
57268#[inline(always)]
57269#[target_feature(enable = "neon")]
57270#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57271#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57272#[cfg_attr(
57273 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57274 assert_instr(srshl)
57275)]
57276#[cfg_attr(
57277 not(target_arch = "arm"),
57278 stable(feature = "neon_intrinsics", since = "1.59.0")
57279)]
57280#[cfg_attr(
57281 target_arch = "arm",
57282 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57283)]
57284pub fn vrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
57285 unsafe extern "unadjusted" {
57286 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v4i32")]
57287 #[cfg_attr(
57288 any(target_arch = "aarch64", target_arch = "arm64ec"),
57289 link_name = "llvm.aarch64.neon.srshl.v4i32"
57290 )]
57291 fn _vrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
57292 }
57293 unsafe { _vrshlq_s32(a, b) }
57294}
57295#[doc = "Signed rounding shift left"]
57296#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s64)"]
57297#[inline(always)]
57298#[target_feature(enable = "neon")]
57299#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57300#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57301#[cfg_attr(
57302 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57303 assert_instr(srshl)
57304)]
57305#[cfg_attr(
57306 not(target_arch = "arm"),
57307 stable(feature = "neon_intrinsics", since = "1.59.0")
57308)]
57309#[cfg_attr(
57310 target_arch = "arm",
57311 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57312)]
57313pub fn vrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
57314 unsafe extern "unadjusted" {
57315 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v1i64")]
57316 #[cfg_attr(
57317 any(target_arch = "aarch64", target_arch = "arm64ec"),
57318 link_name = "llvm.aarch64.neon.srshl.v1i64"
57319 )]
57320 fn _vrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
57321 }
57322 unsafe { _vrshl_s64(a, b) }
57323}
57324#[doc = "Signed rounding shift left"]
57325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s64)"]
57326#[inline(always)]
57327#[target_feature(enable = "neon")]
57328#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57329#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57330#[cfg_attr(
57331 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57332 assert_instr(srshl)
57333)]
57334#[cfg_attr(
57335 not(target_arch = "arm"),
57336 stable(feature = "neon_intrinsics", since = "1.59.0")
57337)]
57338#[cfg_attr(
57339 target_arch = "arm",
57340 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57341)]
57342pub fn vrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
57343 unsafe extern "unadjusted" {
57344 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v2i64")]
57345 #[cfg_attr(
57346 any(target_arch = "aarch64", target_arch = "arm64ec"),
57347 link_name = "llvm.aarch64.neon.srshl.v2i64"
57348 )]
57349 fn _vrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
57350 }
57351 unsafe { _vrshlq_s64(a, b) }
57352}
57353#[doc = "Unsigned rounding shift left"]
57354#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u8)"]
57355#[inline(always)]
57356#[target_feature(enable = "neon")]
57357#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57358#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57359#[cfg_attr(
57360 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57361 assert_instr(urshl)
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 vrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
57372 unsafe extern "unadjusted" {
57373 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v8i8")]
57374 #[cfg_attr(
57375 any(target_arch = "aarch64", target_arch = "arm64ec"),
57376 link_name = "llvm.aarch64.neon.urshl.v8i8"
57377 )]
57378 fn _vrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
57379 }
57380 unsafe { _vrshl_u8(a, b) }
57381}
57382#[doc = "Unsigned rounding shift left"]
57383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u8)"]
57384#[inline(always)]
57385#[target_feature(enable = "neon")]
57386#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57388#[cfg_attr(
57389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57390 assert_instr(urshl)
57391)]
57392#[cfg_attr(
57393 not(target_arch = "arm"),
57394 stable(feature = "neon_intrinsics", since = "1.59.0")
57395)]
57396#[cfg_attr(
57397 target_arch = "arm",
57398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57399)]
57400pub fn vrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
57401 unsafe extern "unadjusted" {
57402 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v16i8")]
57403 #[cfg_attr(
57404 any(target_arch = "aarch64", target_arch = "arm64ec"),
57405 link_name = "llvm.aarch64.neon.urshl.v16i8"
57406 )]
57407 fn _vrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
57408 }
57409 unsafe { _vrshlq_u8(a, b) }
57410}
57411#[doc = "Unsigned rounding shift left"]
57412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u16)"]
57413#[inline(always)]
57414#[target_feature(enable = "neon")]
57415#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57416#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57417#[cfg_attr(
57418 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57419 assert_instr(urshl)
57420)]
57421#[cfg_attr(
57422 not(target_arch = "arm"),
57423 stable(feature = "neon_intrinsics", since = "1.59.0")
57424)]
57425#[cfg_attr(
57426 target_arch = "arm",
57427 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57428)]
57429pub fn vrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
57430 unsafe extern "unadjusted" {
57431 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v4i16")]
57432 #[cfg_attr(
57433 any(target_arch = "aarch64", target_arch = "arm64ec"),
57434 link_name = "llvm.aarch64.neon.urshl.v4i16"
57435 )]
57436 fn _vrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
57437 }
57438 unsafe { _vrshl_u16(a, b) }
57439}
57440#[doc = "Unsigned rounding shift left"]
57441#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u16)"]
57442#[inline(always)]
57443#[target_feature(enable = "neon")]
57444#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57445#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57446#[cfg_attr(
57447 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57448 assert_instr(urshl)
57449)]
57450#[cfg_attr(
57451 not(target_arch = "arm"),
57452 stable(feature = "neon_intrinsics", since = "1.59.0")
57453)]
57454#[cfg_attr(
57455 target_arch = "arm",
57456 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57457)]
57458pub fn vrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
57459 unsafe extern "unadjusted" {
57460 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v8i16")]
57461 #[cfg_attr(
57462 any(target_arch = "aarch64", target_arch = "arm64ec"),
57463 link_name = "llvm.aarch64.neon.urshl.v8i16"
57464 )]
57465 fn _vrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
57466 }
57467 unsafe { _vrshlq_u16(a, b) }
57468}
57469#[doc = "Unsigned rounding shift left"]
57470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u32)"]
57471#[inline(always)]
57472#[target_feature(enable = "neon")]
57473#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57474#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57475#[cfg_attr(
57476 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57477 assert_instr(urshl)
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 vrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
57488 unsafe extern "unadjusted" {
57489 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v2i32")]
57490 #[cfg_attr(
57491 any(target_arch = "aarch64", target_arch = "arm64ec"),
57492 link_name = "llvm.aarch64.neon.urshl.v2i32"
57493 )]
57494 fn _vrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
57495 }
57496 unsafe { _vrshl_u32(a, b) }
57497}
57498#[doc = "Unsigned rounding shift left"]
57499#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u32)"]
57500#[inline(always)]
57501#[target_feature(enable = "neon")]
57502#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57503#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57504#[cfg_attr(
57505 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57506 assert_instr(urshl)
57507)]
57508#[cfg_attr(
57509 not(target_arch = "arm"),
57510 stable(feature = "neon_intrinsics", since = "1.59.0")
57511)]
57512#[cfg_attr(
57513 target_arch = "arm",
57514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57515)]
57516pub fn vrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
57517 unsafe extern "unadjusted" {
57518 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v4i32")]
57519 #[cfg_attr(
57520 any(target_arch = "aarch64", target_arch = "arm64ec"),
57521 link_name = "llvm.aarch64.neon.urshl.v4i32"
57522 )]
57523 fn _vrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
57524 }
57525 unsafe { _vrshlq_u32(a, b) }
57526}
57527#[doc = "Unsigned rounding shift left"]
57528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u64)"]
57529#[inline(always)]
57530#[target_feature(enable = "neon")]
57531#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57532#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57533#[cfg_attr(
57534 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57535 assert_instr(urshl)
57536)]
57537#[cfg_attr(
57538 not(target_arch = "arm"),
57539 stable(feature = "neon_intrinsics", since = "1.59.0")
57540)]
57541#[cfg_attr(
57542 target_arch = "arm",
57543 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57544)]
57545pub fn vrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
57546 unsafe extern "unadjusted" {
57547 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v1i64")]
57548 #[cfg_attr(
57549 any(target_arch = "aarch64", target_arch = "arm64ec"),
57550 link_name = "llvm.aarch64.neon.urshl.v1i64"
57551 )]
57552 fn _vrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
57553 }
57554 unsafe { _vrshl_u64(a, b) }
57555}
57556#[doc = "Unsigned rounding shift left"]
57557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u64)"]
57558#[inline(always)]
57559#[target_feature(enable = "neon")]
57560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57562#[cfg_attr(
57563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57564 assert_instr(urshl)
57565)]
57566#[cfg_attr(
57567 not(target_arch = "arm"),
57568 stable(feature = "neon_intrinsics", since = "1.59.0")
57569)]
57570#[cfg_attr(
57571 target_arch = "arm",
57572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57573)]
57574pub fn vrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
57575 unsafe extern "unadjusted" {
57576 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v2i64")]
57577 #[cfg_attr(
57578 any(target_arch = "aarch64", target_arch = "arm64ec"),
57579 link_name = "llvm.aarch64.neon.urshl.v2i64"
57580 )]
57581 fn _vrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
57582 }
57583 unsafe { _vrshlq_u64(a, b) }
57584}
57585#[doc = "Signed rounding shift right"]
57586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s8)"]
57587#[inline(always)]
57588#[target_feature(enable = "neon")]
57589#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57590#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57591#[cfg_attr(
57592 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57593 assert_instr(srshr, N = 2)
57594)]
57595#[rustc_legacy_const_generics(1)]
57596#[cfg_attr(
57597 not(target_arch = "arm"),
57598 stable(feature = "neon_intrinsics", since = "1.59.0")
57599)]
57600#[cfg_attr(
57601 target_arch = "arm",
57602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57603)]
57604pub fn vrshr_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
57605 static_assert!(N >= 1 && N <= 8);
57606 vrshl_s8(a, vdup_n_s8(-N as _))
57607}
57608#[doc = "Signed rounding shift right"]
57609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s8)"]
57610#[inline(always)]
57611#[target_feature(enable = "neon")]
57612#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57613#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57614#[cfg_attr(
57615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57616 assert_instr(srshr, N = 2)
57617)]
57618#[rustc_legacy_const_generics(1)]
57619#[cfg_attr(
57620 not(target_arch = "arm"),
57621 stable(feature = "neon_intrinsics", since = "1.59.0")
57622)]
57623#[cfg_attr(
57624 target_arch = "arm",
57625 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57626)]
57627pub fn vrshrq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
57628 static_assert!(N >= 1 && N <= 8);
57629 vrshlq_s8(a, vdupq_n_s8(-N as _))
57630}
57631#[doc = "Signed rounding shift right"]
57632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s16)"]
57633#[inline(always)]
57634#[target_feature(enable = "neon")]
57635#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57636#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57637#[cfg_attr(
57638 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57639 assert_instr(srshr, N = 2)
57640)]
57641#[rustc_legacy_const_generics(1)]
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 vrshr_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
57651 static_assert!(N >= 1 && N <= 16);
57652 vrshl_s16(a, vdup_n_s16(-N as _))
57653}
57654#[doc = "Signed rounding shift right"]
57655#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s16)"]
57656#[inline(always)]
57657#[target_feature(enable = "neon")]
57658#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57659#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57660#[cfg_attr(
57661 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57662 assert_instr(srshr, N = 2)
57663)]
57664#[rustc_legacy_const_generics(1)]
57665#[cfg_attr(
57666 not(target_arch = "arm"),
57667 stable(feature = "neon_intrinsics", since = "1.59.0")
57668)]
57669#[cfg_attr(
57670 target_arch = "arm",
57671 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57672)]
57673pub fn vrshrq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
57674 static_assert!(N >= 1 && N <= 16);
57675 vrshlq_s16(a, vdupq_n_s16(-N as _))
57676}
57677#[doc = "Signed rounding shift right"]
57678#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s32)"]
57679#[inline(always)]
57680#[target_feature(enable = "neon")]
57681#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57682#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57683#[cfg_attr(
57684 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57685 assert_instr(srshr, N = 2)
57686)]
57687#[rustc_legacy_const_generics(1)]
57688#[cfg_attr(
57689 not(target_arch = "arm"),
57690 stable(feature = "neon_intrinsics", since = "1.59.0")
57691)]
57692#[cfg_attr(
57693 target_arch = "arm",
57694 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57695)]
57696pub fn vrshr_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
57697 static_assert!(N >= 1 && N <= 32);
57698 vrshl_s32(a, vdup_n_s32(-N as _))
57699}
57700#[doc = "Signed rounding shift right"]
57701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s32)"]
57702#[inline(always)]
57703#[target_feature(enable = "neon")]
57704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57705#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57706#[cfg_attr(
57707 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57708 assert_instr(srshr, N = 2)
57709)]
57710#[rustc_legacy_const_generics(1)]
57711#[cfg_attr(
57712 not(target_arch = "arm"),
57713 stable(feature = "neon_intrinsics", since = "1.59.0")
57714)]
57715#[cfg_attr(
57716 target_arch = "arm",
57717 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57718)]
57719pub fn vrshrq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
57720 static_assert!(N >= 1 && N <= 32);
57721 vrshlq_s32(a, vdupq_n_s32(-N as _))
57722}
57723#[doc = "Signed rounding shift right"]
57724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s64)"]
57725#[inline(always)]
57726#[target_feature(enable = "neon")]
57727#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57728#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57729#[cfg_attr(
57730 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57731 assert_instr(srshr, N = 2)
57732)]
57733#[rustc_legacy_const_generics(1)]
57734#[cfg_attr(
57735 not(target_arch = "arm"),
57736 stable(feature = "neon_intrinsics", since = "1.59.0")
57737)]
57738#[cfg_attr(
57739 target_arch = "arm",
57740 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57741)]
57742pub fn vrshr_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
57743 static_assert!(N >= 1 && N <= 64);
57744 vrshl_s64(a, vdup_n_s64(-N as _))
57745}
57746#[doc = "Signed rounding shift right"]
57747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s64)"]
57748#[inline(always)]
57749#[target_feature(enable = "neon")]
57750#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57751#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57752#[cfg_attr(
57753 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57754 assert_instr(srshr, N = 2)
57755)]
57756#[rustc_legacy_const_generics(1)]
57757#[cfg_attr(
57758 not(target_arch = "arm"),
57759 stable(feature = "neon_intrinsics", since = "1.59.0")
57760)]
57761#[cfg_attr(
57762 target_arch = "arm",
57763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57764)]
57765pub fn vrshrq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
57766 static_assert!(N >= 1 && N <= 64);
57767 vrshlq_s64(a, vdupq_n_s64(-N as _))
57768}
57769#[doc = "Unsigned rounding shift right"]
57770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u8)"]
57771#[inline(always)]
57772#[target_feature(enable = "neon")]
57773#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57774#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57775#[cfg_attr(
57776 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57777 assert_instr(urshr, N = 2)
57778)]
57779#[rustc_legacy_const_generics(1)]
57780#[cfg_attr(
57781 not(target_arch = "arm"),
57782 stable(feature = "neon_intrinsics", since = "1.59.0")
57783)]
57784#[cfg_attr(
57785 target_arch = "arm",
57786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57787)]
57788pub fn vrshr_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
57789 static_assert!(N >= 1 && N <= 8);
57790 vrshl_u8(a, vdup_n_s8(-N as _))
57791}
57792#[doc = "Unsigned rounding shift right"]
57793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u8)"]
57794#[inline(always)]
57795#[target_feature(enable = "neon")]
57796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57798#[cfg_attr(
57799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57800 assert_instr(urshr, N = 2)
57801)]
57802#[rustc_legacy_const_generics(1)]
57803#[cfg_attr(
57804 not(target_arch = "arm"),
57805 stable(feature = "neon_intrinsics", since = "1.59.0")
57806)]
57807#[cfg_attr(
57808 target_arch = "arm",
57809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57810)]
57811pub fn vrshrq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
57812 static_assert!(N >= 1 && N <= 8);
57813 vrshlq_u8(a, vdupq_n_s8(-N as _))
57814}
57815#[doc = "Unsigned rounding shift right"]
57816#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u16)"]
57817#[inline(always)]
57818#[target_feature(enable = "neon")]
57819#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57820#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57821#[cfg_attr(
57822 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57823 assert_instr(urshr, N = 2)
57824)]
57825#[rustc_legacy_const_generics(1)]
57826#[cfg_attr(
57827 not(target_arch = "arm"),
57828 stable(feature = "neon_intrinsics", since = "1.59.0")
57829)]
57830#[cfg_attr(
57831 target_arch = "arm",
57832 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57833)]
57834pub fn vrshr_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
57835 static_assert!(N >= 1 && N <= 16);
57836 vrshl_u16(a, vdup_n_s16(-N as _))
57837}
57838#[doc = "Unsigned rounding shift right"]
57839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u16)"]
57840#[inline(always)]
57841#[target_feature(enable = "neon")]
57842#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57843#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57844#[cfg_attr(
57845 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57846 assert_instr(urshr, N = 2)
57847)]
57848#[rustc_legacy_const_generics(1)]
57849#[cfg_attr(
57850 not(target_arch = "arm"),
57851 stable(feature = "neon_intrinsics", since = "1.59.0")
57852)]
57853#[cfg_attr(
57854 target_arch = "arm",
57855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57856)]
57857pub fn vrshrq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
57858 static_assert!(N >= 1 && N <= 16);
57859 vrshlq_u16(a, vdupq_n_s16(-N as _))
57860}
57861#[doc = "Unsigned rounding shift right"]
57862#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u32)"]
57863#[inline(always)]
57864#[target_feature(enable = "neon")]
57865#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57866#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57867#[cfg_attr(
57868 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57869 assert_instr(urshr, N = 2)
57870)]
57871#[rustc_legacy_const_generics(1)]
57872#[cfg_attr(
57873 not(target_arch = "arm"),
57874 stable(feature = "neon_intrinsics", since = "1.59.0")
57875)]
57876#[cfg_attr(
57877 target_arch = "arm",
57878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57879)]
57880pub fn vrshr_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
57881 static_assert!(N >= 1 && N <= 32);
57882 vrshl_u32(a, vdup_n_s32(-N as _))
57883}
57884#[doc = "Unsigned rounding shift right"]
57885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u32)"]
57886#[inline(always)]
57887#[target_feature(enable = "neon")]
57888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57890#[cfg_attr(
57891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57892 assert_instr(urshr, N = 2)
57893)]
57894#[rustc_legacy_const_generics(1)]
57895#[cfg_attr(
57896 not(target_arch = "arm"),
57897 stable(feature = "neon_intrinsics", since = "1.59.0")
57898)]
57899#[cfg_attr(
57900 target_arch = "arm",
57901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57902)]
57903pub fn vrshrq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
57904 static_assert!(N >= 1 && N <= 32);
57905 vrshlq_u32(a, vdupq_n_s32(-N as _))
57906}
57907#[doc = "Unsigned rounding shift right"]
57908#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u64)"]
57909#[inline(always)]
57910#[target_feature(enable = "neon")]
57911#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57912#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57913#[cfg_attr(
57914 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57915 assert_instr(urshr, N = 2)
57916)]
57917#[rustc_legacy_const_generics(1)]
57918#[cfg_attr(
57919 not(target_arch = "arm"),
57920 stable(feature = "neon_intrinsics", since = "1.59.0")
57921)]
57922#[cfg_attr(
57923 target_arch = "arm",
57924 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57925)]
57926pub fn vrshr_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
57927 static_assert!(N >= 1 && N <= 64);
57928 vrshl_u64(a, vdup_n_s64(-N as _))
57929}
57930#[doc = "Unsigned rounding shift right"]
57931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u64)"]
57932#[inline(always)]
57933#[target_feature(enable = "neon")]
57934#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57935#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57936#[cfg_attr(
57937 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57938 assert_instr(urshr, N = 2)
57939)]
57940#[rustc_legacy_const_generics(1)]
57941#[cfg_attr(
57942 not(target_arch = "arm"),
57943 stable(feature = "neon_intrinsics", since = "1.59.0")
57944)]
57945#[cfg_attr(
57946 target_arch = "arm",
57947 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57948)]
57949pub fn vrshrq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
57950 static_assert!(N >= 1 && N <= 64);
57951 vrshlq_u64(a, vdupq_n_s64(-N as _))
57952}
57953#[doc = "Rounding shift right narrow"]
57954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]
57955#[inline(always)]
57956#[cfg(target_arch = "arm")]
57957#[target_feature(enable = "neon,v7")]
57958#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
57959#[rustc_legacy_const_generics(1)]
57960#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57961pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
57962 static_assert!(N >= 1 && N <= 8);
57963 unsafe extern "unadjusted" {
57964 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v8i8")]
57965 fn _vrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
57966 }
57967 unsafe { _vrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
57968}
57969#[doc = "Rounding shift right narrow"]
57970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]
57971#[inline(always)]
57972#[cfg(target_arch = "arm")]
57973#[target_feature(enable = "neon,v7")]
57974#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
57975#[rustc_legacy_const_generics(1)]
57976#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57977pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
57978 static_assert!(N >= 1 && N <= 16);
57979 unsafe extern "unadjusted" {
57980 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v4i16")]
57981 fn _vrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
57982 }
57983 unsafe { _vrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
57984}
57985#[doc = "Rounding shift right narrow"]
57986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]
57987#[inline(always)]
57988#[cfg(target_arch = "arm")]
57989#[target_feature(enable = "neon,v7")]
57990#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
57991#[rustc_legacy_const_generics(1)]
57992#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57993pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
57994 static_assert!(N >= 1 && N <= 32);
57995 unsafe extern "unadjusted" {
57996 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v2i32")]
57997 fn _vrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
57998 }
57999 unsafe { _vrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
58000}
58001#[doc = "Rounding shift right narrow"]
58002#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]
58003#[inline(always)]
58004#[target_feature(enable = "neon")]
58005#[cfg(not(target_arch = "arm"))]
58006#[cfg_attr(test, assert_instr(rshrn, N = 2))]
58007#[rustc_legacy_const_generics(1)]
58008#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58009pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
58010 static_assert!(N >= 1 && N <= 8);
58011 unsafe extern "unadjusted" {
58012 #[cfg_attr(
58013 any(target_arch = "aarch64", target_arch = "arm64ec"),
58014 link_name = "llvm.aarch64.neon.rshrn.v8i8"
58015 )]
58016 fn _vrshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
58017 }
58018 unsafe { _vrshrn_n_s16(a, N) }
58019}
58020#[doc = "Rounding shift right narrow"]
58021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]
58022#[inline(always)]
58023#[target_feature(enable = "neon")]
58024#[cfg(not(target_arch = "arm"))]
58025#[cfg_attr(test, assert_instr(rshrn, N = 2))]
58026#[rustc_legacy_const_generics(1)]
58027#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58028pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
58029 static_assert!(N >= 1 && N <= 16);
58030 unsafe extern "unadjusted" {
58031 #[cfg_attr(
58032 any(target_arch = "aarch64", target_arch = "arm64ec"),
58033 link_name = "llvm.aarch64.neon.rshrn.v4i16"
58034 )]
58035 fn _vrshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
58036 }
58037 unsafe { _vrshrn_n_s32(a, N) }
58038}
58039#[doc = "Rounding shift right narrow"]
58040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]
58041#[inline(always)]
58042#[target_feature(enable = "neon")]
58043#[cfg(not(target_arch = "arm"))]
58044#[cfg_attr(test, assert_instr(rshrn, N = 2))]
58045#[rustc_legacy_const_generics(1)]
58046#[stable(feature = "neon_intrinsics", since = "1.59.0")]
58047pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
58048 static_assert!(N >= 1 && N <= 32);
58049 unsafe extern "unadjusted" {
58050 #[cfg_attr(
58051 any(target_arch = "aarch64", target_arch = "arm64ec"),
58052 link_name = "llvm.aarch64.neon.rshrn.v2i32"
58053 )]
58054 fn _vrshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
58055 }
58056 unsafe { _vrshrn_n_s64(a, N) }
58057}
58058#[doc = "Rounding shift right narrow"]
58059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u16)"]
58060#[inline(always)]
58061#[target_feature(enable = "neon")]
58062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58063#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
58064#[cfg_attr(
58065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58066 assert_instr(rshrn, N = 2)
58067)]
58068#[rustc_legacy_const_generics(1)]
58069#[cfg_attr(
58070 not(target_arch = "arm"),
58071 stable(feature = "neon_intrinsics", since = "1.59.0")
58072)]
58073#[cfg_attr(
58074 target_arch = "arm",
58075 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58076)]
58077pub fn vrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
58078 static_assert!(N >= 1 && N <= 8);
58079 unsafe { transmute(vrshrn_n_s16::<N>(transmute(a))) }
58080}
58081#[doc = "Rounding shift right narrow"]
58082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u32)"]
58083#[inline(always)]
58084#[target_feature(enable = "neon")]
58085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58086#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
58087#[cfg_attr(
58088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58089 assert_instr(rshrn, N = 2)
58090)]
58091#[rustc_legacy_const_generics(1)]
58092#[cfg_attr(
58093 not(target_arch = "arm"),
58094 stable(feature = "neon_intrinsics", since = "1.59.0")
58095)]
58096#[cfg_attr(
58097 target_arch = "arm",
58098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58099)]
58100pub fn vrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
58101 static_assert!(N >= 1 && N <= 16);
58102 unsafe { transmute(vrshrn_n_s32::<N>(transmute(a))) }
58103}
58104#[doc = "Rounding shift right narrow"]
58105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u64)"]
58106#[inline(always)]
58107#[target_feature(enable = "neon")]
58108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58109#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
58110#[cfg_attr(
58111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58112 assert_instr(rshrn, N = 2)
58113)]
58114#[rustc_legacy_const_generics(1)]
58115#[cfg_attr(
58116 not(target_arch = "arm"),
58117 stable(feature = "neon_intrinsics", since = "1.59.0")
58118)]
58119#[cfg_attr(
58120 target_arch = "arm",
58121 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58122)]
58123pub fn vrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
58124 static_assert!(N >= 1 && N <= 32);
58125 unsafe { transmute(vrshrn_n_s64::<N>(transmute(a))) }
58126}
58127#[doc = "Reciprocal square-root estimate."]
58128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_f16)"]
58129#[inline(always)]
58130#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58131#[target_feature(enable = "neon,fp16")]
58132#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58133#[cfg_attr(
58134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58135 assert_instr(frsqrte)
58136)]
58137#[cfg_attr(
58138 not(target_arch = "arm"),
58139 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
58140)]
58141#[cfg_attr(
58142 target_arch = "arm",
58143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58144)]
58145#[cfg(not(target_arch = "arm64ec"))]
58146pub fn vrsqrte_f16(a: float16x4_t) -> float16x4_t {
58147 unsafe extern "unadjusted" {
58148 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4f16")]
58149 #[cfg_attr(
58150 any(target_arch = "aarch64", target_arch = "arm64ec"),
58151 link_name = "llvm.aarch64.neon.frsqrte.v4f16"
58152 )]
58153 fn _vrsqrte_f16(a: float16x4_t) -> float16x4_t;
58154 }
58155 unsafe { _vrsqrte_f16(a) }
58156}
58157#[doc = "Reciprocal square-root estimate."]
58158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_f16)"]
58159#[inline(always)]
58160#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58161#[target_feature(enable = "neon,fp16")]
58162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58163#[cfg_attr(
58164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58165 assert_instr(frsqrte)
58166)]
58167#[cfg_attr(
58168 not(target_arch = "arm"),
58169 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
58170)]
58171#[cfg_attr(
58172 target_arch = "arm",
58173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58174)]
58175#[cfg(not(target_arch = "arm64ec"))]
58176pub fn vrsqrteq_f16(a: float16x8_t) -> float16x8_t {
58177 unsafe extern "unadjusted" {
58178 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v8f16")]
58179 #[cfg_attr(
58180 any(target_arch = "aarch64", target_arch = "arm64ec"),
58181 link_name = "llvm.aarch64.neon.frsqrte.v8f16"
58182 )]
58183 fn _vrsqrteq_f16(a: float16x8_t) -> float16x8_t;
58184 }
58185 unsafe { _vrsqrteq_f16(a) }
58186}
58187#[doc = "Reciprocal square-root estimate."]
58188#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_f32)"]
58189#[inline(always)]
58190#[target_feature(enable = "neon")]
58191#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58192#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58193#[cfg_attr(
58194 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58195 assert_instr(frsqrte)
58196)]
58197#[cfg_attr(
58198 not(target_arch = "arm"),
58199 stable(feature = "neon_intrinsics", since = "1.59.0")
58200)]
58201#[cfg_attr(
58202 target_arch = "arm",
58203 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58204)]
58205pub fn vrsqrte_f32(a: float32x2_t) -> float32x2_t {
58206 unsafe extern "unadjusted" {
58207 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v2f32")]
58208 #[cfg_attr(
58209 any(target_arch = "aarch64", target_arch = "arm64ec"),
58210 link_name = "llvm.aarch64.neon.frsqrte.v2f32"
58211 )]
58212 fn _vrsqrte_f32(a: float32x2_t) -> float32x2_t;
58213 }
58214 unsafe { _vrsqrte_f32(a) }
58215}
58216#[doc = "Reciprocal square-root estimate."]
58217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_f32)"]
58218#[inline(always)]
58219#[target_feature(enable = "neon")]
58220#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58221#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58222#[cfg_attr(
58223 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58224 assert_instr(frsqrte)
58225)]
58226#[cfg_attr(
58227 not(target_arch = "arm"),
58228 stable(feature = "neon_intrinsics", since = "1.59.0")
58229)]
58230#[cfg_attr(
58231 target_arch = "arm",
58232 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58233)]
58234pub fn vrsqrteq_f32(a: float32x4_t) -> float32x4_t {
58235 unsafe extern "unadjusted" {
58236 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4f32")]
58237 #[cfg_attr(
58238 any(target_arch = "aarch64", target_arch = "arm64ec"),
58239 link_name = "llvm.aarch64.neon.frsqrte.v4f32"
58240 )]
58241 fn _vrsqrteq_f32(a: float32x4_t) -> float32x4_t;
58242 }
58243 unsafe { _vrsqrteq_f32(a) }
58244}
58245#[doc = "Unsigned reciprocal square root estimate"]
58246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_u32)"]
58247#[inline(always)]
58248#[target_feature(enable = "neon")]
58249#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58250#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58251#[cfg_attr(
58252 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58253 assert_instr(ursqrte)
58254)]
58255#[cfg_attr(
58256 not(target_arch = "arm"),
58257 stable(feature = "neon_intrinsics", since = "1.59.0")
58258)]
58259#[cfg_attr(
58260 target_arch = "arm",
58261 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58262)]
58263pub fn vrsqrte_u32(a: uint32x2_t) -> uint32x2_t {
58264 unsafe extern "unadjusted" {
58265 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v2i32")]
58266 #[cfg_attr(
58267 any(target_arch = "aarch64", target_arch = "arm64ec"),
58268 link_name = "llvm.aarch64.neon.ursqrte.v2i32"
58269 )]
58270 fn _vrsqrte_u32(a: uint32x2_t) -> uint32x2_t;
58271 }
58272 unsafe { _vrsqrte_u32(a) }
58273}
58274#[doc = "Unsigned reciprocal square root estimate"]
58275#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_u32)"]
58276#[inline(always)]
58277#[target_feature(enable = "neon")]
58278#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58279#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58280#[cfg_attr(
58281 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58282 assert_instr(ursqrte)
58283)]
58284#[cfg_attr(
58285 not(target_arch = "arm"),
58286 stable(feature = "neon_intrinsics", since = "1.59.0")
58287)]
58288#[cfg_attr(
58289 target_arch = "arm",
58290 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58291)]
58292pub fn vrsqrteq_u32(a: uint32x4_t) -> uint32x4_t {
58293 unsafe extern "unadjusted" {
58294 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4i32")]
58295 #[cfg_attr(
58296 any(target_arch = "aarch64", target_arch = "arm64ec"),
58297 link_name = "llvm.aarch64.neon.ursqrte.v4i32"
58298 )]
58299 fn _vrsqrteq_u32(a: uint32x4_t) -> uint32x4_t;
58300 }
58301 unsafe { _vrsqrteq_u32(a) }
58302}
58303#[doc = "Floating-point reciprocal square root step"]
58304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrts_f16)"]
58305#[inline(always)]
58306#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58307#[target_feature(enable = "neon,fp16")]
58308#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
58309#[cfg_attr(
58310 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58311 assert_instr(frsqrts)
58312)]
58313#[cfg_attr(
58314 not(target_arch = "arm"),
58315 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
58316)]
58317#[cfg_attr(
58318 target_arch = "arm",
58319 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58320)]
58321#[cfg(not(target_arch = "arm64ec"))]
58322pub fn vrsqrts_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
58323 unsafe extern "unadjusted" {
58324 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v4f16")]
58325 #[cfg_attr(
58326 any(target_arch = "aarch64", target_arch = "arm64ec"),
58327 link_name = "llvm.aarch64.neon.frsqrts.v4f16"
58328 )]
58329 fn _vrsqrts_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
58330 }
58331 unsafe { _vrsqrts_f16(a, b) }
58332}
58333#[doc = "Floating-point reciprocal square root step"]
58334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrtsq_f16)"]
58335#[inline(always)]
58336#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58337#[target_feature(enable = "neon,fp16")]
58338#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
58339#[cfg_attr(
58340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58341 assert_instr(frsqrts)
58342)]
58343#[cfg_attr(
58344 not(target_arch = "arm"),
58345 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
58346)]
58347#[cfg_attr(
58348 target_arch = "arm",
58349 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58350)]
58351#[cfg(not(target_arch = "arm64ec"))]
58352pub fn vrsqrtsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
58353 unsafe extern "unadjusted" {
58354 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v8f16")]
58355 #[cfg_attr(
58356 any(target_arch = "aarch64", target_arch = "arm64ec"),
58357 link_name = "llvm.aarch64.neon.frsqrts.v8f16"
58358 )]
58359 fn _vrsqrtsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
58360 }
58361 unsafe { _vrsqrtsq_f16(a, b) }
58362}
58363#[doc = "Floating-point reciprocal square root step"]
58364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrts_f32)"]
58365#[inline(always)]
58366#[target_feature(enable = "neon")]
58367#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58368#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
58369#[cfg_attr(
58370 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58371 assert_instr(frsqrts)
58372)]
58373#[cfg_attr(
58374 not(target_arch = "arm"),
58375 stable(feature = "neon_intrinsics", since = "1.59.0")
58376)]
58377#[cfg_attr(
58378 target_arch = "arm",
58379 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58380)]
58381pub fn vrsqrts_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
58382 unsafe extern "unadjusted" {
58383 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v2f32")]
58384 #[cfg_attr(
58385 any(target_arch = "aarch64", target_arch = "arm64ec"),
58386 link_name = "llvm.aarch64.neon.frsqrts.v2f32"
58387 )]
58388 fn _vrsqrts_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
58389 }
58390 unsafe { _vrsqrts_f32(a, b) }
58391}
58392#[doc = "Floating-point reciprocal square root step"]
58393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrtsq_f32)"]
58394#[inline(always)]
58395#[target_feature(enable = "neon")]
58396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58397#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
58398#[cfg_attr(
58399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58400 assert_instr(frsqrts)
58401)]
58402#[cfg_attr(
58403 not(target_arch = "arm"),
58404 stable(feature = "neon_intrinsics", since = "1.59.0")
58405)]
58406#[cfg_attr(
58407 target_arch = "arm",
58408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58409)]
58410pub fn vrsqrtsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
58411 unsafe extern "unadjusted" {
58412 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v4f32")]
58413 #[cfg_attr(
58414 any(target_arch = "aarch64", target_arch = "arm64ec"),
58415 link_name = "llvm.aarch64.neon.frsqrts.v4f32"
58416 )]
58417 fn _vrsqrtsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
58418 }
58419 unsafe { _vrsqrtsq_f32(a, b) }
58420}
58421#[doc = "Signed rounding shift right and accumulate"]
58422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s8)"]
58423#[inline(always)]
58424#[target_feature(enable = "neon")]
58425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58426#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58427#[cfg_attr(
58428 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58429 assert_instr(srsra, N = 2)
58430)]
58431#[rustc_legacy_const_generics(2)]
58432#[cfg_attr(
58433 not(target_arch = "arm"),
58434 stable(feature = "neon_intrinsics", since = "1.59.0")
58435)]
58436#[cfg_attr(
58437 target_arch = "arm",
58438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58439)]
58440pub fn vrsra_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
58441 static_assert!(N >= 1 && N <= 8);
58442 unsafe { simd_add(a, vrshr_n_s8::<N>(b)) }
58443}
58444#[doc = "Signed rounding shift right and accumulate"]
58445#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s8)"]
58446#[inline(always)]
58447#[target_feature(enable = "neon")]
58448#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58449#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58450#[cfg_attr(
58451 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58452 assert_instr(srsra, N = 2)
58453)]
58454#[rustc_legacy_const_generics(2)]
58455#[cfg_attr(
58456 not(target_arch = "arm"),
58457 stable(feature = "neon_intrinsics", since = "1.59.0")
58458)]
58459#[cfg_attr(
58460 target_arch = "arm",
58461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58462)]
58463pub fn vrsraq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
58464 static_assert!(N >= 1 && N <= 8);
58465 unsafe { simd_add(a, vrshrq_n_s8::<N>(b)) }
58466}
58467#[doc = "Signed rounding shift right and accumulate"]
58468#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s16)"]
58469#[inline(always)]
58470#[target_feature(enable = "neon")]
58471#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58472#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58473#[cfg_attr(
58474 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58475 assert_instr(srsra, N = 2)
58476)]
58477#[rustc_legacy_const_generics(2)]
58478#[cfg_attr(
58479 not(target_arch = "arm"),
58480 stable(feature = "neon_intrinsics", since = "1.59.0")
58481)]
58482#[cfg_attr(
58483 target_arch = "arm",
58484 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58485)]
58486pub fn vrsra_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
58487 static_assert!(N >= 1 && N <= 16);
58488 unsafe { simd_add(a, vrshr_n_s16::<N>(b)) }
58489}
58490#[doc = "Signed rounding shift right and accumulate"]
58491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s16)"]
58492#[inline(always)]
58493#[target_feature(enable = "neon")]
58494#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58495#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58496#[cfg_attr(
58497 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58498 assert_instr(srsra, N = 2)
58499)]
58500#[rustc_legacy_const_generics(2)]
58501#[cfg_attr(
58502 not(target_arch = "arm"),
58503 stable(feature = "neon_intrinsics", since = "1.59.0")
58504)]
58505#[cfg_attr(
58506 target_arch = "arm",
58507 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58508)]
58509pub fn vrsraq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
58510 static_assert!(N >= 1 && N <= 16);
58511 unsafe { simd_add(a, vrshrq_n_s16::<N>(b)) }
58512}
58513#[doc = "Signed rounding shift right and accumulate"]
58514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s32)"]
58515#[inline(always)]
58516#[target_feature(enable = "neon")]
58517#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58518#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58519#[cfg_attr(
58520 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58521 assert_instr(srsra, N = 2)
58522)]
58523#[rustc_legacy_const_generics(2)]
58524#[cfg_attr(
58525 not(target_arch = "arm"),
58526 stable(feature = "neon_intrinsics", since = "1.59.0")
58527)]
58528#[cfg_attr(
58529 target_arch = "arm",
58530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58531)]
58532pub fn vrsra_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
58533 static_assert!(N >= 1 && N <= 32);
58534 unsafe { simd_add(a, vrshr_n_s32::<N>(b)) }
58535}
58536#[doc = "Signed rounding shift right and accumulate"]
58537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s32)"]
58538#[inline(always)]
58539#[target_feature(enable = "neon")]
58540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58542#[cfg_attr(
58543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58544 assert_instr(srsra, N = 2)
58545)]
58546#[rustc_legacy_const_generics(2)]
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 vrsraq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
58556 static_assert!(N >= 1 && N <= 32);
58557 unsafe { simd_add(a, vrshrq_n_s32::<N>(b)) }
58558}
58559#[doc = "Signed rounding shift right and accumulate"]
58560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s64)"]
58561#[inline(always)]
58562#[target_feature(enable = "neon")]
58563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58564#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58565#[cfg_attr(
58566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58567 assert_instr(srsra, N = 2)
58568)]
58569#[rustc_legacy_const_generics(2)]
58570#[cfg_attr(
58571 not(target_arch = "arm"),
58572 stable(feature = "neon_intrinsics", since = "1.59.0")
58573)]
58574#[cfg_attr(
58575 target_arch = "arm",
58576 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58577)]
58578pub fn vrsra_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
58579 static_assert!(N >= 1 && N <= 64);
58580 unsafe { simd_add(a, vrshr_n_s64::<N>(b)) }
58581}
58582#[doc = "Signed rounding shift right and accumulate"]
58583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s64)"]
58584#[inline(always)]
58585#[target_feature(enable = "neon")]
58586#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58587#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58588#[cfg_attr(
58589 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58590 assert_instr(srsra, N = 2)
58591)]
58592#[rustc_legacy_const_generics(2)]
58593#[cfg_attr(
58594 not(target_arch = "arm"),
58595 stable(feature = "neon_intrinsics", since = "1.59.0")
58596)]
58597#[cfg_attr(
58598 target_arch = "arm",
58599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58600)]
58601pub fn vrsraq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
58602 static_assert!(N >= 1 && N <= 64);
58603 unsafe { simd_add(a, vrshrq_n_s64::<N>(b)) }
58604}
58605#[doc = "Unsigned rounding shift right and accumulate"]
58606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u8)"]
58607#[inline(always)]
58608#[target_feature(enable = "neon")]
58609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58611#[cfg_attr(
58612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58613 assert_instr(ursra, N = 2)
58614)]
58615#[rustc_legacy_const_generics(2)]
58616#[cfg_attr(
58617 not(target_arch = "arm"),
58618 stable(feature = "neon_intrinsics", since = "1.59.0")
58619)]
58620#[cfg_attr(
58621 target_arch = "arm",
58622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58623)]
58624pub fn vrsra_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
58625 static_assert!(N >= 1 && N <= 8);
58626 unsafe { simd_add(a, vrshr_n_u8::<N>(b)) }
58627}
58628#[doc = "Unsigned rounding shift right and accumulate"]
58629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u8)"]
58630#[inline(always)]
58631#[target_feature(enable = "neon")]
58632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58633#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58634#[cfg_attr(
58635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58636 assert_instr(ursra, N = 2)
58637)]
58638#[rustc_legacy_const_generics(2)]
58639#[cfg_attr(
58640 not(target_arch = "arm"),
58641 stable(feature = "neon_intrinsics", since = "1.59.0")
58642)]
58643#[cfg_attr(
58644 target_arch = "arm",
58645 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58646)]
58647pub fn vrsraq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
58648 static_assert!(N >= 1 && N <= 8);
58649 unsafe { simd_add(a, vrshrq_n_u8::<N>(b)) }
58650}
58651#[doc = "Unsigned rounding shift right and accumulate"]
58652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u16)"]
58653#[inline(always)]
58654#[target_feature(enable = "neon")]
58655#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58656#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58657#[cfg_attr(
58658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58659 assert_instr(ursra, N = 2)
58660)]
58661#[rustc_legacy_const_generics(2)]
58662#[cfg_attr(
58663 not(target_arch = "arm"),
58664 stable(feature = "neon_intrinsics", since = "1.59.0")
58665)]
58666#[cfg_attr(
58667 target_arch = "arm",
58668 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58669)]
58670pub fn vrsra_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
58671 static_assert!(N >= 1 && N <= 16);
58672 unsafe { simd_add(a, vrshr_n_u16::<N>(b)) }
58673}
58674#[doc = "Unsigned rounding shift right and accumulate"]
58675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u16)"]
58676#[inline(always)]
58677#[target_feature(enable = "neon")]
58678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58679#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58680#[cfg_attr(
58681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58682 assert_instr(ursra, N = 2)
58683)]
58684#[rustc_legacy_const_generics(2)]
58685#[cfg_attr(
58686 not(target_arch = "arm"),
58687 stable(feature = "neon_intrinsics", since = "1.59.0")
58688)]
58689#[cfg_attr(
58690 target_arch = "arm",
58691 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58692)]
58693pub fn vrsraq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
58694 static_assert!(N >= 1 && N <= 16);
58695 unsafe { simd_add(a, vrshrq_n_u16::<N>(b)) }
58696}
58697#[doc = "Unsigned rounding shift right and accumulate"]
58698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u32)"]
58699#[inline(always)]
58700#[target_feature(enable = "neon")]
58701#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58702#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58703#[cfg_attr(
58704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58705 assert_instr(ursra, N = 2)
58706)]
58707#[rustc_legacy_const_generics(2)]
58708#[cfg_attr(
58709 not(target_arch = "arm"),
58710 stable(feature = "neon_intrinsics", since = "1.59.0")
58711)]
58712#[cfg_attr(
58713 target_arch = "arm",
58714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58715)]
58716pub fn vrsra_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
58717 static_assert!(N >= 1 && N <= 32);
58718 unsafe { simd_add(a, vrshr_n_u32::<N>(b)) }
58719}
58720#[doc = "Unsigned rounding shift right and accumulate"]
58721#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u32)"]
58722#[inline(always)]
58723#[target_feature(enable = "neon")]
58724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58726#[cfg_attr(
58727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58728 assert_instr(ursra, N = 2)
58729)]
58730#[rustc_legacy_const_generics(2)]
58731#[cfg_attr(
58732 not(target_arch = "arm"),
58733 stable(feature = "neon_intrinsics", since = "1.59.0")
58734)]
58735#[cfg_attr(
58736 target_arch = "arm",
58737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58738)]
58739pub fn vrsraq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
58740 static_assert!(N >= 1 && N <= 32);
58741 unsafe { simd_add(a, vrshrq_n_u32::<N>(b)) }
58742}
58743#[doc = "Unsigned rounding shift right and accumulate"]
58744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u64)"]
58745#[inline(always)]
58746#[target_feature(enable = "neon")]
58747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58748#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58749#[cfg_attr(
58750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58751 assert_instr(ursra, N = 2)
58752)]
58753#[rustc_legacy_const_generics(2)]
58754#[cfg_attr(
58755 not(target_arch = "arm"),
58756 stable(feature = "neon_intrinsics", since = "1.59.0")
58757)]
58758#[cfg_attr(
58759 target_arch = "arm",
58760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58761)]
58762pub fn vrsra_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
58763 static_assert!(N >= 1 && N <= 64);
58764 unsafe { simd_add(a, vrshr_n_u64::<N>(b)) }
58765}
58766#[doc = "Unsigned rounding shift right and accumulate"]
58767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u64)"]
58768#[inline(always)]
58769#[target_feature(enable = "neon")]
58770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58772#[cfg_attr(
58773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58774 assert_instr(ursra, N = 2)
58775)]
58776#[rustc_legacy_const_generics(2)]
58777#[cfg_attr(
58778 not(target_arch = "arm"),
58779 stable(feature = "neon_intrinsics", since = "1.59.0")
58780)]
58781#[cfg_attr(
58782 target_arch = "arm",
58783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58784)]
58785pub fn vrsraq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
58786 static_assert!(N >= 1 && N <= 64);
58787 unsafe { simd_add(a, vrshrq_n_u64::<N>(b)) }
58788}
58789#[doc = "Rounding subtract returning high narrow"]
58790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s16)"]
58791#[inline(always)]
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(vrsubhn))]
58795#[cfg_attr(
58796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58797 assert_instr(rsubhn)
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 vrsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
58808 unsafe extern "unadjusted" {
58809 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v8i8")]
58810 #[cfg_attr(
58811 any(target_arch = "aarch64", target_arch = "arm64ec"),
58812 link_name = "llvm.aarch64.neon.rsubhn.v8i8"
58813 )]
58814 fn _vrsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t;
58815 }
58816 unsafe { _vrsubhn_s16(a, b) }
58817}
58818#[doc = "Rounding subtract returning high narrow"]
58819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s32)"]
58820#[inline(always)]
58821#[target_feature(enable = "neon")]
58822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58823#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58824#[cfg_attr(
58825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58826 assert_instr(rsubhn)
58827)]
58828#[cfg_attr(
58829 not(target_arch = "arm"),
58830 stable(feature = "neon_intrinsics", since = "1.59.0")
58831)]
58832#[cfg_attr(
58833 target_arch = "arm",
58834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58835)]
58836pub fn vrsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
58837 unsafe extern "unadjusted" {
58838 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v4i16")]
58839 #[cfg_attr(
58840 any(target_arch = "aarch64", target_arch = "arm64ec"),
58841 link_name = "llvm.aarch64.neon.rsubhn.v4i16"
58842 )]
58843 fn _vrsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t;
58844 }
58845 unsafe { _vrsubhn_s32(a, b) }
58846}
58847#[doc = "Rounding subtract returning high narrow"]
58848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s64)"]
58849#[inline(always)]
58850#[target_feature(enable = "neon")]
58851#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58852#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58853#[cfg_attr(
58854 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58855 assert_instr(rsubhn)
58856)]
58857#[cfg_attr(
58858 not(target_arch = "arm"),
58859 stable(feature = "neon_intrinsics", since = "1.59.0")
58860)]
58861#[cfg_attr(
58862 target_arch = "arm",
58863 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58864)]
58865pub fn vrsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
58866 unsafe extern "unadjusted" {
58867 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v2i32")]
58868 #[cfg_attr(
58869 any(target_arch = "aarch64", target_arch = "arm64ec"),
58870 link_name = "llvm.aarch64.neon.rsubhn.v2i32"
58871 )]
58872 fn _vrsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t;
58873 }
58874 unsafe { _vrsubhn_s64(a, b) }
58875}
58876#[doc = "Rounding subtract returning high narrow"]
58877#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u16)"]
58878#[inline(always)]
58879#[cfg(target_endian = "little")]
58880#[target_feature(enable = "neon")]
58881#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58882#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58883#[cfg_attr(
58884 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58885 assert_instr(rsubhn)
58886)]
58887#[cfg_attr(
58888 not(target_arch = "arm"),
58889 stable(feature = "neon_intrinsics", since = "1.59.0")
58890)]
58891#[cfg_attr(
58892 target_arch = "arm",
58893 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58894)]
58895pub fn vrsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
58896 unsafe { transmute(vrsubhn_s16(transmute(a), transmute(b))) }
58897}
58898#[doc = "Rounding subtract returning high narrow"]
58899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u16)"]
58900#[inline(always)]
58901#[cfg(target_endian = "big")]
58902#[target_feature(enable = "neon")]
58903#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58904#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58905#[cfg_attr(
58906 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58907 assert_instr(rsubhn)
58908)]
58909#[cfg_attr(
58910 not(target_arch = "arm"),
58911 stable(feature = "neon_intrinsics", since = "1.59.0")
58912)]
58913#[cfg_attr(
58914 target_arch = "arm",
58915 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58916)]
58917pub fn vrsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
58918 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
58919 let b: uint16x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
58920 unsafe {
58921 let ret_val: uint8x8_t = transmute(vrsubhn_s16(transmute(a), transmute(b)));
58922 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
58923 }
58924}
58925#[doc = "Rounding subtract returning high narrow"]
58926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u32)"]
58927#[inline(always)]
58928#[cfg(target_endian = "little")]
58929#[target_feature(enable = "neon")]
58930#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58931#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58932#[cfg_attr(
58933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58934 assert_instr(rsubhn)
58935)]
58936#[cfg_attr(
58937 not(target_arch = "arm"),
58938 stable(feature = "neon_intrinsics", since = "1.59.0")
58939)]
58940#[cfg_attr(
58941 target_arch = "arm",
58942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58943)]
58944pub fn vrsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
58945 unsafe { transmute(vrsubhn_s32(transmute(a), transmute(b))) }
58946}
58947#[doc = "Rounding subtract returning high narrow"]
58948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u32)"]
58949#[inline(always)]
58950#[cfg(target_endian = "big")]
58951#[target_feature(enable = "neon")]
58952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58954#[cfg_attr(
58955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58956 assert_instr(rsubhn)
58957)]
58958#[cfg_attr(
58959 not(target_arch = "arm"),
58960 stable(feature = "neon_intrinsics", since = "1.59.0")
58961)]
58962#[cfg_attr(
58963 target_arch = "arm",
58964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58965)]
58966pub fn vrsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
58967 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
58968 let b: uint32x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
58969 unsafe {
58970 let ret_val: uint16x4_t = transmute(vrsubhn_s32(transmute(a), transmute(b)));
58971 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
58972 }
58973}
58974#[doc = "Rounding subtract returning high narrow"]
58975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u64)"]
58976#[inline(always)]
58977#[cfg(target_endian = "little")]
58978#[target_feature(enable = "neon")]
58979#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58980#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58981#[cfg_attr(
58982 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58983 assert_instr(rsubhn)
58984)]
58985#[cfg_attr(
58986 not(target_arch = "arm"),
58987 stable(feature = "neon_intrinsics", since = "1.59.0")
58988)]
58989#[cfg_attr(
58990 target_arch = "arm",
58991 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58992)]
58993pub fn vrsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
58994 unsafe { transmute(vrsubhn_s64(transmute(a), transmute(b))) }
58995}
58996#[doc = "Rounding subtract returning high narrow"]
58997#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u64)"]
58998#[inline(always)]
58999#[cfg(target_endian = "big")]
59000#[target_feature(enable = "neon")]
59001#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59002#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
59003#[cfg_attr(
59004 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59005 assert_instr(rsubhn)
59006)]
59007#[cfg_attr(
59008 not(target_arch = "arm"),
59009 stable(feature = "neon_intrinsics", since = "1.59.0")
59010)]
59011#[cfg_attr(
59012 target_arch = "arm",
59013 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59014)]
59015pub fn vrsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
59016 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
59017 let b: uint64x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
59018 unsafe {
59019 let ret_val: uint32x2_t = transmute(vrsubhn_s64(transmute(a), transmute(b)));
59020 simd_shuffle!(ret_val, ret_val, [1, 0])
59021 }
59022}
59023#[doc = "Insert vector element from another vector element"]
59024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_f16)"]
59025#[inline(always)]
59026#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59027#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59028#[cfg_attr(
59029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59030 assert_instr(nop, LANE = 0)
59031)]
59032#[rustc_legacy_const_generics(2)]
59033#[target_feature(enable = "neon,fp16")]
59034#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
59035#[cfg(not(target_arch = "arm64ec"))]
59036pub fn vset_lane_f16<const LANE: i32>(a: f16, b: float16x4_t) -> float16x4_t {
59037 static_assert_uimm_bits!(LANE, 2);
59038 unsafe { simd_insert!(b, LANE as u32, a) }
59039}
59040#[doc = "Insert vector element from another vector element"]
59041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_f16)"]
59042#[inline(always)]
59043#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59044#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59045#[cfg_attr(
59046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59047 assert_instr(nop, LANE = 0)
59048)]
59049#[rustc_legacy_const_generics(2)]
59050#[target_feature(enable = "neon,fp16")]
59051#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
59052#[cfg(not(target_arch = "arm64ec"))]
59053pub fn vsetq_lane_f16<const LANE: i32>(a: f16, b: float16x8_t) -> float16x8_t {
59054 static_assert_uimm_bits!(LANE, 3);
59055 unsafe { simd_insert!(b, LANE as u32, a) }
59056}
59057#[doc = "Insert vector element from another vector element"]
59058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_f32)"]
59059#[inline(always)]
59060#[target_feature(enable = "neon")]
59061#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59062#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59063#[cfg_attr(
59064 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59065 assert_instr(nop, LANE = 0)
59066)]
59067#[rustc_legacy_const_generics(2)]
59068#[cfg_attr(
59069 not(target_arch = "arm"),
59070 stable(feature = "neon_intrinsics", since = "1.59.0")
59071)]
59072#[cfg_attr(
59073 target_arch = "arm",
59074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59075)]
59076pub fn vset_lane_f32<const LANE: i32>(a: f32, b: float32x2_t) -> float32x2_t {
59077 static_assert_uimm_bits!(LANE, 1);
59078 unsafe { simd_insert!(b, LANE as u32, a) }
59079}
59080#[doc = "Insert vector element from another vector element"]
59081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_f32)"]
59082#[inline(always)]
59083#[target_feature(enable = "neon")]
59084#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59085#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59086#[cfg_attr(
59087 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59088 assert_instr(nop, LANE = 0)
59089)]
59090#[rustc_legacy_const_generics(2)]
59091#[cfg_attr(
59092 not(target_arch = "arm"),
59093 stable(feature = "neon_intrinsics", since = "1.59.0")
59094)]
59095#[cfg_attr(
59096 target_arch = "arm",
59097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59098)]
59099pub fn vsetq_lane_f32<const LANE: i32>(a: f32, b: float32x4_t) -> float32x4_t {
59100 static_assert_uimm_bits!(LANE, 2);
59101 unsafe { simd_insert!(b, LANE as u32, a) }
59102}
59103#[doc = "Insert vector element from another vector element"]
59104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s8)"]
59105#[inline(always)]
59106#[target_feature(enable = "neon")]
59107#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59108#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59109#[cfg_attr(
59110 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59111 assert_instr(nop, LANE = 0)
59112)]
59113#[rustc_legacy_const_generics(2)]
59114#[cfg_attr(
59115 not(target_arch = "arm"),
59116 stable(feature = "neon_intrinsics", since = "1.59.0")
59117)]
59118#[cfg_attr(
59119 target_arch = "arm",
59120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59121)]
59122pub fn vset_lane_s8<const LANE: i32>(a: i8, b: int8x8_t) -> int8x8_t {
59123 static_assert_uimm_bits!(LANE, 3);
59124 unsafe { simd_insert!(b, LANE as u32, a) }
59125}
59126#[doc = "Insert vector element from another vector element"]
59127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s8)"]
59128#[inline(always)]
59129#[target_feature(enable = "neon")]
59130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59132#[cfg_attr(
59133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59134 assert_instr(nop, LANE = 0)
59135)]
59136#[rustc_legacy_const_generics(2)]
59137#[cfg_attr(
59138 not(target_arch = "arm"),
59139 stable(feature = "neon_intrinsics", since = "1.59.0")
59140)]
59141#[cfg_attr(
59142 target_arch = "arm",
59143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59144)]
59145pub fn vsetq_lane_s8<const LANE: i32>(a: i8, b: int8x16_t) -> int8x16_t {
59146 static_assert_uimm_bits!(LANE, 4);
59147 unsafe { simd_insert!(b, LANE as u32, a) }
59148}
59149#[doc = "Insert vector element from another vector element"]
59150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s16)"]
59151#[inline(always)]
59152#[target_feature(enable = "neon")]
59153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59154#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59155#[cfg_attr(
59156 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59157 assert_instr(nop, LANE = 0)
59158)]
59159#[rustc_legacy_const_generics(2)]
59160#[cfg_attr(
59161 not(target_arch = "arm"),
59162 stable(feature = "neon_intrinsics", since = "1.59.0")
59163)]
59164#[cfg_attr(
59165 target_arch = "arm",
59166 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59167)]
59168pub fn vset_lane_s16<const LANE: i32>(a: i16, b: int16x4_t) -> int16x4_t {
59169 static_assert_uimm_bits!(LANE, 2);
59170 unsafe { simd_insert!(b, LANE as u32, a) }
59171}
59172#[doc = "Insert vector element from another vector element"]
59173#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s16)"]
59174#[inline(always)]
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(nop, LANE = 0))]
59178#[cfg_attr(
59179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59180 assert_instr(nop, LANE = 0)
59181)]
59182#[rustc_legacy_const_generics(2)]
59183#[cfg_attr(
59184 not(target_arch = "arm"),
59185 stable(feature = "neon_intrinsics", since = "1.59.0")
59186)]
59187#[cfg_attr(
59188 target_arch = "arm",
59189 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59190)]
59191pub fn vsetq_lane_s16<const LANE: i32>(a: i16, b: int16x8_t) -> int16x8_t {
59192 static_assert_uimm_bits!(LANE, 3);
59193 unsafe { simd_insert!(b, LANE as u32, a) }
59194}
59195#[doc = "Insert vector element from another vector element"]
59196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s32)"]
59197#[inline(always)]
59198#[target_feature(enable = "neon")]
59199#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59200#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59201#[cfg_attr(
59202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59203 assert_instr(nop, LANE = 0)
59204)]
59205#[rustc_legacy_const_generics(2)]
59206#[cfg_attr(
59207 not(target_arch = "arm"),
59208 stable(feature = "neon_intrinsics", since = "1.59.0")
59209)]
59210#[cfg_attr(
59211 target_arch = "arm",
59212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59213)]
59214pub fn vset_lane_s32<const LANE: i32>(a: i32, b: int32x2_t) -> int32x2_t {
59215 static_assert_uimm_bits!(LANE, 1);
59216 unsafe { simd_insert!(b, LANE as u32, a) }
59217}
59218#[doc = "Insert vector element from another vector element"]
59219#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s32)"]
59220#[inline(always)]
59221#[target_feature(enable = "neon")]
59222#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59223#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59224#[cfg_attr(
59225 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59226 assert_instr(nop, LANE = 0)
59227)]
59228#[rustc_legacy_const_generics(2)]
59229#[cfg_attr(
59230 not(target_arch = "arm"),
59231 stable(feature = "neon_intrinsics", since = "1.59.0")
59232)]
59233#[cfg_attr(
59234 target_arch = "arm",
59235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59236)]
59237pub fn vsetq_lane_s32<const LANE: i32>(a: i32, b: int32x4_t) -> int32x4_t {
59238 static_assert_uimm_bits!(LANE, 2);
59239 unsafe { simd_insert!(b, LANE as u32, a) }
59240}
59241#[doc = "Insert vector element from another vector element"]
59242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s64)"]
59243#[inline(always)]
59244#[target_feature(enable = "neon")]
59245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59247#[cfg_attr(
59248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59249 assert_instr(nop, LANE = 0)
59250)]
59251#[rustc_legacy_const_generics(2)]
59252#[cfg_attr(
59253 not(target_arch = "arm"),
59254 stable(feature = "neon_intrinsics", since = "1.59.0")
59255)]
59256#[cfg_attr(
59257 target_arch = "arm",
59258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59259)]
59260pub fn vsetq_lane_s64<const LANE: i32>(a: i64, b: int64x2_t) -> int64x2_t {
59261 static_assert_uimm_bits!(LANE, 1);
59262 unsafe { simd_insert!(b, LANE as u32, a) }
59263}
59264#[doc = "Insert vector element from another vector element"]
59265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u8)"]
59266#[inline(always)]
59267#[target_feature(enable = "neon")]
59268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59269#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59270#[cfg_attr(
59271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59272 assert_instr(nop, LANE = 0)
59273)]
59274#[rustc_legacy_const_generics(2)]
59275#[cfg_attr(
59276 not(target_arch = "arm"),
59277 stable(feature = "neon_intrinsics", since = "1.59.0")
59278)]
59279#[cfg_attr(
59280 target_arch = "arm",
59281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59282)]
59283pub fn vset_lane_u8<const LANE: i32>(a: u8, b: uint8x8_t) -> uint8x8_t {
59284 static_assert_uimm_bits!(LANE, 3);
59285 unsafe { simd_insert!(b, LANE as u32, a) }
59286}
59287#[doc = "Insert vector element from another vector element"]
59288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u8)"]
59289#[inline(always)]
59290#[target_feature(enable = "neon")]
59291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59292#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59293#[cfg_attr(
59294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59295 assert_instr(nop, LANE = 0)
59296)]
59297#[rustc_legacy_const_generics(2)]
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 vsetq_lane_u8<const LANE: i32>(a: u8, b: uint8x16_t) -> uint8x16_t {
59307 static_assert_uimm_bits!(LANE, 4);
59308 unsafe { simd_insert!(b, LANE as u32, a) }
59309}
59310#[doc = "Insert vector element from another vector element"]
59311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u16)"]
59312#[inline(always)]
59313#[target_feature(enable = "neon")]
59314#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59315#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59316#[cfg_attr(
59317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59318 assert_instr(nop, LANE = 0)
59319)]
59320#[rustc_legacy_const_generics(2)]
59321#[cfg_attr(
59322 not(target_arch = "arm"),
59323 stable(feature = "neon_intrinsics", since = "1.59.0")
59324)]
59325#[cfg_attr(
59326 target_arch = "arm",
59327 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59328)]
59329pub fn vset_lane_u16<const LANE: i32>(a: u16, b: uint16x4_t) -> uint16x4_t {
59330 static_assert_uimm_bits!(LANE, 2);
59331 unsafe { simd_insert!(b, LANE as u32, a) }
59332}
59333#[doc = "Insert vector element from another vector element"]
59334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u16)"]
59335#[inline(always)]
59336#[target_feature(enable = "neon")]
59337#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59338#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59339#[cfg_attr(
59340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59341 assert_instr(nop, LANE = 0)
59342)]
59343#[rustc_legacy_const_generics(2)]
59344#[cfg_attr(
59345 not(target_arch = "arm"),
59346 stable(feature = "neon_intrinsics", since = "1.59.0")
59347)]
59348#[cfg_attr(
59349 target_arch = "arm",
59350 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59351)]
59352pub fn vsetq_lane_u16<const LANE: i32>(a: u16, b: uint16x8_t) -> uint16x8_t {
59353 static_assert_uimm_bits!(LANE, 3);
59354 unsafe { simd_insert!(b, LANE as u32, a) }
59355}
59356#[doc = "Insert vector element from another vector element"]
59357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u32)"]
59358#[inline(always)]
59359#[target_feature(enable = "neon")]
59360#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59361#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59362#[cfg_attr(
59363 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59364 assert_instr(nop, LANE = 0)
59365)]
59366#[rustc_legacy_const_generics(2)]
59367#[cfg_attr(
59368 not(target_arch = "arm"),
59369 stable(feature = "neon_intrinsics", since = "1.59.0")
59370)]
59371#[cfg_attr(
59372 target_arch = "arm",
59373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59374)]
59375pub fn vset_lane_u32<const LANE: i32>(a: u32, b: uint32x2_t) -> uint32x2_t {
59376 static_assert_uimm_bits!(LANE, 1);
59377 unsafe { simd_insert!(b, LANE as u32, a) }
59378}
59379#[doc = "Insert vector element from another vector element"]
59380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u32)"]
59381#[inline(always)]
59382#[target_feature(enable = "neon")]
59383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59384#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59385#[cfg_attr(
59386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59387 assert_instr(nop, LANE = 0)
59388)]
59389#[rustc_legacy_const_generics(2)]
59390#[cfg_attr(
59391 not(target_arch = "arm"),
59392 stable(feature = "neon_intrinsics", since = "1.59.0")
59393)]
59394#[cfg_attr(
59395 target_arch = "arm",
59396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59397)]
59398pub fn vsetq_lane_u32<const LANE: i32>(a: u32, b: uint32x4_t) -> uint32x4_t {
59399 static_assert_uimm_bits!(LANE, 2);
59400 unsafe { simd_insert!(b, LANE as u32, a) }
59401}
59402#[doc = "Insert vector element from another vector element"]
59403#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u64)"]
59404#[inline(always)]
59405#[target_feature(enable = "neon")]
59406#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59407#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59408#[cfg_attr(
59409 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59410 assert_instr(nop, LANE = 0)
59411)]
59412#[rustc_legacy_const_generics(2)]
59413#[cfg_attr(
59414 not(target_arch = "arm"),
59415 stable(feature = "neon_intrinsics", since = "1.59.0")
59416)]
59417#[cfg_attr(
59418 target_arch = "arm",
59419 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59420)]
59421pub fn vsetq_lane_u64<const LANE: i32>(a: u64, b: uint64x2_t) -> uint64x2_t {
59422 static_assert_uimm_bits!(LANE, 1);
59423 unsafe { simd_insert!(b, LANE as u32, a) }
59424}
59425#[doc = "Insert vector element from another vector element"]
59426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p8)"]
59427#[inline(always)]
59428#[target_feature(enable = "neon")]
59429#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59430#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59431#[cfg_attr(
59432 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59433 assert_instr(nop, LANE = 0)
59434)]
59435#[rustc_legacy_const_generics(2)]
59436#[cfg_attr(
59437 not(target_arch = "arm"),
59438 stable(feature = "neon_intrinsics", since = "1.59.0")
59439)]
59440#[cfg_attr(
59441 target_arch = "arm",
59442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59443)]
59444pub fn vset_lane_p8<const LANE: i32>(a: p8, b: poly8x8_t) -> poly8x8_t {
59445 static_assert_uimm_bits!(LANE, 3);
59446 unsafe { simd_insert!(b, LANE as u32, a) }
59447}
59448#[doc = "Insert vector element from another vector element"]
59449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p8)"]
59450#[inline(always)]
59451#[target_feature(enable = "neon")]
59452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59453#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59454#[cfg_attr(
59455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59456 assert_instr(nop, LANE = 0)
59457)]
59458#[rustc_legacy_const_generics(2)]
59459#[cfg_attr(
59460 not(target_arch = "arm"),
59461 stable(feature = "neon_intrinsics", since = "1.59.0")
59462)]
59463#[cfg_attr(
59464 target_arch = "arm",
59465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59466)]
59467pub fn vsetq_lane_p8<const LANE: i32>(a: p8, b: poly8x16_t) -> poly8x16_t {
59468 static_assert_uimm_bits!(LANE, 4);
59469 unsafe { simd_insert!(b, LANE as u32, a) }
59470}
59471#[doc = "Insert vector element from another vector element"]
59472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p16)"]
59473#[inline(always)]
59474#[target_feature(enable = "neon")]
59475#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59476#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59477#[cfg_attr(
59478 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59479 assert_instr(nop, LANE = 0)
59480)]
59481#[rustc_legacy_const_generics(2)]
59482#[cfg_attr(
59483 not(target_arch = "arm"),
59484 stable(feature = "neon_intrinsics", since = "1.59.0")
59485)]
59486#[cfg_attr(
59487 target_arch = "arm",
59488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59489)]
59490pub fn vset_lane_p16<const LANE: i32>(a: p16, b: poly16x4_t) -> poly16x4_t {
59491 static_assert_uimm_bits!(LANE, 2);
59492 unsafe { simd_insert!(b, LANE as u32, a) }
59493}
59494#[doc = "Insert vector element from another vector element"]
59495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p16)"]
59496#[inline(always)]
59497#[target_feature(enable = "neon")]
59498#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59499#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59500#[cfg_attr(
59501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59502 assert_instr(nop, LANE = 0)
59503)]
59504#[rustc_legacy_const_generics(2)]
59505#[cfg_attr(
59506 not(target_arch = "arm"),
59507 stable(feature = "neon_intrinsics", since = "1.59.0")
59508)]
59509#[cfg_attr(
59510 target_arch = "arm",
59511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59512)]
59513pub fn vsetq_lane_p16<const LANE: i32>(a: p16, b: poly16x8_t) -> poly16x8_t {
59514 static_assert_uimm_bits!(LANE, 3);
59515 unsafe { simd_insert!(b, LANE as u32, a) }
59516}
59517#[doc = "Insert vector element from another vector element"]
59518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p64)"]
59519#[inline(always)]
59520#[target_feature(enable = "neon,aes")]
59521#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59522#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59523#[cfg_attr(
59524 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59525 assert_instr(nop, LANE = 0)
59526)]
59527#[rustc_legacy_const_generics(2)]
59528#[cfg_attr(
59529 not(target_arch = "arm"),
59530 stable(feature = "neon_intrinsics", since = "1.59.0")
59531)]
59532#[cfg_attr(
59533 target_arch = "arm",
59534 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59535)]
59536pub fn vset_lane_p64<const LANE: i32>(a: p64, b: poly64x1_t) -> poly64x1_t {
59537 static_assert!(LANE == 0);
59538 unsafe { simd_insert!(b, LANE as u32, a) }
59539}
59540#[doc = "Insert vector element from another vector element"]
59541#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s64)"]
59542#[inline(always)]
59543#[target_feature(enable = "neon")]
59544#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59545#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59546#[cfg_attr(
59547 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59548 assert_instr(nop, LANE = 0)
59549)]
59550#[rustc_legacy_const_generics(2)]
59551#[cfg_attr(
59552 not(target_arch = "arm"),
59553 stable(feature = "neon_intrinsics", since = "1.59.0")
59554)]
59555#[cfg_attr(
59556 target_arch = "arm",
59557 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59558)]
59559pub fn vset_lane_s64<const LANE: i32>(a: i64, b: int64x1_t) -> int64x1_t {
59560 static_assert!(LANE == 0);
59561 unsafe { simd_insert!(b, LANE as u32, a) }
59562}
59563#[doc = "Insert vector element from another vector element"]
59564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u64)"]
59565#[inline(always)]
59566#[target_feature(enable = "neon")]
59567#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59568#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59569#[cfg_attr(
59570 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59571 assert_instr(nop, LANE = 0)
59572)]
59573#[rustc_legacy_const_generics(2)]
59574#[cfg_attr(
59575 not(target_arch = "arm"),
59576 stable(feature = "neon_intrinsics", since = "1.59.0")
59577)]
59578#[cfg_attr(
59579 target_arch = "arm",
59580 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59581)]
59582pub fn vset_lane_u64<const LANE: i32>(a: u64, b: uint64x1_t) -> uint64x1_t {
59583 static_assert!(LANE == 0);
59584 unsafe { simd_insert!(b, LANE as u32, a) }
59585}
59586#[doc = "Insert vector element from another vector element"]
59587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p64)"]
59588#[inline(always)]
59589#[target_feature(enable = "neon,aes")]
59590#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59591#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59592#[cfg_attr(
59593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59594 assert_instr(nop, LANE = 0)
59595)]
59596#[rustc_legacy_const_generics(2)]
59597#[cfg_attr(
59598 not(target_arch = "arm"),
59599 stable(feature = "neon_intrinsics", since = "1.59.0")
59600)]
59601#[cfg_attr(
59602 target_arch = "arm",
59603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59604)]
59605pub fn vsetq_lane_p64<const LANE: i32>(a: p64, b: poly64x2_t) -> poly64x2_t {
59606 static_assert_uimm_bits!(LANE, 1);
59607 unsafe { simd_insert!(b, LANE as u32, a) }
59608}
59609#[doc = "SHA1 hash update accelerator, choose."]
59610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1cq_u32)"]
59611#[inline(always)]
59612#[target_feature(enable = "sha2")]
59613#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59614#[cfg_attr(test, assert_instr(sha1c))]
59615#[cfg_attr(
59616 target_arch = "arm",
59617 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59618)]
59619#[cfg_attr(
59620 not(target_arch = "arm"),
59621 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59622)]
59623pub fn vsha1cq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
59624 unsafe extern "unadjusted" {
59625 #[cfg_attr(
59626 any(target_arch = "aarch64", target_arch = "arm64ec"),
59627 link_name = "llvm.aarch64.crypto.sha1c"
59628 )]
59629 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1c")]
59630 fn _vsha1cq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
59631 }
59632 unsafe { _vsha1cq_u32(hash_abcd, hash_e, wk) }
59633}
59634#[doc = "SHA1 fixed rotate."]
59635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1h_u32)"]
59636#[inline(always)]
59637#[target_feature(enable = "sha2")]
59638#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59639#[cfg_attr(test, assert_instr(sha1h))]
59640#[cfg_attr(
59641 target_arch = "arm",
59642 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59643)]
59644#[cfg_attr(
59645 not(target_arch = "arm"),
59646 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59647)]
59648pub fn vsha1h_u32(hash_e: u32) -> u32 {
59649 unsafe extern "unadjusted" {
59650 #[cfg_attr(
59651 any(target_arch = "aarch64", target_arch = "arm64ec"),
59652 link_name = "llvm.aarch64.crypto.sha1h"
59653 )]
59654 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1h")]
59655 fn _vsha1h_u32(hash_e: u32) -> u32;
59656 }
59657 unsafe { _vsha1h_u32(hash_e) }
59658}
59659#[doc = "SHA1 hash update accelerator, majority"]
59660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1mq_u32)"]
59661#[inline(always)]
59662#[target_feature(enable = "sha2")]
59663#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59664#[cfg_attr(test, assert_instr(sha1m))]
59665#[cfg_attr(
59666 target_arch = "arm",
59667 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59668)]
59669#[cfg_attr(
59670 not(target_arch = "arm"),
59671 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59672)]
59673pub fn vsha1mq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
59674 unsafe extern "unadjusted" {
59675 #[cfg_attr(
59676 any(target_arch = "aarch64", target_arch = "arm64ec"),
59677 link_name = "llvm.aarch64.crypto.sha1m"
59678 )]
59679 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1m")]
59680 fn _vsha1mq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
59681 }
59682 unsafe { _vsha1mq_u32(hash_abcd, hash_e, wk) }
59683}
59684#[doc = "SHA1 hash update accelerator, parity"]
59685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1pq_u32)"]
59686#[inline(always)]
59687#[target_feature(enable = "sha2")]
59688#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59689#[cfg_attr(test, assert_instr(sha1p))]
59690#[cfg_attr(
59691 target_arch = "arm",
59692 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59693)]
59694#[cfg_attr(
59695 not(target_arch = "arm"),
59696 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59697)]
59698pub fn vsha1pq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
59699 unsafe extern "unadjusted" {
59700 #[cfg_attr(
59701 any(target_arch = "aarch64", target_arch = "arm64ec"),
59702 link_name = "llvm.aarch64.crypto.sha1p"
59703 )]
59704 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1p")]
59705 fn _vsha1pq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
59706 }
59707 unsafe { _vsha1pq_u32(hash_abcd, hash_e, wk) }
59708}
59709#[doc = "SHA1 schedule update accelerator, first part."]
59710#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1su0q_u32)"]
59711#[inline(always)]
59712#[target_feature(enable = "sha2")]
59713#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59714#[cfg_attr(test, assert_instr(sha1su0))]
59715#[cfg_attr(
59716 target_arch = "arm",
59717 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59718)]
59719#[cfg_attr(
59720 not(target_arch = "arm"),
59721 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59722)]
59723pub fn vsha1su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t, w8_11: uint32x4_t) -> uint32x4_t {
59724 unsafe extern "unadjusted" {
59725 #[cfg_attr(
59726 any(target_arch = "aarch64", target_arch = "arm64ec"),
59727 link_name = "llvm.aarch64.crypto.sha1su0"
59728 )]
59729 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1su0")]
59730 fn _vsha1su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t, w8_11: uint32x4_t) -> uint32x4_t;
59731 }
59732 unsafe { _vsha1su0q_u32(w0_3, w4_7, w8_11) }
59733}
59734#[doc = "SHA1 schedule update accelerator, second part."]
59735#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1su1q_u32)"]
59736#[inline(always)]
59737#[target_feature(enable = "sha2")]
59738#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59739#[cfg_attr(test, assert_instr(sha1su1))]
59740#[cfg_attr(
59741 target_arch = "arm",
59742 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59743)]
59744#[cfg_attr(
59745 not(target_arch = "arm"),
59746 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59747)]
59748pub fn vsha1su1q_u32(tw0_3: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t {
59749 unsafe extern "unadjusted" {
59750 #[cfg_attr(
59751 any(target_arch = "aarch64", target_arch = "arm64ec"),
59752 link_name = "llvm.aarch64.crypto.sha1su1"
59753 )]
59754 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1su1")]
59755 fn _vsha1su1q_u32(tw0_3: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t;
59756 }
59757 unsafe { _vsha1su1q_u32(tw0_3, w12_15) }
59758}
59759#[doc = "SHA1 schedule update accelerator, upper part."]
59760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256h2q_u32)"]
59761#[inline(always)]
59762#[target_feature(enable = "sha2")]
59763#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59764#[cfg_attr(test, assert_instr(sha256h2))]
59765#[cfg_attr(
59766 target_arch = "arm",
59767 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59768)]
59769#[cfg_attr(
59770 not(target_arch = "arm"),
59771 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59772)]
59773pub fn vsha256h2q_u32(hash_abcd: uint32x4_t, hash_efgh: uint32x4_t, wk: uint32x4_t) -> uint32x4_t {
59774 unsafe extern "unadjusted" {
59775 #[cfg_attr(
59776 any(target_arch = "aarch64", target_arch = "arm64ec"),
59777 link_name = "llvm.aarch64.crypto.sha256h2"
59778 )]
59779 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256h2")]
59780 fn _vsha256h2q_u32(
59781 hash_abcd: uint32x4_t,
59782 hash_efgh: uint32x4_t,
59783 wk: uint32x4_t,
59784 ) -> uint32x4_t;
59785 }
59786 unsafe { _vsha256h2q_u32(hash_abcd, hash_efgh, wk) }
59787}
59788#[doc = "SHA1 schedule update accelerator, first part."]
59789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256hq_u32)"]
59790#[inline(always)]
59791#[target_feature(enable = "sha2")]
59792#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59793#[cfg_attr(test, assert_instr(sha256h))]
59794#[cfg_attr(
59795 target_arch = "arm",
59796 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59797)]
59798#[cfg_attr(
59799 not(target_arch = "arm"),
59800 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59801)]
59802pub fn vsha256hq_u32(hash_abcd: uint32x4_t, hash_efgh: uint32x4_t, wk: uint32x4_t) -> uint32x4_t {
59803 unsafe extern "unadjusted" {
59804 #[cfg_attr(
59805 any(target_arch = "aarch64", target_arch = "arm64ec"),
59806 link_name = "llvm.aarch64.crypto.sha256h"
59807 )]
59808 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256h")]
59809 fn _vsha256hq_u32(
59810 hash_abcd: uint32x4_t,
59811 hash_efgh: uint32x4_t,
59812 wk: uint32x4_t,
59813 ) -> uint32x4_t;
59814 }
59815 unsafe { _vsha256hq_u32(hash_abcd, hash_efgh, wk) }
59816}
59817#[doc = "SHA256 schedule update accelerator, first part."]
59818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256su0q_u32)"]
59819#[inline(always)]
59820#[target_feature(enable = "sha2")]
59821#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59822#[cfg_attr(test, assert_instr(sha256su0))]
59823#[cfg_attr(
59824 target_arch = "arm",
59825 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59826)]
59827#[cfg_attr(
59828 not(target_arch = "arm"),
59829 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59830)]
59831pub fn vsha256su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t) -> uint32x4_t {
59832 unsafe extern "unadjusted" {
59833 #[cfg_attr(
59834 any(target_arch = "aarch64", target_arch = "arm64ec"),
59835 link_name = "llvm.aarch64.crypto.sha256su0"
59836 )]
59837 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256su0")]
59838 fn _vsha256su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t) -> uint32x4_t;
59839 }
59840 unsafe { _vsha256su0q_u32(w0_3, w4_7) }
59841}
59842#[doc = "SHA256 schedule update accelerator, second part."]
59843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256su1q_u32)"]
59844#[inline(always)]
59845#[target_feature(enable = "sha2")]
59846#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59847#[cfg_attr(test, assert_instr(sha256su1))]
59848#[cfg_attr(
59849 target_arch = "arm",
59850 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59851)]
59852#[cfg_attr(
59853 not(target_arch = "arm"),
59854 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59855)]
59856pub fn vsha256su1q_u32(tw0_3: uint32x4_t, w8_11: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t {
59857 unsafe extern "unadjusted" {
59858 #[cfg_attr(
59859 any(target_arch = "aarch64", target_arch = "arm64ec"),
59860 link_name = "llvm.aarch64.crypto.sha256su1"
59861 )]
59862 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256su1")]
59863 fn _vsha256su1q_u32(tw0_3: uint32x4_t, w8_11: uint32x4_t, w12_15: uint32x4_t)
59864 -> uint32x4_t;
59865 }
59866 unsafe { _vsha256su1q_u32(tw0_3, w8_11, w12_15) }
59867}
59868#[inline(always)]
59869#[target_feature(enable = "neon")]
59870#[cfg(target_arch = "arm")]
59871#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59872#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59873#[rustc_legacy_const_generics(2)]
59874fn vshiftlins_v16i8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
59875 unsafe extern "unadjusted" {
59876 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v16i8")]
59877 fn _vshiftlins_v16i8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t;
59878 }
59879 unsafe { _vshiftlins_v16i8(a, b, const { int8x16_t([N as i8; 16]) }) }
59880}
59881#[inline(always)]
59882#[target_feature(enable = "neon")]
59883#[cfg(target_arch = "arm")]
59884#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59885#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59886#[rustc_legacy_const_generics(2)]
59887fn vshiftlins_v1i64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
59888 unsafe extern "unadjusted" {
59889 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v1i64")]
59890 fn _vshiftlins_v1i64(a: int64x1_t, b: int64x1_t, c: int64x1_t) -> int64x1_t;
59891 }
59892 unsafe { _vshiftlins_v1i64(a, b, const { int64x1_t([N as i64; 1]) }) }
59893}
59894#[inline(always)]
59895#[target_feature(enable = "neon")]
59896#[cfg(target_arch = "arm")]
59897#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59898#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59899#[rustc_legacy_const_generics(2)]
59900fn vshiftlins_v2i32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
59901 unsafe extern "unadjusted" {
59902 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i32")]
59903 fn _vshiftlins_v2i32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t;
59904 }
59905 unsafe { _vshiftlins_v2i32(a, b, const { int32x2_t([N; 2]) }) }
59906}
59907#[inline(always)]
59908#[target_feature(enable = "neon")]
59909#[cfg(target_arch = "arm")]
59910#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59911#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59912#[rustc_legacy_const_generics(2)]
59913fn vshiftlins_v2i64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
59914 unsafe extern "unadjusted" {
59915 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i64")]
59916 fn _vshiftlins_v2i64(a: int64x2_t, b: int64x2_t, c: int64x2_t) -> int64x2_t;
59917 }
59918 unsafe { _vshiftlins_v2i64(a, b, const { int64x2_t([N as i64; 2]) }) }
59919}
59920#[inline(always)]
59921#[target_feature(enable = "neon")]
59922#[cfg(target_arch = "arm")]
59923#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59924#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59925#[rustc_legacy_const_generics(2)]
59926fn vshiftlins_v4i16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
59927 unsafe extern "unadjusted" {
59928 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i16")]
59929 fn _vshiftlins_v4i16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t;
59930 }
59931 unsafe { _vshiftlins_v4i16(a, b, const { int16x4_t([N as i16; 4]) }) }
59932}
59933#[inline(always)]
59934#[target_feature(enable = "neon")]
59935#[cfg(target_arch = "arm")]
59936#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59937#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59938#[rustc_legacy_const_generics(2)]
59939fn vshiftlins_v4i32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
59940 unsafe extern "unadjusted" {
59941 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i32")]
59942 fn _vshiftlins_v4i32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t;
59943 }
59944 unsafe { _vshiftlins_v4i32(a, b, const { int32x4_t([N; 4]) }) }
59945}
59946#[inline(always)]
59947#[target_feature(enable = "neon")]
59948#[cfg(target_arch = "arm")]
59949#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59950#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59951#[rustc_legacy_const_generics(2)]
59952fn vshiftlins_v8i16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
59953 unsafe extern "unadjusted" {
59954 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i16")]
59955 fn _vshiftlins_v8i16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t;
59956 }
59957 unsafe { _vshiftlins_v8i16(a, b, const { int16x8_t([N as i16; 8]) }) }
59958}
59959#[inline(always)]
59960#[target_feature(enable = "neon")]
59961#[cfg(target_arch = "arm")]
59962#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59963#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59964#[rustc_legacy_const_generics(2)]
59965fn vshiftlins_v8i8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
59966 unsafe extern "unadjusted" {
59967 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i8")]
59968 fn _vshiftlins_v8i8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
59969 }
59970 unsafe { _vshiftlins_v8i8(a, b, const { int8x8_t([N as i8; 8]) }) }
59971}
59972#[doc = "Shift Right and Insert (immediate)"]
59973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v16i8)"]
59974#[inline(always)]
59975#[target_feature(enable = "neon")]
59976#[cfg(target_arch = "arm")]
59977#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59978#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59979#[rustc_legacy_const_generics(2)]
59980fn vshiftrins_v16i8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
59981 unsafe extern "unadjusted" {
59982 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v16i8")]
59983 fn _vshiftrins_v16i8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t;
59984 }
59985 unsafe { _vshiftrins_v16i8(a, b, const { int8x16_t([-N as i8; 16]) }) }
59986}
59987#[doc = "Shift Right and Insert (immediate)"]
59988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v1i64)"]
59989#[inline(always)]
59990#[target_feature(enable = "neon")]
59991#[cfg(target_arch = "arm")]
59992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59993#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59994#[rustc_legacy_const_generics(2)]
59995fn vshiftrins_v1i64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
59996 unsafe extern "unadjusted" {
59997 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v1i64")]
59998 fn _vshiftrins_v1i64(a: int64x1_t, b: int64x1_t, c: int64x1_t) -> int64x1_t;
59999 }
60000 unsafe { _vshiftrins_v1i64(a, b, const { int64x1_t([-N as i64; 1]) }) }
60001}
60002#[doc = "Shift Right and Insert (immediate)"]
60003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v2i32)"]
60004#[inline(always)]
60005#[target_feature(enable = "neon")]
60006#[cfg(target_arch = "arm")]
60007#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60008#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60009#[rustc_legacy_const_generics(2)]
60010fn vshiftrins_v2i32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
60011 unsafe extern "unadjusted" {
60012 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i32")]
60013 fn _vshiftrins_v2i32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t;
60014 }
60015 unsafe { _vshiftrins_v2i32(a, b, const { int32x2_t([-N; 2]) }) }
60016}
60017#[doc = "Shift Right and Insert (immediate)"]
60018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v2i64)"]
60019#[inline(always)]
60020#[target_feature(enable = "neon")]
60021#[cfg(target_arch = "arm")]
60022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60023#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60024#[rustc_legacy_const_generics(2)]
60025fn vshiftrins_v2i64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
60026 unsafe extern "unadjusted" {
60027 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i64")]
60028 fn _vshiftrins_v2i64(a: int64x2_t, b: int64x2_t, c: int64x2_t) -> int64x2_t;
60029 }
60030 unsafe { _vshiftrins_v2i64(a, b, const { int64x2_t([-N as i64; 2]) }) }
60031}
60032#[doc = "Shift Right and Insert (immediate)"]
60033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v4i16)"]
60034#[inline(always)]
60035#[target_feature(enable = "neon")]
60036#[cfg(target_arch = "arm")]
60037#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60038#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60039#[rustc_legacy_const_generics(2)]
60040fn vshiftrins_v4i16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
60041 unsafe extern "unadjusted" {
60042 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i16")]
60043 fn _vshiftrins_v4i16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t;
60044 }
60045 unsafe { _vshiftrins_v4i16(a, b, const { int16x4_t([-N as i16; 4]) }) }
60046}
60047#[doc = "Shift Right and Insert (immediate)"]
60048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v4i32)"]
60049#[inline(always)]
60050#[target_feature(enable = "neon")]
60051#[cfg(target_arch = "arm")]
60052#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60053#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60054#[rustc_legacy_const_generics(2)]
60055fn vshiftrins_v4i32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
60056 unsafe extern "unadjusted" {
60057 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i32")]
60058 fn _vshiftrins_v4i32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t;
60059 }
60060 unsafe { _vshiftrins_v4i32(a, b, const { int32x4_t([-N; 4]) }) }
60061}
60062#[doc = "Shift Right and Insert (immediate)"]
60063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v8i16)"]
60064#[inline(always)]
60065#[target_feature(enable = "neon")]
60066#[cfg(target_arch = "arm")]
60067#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60068#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60069#[rustc_legacy_const_generics(2)]
60070fn vshiftrins_v8i16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
60071 unsafe extern "unadjusted" {
60072 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i16")]
60073 fn _vshiftrins_v8i16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t;
60074 }
60075 unsafe { _vshiftrins_v8i16(a, b, const { int16x8_t([-N as i16; 8]) }) }
60076}
60077#[doc = "Shift Right and Insert (immediate)"]
60078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v8i8)"]
60079#[inline(always)]
60080#[target_feature(enable = "neon")]
60081#[cfg(target_arch = "arm")]
60082#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60083#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
60084#[rustc_legacy_const_generics(2)]
60085fn vshiftrins_v8i8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
60086 unsafe extern "unadjusted" {
60087 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i8")]
60088 fn _vshiftrins_v8i8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
60089 }
60090 unsafe { _vshiftrins_v8i8(a, b, const { int8x8_t([-N as i8; 8]) }) }
60091}
60092#[doc = "Shift left"]
60093#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s8)"]
60094#[inline(always)]
60095#[target_feature(enable = "neon")]
60096#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60097#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60098#[cfg_attr(
60099 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60100 assert_instr(shl, N = 2)
60101)]
60102#[rustc_legacy_const_generics(1)]
60103#[cfg_attr(
60104 not(target_arch = "arm"),
60105 stable(feature = "neon_intrinsics", since = "1.59.0")
60106)]
60107#[cfg_attr(
60108 target_arch = "arm",
60109 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60110)]
60111pub fn vshl_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
60112 static_assert_uimm_bits!(N, 3);
60113 unsafe { simd_shl(a, vdup_n_s8(N as _)) }
60114}
60115#[doc = "Shift left"]
60116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s8)"]
60117#[inline(always)]
60118#[target_feature(enable = "neon")]
60119#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60120#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60121#[cfg_attr(
60122 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60123 assert_instr(shl, N = 2)
60124)]
60125#[rustc_legacy_const_generics(1)]
60126#[cfg_attr(
60127 not(target_arch = "arm"),
60128 stable(feature = "neon_intrinsics", since = "1.59.0")
60129)]
60130#[cfg_attr(
60131 target_arch = "arm",
60132 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60133)]
60134pub fn vshlq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
60135 static_assert_uimm_bits!(N, 3);
60136 unsafe { simd_shl(a, vdupq_n_s8(N as _)) }
60137}
60138#[doc = "Shift left"]
60139#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s16)"]
60140#[inline(always)]
60141#[target_feature(enable = "neon")]
60142#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60143#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60144#[cfg_attr(
60145 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60146 assert_instr(shl, N = 2)
60147)]
60148#[rustc_legacy_const_generics(1)]
60149#[cfg_attr(
60150 not(target_arch = "arm"),
60151 stable(feature = "neon_intrinsics", since = "1.59.0")
60152)]
60153#[cfg_attr(
60154 target_arch = "arm",
60155 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60156)]
60157pub fn vshl_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
60158 static_assert_uimm_bits!(N, 4);
60159 unsafe { simd_shl(a, vdup_n_s16(N as _)) }
60160}
60161#[doc = "Shift left"]
60162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s16)"]
60163#[inline(always)]
60164#[target_feature(enable = "neon")]
60165#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60166#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60167#[cfg_attr(
60168 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60169 assert_instr(shl, N = 2)
60170)]
60171#[rustc_legacy_const_generics(1)]
60172#[cfg_attr(
60173 not(target_arch = "arm"),
60174 stable(feature = "neon_intrinsics", since = "1.59.0")
60175)]
60176#[cfg_attr(
60177 target_arch = "arm",
60178 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60179)]
60180pub fn vshlq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
60181 static_assert_uimm_bits!(N, 4);
60182 unsafe { simd_shl(a, vdupq_n_s16(N as _)) }
60183}
60184#[doc = "Shift left"]
60185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s32)"]
60186#[inline(always)]
60187#[target_feature(enable = "neon")]
60188#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60189#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60190#[cfg_attr(
60191 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60192 assert_instr(shl, N = 2)
60193)]
60194#[rustc_legacy_const_generics(1)]
60195#[cfg_attr(
60196 not(target_arch = "arm"),
60197 stable(feature = "neon_intrinsics", since = "1.59.0")
60198)]
60199#[cfg_attr(
60200 target_arch = "arm",
60201 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60202)]
60203pub fn vshl_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
60204 static_assert_uimm_bits!(N, 5);
60205 unsafe { simd_shl(a, vdup_n_s32(N as _)) }
60206}
60207#[doc = "Shift left"]
60208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s32)"]
60209#[inline(always)]
60210#[target_feature(enable = "neon")]
60211#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60212#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60213#[cfg_attr(
60214 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60215 assert_instr(shl, N = 2)
60216)]
60217#[rustc_legacy_const_generics(1)]
60218#[cfg_attr(
60219 not(target_arch = "arm"),
60220 stable(feature = "neon_intrinsics", since = "1.59.0")
60221)]
60222#[cfg_attr(
60223 target_arch = "arm",
60224 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60225)]
60226pub fn vshlq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
60227 static_assert_uimm_bits!(N, 5);
60228 unsafe { simd_shl(a, vdupq_n_s32(N as _)) }
60229}
60230#[doc = "Shift left"]
60231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s64)"]
60232#[inline(always)]
60233#[target_feature(enable = "neon")]
60234#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60235#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60236#[cfg_attr(
60237 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60238 assert_instr(shl, N = 2)
60239)]
60240#[rustc_legacy_const_generics(1)]
60241#[cfg_attr(
60242 not(target_arch = "arm"),
60243 stable(feature = "neon_intrinsics", since = "1.59.0")
60244)]
60245#[cfg_attr(
60246 target_arch = "arm",
60247 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60248)]
60249pub fn vshl_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
60250 static_assert_uimm_bits!(N, 6);
60251 unsafe { simd_shl(a, vdup_n_s64(N as _)) }
60252}
60253#[doc = "Shift left"]
60254#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s64)"]
60255#[inline(always)]
60256#[target_feature(enable = "neon")]
60257#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60258#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60259#[cfg_attr(
60260 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60261 assert_instr(shl, N = 2)
60262)]
60263#[rustc_legacy_const_generics(1)]
60264#[cfg_attr(
60265 not(target_arch = "arm"),
60266 stable(feature = "neon_intrinsics", since = "1.59.0")
60267)]
60268#[cfg_attr(
60269 target_arch = "arm",
60270 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60271)]
60272pub fn vshlq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
60273 static_assert_uimm_bits!(N, 6);
60274 unsafe { simd_shl(a, vdupq_n_s64(N as _)) }
60275}
60276#[doc = "Shift left"]
60277#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u8)"]
60278#[inline(always)]
60279#[target_feature(enable = "neon")]
60280#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60281#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60282#[cfg_attr(
60283 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60284 assert_instr(shl, N = 2)
60285)]
60286#[rustc_legacy_const_generics(1)]
60287#[cfg_attr(
60288 not(target_arch = "arm"),
60289 stable(feature = "neon_intrinsics", since = "1.59.0")
60290)]
60291#[cfg_attr(
60292 target_arch = "arm",
60293 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60294)]
60295pub fn vshl_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
60296 static_assert_uimm_bits!(N, 3);
60297 unsafe { simd_shl(a, vdup_n_u8(N as _)) }
60298}
60299#[doc = "Shift left"]
60300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u8)"]
60301#[inline(always)]
60302#[target_feature(enable = "neon")]
60303#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60304#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60305#[cfg_attr(
60306 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60307 assert_instr(shl, N = 2)
60308)]
60309#[rustc_legacy_const_generics(1)]
60310#[cfg_attr(
60311 not(target_arch = "arm"),
60312 stable(feature = "neon_intrinsics", since = "1.59.0")
60313)]
60314#[cfg_attr(
60315 target_arch = "arm",
60316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60317)]
60318pub fn vshlq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
60319 static_assert_uimm_bits!(N, 3);
60320 unsafe { simd_shl(a, vdupq_n_u8(N as _)) }
60321}
60322#[doc = "Shift left"]
60323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u16)"]
60324#[inline(always)]
60325#[target_feature(enable = "neon")]
60326#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60327#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60328#[cfg_attr(
60329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60330 assert_instr(shl, N = 2)
60331)]
60332#[rustc_legacy_const_generics(1)]
60333#[cfg_attr(
60334 not(target_arch = "arm"),
60335 stable(feature = "neon_intrinsics", since = "1.59.0")
60336)]
60337#[cfg_attr(
60338 target_arch = "arm",
60339 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60340)]
60341pub fn vshl_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
60342 static_assert_uimm_bits!(N, 4);
60343 unsafe { simd_shl(a, vdup_n_u16(N as _)) }
60344}
60345#[doc = "Shift left"]
60346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u16)"]
60347#[inline(always)]
60348#[target_feature(enable = "neon")]
60349#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60350#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60351#[cfg_attr(
60352 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60353 assert_instr(shl, N = 2)
60354)]
60355#[rustc_legacy_const_generics(1)]
60356#[cfg_attr(
60357 not(target_arch = "arm"),
60358 stable(feature = "neon_intrinsics", since = "1.59.0")
60359)]
60360#[cfg_attr(
60361 target_arch = "arm",
60362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60363)]
60364pub fn vshlq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
60365 static_assert_uimm_bits!(N, 4);
60366 unsafe { simd_shl(a, vdupq_n_u16(N as _)) }
60367}
60368#[doc = "Shift left"]
60369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u32)"]
60370#[inline(always)]
60371#[target_feature(enable = "neon")]
60372#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60373#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60374#[cfg_attr(
60375 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60376 assert_instr(shl, N = 2)
60377)]
60378#[rustc_legacy_const_generics(1)]
60379#[cfg_attr(
60380 not(target_arch = "arm"),
60381 stable(feature = "neon_intrinsics", since = "1.59.0")
60382)]
60383#[cfg_attr(
60384 target_arch = "arm",
60385 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60386)]
60387pub fn vshl_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
60388 static_assert_uimm_bits!(N, 5);
60389 unsafe { simd_shl(a, vdup_n_u32(N as _)) }
60390}
60391#[doc = "Shift left"]
60392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u32)"]
60393#[inline(always)]
60394#[target_feature(enable = "neon")]
60395#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60396#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60397#[cfg_attr(
60398 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60399 assert_instr(shl, N = 2)
60400)]
60401#[rustc_legacy_const_generics(1)]
60402#[cfg_attr(
60403 not(target_arch = "arm"),
60404 stable(feature = "neon_intrinsics", since = "1.59.0")
60405)]
60406#[cfg_attr(
60407 target_arch = "arm",
60408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60409)]
60410pub fn vshlq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
60411 static_assert_uimm_bits!(N, 5);
60412 unsafe { simd_shl(a, vdupq_n_u32(N as _)) }
60413}
60414#[doc = "Shift left"]
60415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u64)"]
60416#[inline(always)]
60417#[target_feature(enable = "neon")]
60418#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60419#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60420#[cfg_attr(
60421 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60422 assert_instr(shl, N = 2)
60423)]
60424#[rustc_legacy_const_generics(1)]
60425#[cfg_attr(
60426 not(target_arch = "arm"),
60427 stable(feature = "neon_intrinsics", since = "1.59.0")
60428)]
60429#[cfg_attr(
60430 target_arch = "arm",
60431 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60432)]
60433pub fn vshl_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
60434 static_assert_uimm_bits!(N, 6);
60435 unsafe { simd_shl(a, vdup_n_u64(N as _)) }
60436}
60437#[doc = "Shift left"]
60438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u64)"]
60439#[inline(always)]
60440#[target_feature(enable = "neon")]
60441#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60442#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60443#[cfg_attr(
60444 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60445 assert_instr(shl, N = 2)
60446)]
60447#[rustc_legacy_const_generics(1)]
60448#[cfg_attr(
60449 not(target_arch = "arm"),
60450 stable(feature = "neon_intrinsics", since = "1.59.0")
60451)]
60452#[cfg_attr(
60453 target_arch = "arm",
60454 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60455)]
60456pub fn vshlq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
60457 static_assert_uimm_bits!(N, 6);
60458 unsafe { simd_shl(a, vdupq_n_u64(N as _)) }
60459}
60460#[doc = "Signed Shift left"]
60461#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s8)"]
60462#[inline(always)]
60463#[target_feature(enable = "neon")]
60464#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60465#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60466#[cfg_attr(
60467 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60468 assert_instr(sshl)
60469)]
60470#[cfg_attr(
60471 not(target_arch = "arm"),
60472 stable(feature = "neon_intrinsics", since = "1.59.0")
60473)]
60474#[cfg_attr(
60475 target_arch = "arm",
60476 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60477)]
60478pub fn vshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
60479 unsafe extern "unadjusted" {
60480 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v8i8")]
60481 #[cfg_attr(
60482 any(target_arch = "aarch64", target_arch = "arm64ec"),
60483 link_name = "llvm.aarch64.neon.sshl.v8i8"
60484 )]
60485 fn _vshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
60486 }
60487 unsafe { _vshl_s8(a, b) }
60488}
60489#[doc = "Signed Shift left"]
60490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s8)"]
60491#[inline(always)]
60492#[target_feature(enable = "neon")]
60493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60494#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60495#[cfg_attr(
60496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60497 assert_instr(sshl)
60498)]
60499#[cfg_attr(
60500 not(target_arch = "arm"),
60501 stable(feature = "neon_intrinsics", since = "1.59.0")
60502)]
60503#[cfg_attr(
60504 target_arch = "arm",
60505 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60506)]
60507pub fn vshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
60508 unsafe extern "unadjusted" {
60509 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v16i8")]
60510 #[cfg_attr(
60511 any(target_arch = "aarch64", target_arch = "arm64ec"),
60512 link_name = "llvm.aarch64.neon.sshl.v16i8"
60513 )]
60514 fn _vshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
60515 }
60516 unsafe { _vshlq_s8(a, b) }
60517}
60518#[doc = "Signed Shift left"]
60519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s16)"]
60520#[inline(always)]
60521#[target_feature(enable = "neon")]
60522#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60523#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60524#[cfg_attr(
60525 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60526 assert_instr(sshl)
60527)]
60528#[cfg_attr(
60529 not(target_arch = "arm"),
60530 stable(feature = "neon_intrinsics", since = "1.59.0")
60531)]
60532#[cfg_attr(
60533 target_arch = "arm",
60534 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60535)]
60536pub fn vshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
60537 unsafe extern "unadjusted" {
60538 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v4i16")]
60539 #[cfg_attr(
60540 any(target_arch = "aarch64", target_arch = "arm64ec"),
60541 link_name = "llvm.aarch64.neon.sshl.v4i16"
60542 )]
60543 fn _vshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
60544 }
60545 unsafe { _vshl_s16(a, b) }
60546}
60547#[doc = "Signed Shift left"]
60548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s16)"]
60549#[inline(always)]
60550#[target_feature(enable = "neon")]
60551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60553#[cfg_attr(
60554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60555 assert_instr(sshl)
60556)]
60557#[cfg_attr(
60558 not(target_arch = "arm"),
60559 stable(feature = "neon_intrinsics", since = "1.59.0")
60560)]
60561#[cfg_attr(
60562 target_arch = "arm",
60563 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60564)]
60565pub fn vshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
60566 unsafe extern "unadjusted" {
60567 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v8i16")]
60568 #[cfg_attr(
60569 any(target_arch = "aarch64", target_arch = "arm64ec"),
60570 link_name = "llvm.aarch64.neon.sshl.v8i16"
60571 )]
60572 fn _vshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
60573 }
60574 unsafe { _vshlq_s16(a, b) }
60575}
60576#[doc = "Signed Shift left"]
60577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s32)"]
60578#[inline(always)]
60579#[target_feature(enable = "neon")]
60580#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60581#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60582#[cfg_attr(
60583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60584 assert_instr(sshl)
60585)]
60586#[cfg_attr(
60587 not(target_arch = "arm"),
60588 stable(feature = "neon_intrinsics", since = "1.59.0")
60589)]
60590#[cfg_attr(
60591 target_arch = "arm",
60592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60593)]
60594pub fn vshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
60595 unsafe extern "unadjusted" {
60596 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v2i32")]
60597 #[cfg_attr(
60598 any(target_arch = "aarch64", target_arch = "arm64ec"),
60599 link_name = "llvm.aarch64.neon.sshl.v2i32"
60600 )]
60601 fn _vshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
60602 }
60603 unsafe { _vshl_s32(a, b) }
60604}
60605#[doc = "Signed Shift left"]
60606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s32)"]
60607#[inline(always)]
60608#[target_feature(enable = "neon")]
60609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60611#[cfg_attr(
60612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60613 assert_instr(sshl)
60614)]
60615#[cfg_attr(
60616 not(target_arch = "arm"),
60617 stable(feature = "neon_intrinsics", since = "1.59.0")
60618)]
60619#[cfg_attr(
60620 target_arch = "arm",
60621 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60622)]
60623pub fn vshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
60624 unsafe extern "unadjusted" {
60625 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v4i32")]
60626 #[cfg_attr(
60627 any(target_arch = "aarch64", target_arch = "arm64ec"),
60628 link_name = "llvm.aarch64.neon.sshl.v4i32"
60629 )]
60630 fn _vshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
60631 }
60632 unsafe { _vshlq_s32(a, b) }
60633}
60634#[doc = "Signed Shift left"]
60635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s64)"]
60636#[inline(always)]
60637#[target_feature(enable = "neon")]
60638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60640#[cfg_attr(
60641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60642 assert_instr(sshl)
60643)]
60644#[cfg_attr(
60645 not(target_arch = "arm"),
60646 stable(feature = "neon_intrinsics", since = "1.59.0")
60647)]
60648#[cfg_attr(
60649 target_arch = "arm",
60650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60651)]
60652pub fn vshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
60653 unsafe extern "unadjusted" {
60654 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v1i64")]
60655 #[cfg_attr(
60656 any(target_arch = "aarch64", target_arch = "arm64ec"),
60657 link_name = "llvm.aarch64.neon.sshl.v1i64"
60658 )]
60659 fn _vshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
60660 }
60661 unsafe { _vshl_s64(a, b) }
60662}
60663#[doc = "Signed Shift left"]
60664#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s64)"]
60665#[inline(always)]
60666#[target_feature(enable = "neon")]
60667#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60668#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60669#[cfg_attr(
60670 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60671 assert_instr(sshl)
60672)]
60673#[cfg_attr(
60674 not(target_arch = "arm"),
60675 stable(feature = "neon_intrinsics", since = "1.59.0")
60676)]
60677#[cfg_attr(
60678 target_arch = "arm",
60679 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60680)]
60681pub fn vshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
60682 unsafe extern "unadjusted" {
60683 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v2i64")]
60684 #[cfg_attr(
60685 any(target_arch = "aarch64", target_arch = "arm64ec"),
60686 link_name = "llvm.aarch64.neon.sshl.v2i64"
60687 )]
60688 fn _vshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
60689 }
60690 unsafe { _vshlq_s64(a, b) }
60691}
60692#[doc = "Unsigned Shift left"]
60693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u8)"]
60694#[inline(always)]
60695#[target_feature(enable = "neon")]
60696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60697#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60698#[cfg_attr(
60699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60700 assert_instr(ushl)
60701)]
60702#[cfg_attr(
60703 not(target_arch = "arm"),
60704 stable(feature = "neon_intrinsics", since = "1.59.0")
60705)]
60706#[cfg_attr(
60707 target_arch = "arm",
60708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60709)]
60710pub fn vshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
60711 unsafe extern "unadjusted" {
60712 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v8i8")]
60713 #[cfg_attr(
60714 any(target_arch = "aarch64", target_arch = "arm64ec"),
60715 link_name = "llvm.aarch64.neon.ushl.v8i8"
60716 )]
60717 fn _vshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
60718 }
60719 unsafe { _vshl_u8(a, b) }
60720}
60721#[doc = "Unsigned Shift left"]
60722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u8)"]
60723#[inline(always)]
60724#[target_feature(enable = "neon")]
60725#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60726#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60727#[cfg_attr(
60728 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60729 assert_instr(ushl)
60730)]
60731#[cfg_attr(
60732 not(target_arch = "arm"),
60733 stable(feature = "neon_intrinsics", since = "1.59.0")
60734)]
60735#[cfg_attr(
60736 target_arch = "arm",
60737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60738)]
60739pub fn vshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
60740 unsafe extern "unadjusted" {
60741 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v16i8")]
60742 #[cfg_attr(
60743 any(target_arch = "aarch64", target_arch = "arm64ec"),
60744 link_name = "llvm.aarch64.neon.ushl.v16i8"
60745 )]
60746 fn _vshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
60747 }
60748 unsafe { _vshlq_u8(a, b) }
60749}
60750#[doc = "Unsigned Shift left"]
60751#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u16)"]
60752#[inline(always)]
60753#[target_feature(enable = "neon")]
60754#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60755#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60756#[cfg_attr(
60757 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60758 assert_instr(ushl)
60759)]
60760#[cfg_attr(
60761 not(target_arch = "arm"),
60762 stable(feature = "neon_intrinsics", since = "1.59.0")
60763)]
60764#[cfg_attr(
60765 target_arch = "arm",
60766 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60767)]
60768pub fn vshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
60769 unsafe extern "unadjusted" {
60770 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v4i16")]
60771 #[cfg_attr(
60772 any(target_arch = "aarch64", target_arch = "arm64ec"),
60773 link_name = "llvm.aarch64.neon.ushl.v4i16"
60774 )]
60775 fn _vshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
60776 }
60777 unsafe { _vshl_u16(a, b) }
60778}
60779#[doc = "Unsigned Shift left"]
60780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u16)"]
60781#[inline(always)]
60782#[target_feature(enable = "neon")]
60783#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60784#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60785#[cfg_attr(
60786 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60787 assert_instr(ushl)
60788)]
60789#[cfg_attr(
60790 not(target_arch = "arm"),
60791 stable(feature = "neon_intrinsics", since = "1.59.0")
60792)]
60793#[cfg_attr(
60794 target_arch = "arm",
60795 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60796)]
60797pub fn vshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
60798 unsafe extern "unadjusted" {
60799 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v8i16")]
60800 #[cfg_attr(
60801 any(target_arch = "aarch64", target_arch = "arm64ec"),
60802 link_name = "llvm.aarch64.neon.ushl.v8i16"
60803 )]
60804 fn _vshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
60805 }
60806 unsafe { _vshlq_u16(a, b) }
60807}
60808#[doc = "Unsigned Shift left"]
60809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u32)"]
60810#[inline(always)]
60811#[target_feature(enable = "neon")]
60812#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60813#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60814#[cfg_attr(
60815 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60816 assert_instr(ushl)
60817)]
60818#[cfg_attr(
60819 not(target_arch = "arm"),
60820 stable(feature = "neon_intrinsics", since = "1.59.0")
60821)]
60822#[cfg_attr(
60823 target_arch = "arm",
60824 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60825)]
60826pub fn vshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
60827 unsafe extern "unadjusted" {
60828 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v2i32")]
60829 #[cfg_attr(
60830 any(target_arch = "aarch64", target_arch = "arm64ec"),
60831 link_name = "llvm.aarch64.neon.ushl.v2i32"
60832 )]
60833 fn _vshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
60834 }
60835 unsafe { _vshl_u32(a, b) }
60836}
60837#[doc = "Unsigned Shift left"]
60838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u32)"]
60839#[inline(always)]
60840#[target_feature(enable = "neon")]
60841#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60842#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60843#[cfg_attr(
60844 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60845 assert_instr(ushl)
60846)]
60847#[cfg_attr(
60848 not(target_arch = "arm"),
60849 stable(feature = "neon_intrinsics", since = "1.59.0")
60850)]
60851#[cfg_attr(
60852 target_arch = "arm",
60853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60854)]
60855pub fn vshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
60856 unsafe extern "unadjusted" {
60857 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v4i32")]
60858 #[cfg_attr(
60859 any(target_arch = "aarch64", target_arch = "arm64ec"),
60860 link_name = "llvm.aarch64.neon.ushl.v4i32"
60861 )]
60862 fn _vshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
60863 }
60864 unsafe { _vshlq_u32(a, b) }
60865}
60866#[doc = "Unsigned Shift left"]
60867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u64)"]
60868#[inline(always)]
60869#[target_feature(enable = "neon")]
60870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60871#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60872#[cfg_attr(
60873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60874 assert_instr(ushl)
60875)]
60876#[cfg_attr(
60877 not(target_arch = "arm"),
60878 stable(feature = "neon_intrinsics", since = "1.59.0")
60879)]
60880#[cfg_attr(
60881 target_arch = "arm",
60882 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60883)]
60884pub fn vshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
60885 unsafe extern "unadjusted" {
60886 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v1i64")]
60887 #[cfg_attr(
60888 any(target_arch = "aarch64", target_arch = "arm64ec"),
60889 link_name = "llvm.aarch64.neon.ushl.v1i64"
60890 )]
60891 fn _vshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
60892 }
60893 unsafe { _vshl_u64(a, b) }
60894}
60895#[doc = "Unsigned Shift left"]
60896#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u64)"]
60897#[inline(always)]
60898#[target_feature(enable = "neon")]
60899#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60900#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60901#[cfg_attr(
60902 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60903 assert_instr(ushl)
60904)]
60905#[cfg_attr(
60906 not(target_arch = "arm"),
60907 stable(feature = "neon_intrinsics", since = "1.59.0")
60908)]
60909#[cfg_attr(
60910 target_arch = "arm",
60911 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60912)]
60913pub fn vshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
60914 unsafe extern "unadjusted" {
60915 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v2i64")]
60916 #[cfg_attr(
60917 any(target_arch = "aarch64", target_arch = "arm64ec"),
60918 link_name = "llvm.aarch64.neon.ushl.v2i64"
60919 )]
60920 fn _vshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
60921 }
60922 unsafe { _vshlq_u64(a, b) }
60923}
60924#[doc = "Signed shift left long"]
60925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s16)"]
60926#[inline(always)]
60927#[target_feature(enable = "neon")]
60928#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60929#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s16", N = 2))]
60930#[cfg_attr(
60931 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60932 assert_instr(sshll, N = 2)
60933)]
60934#[rustc_legacy_const_generics(1)]
60935#[cfg_attr(
60936 not(target_arch = "arm"),
60937 stable(feature = "neon_intrinsics", since = "1.59.0")
60938)]
60939#[cfg_attr(
60940 target_arch = "arm",
60941 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60942)]
60943pub fn vshll_n_s16<const N: i32>(a: int16x4_t) -> int32x4_t {
60944 static_assert!(N >= 0 && N <= 16);
60945 unsafe { simd_shl(simd_cast(a), vdupq_n_s32(N as _)) }
60946}
60947#[doc = "Signed shift left long"]
60948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s32)"]
60949#[inline(always)]
60950#[target_feature(enable = "neon")]
60951#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60952#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s32", N = 2))]
60953#[cfg_attr(
60954 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60955 assert_instr(sshll, N = 2)
60956)]
60957#[rustc_legacy_const_generics(1)]
60958#[cfg_attr(
60959 not(target_arch = "arm"),
60960 stable(feature = "neon_intrinsics", since = "1.59.0")
60961)]
60962#[cfg_attr(
60963 target_arch = "arm",
60964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60965)]
60966pub fn vshll_n_s32<const N: i32>(a: int32x2_t) -> int64x2_t {
60967 static_assert!(N >= 0 && N <= 32);
60968 unsafe { simd_shl(simd_cast(a), vdupq_n_s64(N as _)) }
60969}
60970#[doc = "Signed shift left long"]
60971#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s8)"]
60972#[inline(always)]
60973#[target_feature(enable = "neon")]
60974#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60975#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s8", N = 2))]
60976#[cfg_attr(
60977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60978 assert_instr(sshll, N = 2)
60979)]
60980#[rustc_legacy_const_generics(1)]
60981#[cfg_attr(
60982 not(target_arch = "arm"),
60983 stable(feature = "neon_intrinsics", since = "1.59.0")
60984)]
60985#[cfg_attr(
60986 target_arch = "arm",
60987 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60988)]
60989pub fn vshll_n_s8<const N: i32>(a: int8x8_t) -> int16x8_t {
60990 static_assert!(N >= 0 && N <= 8);
60991 unsafe { simd_shl(simd_cast(a), vdupq_n_s16(N as _)) }
60992}
60993#[doc = "Signed shift left long"]
60994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u16)"]
60995#[inline(always)]
60996#[target_feature(enable = "neon")]
60997#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60998#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u16", N = 2))]
60999#[cfg_attr(
61000 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61001 assert_instr(ushll, N = 2)
61002)]
61003#[rustc_legacy_const_generics(1)]
61004#[cfg_attr(
61005 not(target_arch = "arm"),
61006 stable(feature = "neon_intrinsics", since = "1.59.0")
61007)]
61008#[cfg_attr(
61009 target_arch = "arm",
61010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61011)]
61012pub fn vshll_n_u16<const N: i32>(a: uint16x4_t) -> uint32x4_t {
61013 static_assert!(N >= 0 && N <= 16);
61014 unsafe { simd_shl(simd_cast(a), vdupq_n_u32(N as _)) }
61015}
61016#[doc = "Signed shift left long"]
61017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u32)"]
61018#[inline(always)]
61019#[target_feature(enable = "neon")]
61020#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61021#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u32", N = 2))]
61022#[cfg_attr(
61023 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61024 assert_instr(ushll, N = 2)
61025)]
61026#[rustc_legacy_const_generics(1)]
61027#[cfg_attr(
61028 not(target_arch = "arm"),
61029 stable(feature = "neon_intrinsics", since = "1.59.0")
61030)]
61031#[cfg_attr(
61032 target_arch = "arm",
61033 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61034)]
61035pub fn vshll_n_u32<const N: i32>(a: uint32x2_t) -> uint64x2_t {
61036 static_assert!(N >= 0 && N <= 32);
61037 unsafe { simd_shl(simd_cast(a), vdupq_n_u64(N as _)) }
61038}
61039#[doc = "Signed shift left long"]
61040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u8)"]
61041#[inline(always)]
61042#[target_feature(enable = "neon")]
61043#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61044#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u8", N = 2))]
61045#[cfg_attr(
61046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61047 assert_instr(ushll, N = 2)
61048)]
61049#[rustc_legacy_const_generics(1)]
61050#[cfg_attr(
61051 not(target_arch = "arm"),
61052 stable(feature = "neon_intrinsics", since = "1.59.0")
61053)]
61054#[cfg_attr(
61055 target_arch = "arm",
61056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61057)]
61058pub fn vshll_n_u8<const N: i32>(a: uint8x8_t) -> uint16x8_t {
61059 static_assert!(N >= 0 && N <= 8);
61060 unsafe { simd_shl(simd_cast(a), vdupq_n_u16(N as _)) }
61061}
61062#[doc = "Shift right"]
61063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s8)"]
61064#[inline(always)]
61065#[target_feature(enable = "neon")]
61066#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61067#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s8", N = 2))]
61068#[cfg_attr(
61069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61070 assert_instr(sshr, N = 2)
61071)]
61072#[rustc_legacy_const_generics(1)]
61073#[cfg_attr(
61074 not(target_arch = "arm"),
61075 stable(feature = "neon_intrinsics", since = "1.59.0")
61076)]
61077#[cfg_attr(
61078 target_arch = "arm",
61079 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61080)]
61081pub fn vshr_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
61082 static_assert!(N >= 1 && N <= 8);
61083 let n: i32 = if N == 8 { 7 } else { N };
61084 unsafe { simd_shr(a, vdup_n_s8(n as _)) }
61085}
61086#[doc = "Shift right"]
61087#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s8)"]
61088#[inline(always)]
61089#[target_feature(enable = "neon")]
61090#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61091#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s8", N = 2))]
61092#[cfg_attr(
61093 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61094 assert_instr(sshr, N = 2)
61095)]
61096#[rustc_legacy_const_generics(1)]
61097#[cfg_attr(
61098 not(target_arch = "arm"),
61099 stable(feature = "neon_intrinsics", since = "1.59.0")
61100)]
61101#[cfg_attr(
61102 target_arch = "arm",
61103 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61104)]
61105pub fn vshrq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
61106 static_assert!(N >= 1 && N <= 8);
61107 let n: i32 = if N == 8 { 7 } else { N };
61108 unsafe { simd_shr(a, vdupq_n_s8(n as _)) }
61109}
61110#[doc = "Shift right"]
61111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s16)"]
61112#[inline(always)]
61113#[target_feature(enable = "neon")]
61114#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61115#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s16", N = 2))]
61116#[cfg_attr(
61117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61118 assert_instr(sshr, N = 2)
61119)]
61120#[rustc_legacy_const_generics(1)]
61121#[cfg_attr(
61122 not(target_arch = "arm"),
61123 stable(feature = "neon_intrinsics", since = "1.59.0")
61124)]
61125#[cfg_attr(
61126 target_arch = "arm",
61127 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61128)]
61129pub fn vshr_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
61130 static_assert!(N >= 1 && N <= 16);
61131 let n: i32 = if N == 16 { 15 } else { N };
61132 unsafe { simd_shr(a, vdup_n_s16(n as _)) }
61133}
61134#[doc = "Shift right"]
61135#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s16)"]
61136#[inline(always)]
61137#[target_feature(enable = "neon")]
61138#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61139#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s16", N = 2))]
61140#[cfg_attr(
61141 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61142 assert_instr(sshr, N = 2)
61143)]
61144#[rustc_legacy_const_generics(1)]
61145#[cfg_attr(
61146 not(target_arch = "arm"),
61147 stable(feature = "neon_intrinsics", since = "1.59.0")
61148)]
61149#[cfg_attr(
61150 target_arch = "arm",
61151 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61152)]
61153pub fn vshrq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
61154 static_assert!(N >= 1 && N <= 16);
61155 let n: i32 = if N == 16 { 15 } else { N };
61156 unsafe { simd_shr(a, vdupq_n_s16(n as _)) }
61157}
61158#[doc = "Shift right"]
61159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s32)"]
61160#[inline(always)]
61161#[target_feature(enable = "neon")]
61162#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61163#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s32", N = 2))]
61164#[cfg_attr(
61165 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61166 assert_instr(sshr, N = 2)
61167)]
61168#[rustc_legacy_const_generics(1)]
61169#[cfg_attr(
61170 not(target_arch = "arm"),
61171 stable(feature = "neon_intrinsics", since = "1.59.0")
61172)]
61173#[cfg_attr(
61174 target_arch = "arm",
61175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61176)]
61177pub fn vshr_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
61178 static_assert!(N >= 1 && N <= 32);
61179 let n: i32 = if N == 32 { 31 } else { N };
61180 unsafe { simd_shr(a, vdup_n_s32(n as _)) }
61181}
61182#[doc = "Shift right"]
61183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s32)"]
61184#[inline(always)]
61185#[target_feature(enable = "neon")]
61186#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61187#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s32", N = 2))]
61188#[cfg_attr(
61189 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61190 assert_instr(sshr, N = 2)
61191)]
61192#[rustc_legacy_const_generics(1)]
61193#[cfg_attr(
61194 not(target_arch = "arm"),
61195 stable(feature = "neon_intrinsics", since = "1.59.0")
61196)]
61197#[cfg_attr(
61198 target_arch = "arm",
61199 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61200)]
61201pub fn vshrq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
61202 static_assert!(N >= 1 && N <= 32);
61203 let n: i32 = if N == 32 { 31 } else { N };
61204 unsafe { simd_shr(a, vdupq_n_s32(n as _)) }
61205}
61206#[doc = "Shift right"]
61207#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s64)"]
61208#[inline(always)]
61209#[target_feature(enable = "neon")]
61210#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61211#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s64", N = 2))]
61212#[cfg_attr(
61213 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61214 assert_instr(sshr, N = 2)
61215)]
61216#[rustc_legacy_const_generics(1)]
61217#[cfg_attr(
61218 not(target_arch = "arm"),
61219 stable(feature = "neon_intrinsics", since = "1.59.0")
61220)]
61221#[cfg_attr(
61222 target_arch = "arm",
61223 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61224)]
61225pub fn vshr_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
61226 static_assert!(N >= 1 && N <= 64);
61227 let n: i32 = if N == 64 { 63 } else { N };
61228 unsafe { simd_shr(a, vdup_n_s64(n as _)) }
61229}
61230#[doc = "Shift right"]
61231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s64)"]
61232#[inline(always)]
61233#[target_feature(enable = "neon")]
61234#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61235#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s64", N = 2))]
61236#[cfg_attr(
61237 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61238 assert_instr(sshr, N = 2)
61239)]
61240#[rustc_legacy_const_generics(1)]
61241#[cfg_attr(
61242 not(target_arch = "arm"),
61243 stable(feature = "neon_intrinsics", since = "1.59.0")
61244)]
61245#[cfg_attr(
61246 target_arch = "arm",
61247 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61248)]
61249pub fn vshrq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
61250 static_assert!(N >= 1 && N <= 64);
61251 let n: i32 = if N == 64 { 63 } else { N };
61252 unsafe { simd_shr(a, vdupq_n_s64(n as _)) }
61253}
61254#[doc = "Shift right"]
61255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u8)"]
61256#[inline(always)]
61257#[target_feature(enable = "neon")]
61258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61259#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u8", N = 2))]
61260#[cfg_attr(
61261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61262 assert_instr(ushr, N = 2)
61263)]
61264#[rustc_legacy_const_generics(1)]
61265#[cfg_attr(
61266 not(target_arch = "arm"),
61267 stable(feature = "neon_intrinsics", since = "1.59.0")
61268)]
61269#[cfg_attr(
61270 target_arch = "arm",
61271 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61272)]
61273pub fn vshr_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
61274 static_assert!(N >= 1 && N <= 8);
61275 let n: i32 = if N == 8 {
61276 return vdup_n_u8(0);
61277 } else {
61278 N
61279 };
61280 unsafe { simd_shr(a, vdup_n_u8(n as _)) }
61281}
61282#[doc = "Shift right"]
61283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u8)"]
61284#[inline(always)]
61285#[target_feature(enable = "neon")]
61286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61287#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u8", N = 2))]
61288#[cfg_attr(
61289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61290 assert_instr(ushr, N = 2)
61291)]
61292#[rustc_legacy_const_generics(1)]
61293#[cfg_attr(
61294 not(target_arch = "arm"),
61295 stable(feature = "neon_intrinsics", since = "1.59.0")
61296)]
61297#[cfg_attr(
61298 target_arch = "arm",
61299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61300)]
61301pub fn vshrq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
61302 static_assert!(N >= 1 && N <= 8);
61303 let n: i32 = if N == 8 {
61304 return vdupq_n_u8(0);
61305 } else {
61306 N
61307 };
61308 unsafe { simd_shr(a, vdupq_n_u8(n as _)) }
61309}
61310#[doc = "Shift right"]
61311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u16)"]
61312#[inline(always)]
61313#[target_feature(enable = "neon")]
61314#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61315#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u16", N = 2))]
61316#[cfg_attr(
61317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61318 assert_instr(ushr, N = 2)
61319)]
61320#[rustc_legacy_const_generics(1)]
61321#[cfg_attr(
61322 not(target_arch = "arm"),
61323 stable(feature = "neon_intrinsics", since = "1.59.0")
61324)]
61325#[cfg_attr(
61326 target_arch = "arm",
61327 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61328)]
61329pub fn vshr_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
61330 static_assert!(N >= 1 && N <= 16);
61331 let n: i32 = if N == 16 {
61332 return vdup_n_u16(0);
61333 } else {
61334 N
61335 };
61336 unsafe { simd_shr(a, vdup_n_u16(n as _)) }
61337}
61338#[doc = "Shift right"]
61339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u16)"]
61340#[inline(always)]
61341#[target_feature(enable = "neon")]
61342#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61343#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u16", N = 2))]
61344#[cfg_attr(
61345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61346 assert_instr(ushr, N = 2)
61347)]
61348#[rustc_legacy_const_generics(1)]
61349#[cfg_attr(
61350 not(target_arch = "arm"),
61351 stable(feature = "neon_intrinsics", since = "1.59.0")
61352)]
61353#[cfg_attr(
61354 target_arch = "arm",
61355 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61356)]
61357pub fn vshrq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
61358 static_assert!(N >= 1 && N <= 16);
61359 let n: i32 = if N == 16 {
61360 return vdupq_n_u16(0);
61361 } else {
61362 N
61363 };
61364 unsafe { simd_shr(a, vdupq_n_u16(n as _)) }
61365}
61366#[doc = "Shift right"]
61367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u32)"]
61368#[inline(always)]
61369#[target_feature(enable = "neon")]
61370#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61371#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u32", N = 2))]
61372#[cfg_attr(
61373 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61374 assert_instr(ushr, N = 2)
61375)]
61376#[rustc_legacy_const_generics(1)]
61377#[cfg_attr(
61378 not(target_arch = "arm"),
61379 stable(feature = "neon_intrinsics", since = "1.59.0")
61380)]
61381#[cfg_attr(
61382 target_arch = "arm",
61383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61384)]
61385pub fn vshr_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
61386 static_assert!(N >= 1 && N <= 32);
61387 let n: i32 = if N == 32 {
61388 return vdup_n_u32(0);
61389 } else {
61390 N
61391 };
61392 unsafe { simd_shr(a, vdup_n_u32(n as _)) }
61393}
61394#[doc = "Shift right"]
61395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u32)"]
61396#[inline(always)]
61397#[target_feature(enable = "neon")]
61398#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61399#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u32", N = 2))]
61400#[cfg_attr(
61401 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61402 assert_instr(ushr, N = 2)
61403)]
61404#[rustc_legacy_const_generics(1)]
61405#[cfg_attr(
61406 not(target_arch = "arm"),
61407 stable(feature = "neon_intrinsics", since = "1.59.0")
61408)]
61409#[cfg_attr(
61410 target_arch = "arm",
61411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61412)]
61413pub fn vshrq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
61414 static_assert!(N >= 1 && N <= 32);
61415 let n: i32 = if N == 32 {
61416 return vdupq_n_u32(0);
61417 } else {
61418 N
61419 };
61420 unsafe { simd_shr(a, vdupq_n_u32(n as _)) }
61421}
61422#[doc = "Shift right"]
61423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u64)"]
61424#[inline(always)]
61425#[target_feature(enable = "neon")]
61426#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61427#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u64", N = 2))]
61428#[cfg_attr(
61429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61430 assert_instr(ushr, N = 2)
61431)]
61432#[rustc_legacy_const_generics(1)]
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 vshr_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
61442 static_assert!(N >= 1 && N <= 64);
61443 let n: i32 = if N == 64 {
61444 return vdup_n_u64(0);
61445 } else {
61446 N
61447 };
61448 unsafe { simd_shr(a, vdup_n_u64(n as _)) }
61449}
61450#[doc = "Shift right"]
61451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u64)"]
61452#[inline(always)]
61453#[target_feature(enable = "neon")]
61454#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61455#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u64", N = 2))]
61456#[cfg_attr(
61457 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61458 assert_instr(ushr, N = 2)
61459)]
61460#[rustc_legacy_const_generics(1)]
61461#[cfg_attr(
61462 not(target_arch = "arm"),
61463 stable(feature = "neon_intrinsics", since = "1.59.0")
61464)]
61465#[cfg_attr(
61466 target_arch = "arm",
61467 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61468)]
61469pub fn vshrq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
61470 static_assert!(N >= 1 && N <= 64);
61471 let n: i32 = if N == 64 {
61472 return vdupq_n_u64(0);
61473 } else {
61474 N
61475 };
61476 unsafe { simd_shr(a, vdupq_n_u64(n as _)) }
61477}
61478#[doc = "Shift right narrow"]
61479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s16)"]
61480#[inline(always)]
61481#[target_feature(enable = "neon")]
61482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61483#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i16", N = 2))]
61484#[cfg_attr(
61485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61486 assert_instr(shrn, N = 2)
61487)]
61488#[rustc_legacy_const_generics(1)]
61489#[cfg_attr(
61490 not(target_arch = "arm"),
61491 stable(feature = "neon_intrinsics", since = "1.59.0")
61492)]
61493#[cfg_attr(
61494 target_arch = "arm",
61495 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61496)]
61497pub fn vshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
61498 static_assert!(N >= 1 && N <= 8);
61499 unsafe { simd_cast(simd_shr(a, vdupq_n_s16(N as _))) }
61500}
61501#[doc = "Shift right narrow"]
61502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s32)"]
61503#[inline(always)]
61504#[target_feature(enable = "neon")]
61505#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61506#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i32", N = 2))]
61507#[cfg_attr(
61508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61509 assert_instr(shrn, N = 2)
61510)]
61511#[rustc_legacy_const_generics(1)]
61512#[cfg_attr(
61513 not(target_arch = "arm"),
61514 stable(feature = "neon_intrinsics", since = "1.59.0")
61515)]
61516#[cfg_attr(
61517 target_arch = "arm",
61518 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61519)]
61520pub fn vshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
61521 static_assert!(N >= 1 && N <= 16);
61522 unsafe { simd_cast(simd_shr(a, vdupq_n_s32(N as _))) }
61523}
61524#[doc = "Shift right narrow"]
61525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s64)"]
61526#[inline(always)]
61527#[target_feature(enable = "neon")]
61528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61529#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i64", N = 2))]
61530#[cfg_attr(
61531 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61532 assert_instr(shrn, N = 2)
61533)]
61534#[rustc_legacy_const_generics(1)]
61535#[cfg_attr(
61536 not(target_arch = "arm"),
61537 stable(feature = "neon_intrinsics", since = "1.59.0")
61538)]
61539#[cfg_attr(
61540 target_arch = "arm",
61541 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61542)]
61543pub fn vshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
61544 static_assert!(N >= 1 && N <= 32);
61545 unsafe { simd_cast(simd_shr(a, vdupq_n_s64(N as _))) }
61546}
61547#[doc = "Shift right narrow"]
61548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u16)"]
61549#[inline(always)]
61550#[target_feature(enable = "neon")]
61551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61552#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i16", N = 2))]
61553#[cfg_attr(
61554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61555 assert_instr(shrn, N = 2)
61556)]
61557#[rustc_legacy_const_generics(1)]
61558#[cfg_attr(
61559 not(target_arch = "arm"),
61560 stable(feature = "neon_intrinsics", since = "1.59.0")
61561)]
61562#[cfg_attr(
61563 target_arch = "arm",
61564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61565)]
61566pub fn vshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
61567 static_assert!(N >= 1 && N <= 8);
61568 unsafe { simd_cast(simd_shr(a, vdupq_n_u16(N as _))) }
61569}
61570#[doc = "Shift right narrow"]
61571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u32)"]
61572#[inline(always)]
61573#[target_feature(enable = "neon")]
61574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61575#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i32", N = 2))]
61576#[cfg_attr(
61577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61578 assert_instr(shrn, N = 2)
61579)]
61580#[rustc_legacy_const_generics(1)]
61581#[cfg_attr(
61582 not(target_arch = "arm"),
61583 stable(feature = "neon_intrinsics", since = "1.59.0")
61584)]
61585#[cfg_attr(
61586 target_arch = "arm",
61587 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61588)]
61589pub fn vshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
61590 static_assert!(N >= 1 && N <= 16);
61591 unsafe { simd_cast(simd_shr(a, vdupq_n_u32(N as _))) }
61592}
61593#[doc = "Shift right narrow"]
61594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u64)"]
61595#[inline(always)]
61596#[target_feature(enable = "neon")]
61597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61598#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i64", N = 2))]
61599#[cfg_attr(
61600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61601 assert_instr(shrn, N = 2)
61602)]
61603#[rustc_legacy_const_generics(1)]
61604#[cfg_attr(
61605 not(target_arch = "arm"),
61606 stable(feature = "neon_intrinsics", since = "1.59.0")
61607)]
61608#[cfg_attr(
61609 target_arch = "arm",
61610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61611)]
61612pub fn vshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
61613 static_assert!(N >= 1 && N <= 32);
61614 unsafe { simd_cast(simd_shr(a, vdupq_n_u64(N as _))) }
61615}
61616#[doc = "Shift Left and Insert (immediate)"]
61617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s8)"]
61618#[inline(always)]
61619#[cfg(target_arch = "arm")]
61620#[target_feature(enable = "neon,v7")]
61621#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61622#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61623#[rustc_legacy_const_generics(2)]
61624pub fn vsli_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
61625 static_assert_uimm_bits!(N, 3);
61626 vshiftlins_v8i8::<N>(a, b)
61627}
61628#[doc = "Shift Left and Insert (immediate)"]
61629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s8)"]
61630#[inline(always)]
61631#[cfg(target_arch = "arm")]
61632#[target_feature(enable = "neon,v7")]
61633#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61634#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61635#[rustc_legacy_const_generics(2)]
61636pub fn vsliq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
61637 static_assert_uimm_bits!(N, 3);
61638 vshiftlins_v16i8::<N>(a, b)
61639}
61640#[doc = "Shift Left and Insert (immediate)"]
61641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s16)"]
61642#[inline(always)]
61643#[cfg(target_arch = "arm")]
61644#[target_feature(enable = "neon,v7")]
61645#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61646#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61647#[rustc_legacy_const_generics(2)]
61648pub fn vsli_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
61649 static_assert_uimm_bits!(N, 4);
61650 vshiftlins_v4i16::<N>(a, b)
61651}
61652#[doc = "Shift Left and Insert (immediate)"]
61653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s16)"]
61654#[inline(always)]
61655#[cfg(target_arch = "arm")]
61656#[target_feature(enable = "neon,v7")]
61657#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61658#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61659#[rustc_legacy_const_generics(2)]
61660pub fn vsliq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
61661 static_assert_uimm_bits!(N, 4);
61662 vshiftlins_v8i16::<N>(a, b)
61663}
61664#[doc = "Shift Left and Insert (immediate)"]
61665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s32)"]
61666#[inline(always)]
61667#[cfg(target_arch = "arm")]
61668#[target_feature(enable = "neon,v7")]
61669#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61670#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
61671#[rustc_legacy_const_generics(2)]
61672pub fn vsli_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
61673 static_assert!(N >= 0 && N <= 31);
61674 vshiftlins_v2i32::<N>(a, b)
61675}
61676#[doc = "Shift Left and Insert (immediate)"]
61677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s32)"]
61678#[inline(always)]
61679#[cfg(target_arch = "arm")]
61680#[target_feature(enable = "neon,v7")]
61681#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61682#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
61683#[rustc_legacy_const_generics(2)]
61684pub fn vsliq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
61685 static_assert!(N >= 0 && N <= 31);
61686 vshiftlins_v4i32::<N>(a, b)
61687}
61688#[doc = "Shift Left and Insert (immediate)"]
61689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s64)"]
61690#[inline(always)]
61691#[cfg(target_arch = "arm")]
61692#[target_feature(enable = "neon,v7")]
61693#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61694#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
61695#[rustc_legacy_const_generics(2)]
61696pub fn vsli_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
61697 static_assert!(N >= 0 && N <= 63);
61698 vshiftlins_v1i64::<N>(a, b)
61699}
61700#[doc = "Shift Left and Insert (immediate)"]
61701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s64)"]
61702#[inline(always)]
61703#[cfg(target_arch = "arm")]
61704#[target_feature(enable = "neon,v7")]
61705#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61706#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
61707#[rustc_legacy_const_generics(2)]
61708pub fn vsliq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
61709 static_assert!(N >= 0 && N <= 63);
61710 vshiftlins_v2i64::<N>(a, b)
61711}
61712#[doc = "Shift Left and Insert (immediate)"]
61713#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u8)"]
61714#[inline(always)]
61715#[cfg(target_arch = "arm")]
61716#[target_feature(enable = "neon,v7")]
61717#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61718#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61719#[rustc_legacy_const_generics(2)]
61720pub fn vsli_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
61721 static_assert_uimm_bits!(N, 3);
61722 unsafe { transmute(vshiftlins_v8i8::<N>(transmute(a), transmute(b))) }
61723}
61724#[doc = "Shift Left and Insert (immediate)"]
61725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u8)"]
61726#[inline(always)]
61727#[cfg(target_arch = "arm")]
61728#[target_feature(enable = "neon,v7")]
61729#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61730#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61731#[rustc_legacy_const_generics(2)]
61732pub fn vsliq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
61733 static_assert_uimm_bits!(N, 3);
61734 unsafe { transmute(vshiftlins_v16i8::<N>(transmute(a), transmute(b))) }
61735}
61736#[doc = "Shift Left and Insert (immediate)"]
61737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u16)"]
61738#[inline(always)]
61739#[cfg(target_arch = "arm")]
61740#[target_feature(enable = "neon,v7")]
61741#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61742#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61743#[rustc_legacy_const_generics(2)]
61744pub fn vsli_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
61745 static_assert_uimm_bits!(N, 4);
61746 unsafe { transmute(vshiftlins_v4i16::<N>(transmute(a), transmute(b))) }
61747}
61748#[doc = "Shift Left and Insert (immediate)"]
61749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u16)"]
61750#[inline(always)]
61751#[cfg(target_arch = "arm")]
61752#[target_feature(enable = "neon,v7")]
61753#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61754#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61755#[rustc_legacy_const_generics(2)]
61756pub fn vsliq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
61757 static_assert_uimm_bits!(N, 4);
61758 unsafe { transmute(vshiftlins_v8i16::<N>(transmute(a), transmute(b))) }
61759}
61760#[doc = "Shift Left and Insert (immediate)"]
61761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u32)"]
61762#[inline(always)]
61763#[cfg(target_arch = "arm")]
61764#[target_feature(enable = "neon,v7")]
61765#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61766#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
61767#[rustc_legacy_const_generics(2)]
61768pub fn vsli_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
61769 static_assert!(N >= 0 && N <= 31);
61770 unsafe { transmute(vshiftlins_v2i32::<N>(transmute(a), transmute(b))) }
61771}
61772#[doc = "Shift Left and Insert (immediate)"]
61773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u32)"]
61774#[inline(always)]
61775#[cfg(target_arch = "arm")]
61776#[target_feature(enable = "neon,v7")]
61777#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61778#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
61779#[rustc_legacy_const_generics(2)]
61780pub fn vsliq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
61781 static_assert!(N >= 0 && N <= 31);
61782 unsafe { transmute(vshiftlins_v4i32::<N>(transmute(a), transmute(b))) }
61783}
61784#[doc = "Shift Left and Insert (immediate)"]
61785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u64)"]
61786#[inline(always)]
61787#[cfg(target_arch = "arm")]
61788#[target_feature(enable = "neon,v7")]
61789#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61790#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
61791#[rustc_legacy_const_generics(2)]
61792pub fn vsli_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
61793 static_assert!(N >= 0 && N <= 63);
61794 unsafe { transmute(vshiftlins_v1i64::<N>(transmute(a), transmute(b))) }
61795}
61796#[doc = "Shift Left and Insert (immediate)"]
61797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u64)"]
61798#[inline(always)]
61799#[cfg(target_arch = "arm")]
61800#[target_feature(enable = "neon,v7")]
61801#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61802#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
61803#[rustc_legacy_const_generics(2)]
61804pub fn vsliq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
61805 static_assert!(N >= 0 && N <= 63);
61806 unsafe { transmute(vshiftlins_v2i64::<N>(transmute(a), transmute(b))) }
61807}
61808#[doc = "Shift Left and Insert (immediate)"]
61809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_p8)"]
61810#[inline(always)]
61811#[cfg(target_arch = "arm")]
61812#[target_feature(enable = "neon,v7")]
61813#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61814#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61815#[rustc_legacy_const_generics(2)]
61816pub fn vsli_n_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
61817 static_assert_uimm_bits!(N, 3);
61818 unsafe { transmute(vshiftlins_v8i8::<N>(transmute(a), transmute(b))) }
61819}
61820#[doc = "Shift Left and Insert (immediate)"]
61821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_p8)"]
61822#[inline(always)]
61823#[cfg(target_arch = "arm")]
61824#[target_feature(enable = "neon,v7")]
61825#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61826#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61827#[rustc_legacy_const_generics(2)]
61828pub fn vsliq_n_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
61829 static_assert_uimm_bits!(N, 3);
61830 unsafe { transmute(vshiftlins_v16i8::<N>(transmute(a), transmute(b))) }
61831}
61832#[doc = "Shift Left and Insert (immediate)"]
61833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_p16)"]
61834#[inline(always)]
61835#[cfg(target_arch = "arm")]
61836#[target_feature(enable = "neon,v7")]
61837#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61838#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61839#[rustc_legacy_const_generics(2)]
61840pub fn vsli_n_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
61841 static_assert_uimm_bits!(N, 4);
61842 unsafe { transmute(vshiftlins_v4i16::<N>(transmute(a), transmute(b))) }
61843}
61844#[doc = "Shift Left and Insert (immediate)"]
61845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_p16)"]
61846#[inline(always)]
61847#[cfg(target_arch = "arm")]
61848#[target_feature(enable = "neon,v7")]
61849#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61850#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61851#[rustc_legacy_const_generics(2)]
61852pub fn vsliq_n_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
61853 static_assert_uimm_bits!(N, 4);
61854 unsafe { transmute(vshiftlins_v8i16::<N>(transmute(a), transmute(b))) }
61855}
61856#[doc = "Signed shift right and accumulate"]
61857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s8)"]
61858#[inline(always)]
61859#[target_feature(enable = "neon")]
61860#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61861#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61862#[cfg_attr(
61863 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61864 assert_instr(ssra, N = 2)
61865)]
61866#[rustc_legacy_const_generics(2)]
61867#[cfg_attr(
61868 not(target_arch = "arm"),
61869 stable(feature = "neon_intrinsics", since = "1.59.0")
61870)]
61871#[cfg_attr(
61872 target_arch = "arm",
61873 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61874)]
61875pub fn vsra_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
61876 static_assert!(N >= 1 && N <= 8);
61877 unsafe { simd_add(a, vshr_n_s8::<N>(b)) }
61878}
61879#[doc = "Signed shift right and accumulate"]
61880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s8)"]
61881#[inline(always)]
61882#[target_feature(enable = "neon")]
61883#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61884#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61885#[cfg_attr(
61886 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61887 assert_instr(ssra, N = 2)
61888)]
61889#[rustc_legacy_const_generics(2)]
61890#[cfg_attr(
61891 not(target_arch = "arm"),
61892 stable(feature = "neon_intrinsics", since = "1.59.0")
61893)]
61894#[cfg_attr(
61895 target_arch = "arm",
61896 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61897)]
61898pub fn vsraq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
61899 static_assert!(N >= 1 && N <= 8);
61900 unsafe { simd_add(a, vshrq_n_s8::<N>(b)) }
61901}
61902#[doc = "Signed shift right and accumulate"]
61903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s16)"]
61904#[inline(always)]
61905#[target_feature(enable = "neon")]
61906#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61907#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61908#[cfg_attr(
61909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61910 assert_instr(ssra, N = 2)
61911)]
61912#[rustc_legacy_const_generics(2)]
61913#[cfg_attr(
61914 not(target_arch = "arm"),
61915 stable(feature = "neon_intrinsics", since = "1.59.0")
61916)]
61917#[cfg_attr(
61918 target_arch = "arm",
61919 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61920)]
61921pub fn vsra_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
61922 static_assert!(N >= 1 && N <= 16);
61923 unsafe { simd_add(a, vshr_n_s16::<N>(b)) }
61924}
61925#[doc = "Signed shift right and accumulate"]
61926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s16)"]
61927#[inline(always)]
61928#[target_feature(enable = "neon")]
61929#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61930#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61931#[cfg_attr(
61932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61933 assert_instr(ssra, N = 2)
61934)]
61935#[rustc_legacy_const_generics(2)]
61936#[cfg_attr(
61937 not(target_arch = "arm"),
61938 stable(feature = "neon_intrinsics", since = "1.59.0")
61939)]
61940#[cfg_attr(
61941 target_arch = "arm",
61942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61943)]
61944pub fn vsraq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
61945 static_assert!(N >= 1 && N <= 16);
61946 unsafe { simd_add(a, vshrq_n_s16::<N>(b)) }
61947}
61948#[doc = "Signed shift right and accumulate"]
61949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s32)"]
61950#[inline(always)]
61951#[target_feature(enable = "neon")]
61952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61954#[cfg_attr(
61955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61956 assert_instr(ssra, N = 2)
61957)]
61958#[rustc_legacy_const_generics(2)]
61959#[cfg_attr(
61960 not(target_arch = "arm"),
61961 stable(feature = "neon_intrinsics", since = "1.59.0")
61962)]
61963#[cfg_attr(
61964 target_arch = "arm",
61965 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61966)]
61967pub fn vsra_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
61968 static_assert!(N >= 1 && N <= 32);
61969 unsafe { simd_add(a, vshr_n_s32::<N>(b)) }
61970}
61971#[doc = "Signed shift right and accumulate"]
61972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s32)"]
61973#[inline(always)]
61974#[target_feature(enable = "neon")]
61975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61976#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61977#[cfg_attr(
61978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61979 assert_instr(ssra, N = 2)
61980)]
61981#[rustc_legacy_const_generics(2)]
61982#[cfg_attr(
61983 not(target_arch = "arm"),
61984 stable(feature = "neon_intrinsics", since = "1.59.0")
61985)]
61986#[cfg_attr(
61987 target_arch = "arm",
61988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61989)]
61990pub fn vsraq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
61991 static_assert!(N >= 1 && N <= 32);
61992 unsafe { simd_add(a, vshrq_n_s32::<N>(b)) }
61993}
61994#[doc = "Signed shift right and accumulate"]
61995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s64)"]
61996#[inline(always)]
61997#[target_feature(enable = "neon")]
61998#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61999#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62000#[cfg_attr(
62001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62002 assert_instr(ssra, N = 2)
62003)]
62004#[rustc_legacy_const_generics(2)]
62005#[cfg_attr(
62006 not(target_arch = "arm"),
62007 stable(feature = "neon_intrinsics", since = "1.59.0")
62008)]
62009#[cfg_attr(
62010 target_arch = "arm",
62011 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62012)]
62013pub fn vsra_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
62014 static_assert!(N >= 1 && N <= 64);
62015 unsafe { simd_add(a, vshr_n_s64::<N>(b)) }
62016}
62017#[doc = "Signed shift right and accumulate"]
62018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s64)"]
62019#[inline(always)]
62020#[target_feature(enable = "neon")]
62021#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62022#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62023#[cfg_attr(
62024 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62025 assert_instr(ssra, N = 2)
62026)]
62027#[rustc_legacy_const_generics(2)]
62028#[cfg_attr(
62029 not(target_arch = "arm"),
62030 stable(feature = "neon_intrinsics", since = "1.59.0")
62031)]
62032#[cfg_attr(
62033 target_arch = "arm",
62034 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62035)]
62036pub fn vsraq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
62037 static_assert!(N >= 1 && N <= 64);
62038 unsafe { simd_add(a, vshrq_n_s64::<N>(b)) }
62039}
62040#[doc = "Unsigned shift right and accumulate"]
62041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u8)"]
62042#[inline(always)]
62043#[target_feature(enable = "neon")]
62044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62045#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62046#[cfg_attr(
62047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62048 assert_instr(usra, N = 2)
62049)]
62050#[rustc_legacy_const_generics(2)]
62051#[cfg_attr(
62052 not(target_arch = "arm"),
62053 stable(feature = "neon_intrinsics", since = "1.59.0")
62054)]
62055#[cfg_attr(
62056 target_arch = "arm",
62057 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62058)]
62059pub fn vsra_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
62060 static_assert!(N >= 1 && N <= 8);
62061 unsafe { simd_add(a, vshr_n_u8::<N>(b)) }
62062}
62063#[doc = "Unsigned shift right and accumulate"]
62064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u8)"]
62065#[inline(always)]
62066#[target_feature(enable = "neon")]
62067#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62068#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62069#[cfg_attr(
62070 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62071 assert_instr(usra, N = 2)
62072)]
62073#[rustc_legacy_const_generics(2)]
62074#[cfg_attr(
62075 not(target_arch = "arm"),
62076 stable(feature = "neon_intrinsics", since = "1.59.0")
62077)]
62078#[cfg_attr(
62079 target_arch = "arm",
62080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62081)]
62082pub fn vsraq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
62083 static_assert!(N >= 1 && N <= 8);
62084 unsafe { simd_add(a, vshrq_n_u8::<N>(b)) }
62085}
62086#[doc = "Unsigned shift right and accumulate"]
62087#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u16)"]
62088#[inline(always)]
62089#[target_feature(enable = "neon")]
62090#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62091#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62092#[cfg_attr(
62093 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62094 assert_instr(usra, N = 2)
62095)]
62096#[rustc_legacy_const_generics(2)]
62097#[cfg_attr(
62098 not(target_arch = "arm"),
62099 stable(feature = "neon_intrinsics", since = "1.59.0")
62100)]
62101#[cfg_attr(
62102 target_arch = "arm",
62103 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62104)]
62105pub fn vsra_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
62106 static_assert!(N >= 1 && N <= 16);
62107 unsafe { simd_add(a, vshr_n_u16::<N>(b)) }
62108}
62109#[doc = "Unsigned shift right and accumulate"]
62110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u16)"]
62111#[inline(always)]
62112#[target_feature(enable = "neon")]
62113#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62114#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62115#[cfg_attr(
62116 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62117 assert_instr(usra, N = 2)
62118)]
62119#[rustc_legacy_const_generics(2)]
62120#[cfg_attr(
62121 not(target_arch = "arm"),
62122 stable(feature = "neon_intrinsics", since = "1.59.0")
62123)]
62124#[cfg_attr(
62125 target_arch = "arm",
62126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62127)]
62128pub fn vsraq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
62129 static_assert!(N >= 1 && N <= 16);
62130 unsafe { simd_add(a, vshrq_n_u16::<N>(b)) }
62131}
62132#[doc = "Unsigned shift right and accumulate"]
62133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u32)"]
62134#[inline(always)]
62135#[target_feature(enable = "neon")]
62136#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62137#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62138#[cfg_attr(
62139 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62140 assert_instr(usra, N = 2)
62141)]
62142#[rustc_legacy_const_generics(2)]
62143#[cfg_attr(
62144 not(target_arch = "arm"),
62145 stable(feature = "neon_intrinsics", since = "1.59.0")
62146)]
62147#[cfg_attr(
62148 target_arch = "arm",
62149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62150)]
62151pub fn vsra_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
62152 static_assert!(N >= 1 && N <= 32);
62153 unsafe { simd_add(a, vshr_n_u32::<N>(b)) }
62154}
62155#[doc = "Unsigned shift right and accumulate"]
62156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u32)"]
62157#[inline(always)]
62158#[target_feature(enable = "neon")]
62159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62161#[cfg_attr(
62162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62163 assert_instr(usra, N = 2)
62164)]
62165#[rustc_legacy_const_generics(2)]
62166#[cfg_attr(
62167 not(target_arch = "arm"),
62168 stable(feature = "neon_intrinsics", since = "1.59.0")
62169)]
62170#[cfg_attr(
62171 target_arch = "arm",
62172 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62173)]
62174pub fn vsraq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
62175 static_assert!(N >= 1 && N <= 32);
62176 unsafe { simd_add(a, vshrq_n_u32::<N>(b)) }
62177}
62178#[doc = "Unsigned shift right and accumulate"]
62179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u64)"]
62180#[inline(always)]
62181#[target_feature(enable = "neon")]
62182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62184#[cfg_attr(
62185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62186 assert_instr(usra, N = 2)
62187)]
62188#[rustc_legacy_const_generics(2)]
62189#[cfg_attr(
62190 not(target_arch = "arm"),
62191 stable(feature = "neon_intrinsics", since = "1.59.0")
62192)]
62193#[cfg_attr(
62194 target_arch = "arm",
62195 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62196)]
62197pub fn vsra_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
62198 static_assert!(N >= 1 && N <= 64);
62199 unsafe { simd_add(a, vshr_n_u64::<N>(b)) }
62200}
62201#[doc = "Unsigned shift right and accumulate"]
62202#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u64)"]
62203#[inline(always)]
62204#[target_feature(enable = "neon")]
62205#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62206#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62207#[cfg_attr(
62208 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62209 assert_instr(usra, N = 2)
62210)]
62211#[rustc_legacy_const_generics(2)]
62212#[cfg_attr(
62213 not(target_arch = "arm"),
62214 stable(feature = "neon_intrinsics", since = "1.59.0")
62215)]
62216#[cfg_attr(
62217 target_arch = "arm",
62218 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62219)]
62220pub fn vsraq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
62221 static_assert!(N >= 1 && N <= 64);
62222 unsafe { simd_add(a, vshrq_n_u64::<N>(b)) }
62223}
62224#[doc = "Shift Right and Insert (immediate)"]
62225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s8)"]
62226#[inline(always)]
62227#[target_feature(enable = "neon,v7")]
62228#[cfg(target_arch = "arm")]
62229#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62230#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62231#[rustc_legacy_const_generics(2)]
62232pub fn vsri_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
62233 static_assert!(1 <= N && N <= 8);
62234 vshiftrins_v8i8::<N>(a, b)
62235}
62236#[doc = "Shift Right and Insert (immediate)"]
62237#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s8)"]
62238#[inline(always)]
62239#[target_feature(enable = "neon,v7")]
62240#[cfg(target_arch = "arm")]
62241#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62242#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62243#[rustc_legacy_const_generics(2)]
62244pub fn vsriq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
62245 static_assert!(1 <= N && N <= 8);
62246 vshiftrins_v16i8::<N>(a, b)
62247}
62248#[doc = "Shift Right and Insert (immediate)"]
62249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s16)"]
62250#[inline(always)]
62251#[target_feature(enable = "neon,v7")]
62252#[cfg(target_arch = "arm")]
62253#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62254#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62255#[rustc_legacy_const_generics(2)]
62256pub fn vsri_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
62257 static_assert!(1 <= N && N <= 16);
62258 vshiftrins_v4i16::<N>(a, b)
62259}
62260#[doc = "Shift Right and Insert (immediate)"]
62261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s16)"]
62262#[inline(always)]
62263#[target_feature(enable = "neon,v7")]
62264#[cfg(target_arch = "arm")]
62265#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62266#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62267#[rustc_legacy_const_generics(2)]
62268pub fn vsriq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
62269 static_assert!(1 <= N && N <= 16);
62270 vshiftrins_v8i16::<N>(a, b)
62271}
62272#[doc = "Shift Right and Insert (immediate)"]
62273#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s32)"]
62274#[inline(always)]
62275#[target_feature(enable = "neon,v7")]
62276#[cfg(target_arch = "arm")]
62277#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62278#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
62279#[rustc_legacy_const_generics(2)]
62280pub fn vsri_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
62281 static_assert!(1 <= N && N <= 32);
62282 vshiftrins_v2i32::<N>(a, b)
62283}
62284#[doc = "Shift Right and Insert (immediate)"]
62285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s32)"]
62286#[inline(always)]
62287#[target_feature(enable = "neon,v7")]
62288#[cfg(target_arch = "arm")]
62289#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62290#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
62291#[rustc_legacy_const_generics(2)]
62292pub fn vsriq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
62293 static_assert!(1 <= N && N <= 32);
62294 vshiftrins_v4i32::<N>(a, b)
62295}
62296#[doc = "Shift Right and Insert (immediate)"]
62297#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s64)"]
62298#[inline(always)]
62299#[target_feature(enable = "neon,v7")]
62300#[cfg(target_arch = "arm")]
62301#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62302#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
62303#[rustc_legacy_const_generics(2)]
62304pub fn vsri_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
62305 static_assert!(1 <= N && N <= 64);
62306 vshiftrins_v1i64::<N>(a, b)
62307}
62308#[doc = "Shift Right and Insert (immediate)"]
62309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s64)"]
62310#[inline(always)]
62311#[target_feature(enable = "neon,v7")]
62312#[cfg(target_arch = "arm")]
62313#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62314#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
62315#[rustc_legacy_const_generics(2)]
62316pub fn vsriq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
62317 static_assert!(1 <= N && N <= 64);
62318 vshiftrins_v2i64::<N>(a, b)
62319}
62320#[doc = "Shift Right and Insert (immediate)"]
62321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u8)"]
62322#[inline(always)]
62323#[cfg(target_arch = "arm")]
62324#[target_feature(enable = "neon,v7")]
62325#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62326#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62327#[rustc_legacy_const_generics(2)]
62328pub fn vsri_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
62329 static_assert!(1 <= N && N <= 8);
62330 unsafe { transmute(vshiftrins_v8i8::<N>(transmute(a), transmute(b))) }
62331}
62332#[doc = "Shift Right and Insert (immediate)"]
62333#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u8)"]
62334#[inline(always)]
62335#[cfg(target_arch = "arm")]
62336#[target_feature(enable = "neon,v7")]
62337#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62338#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62339#[rustc_legacy_const_generics(2)]
62340pub fn vsriq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
62341 static_assert!(1 <= N && N <= 8);
62342 unsafe { transmute(vshiftrins_v16i8::<N>(transmute(a), transmute(b))) }
62343}
62344#[doc = "Shift Right and Insert (immediate)"]
62345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u16)"]
62346#[inline(always)]
62347#[cfg(target_arch = "arm")]
62348#[target_feature(enable = "neon,v7")]
62349#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62350#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62351#[rustc_legacy_const_generics(2)]
62352pub fn vsri_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
62353 static_assert!(1 <= N && N <= 16);
62354 unsafe { transmute(vshiftrins_v4i16::<N>(transmute(a), transmute(b))) }
62355}
62356#[doc = "Shift Right and Insert (immediate)"]
62357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u16)"]
62358#[inline(always)]
62359#[cfg(target_arch = "arm")]
62360#[target_feature(enable = "neon,v7")]
62361#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62362#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62363#[rustc_legacy_const_generics(2)]
62364pub fn vsriq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
62365 static_assert!(1 <= N && N <= 16);
62366 unsafe { transmute(vshiftrins_v8i16::<N>(transmute(a), transmute(b))) }
62367}
62368#[doc = "Shift Right and Insert (immediate)"]
62369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u32)"]
62370#[inline(always)]
62371#[cfg(target_arch = "arm")]
62372#[target_feature(enable = "neon,v7")]
62373#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62374#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
62375#[rustc_legacy_const_generics(2)]
62376pub fn vsri_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
62377 static_assert!(1 <= N && N <= 32);
62378 unsafe { transmute(vshiftrins_v2i32::<N>(transmute(a), transmute(b))) }
62379}
62380#[doc = "Shift Right and Insert (immediate)"]
62381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u32)"]
62382#[inline(always)]
62383#[cfg(target_arch = "arm")]
62384#[target_feature(enable = "neon,v7")]
62385#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62386#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
62387#[rustc_legacy_const_generics(2)]
62388pub fn vsriq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
62389 static_assert!(1 <= N && N <= 32);
62390 unsafe { transmute(vshiftrins_v4i32::<N>(transmute(a), transmute(b))) }
62391}
62392#[doc = "Shift Right and Insert (immediate)"]
62393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u64)"]
62394#[inline(always)]
62395#[cfg(target_arch = "arm")]
62396#[target_feature(enable = "neon,v7")]
62397#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62398#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
62399#[rustc_legacy_const_generics(2)]
62400pub fn vsri_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
62401 static_assert!(1 <= N && N <= 64);
62402 unsafe { transmute(vshiftrins_v1i64::<N>(transmute(a), transmute(b))) }
62403}
62404#[doc = "Shift Right and Insert (immediate)"]
62405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u64)"]
62406#[inline(always)]
62407#[cfg(target_arch = "arm")]
62408#[target_feature(enable = "neon,v7")]
62409#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62410#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
62411#[rustc_legacy_const_generics(2)]
62412pub fn vsriq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
62413 static_assert!(1 <= N && N <= 64);
62414 unsafe { transmute(vshiftrins_v2i64::<N>(transmute(a), transmute(b))) }
62415}
62416#[doc = "Shift Right and Insert (immediate)"]
62417#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_p8)"]
62418#[inline(always)]
62419#[cfg(target_arch = "arm")]
62420#[target_feature(enable = "neon,v7")]
62421#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62422#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62423#[rustc_legacy_const_generics(2)]
62424pub fn vsri_n_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
62425 static_assert!(1 <= N && N <= 8);
62426 unsafe { transmute(vshiftrins_v8i8::<N>(transmute(a), transmute(b))) }
62427}
62428#[doc = "Shift Right and Insert (immediate)"]
62429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_p8)"]
62430#[inline(always)]
62431#[cfg(target_arch = "arm")]
62432#[target_feature(enable = "neon,v7")]
62433#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62434#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62435#[rustc_legacy_const_generics(2)]
62436pub fn vsriq_n_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
62437 static_assert!(1 <= N && N <= 8);
62438 unsafe { transmute(vshiftrins_v16i8::<N>(transmute(a), transmute(b))) }
62439}
62440#[doc = "Shift Right and Insert (immediate)"]
62441#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_p16)"]
62442#[inline(always)]
62443#[cfg(target_arch = "arm")]
62444#[target_feature(enable = "neon,v7")]
62445#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62446#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62447#[rustc_legacy_const_generics(2)]
62448pub fn vsri_n_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
62449 static_assert!(1 <= N && N <= 16);
62450 unsafe { transmute(vshiftrins_v4i16::<N>(transmute(a), transmute(b))) }
62451}
62452#[doc = "Shift Right and Insert (immediate)"]
62453#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_p16)"]
62454#[inline(always)]
62455#[cfg(target_arch = "arm")]
62456#[target_feature(enable = "neon,v7")]
62457#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62458#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62459#[rustc_legacy_const_generics(2)]
62460pub fn vsriq_n_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
62461 static_assert!(1 <= N && N <= 16);
62462 unsafe { transmute(vshiftrins_v8i16::<N>(transmute(a), transmute(b))) }
62463}
62464#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16)"]
62466#[doc = "## Safety"]
62467#[doc = " * Neon intrinsic unsafe"]
62468#[inline(always)]
62469#[cfg(target_arch = "arm")]
62470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62471#[target_feature(enable = "neon,fp16")]
62472#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62473#[cfg(not(target_arch = "arm64ec"))]
62474#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62475pub unsafe fn vst1_f16(ptr: *mut f16, a: float16x4_t) {
62476 vst1_v4f16(
62477 ptr as *const i8,
62478 transmute(a),
62479 crate::mem::align_of::<f16>() as i32,
62480 )
62481}
62482#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16)"]
62484#[doc = "## Safety"]
62485#[doc = " * Neon intrinsic unsafe"]
62486#[inline(always)]
62487#[cfg(target_arch = "arm")]
62488#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62489#[target_feature(enable = "neon,fp16")]
62490#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62491#[cfg(not(target_arch = "arm64ec"))]
62492#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62493pub unsafe fn vst1q_f16(ptr: *mut f16, a: float16x8_t) {
62494 vst1q_v8f16(
62495 ptr as *const i8,
62496 transmute(a),
62497 crate::mem::align_of::<f16>() as i32,
62498 )
62499}
62500#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62501#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x2)"]
62502#[doc = "## Safety"]
62503#[doc = " * Neon intrinsic unsafe"]
62504#[inline(always)]
62505#[cfg(target_arch = "arm")]
62506#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62507#[cfg_attr(test, assert_instr(vst1))]
62508#[target_feature(enable = "neon,fp16")]
62509#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62510#[cfg(not(target_arch = "arm64ec"))]
62511pub unsafe fn vst1_f16_x2(a: *mut f16, b: float16x4x2_t) {
62512 unsafe extern "unadjusted" {
62513 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.p0.v4f16")]
62514 fn _vst1_f16_x2(ptr: *mut f16, a: float16x4_t, b: float16x4_t);
62515 }
62516 _vst1_f16_x2(a, b.0, b.1)
62517}
62518#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x2)"]
62520#[doc = "## Safety"]
62521#[doc = " * Neon intrinsic unsafe"]
62522#[inline(always)]
62523#[cfg(target_arch = "arm")]
62524#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62525#[cfg_attr(test, assert_instr(vst1))]
62526#[target_feature(enable = "neon,fp16")]
62527#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62528#[cfg(not(target_arch = "arm64ec"))]
62529pub unsafe fn vst1q_f16_x2(a: *mut f16, b: float16x8x2_t) {
62530 unsafe extern "unadjusted" {
62531 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.p0.v8f16")]
62532 fn _vst1q_f16_x2(ptr: *mut f16, a: float16x8_t, b: float16x8_t);
62533 }
62534 _vst1q_f16_x2(a, b.0, b.1)
62535}
62536#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x2)"]
62538#[doc = "## Safety"]
62539#[doc = " * Neon intrinsic unsafe"]
62540#[inline(always)]
62541#[cfg(not(target_arch = "arm"))]
62542#[cfg_attr(test, assert_instr(st1))]
62543#[target_feature(enable = "neon,fp16")]
62544#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62545#[cfg(not(target_arch = "arm64ec"))]
62546pub unsafe fn vst1_f16_x2(a: *mut f16, b: float16x4x2_t) {
62547 unsafe extern "unadjusted" {
62548 #[cfg_attr(
62549 any(target_arch = "aarch64", target_arch = "arm64ec"),
62550 link_name = "llvm.aarch64.neon.st1x2.v4f16.p0"
62551 )]
62552 fn _vst1_f16_x2(a: float16x4_t, b: float16x4_t, ptr: *mut f16);
62553 }
62554 _vst1_f16_x2(b.0, b.1, a)
62555}
62556#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x2)"]
62558#[doc = "## Safety"]
62559#[doc = " * Neon intrinsic unsafe"]
62560#[inline(always)]
62561#[cfg(not(target_arch = "arm"))]
62562#[cfg_attr(test, assert_instr(st1))]
62563#[target_feature(enable = "neon,fp16")]
62564#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62565#[cfg(not(target_arch = "arm64ec"))]
62566pub unsafe fn vst1q_f16_x2(a: *mut f16, b: float16x8x2_t) {
62567 unsafe extern "unadjusted" {
62568 #[cfg_attr(
62569 any(target_arch = "aarch64", target_arch = "arm64ec"),
62570 link_name = "llvm.aarch64.neon.st1x2.v8f16.p0"
62571 )]
62572 fn _vst1q_f16_x2(a: float16x8_t, b: float16x8_t, ptr: *mut f16);
62573 }
62574 _vst1q_f16_x2(b.0, b.1, a)
62575}
62576#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x3)"]
62578#[doc = "## Safety"]
62579#[doc = " * Neon intrinsic unsafe"]
62580#[inline(always)]
62581#[cfg(target_arch = "arm")]
62582#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62583#[cfg_attr(test, assert_instr(vst1))]
62584#[target_feature(enable = "neon,fp16")]
62585#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62586#[cfg(not(target_arch = "arm64ec"))]
62587pub unsafe fn vst1_f16_x3(a: *mut f16, b: float16x4x3_t) {
62588 unsafe extern "unadjusted" {
62589 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4f16")]
62590 fn _vst1_f16_x3(ptr: *mut f16, a: float16x4_t, b: float16x4_t, c: float16x4_t);
62591 }
62592 _vst1_f16_x3(a, b.0, b.1, b.2)
62593}
62594#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62595#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x3)"]
62596#[doc = "## Safety"]
62597#[doc = " * Neon intrinsic unsafe"]
62598#[inline(always)]
62599#[cfg(target_arch = "arm")]
62600#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62601#[cfg_attr(test, assert_instr(vst1))]
62602#[target_feature(enable = "neon,fp16")]
62603#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62604#[cfg(not(target_arch = "arm64ec"))]
62605pub unsafe fn vst1q_f16_x3(a: *mut f16, b: float16x8x3_t) {
62606 unsafe extern "unadjusted" {
62607 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8f16")]
62608 fn _vst1q_f16_x3(ptr: *mut f16, a: float16x8_t, b: float16x8_t, c: float16x8_t);
62609 }
62610 _vst1q_f16_x3(a, b.0, b.1, b.2)
62611}
62612#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62613#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x3)"]
62614#[doc = "## Safety"]
62615#[doc = " * Neon intrinsic unsafe"]
62616#[inline(always)]
62617#[cfg(not(target_arch = "arm"))]
62618#[cfg_attr(test, assert_instr(st1))]
62619#[target_feature(enable = "neon,fp16")]
62620#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62621#[cfg(not(target_arch = "arm64ec"))]
62622pub unsafe fn vst1_f16_x3(a: *mut f16, b: float16x4x3_t) {
62623 unsafe extern "unadjusted" {
62624 #[cfg_attr(
62625 any(target_arch = "aarch64", target_arch = "arm64ec"),
62626 link_name = "llvm.aarch64.neon.st1x3.v4f16.p0"
62627 )]
62628 fn _vst1_f16_x3(a: float16x4_t, b: float16x4_t, c: float16x4_t, ptr: *mut f16);
62629 }
62630 _vst1_f16_x3(b.0, b.1, b.2, a)
62631}
62632#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x3)"]
62634#[doc = "## Safety"]
62635#[doc = " * Neon intrinsic unsafe"]
62636#[inline(always)]
62637#[cfg(not(target_arch = "arm"))]
62638#[cfg_attr(test, assert_instr(st1))]
62639#[target_feature(enable = "neon,fp16")]
62640#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62641#[cfg(not(target_arch = "arm64ec"))]
62642pub unsafe fn vst1q_f16_x3(a: *mut f16, b: float16x8x3_t) {
62643 unsafe extern "unadjusted" {
62644 #[cfg_attr(
62645 any(target_arch = "aarch64", target_arch = "arm64ec"),
62646 link_name = "llvm.aarch64.neon.st1x3.v8f16.p0"
62647 )]
62648 fn _vst1q_f16_x3(a: float16x8_t, b: float16x8_t, c: float16x8_t, ptr: *mut f16);
62649 }
62650 _vst1q_f16_x3(b.0, b.1, b.2, a)
62651}
62652#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x4)"]
62654#[doc = "## Safety"]
62655#[doc = " * Neon intrinsic unsafe"]
62656#[inline(always)]
62657#[target_feature(enable = "neon")]
62658#[cfg(target_arch = "arm")]
62659#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62660#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
62661#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62662#[cfg(not(target_arch = "arm64ec"))]
62663#[cfg_attr(test, assert_instr(vst1))]
62664pub unsafe fn vst1_f16_x4(a: *mut f16, b: float16x4x4_t) {
62665 unsafe extern "unadjusted" {
62666 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4f16")]
62667 fn _vst1_f16_x4(
62668 ptr: *mut f16,
62669 a: float16x4_t,
62670 b: float16x4_t,
62671 c: float16x4_t,
62672 d: float16x4_t,
62673 );
62674 }
62675 _vst1_f16_x4(a, b.0, b.1, b.2, b.3)
62676}
62677#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62678#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x4)"]
62679#[doc = "## Safety"]
62680#[doc = " * Neon intrinsic unsafe"]
62681#[inline(always)]
62682#[target_feature(enable = "neon")]
62683#[cfg(target_arch = "arm")]
62684#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62685#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
62686#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62687#[cfg(not(target_arch = "arm64ec"))]
62688#[cfg_attr(test, assert_instr(vst1))]
62689pub unsafe fn vst1q_f16_x4(a: *mut f16, b: float16x8x4_t) {
62690 unsafe extern "unadjusted" {
62691 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8f16")]
62692 fn _vst1q_f16_x4(
62693 ptr: *mut f16,
62694 a: float16x8_t,
62695 b: float16x8_t,
62696 c: float16x8_t,
62697 d: float16x8_t,
62698 );
62699 }
62700 _vst1q_f16_x4(a, b.0, b.1, b.2, b.3)
62701}
62702#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62703#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x4)"]
62704#[doc = "## Safety"]
62705#[doc = " * Neon intrinsic unsafe"]
62706#[inline(always)]
62707#[cfg(not(target_arch = "arm"))]
62708#[cfg_attr(test, assert_instr(st1))]
62709#[target_feature(enable = "neon,fp16")]
62710#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62711#[cfg(not(target_arch = "arm64ec"))]
62712pub unsafe fn vst1_f16_x4(a: *mut f16, b: float16x4x4_t) {
62713 unsafe extern "unadjusted" {
62714 #[cfg_attr(
62715 any(target_arch = "aarch64", target_arch = "arm64ec"),
62716 link_name = "llvm.aarch64.neon.st1x4.v4f16.p0"
62717 )]
62718 fn _vst1_f16_x4(
62719 a: float16x4_t,
62720 b: float16x4_t,
62721 c: float16x4_t,
62722 d: float16x4_t,
62723 ptr: *mut f16,
62724 );
62725 }
62726 _vst1_f16_x4(b.0, b.1, b.2, b.3, a)
62727}
62728#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x4)"]
62730#[doc = "## Safety"]
62731#[doc = " * Neon intrinsic unsafe"]
62732#[inline(always)]
62733#[cfg(not(target_arch = "arm"))]
62734#[cfg_attr(test, assert_instr(st1))]
62735#[target_feature(enable = "neon,fp16")]
62736#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62737#[cfg(not(target_arch = "arm64ec"))]
62738pub unsafe fn vst1q_f16_x4(a: *mut f16, b: float16x8x4_t) {
62739 unsafe extern "unadjusted" {
62740 #[cfg_attr(
62741 any(target_arch = "aarch64", target_arch = "arm64ec"),
62742 link_name = "llvm.aarch64.neon.st1x4.v8f16.p0"
62743 )]
62744 fn _vst1q_f16_x4(
62745 a: float16x8_t,
62746 b: float16x8_t,
62747 c: float16x8_t,
62748 d: float16x8_t,
62749 ptr: *mut f16,
62750 );
62751 }
62752 _vst1q_f16_x4(b.0, b.1, b.2, b.3, a)
62753}
62754#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62755#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32)"]
62756#[doc = "## Safety"]
62757#[doc = " * Neon intrinsic unsafe"]
62758#[inline(always)]
62759#[target_feature(enable = "neon")]
62760#[cfg(target_arch = "arm")]
62761#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62762#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62763#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62764pub unsafe fn vst1_f32(ptr: *mut f32, a: float32x2_t) {
62765 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
62766 vst1_v2f32::<ALIGN>(ptr as *const i8, transmute(a))
62767}
62768#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32)"]
62770#[doc = "## Safety"]
62771#[doc = " * Neon intrinsic unsafe"]
62772#[inline(always)]
62773#[target_feature(enable = "neon")]
62774#[cfg(target_arch = "arm")]
62775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62776#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62777#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62778pub unsafe fn vst1q_f32(ptr: *mut f32, a: float32x4_t) {
62779 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
62780 vst1q_v4f32::<ALIGN>(ptr as *const i8, transmute(a))
62781}
62782#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8)"]
62784#[doc = "## Safety"]
62785#[doc = " * Neon intrinsic unsafe"]
62786#[inline(always)]
62787#[target_feature(enable = "neon")]
62788#[cfg(target_arch = "arm")]
62789#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62790#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62791#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
62792pub unsafe fn vst1_s8(ptr: *mut i8, a: int8x8_t) {
62793 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
62794 vst1_v8i8::<ALIGN>(ptr as *const i8, a)
62795}
62796#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8)"]
62798#[doc = "## Safety"]
62799#[doc = " * Neon intrinsic unsafe"]
62800#[inline(always)]
62801#[target_feature(enable = "neon")]
62802#[cfg(target_arch = "arm")]
62803#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62804#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62805#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
62806pub unsafe fn vst1q_s8(ptr: *mut i8, a: int8x16_t) {
62807 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
62808 vst1q_v16i8::<ALIGN>(ptr as *const i8, a)
62809}
62810#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16)"]
62812#[doc = "## Safety"]
62813#[doc = " * Neon intrinsic unsafe"]
62814#[inline(always)]
62815#[target_feature(enable = "neon")]
62816#[cfg(target_arch = "arm")]
62817#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62818#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62819#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62820pub unsafe fn vst1_s16(ptr: *mut i16, a: int16x4_t) {
62821 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
62822 vst1_v4i16::<ALIGN>(ptr as *const i8, a)
62823}
62824#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62825#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16)"]
62826#[doc = "## Safety"]
62827#[doc = " * Neon intrinsic unsafe"]
62828#[inline(always)]
62829#[target_feature(enable = "neon")]
62830#[cfg(target_arch = "arm")]
62831#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62832#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62833#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62834pub unsafe fn vst1q_s16(ptr: *mut i16, a: int16x8_t) {
62835 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
62836 vst1q_v8i16::<ALIGN>(ptr as *const i8, a)
62837}
62838#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32)"]
62840#[doc = "## Safety"]
62841#[doc = " * Neon intrinsic unsafe"]
62842#[inline(always)]
62843#[target_feature(enable = "neon")]
62844#[cfg(target_arch = "arm")]
62845#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62846#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62847#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62848pub unsafe fn vst1_s32(ptr: *mut i32, a: int32x2_t) {
62849 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
62850 vst1_v2i32::<ALIGN>(ptr as *const i8, a)
62851}
62852#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62853#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32)"]
62854#[doc = "## Safety"]
62855#[doc = " * Neon intrinsic unsafe"]
62856#[inline(always)]
62857#[target_feature(enable = "neon")]
62858#[cfg(target_arch = "arm")]
62859#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62860#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62861#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62862pub unsafe fn vst1q_s32(ptr: *mut i32, a: int32x4_t) {
62863 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
62864 vst1q_v4i32::<ALIGN>(ptr as *const i8, a)
62865}
62866#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64)"]
62868#[doc = "## Safety"]
62869#[doc = " * Neon intrinsic unsafe"]
62870#[inline(always)]
62871#[target_feature(enable = "neon")]
62872#[cfg(target_arch = "arm")]
62873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62874#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62875#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
62876pub unsafe fn vst1_s64(ptr: *mut i64, a: int64x1_t) {
62877 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
62878 vst1_v1i64::<ALIGN>(ptr as *const i8, a)
62879}
62880#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62881#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64)"]
62882#[doc = "## Safety"]
62883#[doc = " * Neon intrinsic unsafe"]
62884#[inline(always)]
62885#[target_feature(enable = "neon")]
62886#[cfg(target_arch = "arm")]
62887#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62888#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62889#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
62890pub unsafe fn vst1q_s64(ptr: *mut i64, a: int64x2_t) {
62891 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
62892 vst1q_v2i64::<ALIGN>(ptr as *const i8, a)
62893}
62894#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8)"]
62896#[doc = "## Safety"]
62897#[doc = " * Neon intrinsic unsafe"]
62898#[inline(always)]
62899#[target_feature(enable = "neon")]
62900#[cfg(target_arch = "arm")]
62901#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62902#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62903#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
62904pub unsafe fn vst1_u8(ptr: *mut u8, a: uint8x8_t) {
62905 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
62906 vst1_v8i8::<ALIGN>(ptr as *const i8, transmute(a))
62907}
62908#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8)"]
62910#[doc = "## Safety"]
62911#[doc = " * Neon intrinsic unsafe"]
62912#[inline(always)]
62913#[target_feature(enable = "neon")]
62914#[cfg(target_arch = "arm")]
62915#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62916#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62917#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
62918pub unsafe fn vst1q_u8(ptr: *mut u8, a: uint8x16_t) {
62919 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
62920 vst1q_v16i8::<ALIGN>(ptr as *const i8, transmute(a))
62921}
62922#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16)"]
62924#[doc = "## Safety"]
62925#[doc = " * Neon intrinsic unsafe"]
62926#[inline(always)]
62927#[target_feature(enable = "neon")]
62928#[cfg(target_arch = "arm")]
62929#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62930#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62931#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62932pub unsafe fn vst1_u16(ptr: *mut u16, a: uint16x4_t) {
62933 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
62934 vst1_v4i16::<ALIGN>(ptr as *const i8, transmute(a))
62935}
62936#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16)"]
62938#[doc = "## Safety"]
62939#[doc = " * Neon intrinsic unsafe"]
62940#[inline(always)]
62941#[target_feature(enable = "neon")]
62942#[cfg(target_arch = "arm")]
62943#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62944#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62945#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62946pub unsafe fn vst1q_u16(ptr: *mut u16, a: uint16x8_t) {
62947 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
62948 vst1q_v8i16::<ALIGN>(ptr as *const i8, transmute(a))
62949}
62950#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32)"]
62952#[doc = "## Safety"]
62953#[doc = " * Neon intrinsic unsafe"]
62954#[inline(always)]
62955#[target_feature(enable = "neon")]
62956#[cfg(target_arch = "arm")]
62957#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62958#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62959#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62960pub unsafe fn vst1_u32(ptr: *mut u32, a: uint32x2_t) {
62961 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
62962 vst1_v2i32::<ALIGN>(ptr as *const i8, transmute(a))
62963}
62964#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32)"]
62966#[doc = "## Safety"]
62967#[doc = " * Neon intrinsic unsafe"]
62968#[inline(always)]
62969#[target_feature(enable = "neon")]
62970#[cfg(target_arch = "arm")]
62971#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62972#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62973#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62974pub unsafe fn vst1q_u32(ptr: *mut u32, a: uint32x4_t) {
62975 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
62976 vst1q_v4i32::<ALIGN>(ptr as *const i8, transmute(a))
62977}
62978#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64)"]
62980#[doc = "## Safety"]
62981#[doc = " * Neon intrinsic unsafe"]
62982#[inline(always)]
62983#[target_feature(enable = "neon")]
62984#[cfg(target_arch = "arm")]
62985#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62986#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62987#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
62988pub unsafe fn vst1_u64(ptr: *mut u64, a: uint64x1_t) {
62989 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
62990 vst1_v1i64::<ALIGN>(ptr as *const i8, transmute(a))
62991}
62992#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64)"]
62994#[doc = "## Safety"]
62995#[doc = " * Neon intrinsic unsafe"]
62996#[inline(always)]
62997#[target_feature(enable = "neon")]
62998#[cfg(target_arch = "arm")]
62999#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63000#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63001#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
63002pub unsafe fn vst1q_u64(ptr: *mut u64, a: uint64x2_t) {
63003 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
63004 vst1q_v2i64::<ALIGN>(ptr as *const i8, transmute(a))
63005}
63006#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
63007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8)"]
63008#[doc = "## Safety"]
63009#[doc = " * Neon intrinsic unsafe"]
63010#[inline(always)]
63011#[target_feature(enable = "neon")]
63012#[cfg(target_arch = "arm")]
63013#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63014#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63015#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
63016pub unsafe fn vst1_p8(ptr: *mut p8, a: poly8x8_t) {
63017 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
63018 vst1_v8i8::<ALIGN>(ptr as *const i8, transmute(a))
63019}
63020#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
63021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8)"]
63022#[doc = "## Safety"]
63023#[doc = " * Neon intrinsic unsafe"]
63024#[inline(always)]
63025#[target_feature(enable = "neon")]
63026#[cfg(target_arch = "arm")]
63027#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63028#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63029#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
63030pub unsafe fn vst1q_p8(ptr: *mut p8, a: poly8x16_t) {
63031 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
63032 vst1q_v16i8::<ALIGN>(ptr as *const i8, transmute(a))
63033}
63034#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
63035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16)"]
63036#[doc = "## Safety"]
63037#[doc = " * Neon intrinsic unsafe"]
63038#[inline(always)]
63039#[target_feature(enable = "neon")]
63040#[cfg(target_arch = "arm")]
63041#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63042#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63043#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
63044pub unsafe fn vst1_p16(ptr: *mut p16, a: poly16x4_t) {
63045 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
63046 vst1_v4i16::<ALIGN>(ptr as *const i8, transmute(a))
63047}
63048#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
63049#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16)"]
63050#[doc = "## Safety"]
63051#[doc = " * Neon intrinsic unsafe"]
63052#[inline(always)]
63053#[target_feature(enable = "neon")]
63054#[cfg(target_arch = "arm")]
63055#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63056#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63057#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
63058pub unsafe fn vst1q_p16(ptr: *mut p16, a: poly16x8_t) {
63059 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
63060 vst1q_v8i16::<ALIGN>(ptr as *const i8, transmute(a))
63061}
63062#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
63063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64)"]
63064#[doc = "## Safety"]
63065#[doc = " * Neon intrinsic unsafe"]
63066#[inline(always)]
63067#[target_feature(enable = "neon")]
63068#[cfg(target_arch = "arm")]
63069#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63070#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63071#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
63072pub unsafe fn vst1_p64(ptr: *mut p64, a: poly64x1_t) {
63073 const ALIGN: i32 = crate::mem::align_of::<p64>() as i32;
63074 vst1_v1i64::<ALIGN>(ptr as *const i8, transmute(a))
63075}
63076#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
63077#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64)"]
63078#[doc = "## Safety"]
63079#[doc = " * Neon intrinsic unsafe"]
63080#[inline(always)]
63081#[target_feature(enable = "neon")]
63082#[cfg(target_arch = "arm")]
63083#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63084#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63085#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
63086pub unsafe fn vst1q_p64(ptr: *mut p64, a: poly64x2_t) {
63087 const ALIGN: i32 = crate::mem::align_of::<p64>() as i32;
63088 vst1q_v2i64::<ALIGN>(ptr as *const i8, transmute(a))
63089}
63090#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x2)"]
63092#[doc = "## Safety"]
63093#[doc = " * Neon intrinsic unsafe"]
63094#[inline(always)]
63095#[cfg(target_arch = "arm")]
63096#[target_feature(enable = "neon,v7")]
63097#[cfg_attr(test, assert_instr(vst1))]
63098#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63099pub unsafe fn vst1_f32_x2(a: *mut f32, b: float32x2x2_t) {
63100 unsafe extern "unadjusted" {
63101 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2f32.p0")]
63102 fn _vst1_f32_x2(ptr: *mut f32, a: float32x2_t, b: float32x2_t);
63103 }
63104 _vst1_f32_x2(a, b.0, b.1)
63105}
63106#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63107#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x2)"]
63108#[doc = "## Safety"]
63109#[doc = " * Neon intrinsic unsafe"]
63110#[inline(always)]
63111#[cfg(target_arch = "arm")]
63112#[target_feature(enable = "neon,v7")]
63113#[cfg_attr(test, assert_instr(vst1))]
63114#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63115pub unsafe fn vst1q_f32_x2(a: *mut f32, b: float32x4x2_t) {
63116 unsafe extern "unadjusted" {
63117 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4f32.p0")]
63118 fn _vst1q_f32_x2(ptr: *mut f32, a: float32x4_t, b: float32x4_t);
63119 }
63120 _vst1q_f32_x2(a, b.0, b.1)
63121}
63122#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63123#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x2)"]
63124#[doc = "## Safety"]
63125#[doc = " * Neon intrinsic unsafe"]
63126#[inline(always)]
63127#[target_feature(enable = "neon")]
63128#[cfg(not(target_arch = "arm"))]
63129#[cfg_attr(test, assert_instr(st1))]
63130#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63131pub unsafe fn vst1_f32_x2(a: *mut f32, b: float32x2x2_t) {
63132 unsafe extern "unadjusted" {
63133 #[cfg_attr(
63134 any(target_arch = "aarch64", target_arch = "arm64ec"),
63135 link_name = "llvm.aarch64.neon.st1x2.v2f32.p0"
63136 )]
63137 fn _vst1_f32_x2(a: float32x2_t, b: float32x2_t, ptr: *mut f32);
63138 }
63139 _vst1_f32_x2(b.0, b.1, a)
63140}
63141#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x2)"]
63143#[doc = "## Safety"]
63144#[doc = " * Neon intrinsic unsafe"]
63145#[inline(always)]
63146#[target_feature(enable = "neon")]
63147#[cfg(not(target_arch = "arm"))]
63148#[cfg_attr(test, assert_instr(st1))]
63149#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63150pub unsafe fn vst1q_f32_x2(a: *mut f32, b: float32x4x2_t) {
63151 unsafe extern "unadjusted" {
63152 #[cfg_attr(
63153 any(target_arch = "aarch64", target_arch = "arm64ec"),
63154 link_name = "llvm.aarch64.neon.st1x2.v4f32.p0"
63155 )]
63156 fn _vst1q_f32_x2(a: float32x4_t, b: float32x4_t, ptr: *mut f32);
63157 }
63158 _vst1q_f32_x2(b.0, b.1, a)
63159}
63160#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63161#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x3)"]
63162#[doc = "## Safety"]
63163#[doc = " * Neon intrinsic unsafe"]
63164#[inline(always)]
63165#[target_feature(enable = "neon")]
63166#[cfg(not(target_arch = "arm"))]
63167#[cfg_attr(test, assert_instr(st1))]
63168#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63169pub unsafe fn vst1_f32_x3(a: *mut f32, b: float32x2x3_t) {
63170 unsafe extern "unadjusted" {
63171 #[cfg_attr(
63172 any(target_arch = "aarch64", target_arch = "arm64ec"),
63173 link_name = "llvm.aarch64.neon.st1x3.v2f32.p0"
63174 )]
63175 fn _vst1_f32_x3(a: float32x2_t, b: float32x2_t, c: float32x2_t, ptr: *mut f32);
63176 }
63177 _vst1_f32_x3(b.0, b.1, b.2, a)
63178}
63179#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x3)"]
63181#[doc = "## Safety"]
63182#[doc = " * Neon intrinsic unsafe"]
63183#[inline(always)]
63184#[target_feature(enable = "neon")]
63185#[cfg(not(target_arch = "arm"))]
63186#[cfg_attr(test, assert_instr(st1))]
63187#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63188pub unsafe fn vst1q_f32_x3(a: *mut f32, b: float32x4x3_t) {
63189 unsafe extern "unadjusted" {
63190 #[cfg_attr(
63191 any(target_arch = "aarch64", target_arch = "arm64ec"),
63192 link_name = "llvm.aarch64.neon.st1x3.v4f32.p0"
63193 )]
63194 fn _vst1q_f32_x3(a: float32x4_t, b: float32x4_t, c: float32x4_t, ptr: *mut f32);
63195 }
63196 _vst1q_f32_x3(b.0, b.1, b.2, a)
63197}
63198#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x4)"]
63200#[doc = "## Safety"]
63201#[doc = " * Neon intrinsic unsafe"]
63202#[inline(always)]
63203#[cfg(target_arch = "arm")]
63204#[target_feature(enable = "neon,v7")]
63205#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63206#[cfg_attr(test, assert_instr(vst1))]
63207pub unsafe fn vst1_f32_x4(a: *mut f32, b: float32x2x4_t) {
63208 unsafe extern "unadjusted" {
63209 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2f32.p0")]
63210 fn _vst1_f32_x4(
63211 ptr: *mut f32,
63212 a: float32x2_t,
63213 b: float32x2_t,
63214 c: float32x2_t,
63215 d: float32x2_t,
63216 );
63217 }
63218 _vst1_f32_x4(a, b.0, b.1, b.2, b.3)
63219}
63220#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x4)"]
63222#[doc = "## Safety"]
63223#[doc = " * Neon intrinsic unsafe"]
63224#[inline(always)]
63225#[cfg(target_arch = "arm")]
63226#[target_feature(enable = "neon,v7")]
63227#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63228#[cfg_attr(test, assert_instr(vst1))]
63229pub unsafe fn vst1q_f32_x4(a: *mut f32, b: float32x4x4_t) {
63230 unsafe extern "unadjusted" {
63231 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4f32.p0")]
63232 fn _vst1q_f32_x4(
63233 ptr: *mut f32,
63234 a: float32x4_t,
63235 b: float32x4_t,
63236 c: float32x4_t,
63237 d: float32x4_t,
63238 );
63239 }
63240 _vst1q_f32_x4(a, b.0, b.1, b.2, b.3)
63241}
63242#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63243#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x4)"]
63244#[doc = "## Safety"]
63245#[doc = " * Neon intrinsic unsafe"]
63246#[inline(always)]
63247#[target_feature(enable = "neon")]
63248#[cfg(not(target_arch = "arm"))]
63249#[cfg_attr(test, assert_instr(st1))]
63250#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63251pub unsafe fn vst1_f32_x4(a: *mut f32, b: float32x2x4_t) {
63252 unsafe extern "unadjusted" {
63253 #[cfg_attr(
63254 any(target_arch = "aarch64", target_arch = "arm64ec"),
63255 link_name = "llvm.aarch64.neon.st1x4.v2f32.p0"
63256 )]
63257 fn _vst1_f32_x4(
63258 a: float32x2_t,
63259 b: float32x2_t,
63260 c: float32x2_t,
63261 d: float32x2_t,
63262 ptr: *mut f32,
63263 );
63264 }
63265 _vst1_f32_x4(b.0, b.1, b.2, b.3, a)
63266}
63267#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x4)"]
63269#[doc = "## Safety"]
63270#[doc = " * Neon intrinsic unsafe"]
63271#[inline(always)]
63272#[target_feature(enable = "neon")]
63273#[cfg(not(target_arch = "arm"))]
63274#[cfg_attr(test, assert_instr(st1))]
63275#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63276pub unsafe fn vst1q_f32_x4(a: *mut f32, b: float32x4x4_t) {
63277 unsafe extern "unadjusted" {
63278 #[cfg_attr(
63279 any(target_arch = "aarch64", target_arch = "arm64ec"),
63280 link_name = "llvm.aarch64.neon.st1x4.v4f32.p0"
63281 )]
63282 fn _vst1q_f32_x4(
63283 a: float32x4_t,
63284 b: float32x4_t,
63285 c: float32x4_t,
63286 d: float32x4_t,
63287 ptr: *mut f32,
63288 );
63289 }
63290 _vst1q_f32_x4(b.0, b.1, b.2, b.3, a)
63291}
63292#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_f16)"]
63294#[doc = "## Safety"]
63295#[doc = " * Neon intrinsic unsafe"]
63296#[inline(always)]
63297#[target_feature(enable = "neon")]
63298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63299#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63300#[cfg_attr(
63301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63302 assert_instr(nop, LANE = 0)
63303)]
63304#[rustc_legacy_const_generics(2)]
63305#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
63306#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
63307#[cfg(not(target_arch = "arm64ec"))]
63308pub unsafe fn vst1_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4_t) {
63309 static_assert_uimm_bits!(LANE, 2);
63310 *a = simd_extract!(b, LANE as u32);
63311}
63312#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_f16)"]
63314#[doc = "## Safety"]
63315#[doc = " * Neon intrinsic unsafe"]
63316#[inline(always)]
63317#[target_feature(enable = "neon")]
63318#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63319#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63320#[cfg_attr(
63321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63322 assert_instr(nop, LANE = 0)
63323)]
63324#[rustc_legacy_const_generics(2)]
63325#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
63326#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
63327#[cfg(not(target_arch = "arm64ec"))]
63328pub unsafe fn vst1q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8_t) {
63329 static_assert_uimm_bits!(LANE, 3);
63330 *a = simd_extract!(b, LANE as u32);
63331}
63332#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63333#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_f32)"]
63334#[doc = "## Safety"]
63335#[doc = " * Neon intrinsic unsafe"]
63336#[inline(always)]
63337#[target_feature(enable = "neon")]
63338#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63339#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63340#[cfg_attr(
63341 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63342 assert_instr(nop, LANE = 0)
63343)]
63344#[rustc_legacy_const_generics(2)]
63345#[cfg_attr(
63346 not(target_arch = "arm"),
63347 stable(feature = "neon_intrinsics", since = "1.59.0")
63348)]
63349#[cfg_attr(
63350 target_arch = "arm",
63351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63352)]
63353pub unsafe fn vst1_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2_t) {
63354 static_assert_uimm_bits!(LANE, 1);
63355 *a = simd_extract!(b, LANE as u32);
63356}
63357#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_f32)"]
63359#[doc = "## Safety"]
63360#[doc = " * Neon intrinsic unsafe"]
63361#[inline(always)]
63362#[target_feature(enable = "neon")]
63363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63364#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63365#[cfg_attr(
63366 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63367 assert_instr(nop, LANE = 0)
63368)]
63369#[rustc_legacy_const_generics(2)]
63370#[cfg_attr(
63371 not(target_arch = "arm"),
63372 stable(feature = "neon_intrinsics", since = "1.59.0")
63373)]
63374#[cfg_attr(
63375 target_arch = "arm",
63376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63377)]
63378pub unsafe fn vst1q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4_t) {
63379 static_assert_uimm_bits!(LANE, 2);
63380 *a = simd_extract!(b, LANE as u32);
63381}
63382#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s8)"]
63384#[doc = "## Safety"]
63385#[doc = " * Neon intrinsic unsafe"]
63386#[inline(always)]
63387#[target_feature(enable = "neon")]
63388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63389#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63390#[cfg_attr(
63391 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63392 assert_instr(nop, LANE = 0)
63393)]
63394#[rustc_legacy_const_generics(2)]
63395#[cfg_attr(
63396 not(target_arch = "arm"),
63397 stable(feature = "neon_intrinsics", since = "1.59.0")
63398)]
63399#[cfg_attr(
63400 target_arch = "arm",
63401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63402)]
63403pub unsafe fn vst1_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8_t) {
63404 static_assert_uimm_bits!(LANE, 3);
63405 *a = simd_extract!(b, LANE as u32);
63406}
63407#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s8)"]
63409#[doc = "## Safety"]
63410#[doc = " * Neon intrinsic unsafe"]
63411#[inline(always)]
63412#[target_feature(enable = "neon")]
63413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63414#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63415#[cfg_attr(
63416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63417 assert_instr(nop, LANE = 0)
63418)]
63419#[rustc_legacy_const_generics(2)]
63420#[cfg_attr(
63421 not(target_arch = "arm"),
63422 stable(feature = "neon_intrinsics", since = "1.59.0")
63423)]
63424#[cfg_attr(
63425 target_arch = "arm",
63426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63427)]
63428pub unsafe fn vst1q_lane_s8<const LANE: i32>(a: *mut i8, b: int8x16_t) {
63429 static_assert_uimm_bits!(LANE, 4);
63430 *a = simd_extract!(b, LANE as u32);
63431}
63432#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s16)"]
63434#[doc = "## Safety"]
63435#[doc = " * Neon intrinsic unsafe"]
63436#[inline(always)]
63437#[target_feature(enable = "neon")]
63438#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63440#[cfg_attr(
63441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63442 assert_instr(nop, LANE = 0)
63443)]
63444#[rustc_legacy_const_generics(2)]
63445#[cfg_attr(
63446 not(target_arch = "arm"),
63447 stable(feature = "neon_intrinsics", since = "1.59.0")
63448)]
63449#[cfg_attr(
63450 target_arch = "arm",
63451 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63452)]
63453pub unsafe fn vst1_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4_t) {
63454 static_assert_uimm_bits!(LANE, 2);
63455 *a = simd_extract!(b, LANE as u32);
63456}
63457#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s16)"]
63459#[doc = "## Safety"]
63460#[doc = " * Neon intrinsic unsafe"]
63461#[inline(always)]
63462#[target_feature(enable = "neon")]
63463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63464#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63465#[cfg_attr(
63466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63467 assert_instr(nop, LANE = 0)
63468)]
63469#[rustc_legacy_const_generics(2)]
63470#[cfg_attr(
63471 not(target_arch = "arm"),
63472 stable(feature = "neon_intrinsics", since = "1.59.0")
63473)]
63474#[cfg_attr(
63475 target_arch = "arm",
63476 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63477)]
63478pub unsafe fn vst1q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8_t) {
63479 static_assert_uimm_bits!(LANE, 3);
63480 *a = simd_extract!(b, LANE as u32);
63481}
63482#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s32)"]
63484#[doc = "## Safety"]
63485#[doc = " * Neon intrinsic unsafe"]
63486#[inline(always)]
63487#[target_feature(enable = "neon")]
63488#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63489#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63490#[cfg_attr(
63491 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63492 assert_instr(nop, LANE = 0)
63493)]
63494#[rustc_legacy_const_generics(2)]
63495#[cfg_attr(
63496 not(target_arch = "arm"),
63497 stable(feature = "neon_intrinsics", since = "1.59.0")
63498)]
63499#[cfg_attr(
63500 target_arch = "arm",
63501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63502)]
63503pub unsafe fn vst1_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2_t) {
63504 static_assert_uimm_bits!(LANE, 1);
63505 *a = simd_extract!(b, LANE as u32);
63506}
63507#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s32)"]
63509#[doc = "## Safety"]
63510#[doc = " * Neon intrinsic unsafe"]
63511#[inline(always)]
63512#[target_feature(enable = "neon")]
63513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63514#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63515#[cfg_attr(
63516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63517 assert_instr(nop, LANE = 0)
63518)]
63519#[rustc_legacy_const_generics(2)]
63520#[cfg_attr(
63521 not(target_arch = "arm"),
63522 stable(feature = "neon_intrinsics", since = "1.59.0")
63523)]
63524#[cfg_attr(
63525 target_arch = "arm",
63526 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63527)]
63528pub unsafe fn vst1q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4_t) {
63529 static_assert_uimm_bits!(LANE, 2);
63530 *a = simd_extract!(b, LANE as u32);
63531}
63532#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s64)"]
63534#[doc = "## Safety"]
63535#[doc = " * Neon intrinsic unsafe"]
63536#[inline(always)]
63537#[target_feature(enable = "neon")]
63538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63540#[cfg_attr(
63541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63542 assert_instr(nop, LANE = 0)
63543)]
63544#[rustc_legacy_const_generics(2)]
63545#[cfg_attr(
63546 not(target_arch = "arm"),
63547 stable(feature = "neon_intrinsics", since = "1.59.0")
63548)]
63549#[cfg_attr(
63550 target_arch = "arm",
63551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63552)]
63553pub unsafe fn vst1q_lane_s64<const LANE: i32>(a: *mut i64, b: int64x2_t) {
63554 static_assert_uimm_bits!(LANE, 1);
63555 *a = simd_extract!(b, LANE as u32);
63556}
63557#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u8)"]
63559#[doc = "## Safety"]
63560#[doc = " * Neon intrinsic unsafe"]
63561#[inline(always)]
63562#[target_feature(enable = "neon")]
63563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63564#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63565#[cfg_attr(
63566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63567 assert_instr(nop, LANE = 0)
63568)]
63569#[rustc_legacy_const_generics(2)]
63570#[cfg_attr(
63571 not(target_arch = "arm"),
63572 stable(feature = "neon_intrinsics", since = "1.59.0")
63573)]
63574#[cfg_attr(
63575 target_arch = "arm",
63576 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63577)]
63578pub unsafe fn vst1_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8_t) {
63579 static_assert_uimm_bits!(LANE, 3);
63580 *a = simd_extract!(b, LANE as u32);
63581}
63582#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63583#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u8)"]
63584#[doc = "## Safety"]
63585#[doc = " * Neon intrinsic unsafe"]
63586#[inline(always)]
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(nop, LANE = 0))]
63590#[cfg_attr(
63591 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63592 assert_instr(nop, LANE = 0)
63593)]
63594#[rustc_legacy_const_generics(2)]
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 unsafe fn vst1q_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x16_t) {
63604 static_assert_uimm_bits!(LANE, 4);
63605 *a = simd_extract!(b, LANE as u32);
63606}
63607#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u16)"]
63609#[doc = "## Safety"]
63610#[doc = " * Neon intrinsic unsafe"]
63611#[inline(always)]
63612#[target_feature(enable = "neon")]
63613#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63614#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63615#[cfg_attr(
63616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63617 assert_instr(nop, LANE = 0)
63618)]
63619#[rustc_legacy_const_generics(2)]
63620#[cfg_attr(
63621 not(target_arch = "arm"),
63622 stable(feature = "neon_intrinsics", since = "1.59.0")
63623)]
63624#[cfg_attr(
63625 target_arch = "arm",
63626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63627)]
63628pub unsafe fn vst1_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4_t) {
63629 static_assert_uimm_bits!(LANE, 2);
63630 *a = simd_extract!(b, LANE as u32);
63631}
63632#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u16)"]
63634#[doc = "## Safety"]
63635#[doc = " * Neon intrinsic unsafe"]
63636#[inline(always)]
63637#[target_feature(enable = "neon")]
63638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63640#[cfg_attr(
63641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63642 assert_instr(nop, LANE = 0)
63643)]
63644#[rustc_legacy_const_generics(2)]
63645#[cfg_attr(
63646 not(target_arch = "arm"),
63647 stable(feature = "neon_intrinsics", since = "1.59.0")
63648)]
63649#[cfg_attr(
63650 target_arch = "arm",
63651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63652)]
63653pub unsafe fn vst1q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8_t) {
63654 static_assert_uimm_bits!(LANE, 3);
63655 *a = simd_extract!(b, LANE as u32);
63656}
63657#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63658#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u32)"]
63659#[doc = "## Safety"]
63660#[doc = " * Neon intrinsic unsafe"]
63661#[inline(always)]
63662#[target_feature(enable = "neon")]
63663#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63664#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63665#[cfg_attr(
63666 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63667 assert_instr(nop, LANE = 0)
63668)]
63669#[rustc_legacy_const_generics(2)]
63670#[cfg_attr(
63671 not(target_arch = "arm"),
63672 stable(feature = "neon_intrinsics", since = "1.59.0")
63673)]
63674#[cfg_attr(
63675 target_arch = "arm",
63676 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63677)]
63678pub unsafe fn vst1_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2_t) {
63679 static_assert_uimm_bits!(LANE, 1);
63680 *a = simd_extract!(b, LANE as u32);
63681}
63682#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u32)"]
63684#[doc = "## Safety"]
63685#[doc = " * Neon intrinsic unsafe"]
63686#[inline(always)]
63687#[target_feature(enable = "neon")]
63688#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63689#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63690#[cfg_attr(
63691 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63692 assert_instr(nop, LANE = 0)
63693)]
63694#[rustc_legacy_const_generics(2)]
63695#[cfg_attr(
63696 not(target_arch = "arm"),
63697 stable(feature = "neon_intrinsics", since = "1.59.0")
63698)]
63699#[cfg_attr(
63700 target_arch = "arm",
63701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63702)]
63703pub unsafe fn vst1q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4_t) {
63704 static_assert_uimm_bits!(LANE, 2);
63705 *a = simd_extract!(b, LANE as u32);
63706}
63707#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u64)"]
63709#[doc = "## Safety"]
63710#[doc = " * Neon intrinsic unsafe"]
63711#[inline(always)]
63712#[target_feature(enable = "neon")]
63713#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63714#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63715#[cfg_attr(
63716 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63717 assert_instr(nop, LANE = 0)
63718)]
63719#[rustc_legacy_const_generics(2)]
63720#[cfg_attr(
63721 not(target_arch = "arm"),
63722 stable(feature = "neon_intrinsics", since = "1.59.0")
63723)]
63724#[cfg_attr(
63725 target_arch = "arm",
63726 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63727)]
63728pub unsafe fn vst1q_lane_u64<const LANE: i32>(a: *mut u64, b: uint64x2_t) {
63729 static_assert_uimm_bits!(LANE, 1);
63730 *a = simd_extract!(b, LANE as u32);
63731}
63732#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p8)"]
63734#[doc = "## Safety"]
63735#[doc = " * Neon intrinsic unsafe"]
63736#[inline(always)]
63737#[target_feature(enable = "neon")]
63738#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63739#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63740#[cfg_attr(
63741 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63742 assert_instr(nop, LANE = 0)
63743)]
63744#[rustc_legacy_const_generics(2)]
63745#[cfg_attr(
63746 not(target_arch = "arm"),
63747 stable(feature = "neon_intrinsics", since = "1.59.0")
63748)]
63749#[cfg_attr(
63750 target_arch = "arm",
63751 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63752)]
63753pub unsafe fn vst1_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8_t) {
63754 static_assert_uimm_bits!(LANE, 3);
63755 *a = simd_extract!(b, LANE as u32);
63756}
63757#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p8)"]
63759#[doc = "## Safety"]
63760#[doc = " * Neon intrinsic unsafe"]
63761#[inline(always)]
63762#[target_feature(enable = "neon")]
63763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63764#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63765#[cfg_attr(
63766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63767 assert_instr(nop, LANE = 0)
63768)]
63769#[rustc_legacy_const_generics(2)]
63770#[cfg_attr(
63771 not(target_arch = "arm"),
63772 stable(feature = "neon_intrinsics", since = "1.59.0")
63773)]
63774#[cfg_attr(
63775 target_arch = "arm",
63776 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63777)]
63778pub unsafe fn vst1q_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x16_t) {
63779 static_assert_uimm_bits!(LANE, 4);
63780 *a = simd_extract!(b, LANE as u32);
63781}
63782#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p16)"]
63784#[doc = "## Safety"]
63785#[doc = " * Neon intrinsic unsafe"]
63786#[inline(always)]
63787#[target_feature(enable = "neon")]
63788#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63789#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63790#[cfg_attr(
63791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63792 assert_instr(nop, LANE = 0)
63793)]
63794#[rustc_legacy_const_generics(2)]
63795#[cfg_attr(
63796 not(target_arch = "arm"),
63797 stable(feature = "neon_intrinsics", since = "1.59.0")
63798)]
63799#[cfg_attr(
63800 target_arch = "arm",
63801 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63802)]
63803pub unsafe fn vst1_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4_t) {
63804 static_assert_uimm_bits!(LANE, 2);
63805 *a = simd_extract!(b, LANE as u32);
63806}
63807#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63808#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p16)"]
63809#[doc = "## Safety"]
63810#[doc = " * Neon intrinsic unsafe"]
63811#[inline(always)]
63812#[target_feature(enable = "neon")]
63813#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63814#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63815#[cfg_attr(
63816 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63817 assert_instr(nop, LANE = 0)
63818)]
63819#[rustc_legacy_const_generics(2)]
63820#[cfg_attr(
63821 not(target_arch = "arm"),
63822 stable(feature = "neon_intrinsics", since = "1.59.0")
63823)]
63824#[cfg_attr(
63825 target_arch = "arm",
63826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63827)]
63828pub unsafe fn vst1q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8_t) {
63829 static_assert_uimm_bits!(LANE, 3);
63830 *a = simd_extract!(b, LANE as u32);
63831}
63832#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p64)"]
63834#[doc = "## Safety"]
63835#[doc = " * Neon intrinsic unsafe"]
63836#[inline(always)]
63837#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63838#[target_feature(enable = "neon,aes")]
63839#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63840#[cfg_attr(
63841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63842 assert_instr(nop, LANE = 0)
63843)]
63844#[rustc_legacy_const_generics(2)]
63845#[cfg_attr(
63846 not(target_arch = "arm"),
63847 stable(feature = "neon_intrinsics", since = "1.59.0")
63848)]
63849#[cfg_attr(
63850 target_arch = "arm",
63851 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63852)]
63853pub unsafe fn vst1_lane_p64<const LANE: i32>(a: *mut p64, b: poly64x1_t) {
63854 static_assert!(LANE == 0);
63855 *a = simd_extract!(b, LANE as u32);
63856}
63857#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63858#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s64)"]
63859#[doc = "## Safety"]
63860#[doc = " * Neon intrinsic unsafe"]
63861#[inline(always)]
63862#[target_feature(enable = "neon")]
63863#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63864#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63865#[cfg_attr(
63866 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63867 assert_instr(nop, LANE = 0)
63868)]
63869#[rustc_legacy_const_generics(2)]
63870#[cfg_attr(
63871 not(target_arch = "arm"),
63872 stable(feature = "neon_intrinsics", since = "1.59.0")
63873)]
63874#[cfg_attr(
63875 target_arch = "arm",
63876 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63877)]
63878pub unsafe fn vst1_lane_s64<const LANE: i32>(a: *mut i64, b: int64x1_t) {
63879 static_assert!(LANE == 0);
63880 *a = simd_extract!(b, LANE as u32);
63881}
63882#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63883#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u64)"]
63884#[doc = "## Safety"]
63885#[doc = " * Neon intrinsic unsafe"]
63886#[inline(always)]
63887#[target_feature(enable = "neon")]
63888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63890#[cfg_attr(
63891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63892 assert_instr(nop, LANE = 0)
63893)]
63894#[rustc_legacy_const_generics(2)]
63895#[cfg_attr(
63896 not(target_arch = "arm"),
63897 stable(feature = "neon_intrinsics", since = "1.59.0")
63898)]
63899#[cfg_attr(
63900 target_arch = "arm",
63901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63902)]
63903pub unsafe fn vst1_lane_u64<const LANE: i32>(a: *mut u64, b: uint64x1_t) {
63904 static_assert!(LANE == 0);
63905 *a = simd_extract!(b, LANE as u32);
63906}
63907#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63908#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x2)"]
63909#[doc = "## Safety"]
63910#[doc = " * Neon intrinsic unsafe"]
63911#[inline(always)]
63912#[target_feature(enable = "neon,aes")]
63913#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63914#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
63915#[cfg_attr(
63916 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63917 assert_instr(st1)
63918)]
63919#[cfg_attr(
63920 not(target_arch = "arm"),
63921 stable(feature = "neon_intrinsics", since = "1.59.0")
63922)]
63923#[cfg_attr(
63924 target_arch = "arm",
63925 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63926)]
63927pub unsafe fn vst1_p64_x2(a: *mut p64, b: poly64x1x2_t) {
63928 vst1_s64_x2(transmute(a), transmute(b))
63929}
63930#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x3)"]
63932#[doc = "## Safety"]
63933#[doc = " * Neon intrinsic unsafe"]
63934#[inline(always)]
63935#[target_feature(enable = "neon,aes")]
63936#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63937#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
63938#[cfg_attr(
63939 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63940 assert_instr(st1)
63941)]
63942#[cfg_attr(
63943 not(target_arch = "arm"),
63944 stable(feature = "neon_intrinsics", since = "1.59.0")
63945)]
63946#[cfg_attr(
63947 target_arch = "arm",
63948 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63949)]
63950pub unsafe fn vst1_p64_x3(a: *mut p64, b: poly64x1x3_t) {
63951 vst1_s64_x3(transmute(a), transmute(b))
63952}
63953#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x4)"]
63955#[doc = "## Safety"]
63956#[doc = " * Neon intrinsic unsafe"]
63957#[inline(always)]
63958#[target_feature(enable = "neon,aes")]
63959#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63960#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
63961#[cfg_attr(
63962 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63963 assert_instr(st1)
63964)]
63965#[cfg_attr(
63966 not(target_arch = "arm"),
63967 stable(feature = "neon_intrinsics", since = "1.59.0")
63968)]
63969#[cfg_attr(
63970 target_arch = "arm",
63971 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63972)]
63973pub unsafe fn vst1_p64_x4(a: *mut p64, b: poly64x1x4_t) {
63974 vst1_s64_x4(transmute(a), transmute(b))
63975}
63976#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x2)"]
63978#[doc = "## Safety"]
63979#[doc = " * Neon intrinsic unsafe"]
63980#[inline(always)]
63981#[target_feature(enable = "neon,aes")]
63982#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63983#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
63984#[cfg_attr(
63985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63986 assert_instr(st1)
63987)]
63988#[cfg_attr(
63989 not(target_arch = "arm"),
63990 stable(feature = "neon_intrinsics", since = "1.59.0")
63991)]
63992#[cfg_attr(
63993 target_arch = "arm",
63994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63995)]
63996pub unsafe fn vst1q_p64_x2(a: *mut p64, b: poly64x2x2_t) {
63997 vst1q_s64_x2(transmute(a), transmute(b))
63998}
63999#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x3)"]
64001#[doc = "## Safety"]
64002#[doc = " * Neon intrinsic unsafe"]
64003#[inline(always)]
64004#[target_feature(enable = "neon,aes")]
64005#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
64006#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
64007#[cfg_attr(
64008 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64009 assert_instr(st1)
64010)]
64011#[cfg_attr(
64012 not(target_arch = "arm"),
64013 stable(feature = "neon_intrinsics", since = "1.59.0")
64014)]
64015#[cfg_attr(
64016 target_arch = "arm",
64017 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64018)]
64019pub unsafe fn vst1q_p64_x3(a: *mut p64, b: poly64x2x3_t) {
64020 vst1q_s64_x3(transmute(a), transmute(b))
64021}
64022#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x4)"]
64024#[doc = "## Safety"]
64025#[doc = " * Neon intrinsic unsafe"]
64026#[inline(always)]
64027#[target_feature(enable = "neon,aes")]
64028#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
64029#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
64030#[cfg_attr(
64031 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64032 assert_instr(st1)
64033)]
64034#[cfg_attr(
64035 not(target_arch = "arm"),
64036 stable(feature = "neon_intrinsics", since = "1.59.0")
64037)]
64038#[cfg_attr(
64039 target_arch = "arm",
64040 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64041)]
64042pub unsafe fn vst1q_p64_x4(a: *mut p64, b: poly64x2x4_t) {
64043 vst1q_s64_x4(transmute(a), transmute(b))
64044}
64045#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x2)"]
64047#[doc = "## Safety"]
64048#[doc = " * Neon intrinsic unsafe"]
64049#[inline(always)]
64050#[target_feature(enable = "neon")]
64051#[cfg(not(target_arch = "arm"))]
64052#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64053#[cfg_attr(test, assert_instr(st1))]
64054pub unsafe fn vst1_s8_x2(a: *mut i8, b: int8x8x2_t) {
64055 unsafe extern "unadjusted" {
64056 #[cfg_attr(
64057 any(target_arch = "aarch64", target_arch = "arm64ec"),
64058 link_name = "llvm.aarch64.neon.st1x2.v8i8.p0"
64059 )]
64060 fn _vst1_s8_x2(a: int8x8_t, b: int8x8_t, ptr: *mut i8);
64061 }
64062 _vst1_s8_x2(b.0, b.1, a)
64063}
64064#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x2)"]
64066#[doc = "## Safety"]
64067#[doc = " * Neon intrinsic unsafe"]
64068#[inline(always)]
64069#[target_feature(enable = "neon")]
64070#[cfg(not(target_arch = "arm"))]
64071#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64072#[cfg_attr(test, assert_instr(st1))]
64073pub unsafe fn vst1q_s8_x2(a: *mut i8, b: int8x16x2_t) {
64074 unsafe extern "unadjusted" {
64075 #[cfg_attr(
64076 any(target_arch = "aarch64", target_arch = "arm64ec"),
64077 link_name = "llvm.aarch64.neon.st1x2.v16i8.p0"
64078 )]
64079 fn _vst1q_s8_x2(a: int8x16_t, b: int8x16_t, ptr: *mut i8);
64080 }
64081 _vst1q_s8_x2(b.0, b.1, a)
64082}
64083#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x2)"]
64085#[doc = "## Safety"]
64086#[doc = " * Neon intrinsic unsafe"]
64087#[inline(always)]
64088#[target_feature(enable = "neon")]
64089#[cfg(not(target_arch = "arm"))]
64090#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64091#[cfg_attr(test, assert_instr(st1))]
64092pub unsafe fn vst1_s16_x2(a: *mut i16, b: int16x4x2_t) {
64093 unsafe extern "unadjusted" {
64094 #[cfg_attr(
64095 any(target_arch = "aarch64", target_arch = "arm64ec"),
64096 link_name = "llvm.aarch64.neon.st1x2.v4i16.p0"
64097 )]
64098 fn _vst1_s16_x2(a: int16x4_t, b: int16x4_t, ptr: *mut i16);
64099 }
64100 _vst1_s16_x2(b.0, b.1, a)
64101}
64102#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x2)"]
64104#[doc = "## Safety"]
64105#[doc = " * Neon intrinsic unsafe"]
64106#[inline(always)]
64107#[target_feature(enable = "neon")]
64108#[cfg(not(target_arch = "arm"))]
64109#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64110#[cfg_attr(test, assert_instr(st1))]
64111pub unsafe fn vst1q_s16_x2(a: *mut i16, b: int16x8x2_t) {
64112 unsafe extern "unadjusted" {
64113 #[cfg_attr(
64114 any(target_arch = "aarch64", target_arch = "arm64ec"),
64115 link_name = "llvm.aarch64.neon.st1x2.v8i16.p0"
64116 )]
64117 fn _vst1q_s16_x2(a: int16x8_t, b: int16x8_t, ptr: *mut i16);
64118 }
64119 _vst1q_s16_x2(b.0, b.1, a)
64120}
64121#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64122#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x2)"]
64123#[doc = "## Safety"]
64124#[doc = " * Neon intrinsic unsafe"]
64125#[inline(always)]
64126#[target_feature(enable = "neon")]
64127#[cfg(not(target_arch = "arm"))]
64128#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64129#[cfg_attr(test, assert_instr(st1))]
64130pub unsafe fn vst1_s32_x2(a: *mut i32, b: int32x2x2_t) {
64131 unsafe extern "unadjusted" {
64132 #[cfg_attr(
64133 any(target_arch = "aarch64", target_arch = "arm64ec"),
64134 link_name = "llvm.aarch64.neon.st1x2.v2i32.p0"
64135 )]
64136 fn _vst1_s32_x2(a: int32x2_t, b: int32x2_t, ptr: *mut i32);
64137 }
64138 _vst1_s32_x2(b.0, b.1, a)
64139}
64140#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64141#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x2)"]
64142#[doc = "## Safety"]
64143#[doc = " * Neon intrinsic unsafe"]
64144#[inline(always)]
64145#[target_feature(enable = "neon")]
64146#[cfg(not(target_arch = "arm"))]
64147#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64148#[cfg_attr(test, assert_instr(st1))]
64149pub unsafe fn vst1q_s32_x2(a: *mut i32, b: int32x4x2_t) {
64150 unsafe extern "unadjusted" {
64151 #[cfg_attr(
64152 any(target_arch = "aarch64", target_arch = "arm64ec"),
64153 link_name = "llvm.aarch64.neon.st1x2.v4i32.p0"
64154 )]
64155 fn _vst1q_s32_x2(a: int32x4_t, b: int32x4_t, ptr: *mut i32);
64156 }
64157 _vst1q_s32_x2(b.0, b.1, a)
64158}
64159#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64160#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x2)"]
64161#[doc = "## Safety"]
64162#[doc = " * Neon intrinsic unsafe"]
64163#[inline(always)]
64164#[target_feature(enable = "neon")]
64165#[cfg(not(target_arch = "arm"))]
64166#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64167#[cfg_attr(test, assert_instr(st1))]
64168pub unsafe fn vst1_s64_x2(a: *mut i64, b: int64x1x2_t) {
64169 unsafe extern "unadjusted" {
64170 #[cfg_attr(
64171 any(target_arch = "aarch64", target_arch = "arm64ec"),
64172 link_name = "llvm.aarch64.neon.st1x2.v1i64.p0"
64173 )]
64174 fn _vst1_s64_x2(a: int64x1_t, b: int64x1_t, ptr: *mut i64);
64175 }
64176 _vst1_s64_x2(b.0, b.1, a)
64177}
64178#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x2)"]
64180#[doc = "## Safety"]
64181#[doc = " * Neon intrinsic unsafe"]
64182#[inline(always)]
64183#[target_feature(enable = "neon")]
64184#[cfg(not(target_arch = "arm"))]
64185#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64186#[cfg_attr(test, assert_instr(st1))]
64187pub unsafe fn vst1q_s64_x2(a: *mut i64, b: int64x2x2_t) {
64188 unsafe extern "unadjusted" {
64189 #[cfg_attr(
64190 any(target_arch = "aarch64", target_arch = "arm64ec"),
64191 link_name = "llvm.aarch64.neon.st1x2.v2i64.p0"
64192 )]
64193 fn _vst1q_s64_x2(a: int64x2_t, b: int64x2_t, ptr: *mut i64);
64194 }
64195 _vst1q_s64_x2(b.0, b.1, a)
64196}
64197#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64198#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x2)"]
64199#[doc = "## Safety"]
64200#[doc = " * Neon intrinsic unsafe"]
64201#[inline(always)]
64202#[target_feature(enable = "neon,v7")]
64203#[cfg(target_arch = "arm")]
64204#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64205#[cfg_attr(test, assert_instr(vst1))]
64206pub unsafe fn vst1_s8_x2(a: *mut i8, b: int8x8x2_t) {
64207 unsafe extern "unadjusted" {
64208 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v8i8.p0")]
64209 fn _vst1_s8_x2(ptr: *mut i8, a: int8x8_t, b: int8x8_t);
64210 }
64211 _vst1_s8_x2(a, b.0, b.1)
64212}
64213#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x2)"]
64215#[doc = "## Safety"]
64216#[doc = " * Neon intrinsic unsafe"]
64217#[inline(always)]
64218#[target_feature(enable = "neon,v7")]
64219#[cfg(target_arch = "arm")]
64220#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64221#[cfg_attr(test, assert_instr(vst1))]
64222pub unsafe fn vst1q_s8_x2(a: *mut i8, b: int8x16x2_t) {
64223 unsafe extern "unadjusted" {
64224 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v16i8.p0")]
64225 fn _vst1q_s8_x2(ptr: *mut i8, a: int8x16_t, b: int8x16_t);
64226 }
64227 _vst1q_s8_x2(a, b.0, b.1)
64228}
64229#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x2)"]
64231#[doc = "## Safety"]
64232#[doc = " * Neon intrinsic unsafe"]
64233#[inline(always)]
64234#[target_feature(enable = "neon,v7")]
64235#[cfg(target_arch = "arm")]
64236#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64237#[cfg_attr(test, assert_instr(vst1))]
64238pub unsafe fn vst1_s16_x2(a: *mut i16, b: int16x4x2_t) {
64239 unsafe extern "unadjusted" {
64240 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4i16.p0")]
64241 fn _vst1_s16_x2(ptr: *mut i16, a: int16x4_t, b: int16x4_t);
64242 }
64243 _vst1_s16_x2(a, b.0, b.1)
64244}
64245#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x2)"]
64247#[doc = "## Safety"]
64248#[doc = " * Neon intrinsic unsafe"]
64249#[inline(always)]
64250#[target_feature(enable = "neon,v7")]
64251#[cfg(target_arch = "arm")]
64252#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64253#[cfg_attr(test, assert_instr(vst1))]
64254pub unsafe fn vst1q_s16_x2(a: *mut i16, b: int16x8x2_t) {
64255 unsafe extern "unadjusted" {
64256 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v8i16.p0")]
64257 fn _vst1q_s16_x2(ptr: *mut i16, a: int16x8_t, b: int16x8_t);
64258 }
64259 _vst1q_s16_x2(a, b.0, b.1)
64260}
64261#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x2)"]
64263#[doc = "## Safety"]
64264#[doc = " * Neon intrinsic unsafe"]
64265#[inline(always)]
64266#[target_feature(enable = "neon,v7")]
64267#[cfg(target_arch = "arm")]
64268#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64269#[cfg_attr(test, assert_instr(vst1))]
64270pub unsafe fn vst1_s32_x2(a: *mut i32, b: int32x2x2_t) {
64271 unsafe extern "unadjusted" {
64272 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2i32.p0")]
64273 fn _vst1_s32_x2(ptr: *mut i32, a: int32x2_t, b: int32x2_t);
64274 }
64275 _vst1_s32_x2(a, b.0, b.1)
64276}
64277#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x2)"]
64279#[doc = "## Safety"]
64280#[doc = " * Neon intrinsic unsafe"]
64281#[inline(always)]
64282#[target_feature(enable = "neon,v7")]
64283#[cfg(target_arch = "arm")]
64284#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64285#[cfg_attr(test, assert_instr(vst1))]
64286pub unsafe fn vst1q_s32_x2(a: *mut i32, b: int32x4x2_t) {
64287 unsafe extern "unadjusted" {
64288 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4i32.p0")]
64289 fn _vst1q_s32_x2(ptr: *mut i32, a: int32x4_t, b: int32x4_t);
64290 }
64291 _vst1q_s32_x2(a, b.0, b.1)
64292}
64293#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64294#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x2)"]
64295#[doc = "## Safety"]
64296#[doc = " * Neon intrinsic unsafe"]
64297#[inline(always)]
64298#[target_feature(enable = "neon,v7")]
64299#[cfg(target_arch = "arm")]
64300#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64301#[cfg_attr(test, assert_instr(vst1))]
64302pub unsafe fn vst1_s64_x2(a: *mut i64, b: int64x1x2_t) {
64303 unsafe extern "unadjusted" {
64304 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v1i64.p0")]
64305 fn _vst1_s64_x2(ptr: *mut i64, a: int64x1_t, b: int64x1_t);
64306 }
64307 _vst1_s64_x2(a, b.0, b.1)
64308}
64309#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x2)"]
64311#[doc = "## Safety"]
64312#[doc = " * Neon intrinsic unsafe"]
64313#[inline(always)]
64314#[target_feature(enable = "neon,v7")]
64315#[cfg(target_arch = "arm")]
64316#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64317#[cfg_attr(test, assert_instr(vst1))]
64318pub unsafe fn vst1q_s64_x2(a: *mut i64, b: int64x2x2_t) {
64319 unsafe extern "unadjusted" {
64320 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2i64.p0")]
64321 fn _vst1q_s64_x2(ptr: *mut i64, a: int64x2_t, b: int64x2_t);
64322 }
64323 _vst1q_s64_x2(a, b.0, b.1)
64324}
64325#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x3)"]
64327#[doc = "## Safety"]
64328#[doc = " * Neon intrinsic unsafe"]
64329#[inline(always)]
64330#[target_feature(enable = "neon")]
64331#[cfg(not(target_arch = "arm"))]
64332#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64333#[cfg_attr(test, assert_instr(st1))]
64334pub unsafe fn vst1_s8_x3(a: *mut i8, b: int8x8x3_t) {
64335 unsafe extern "unadjusted" {
64336 #[cfg_attr(
64337 any(target_arch = "aarch64", target_arch = "arm64ec"),
64338 link_name = "llvm.aarch64.neon.st1x3.v8i8.p0"
64339 )]
64340 fn _vst1_s8_x3(a: int8x8_t, b: int8x8_t, c: int8x8_t, ptr: *mut i8);
64341 }
64342 _vst1_s8_x3(b.0, b.1, b.2, a)
64343}
64344#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x3)"]
64346#[doc = "## Safety"]
64347#[doc = " * Neon intrinsic unsafe"]
64348#[inline(always)]
64349#[target_feature(enable = "neon")]
64350#[cfg(not(target_arch = "arm"))]
64351#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64352#[cfg_attr(test, assert_instr(st1))]
64353pub unsafe fn vst1q_s8_x3(a: *mut i8, b: int8x16x3_t) {
64354 unsafe extern "unadjusted" {
64355 #[cfg_attr(
64356 any(target_arch = "aarch64", target_arch = "arm64ec"),
64357 link_name = "llvm.aarch64.neon.st1x3.v16i8.p0"
64358 )]
64359 fn _vst1q_s8_x3(a: int8x16_t, b: int8x16_t, c: int8x16_t, ptr: *mut i8);
64360 }
64361 _vst1q_s8_x3(b.0, b.1, b.2, a)
64362}
64363#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x3)"]
64365#[doc = "## Safety"]
64366#[doc = " * Neon intrinsic unsafe"]
64367#[inline(always)]
64368#[target_feature(enable = "neon")]
64369#[cfg(not(target_arch = "arm"))]
64370#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64371#[cfg_attr(test, assert_instr(st1))]
64372pub unsafe fn vst1_s16_x3(a: *mut i16, b: int16x4x3_t) {
64373 unsafe extern "unadjusted" {
64374 #[cfg_attr(
64375 any(target_arch = "aarch64", target_arch = "arm64ec"),
64376 link_name = "llvm.aarch64.neon.st1x3.v4i16.p0"
64377 )]
64378 fn _vst1_s16_x3(a: int16x4_t, b: int16x4_t, c: int16x4_t, ptr: *mut i16);
64379 }
64380 _vst1_s16_x3(b.0, b.1, b.2, a)
64381}
64382#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x3)"]
64384#[doc = "## Safety"]
64385#[doc = " * Neon intrinsic unsafe"]
64386#[inline(always)]
64387#[target_feature(enable = "neon")]
64388#[cfg(not(target_arch = "arm"))]
64389#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64390#[cfg_attr(test, assert_instr(st1))]
64391pub unsafe fn vst1q_s16_x3(a: *mut i16, b: int16x8x3_t) {
64392 unsafe extern "unadjusted" {
64393 #[cfg_attr(
64394 any(target_arch = "aarch64", target_arch = "arm64ec"),
64395 link_name = "llvm.aarch64.neon.st1x3.v8i16.p0"
64396 )]
64397 fn _vst1q_s16_x3(a: int16x8_t, b: int16x8_t, c: int16x8_t, ptr: *mut i16);
64398 }
64399 _vst1q_s16_x3(b.0, b.1, b.2, a)
64400}
64401#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x3)"]
64403#[doc = "## Safety"]
64404#[doc = " * Neon intrinsic unsafe"]
64405#[inline(always)]
64406#[target_feature(enable = "neon")]
64407#[cfg(not(target_arch = "arm"))]
64408#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64409#[cfg_attr(test, assert_instr(st1))]
64410pub unsafe fn vst1_s32_x3(a: *mut i32, b: int32x2x3_t) {
64411 unsafe extern "unadjusted" {
64412 #[cfg_attr(
64413 any(target_arch = "aarch64", target_arch = "arm64ec"),
64414 link_name = "llvm.aarch64.neon.st1x3.v2i32.p0"
64415 )]
64416 fn _vst1_s32_x3(a: int32x2_t, b: int32x2_t, c: int32x2_t, ptr: *mut i32);
64417 }
64418 _vst1_s32_x3(b.0, b.1, b.2, a)
64419}
64420#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x3)"]
64422#[doc = "## Safety"]
64423#[doc = " * Neon intrinsic unsafe"]
64424#[inline(always)]
64425#[target_feature(enable = "neon")]
64426#[cfg(not(target_arch = "arm"))]
64427#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64428#[cfg_attr(test, assert_instr(st1))]
64429pub unsafe fn vst1q_s32_x3(a: *mut i32, b: int32x4x3_t) {
64430 unsafe extern "unadjusted" {
64431 #[cfg_attr(
64432 any(target_arch = "aarch64", target_arch = "arm64ec"),
64433 link_name = "llvm.aarch64.neon.st1x3.v4i32.p0"
64434 )]
64435 fn _vst1q_s32_x3(a: int32x4_t, b: int32x4_t, c: int32x4_t, ptr: *mut i32);
64436 }
64437 _vst1q_s32_x3(b.0, b.1, b.2, a)
64438}
64439#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64440#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x3)"]
64441#[doc = "## Safety"]
64442#[doc = " * Neon intrinsic unsafe"]
64443#[inline(always)]
64444#[target_feature(enable = "neon")]
64445#[cfg(not(target_arch = "arm"))]
64446#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64447#[cfg_attr(test, assert_instr(st1))]
64448pub unsafe fn vst1_s64_x3(a: *mut i64, b: int64x1x3_t) {
64449 unsafe extern "unadjusted" {
64450 #[cfg_attr(
64451 any(target_arch = "aarch64", target_arch = "arm64ec"),
64452 link_name = "llvm.aarch64.neon.st1x3.v1i64.p0"
64453 )]
64454 fn _vst1_s64_x3(a: int64x1_t, b: int64x1_t, c: int64x1_t, ptr: *mut i64);
64455 }
64456 _vst1_s64_x3(b.0, b.1, b.2, a)
64457}
64458#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x3)"]
64460#[doc = "## Safety"]
64461#[doc = " * Neon intrinsic unsafe"]
64462#[inline(always)]
64463#[target_feature(enable = "neon")]
64464#[cfg(not(target_arch = "arm"))]
64465#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64466#[cfg_attr(test, assert_instr(st1))]
64467pub unsafe fn vst1q_s64_x3(a: *mut i64, b: int64x2x3_t) {
64468 unsafe extern "unadjusted" {
64469 #[cfg_attr(
64470 any(target_arch = "aarch64", target_arch = "arm64ec"),
64471 link_name = "llvm.aarch64.neon.st1x3.v2i64.p0"
64472 )]
64473 fn _vst1q_s64_x3(a: int64x2_t, b: int64x2_t, c: int64x2_t, ptr: *mut i64);
64474 }
64475 _vst1q_s64_x3(b.0, b.1, b.2, a)
64476}
64477#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64478#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x3)"]
64479#[doc = "## Safety"]
64480#[doc = " * Neon intrinsic unsafe"]
64481#[inline(always)]
64482#[target_feature(enable = "neon,v7")]
64483#[cfg(target_arch = "arm")]
64484#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64485#[cfg_attr(test, assert_instr(vst1))]
64486pub unsafe fn vst1_s8_x3(a: *mut i8, b: int8x8x3_t) {
64487 unsafe extern "unadjusted" {
64488 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8i8.p0")]
64489 fn _vst1_s8_x3(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t);
64490 }
64491 _vst1_s8_x3(a, b.0, b.1, b.2)
64492}
64493#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x3)"]
64495#[doc = "## Safety"]
64496#[doc = " * Neon intrinsic unsafe"]
64497#[inline(always)]
64498#[target_feature(enable = "neon,v7")]
64499#[cfg(target_arch = "arm")]
64500#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64501#[cfg_attr(test, assert_instr(vst1))]
64502pub unsafe fn vst1q_s8_x3(a: *mut i8, b: int8x16x3_t) {
64503 unsafe extern "unadjusted" {
64504 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v16i8.p0")]
64505 fn _vst1q_s8_x3(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t);
64506 }
64507 _vst1q_s8_x3(a, b.0, b.1, b.2)
64508}
64509#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x3)"]
64511#[doc = "## Safety"]
64512#[doc = " * Neon intrinsic unsafe"]
64513#[inline(always)]
64514#[target_feature(enable = "neon,v7")]
64515#[cfg(target_arch = "arm")]
64516#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64517#[cfg_attr(test, assert_instr(vst1))]
64518pub unsafe fn vst1_s16_x3(a: *mut i16, b: int16x4x3_t) {
64519 unsafe extern "unadjusted" {
64520 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4i16.p0")]
64521 fn _vst1_s16_x3(ptr: *mut i16, a: int16x4_t, b: int16x4_t, c: int16x4_t);
64522 }
64523 _vst1_s16_x3(a, b.0, b.1, b.2)
64524}
64525#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64526#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x3)"]
64527#[doc = "## Safety"]
64528#[doc = " * Neon intrinsic unsafe"]
64529#[inline(always)]
64530#[target_feature(enable = "neon,v7")]
64531#[cfg(target_arch = "arm")]
64532#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64533#[cfg_attr(test, assert_instr(vst1))]
64534pub unsafe fn vst1q_s16_x3(a: *mut i16, b: int16x8x3_t) {
64535 unsafe extern "unadjusted" {
64536 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8i16.p0")]
64537 fn _vst1q_s16_x3(ptr: *mut i16, a: int16x8_t, b: int16x8_t, c: int16x8_t);
64538 }
64539 _vst1q_s16_x3(a, b.0, b.1, b.2)
64540}
64541#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x3)"]
64543#[doc = "## Safety"]
64544#[doc = " * Neon intrinsic unsafe"]
64545#[inline(always)]
64546#[target_feature(enable = "neon,v7")]
64547#[cfg(target_arch = "arm")]
64548#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64549#[cfg_attr(test, assert_instr(vst1))]
64550pub unsafe fn vst1_s32_x3(a: *mut i32, b: int32x2x3_t) {
64551 unsafe extern "unadjusted" {
64552 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v2i32.p0")]
64553 fn _vst1_s32_x3(ptr: *mut i32, a: int32x2_t, b: int32x2_t, c: int32x2_t);
64554 }
64555 _vst1_s32_x3(a, b.0, b.1, b.2)
64556}
64557#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x3)"]
64559#[doc = "## Safety"]
64560#[doc = " * Neon intrinsic unsafe"]
64561#[inline(always)]
64562#[target_feature(enable = "neon,v7")]
64563#[cfg(target_arch = "arm")]
64564#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64565#[cfg_attr(test, assert_instr(vst1))]
64566pub unsafe fn vst1q_s32_x3(a: *mut i32, b: int32x4x3_t) {
64567 unsafe extern "unadjusted" {
64568 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4i32.p0")]
64569 fn _vst1q_s32_x3(ptr: *mut i32, a: int32x4_t, b: int32x4_t, c: int32x4_t);
64570 }
64571 _vst1q_s32_x3(a, b.0, b.1, b.2)
64572}
64573#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64574#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x3)"]
64575#[doc = "## Safety"]
64576#[doc = " * Neon intrinsic unsafe"]
64577#[inline(always)]
64578#[target_feature(enable = "neon,v7")]
64579#[cfg(target_arch = "arm")]
64580#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64581#[cfg_attr(test, assert_instr(vst1))]
64582pub unsafe fn vst1_s64_x3(a: *mut i64, b: int64x1x3_t) {
64583 unsafe extern "unadjusted" {
64584 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v1i64.p0")]
64585 fn _vst1_s64_x3(ptr: *mut i64, a: int64x1_t, b: int64x1_t, c: int64x1_t);
64586 }
64587 _vst1_s64_x3(a, b.0, b.1, b.2)
64588}
64589#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x3)"]
64591#[doc = "## Safety"]
64592#[doc = " * Neon intrinsic unsafe"]
64593#[inline(always)]
64594#[target_feature(enable = "neon,v7")]
64595#[cfg(target_arch = "arm")]
64596#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64597#[cfg_attr(test, assert_instr(vst1))]
64598pub unsafe fn vst1q_s64_x3(a: *mut i64, b: int64x2x3_t) {
64599 unsafe extern "unadjusted" {
64600 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v2i64.p0")]
64601 fn _vst1q_s64_x3(ptr: *mut i64, a: int64x2_t, b: int64x2_t, c: int64x2_t);
64602 }
64603 _vst1q_s64_x3(a, b.0, b.1, b.2)
64604}
64605#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x4)"]
64607#[doc = "## Safety"]
64608#[doc = " * Neon intrinsic unsafe"]
64609#[inline(always)]
64610#[target_feature(enable = "neon")]
64611#[cfg(not(target_arch = "arm"))]
64612#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64613#[cfg_attr(test, assert_instr(st1))]
64614pub unsafe fn vst1_s8_x4(a: *mut i8, b: int8x8x4_t) {
64615 unsafe extern "unadjusted" {
64616 #[cfg_attr(
64617 any(target_arch = "aarch64", target_arch = "arm64ec"),
64618 link_name = "llvm.aarch64.neon.st1x4.v8i8.p0"
64619 )]
64620 fn _vst1_s8_x4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, ptr: *mut i8);
64621 }
64622 _vst1_s8_x4(b.0, b.1, b.2, b.3, a)
64623}
64624#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64625#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x4)"]
64626#[doc = "## Safety"]
64627#[doc = " * Neon intrinsic unsafe"]
64628#[inline(always)]
64629#[target_feature(enable = "neon")]
64630#[cfg(not(target_arch = "arm"))]
64631#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64632#[cfg_attr(test, assert_instr(st1))]
64633pub unsafe fn vst1q_s8_x4(a: *mut i8, b: int8x16x4_t) {
64634 unsafe extern "unadjusted" {
64635 #[cfg_attr(
64636 any(target_arch = "aarch64", target_arch = "arm64ec"),
64637 link_name = "llvm.aarch64.neon.st1x4.v16i8.p0"
64638 )]
64639 fn _vst1q_s8_x4(a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t, ptr: *mut i8);
64640 }
64641 _vst1q_s8_x4(b.0, b.1, b.2, b.3, a)
64642}
64643#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x4)"]
64645#[doc = "## Safety"]
64646#[doc = " * Neon intrinsic unsafe"]
64647#[inline(always)]
64648#[target_feature(enable = "neon")]
64649#[cfg(not(target_arch = "arm"))]
64650#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64651#[cfg_attr(test, assert_instr(st1))]
64652pub unsafe fn vst1_s16_x4(a: *mut i16, b: int16x4x4_t) {
64653 unsafe extern "unadjusted" {
64654 #[cfg_attr(
64655 any(target_arch = "aarch64", target_arch = "arm64ec"),
64656 link_name = "llvm.aarch64.neon.st1x4.v4i16.p0"
64657 )]
64658 fn _vst1_s16_x4(a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t, ptr: *mut i16);
64659 }
64660 _vst1_s16_x4(b.0, b.1, b.2, b.3, a)
64661}
64662#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x4)"]
64664#[doc = "## Safety"]
64665#[doc = " * Neon intrinsic unsafe"]
64666#[inline(always)]
64667#[target_feature(enable = "neon")]
64668#[cfg(not(target_arch = "arm"))]
64669#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64670#[cfg_attr(test, assert_instr(st1))]
64671pub unsafe fn vst1q_s16_x4(a: *mut i16, b: int16x8x4_t) {
64672 unsafe extern "unadjusted" {
64673 #[cfg_attr(
64674 any(target_arch = "aarch64", target_arch = "arm64ec"),
64675 link_name = "llvm.aarch64.neon.st1x4.v8i16.p0"
64676 )]
64677 fn _vst1q_s16_x4(a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t, ptr: *mut i16);
64678 }
64679 _vst1q_s16_x4(b.0, b.1, b.2, b.3, a)
64680}
64681#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x4)"]
64683#[doc = "## Safety"]
64684#[doc = " * Neon intrinsic unsafe"]
64685#[inline(always)]
64686#[target_feature(enable = "neon")]
64687#[cfg(not(target_arch = "arm"))]
64688#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64689#[cfg_attr(test, assert_instr(st1))]
64690pub unsafe fn vst1_s32_x4(a: *mut i32, b: int32x2x4_t) {
64691 unsafe extern "unadjusted" {
64692 #[cfg_attr(
64693 any(target_arch = "aarch64", target_arch = "arm64ec"),
64694 link_name = "llvm.aarch64.neon.st1x4.v2i32.p0"
64695 )]
64696 fn _vst1_s32_x4(a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t, ptr: *mut i32);
64697 }
64698 _vst1_s32_x4(b.0, b.1, b.2, b.3, a)
64699}
64700#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x4)"]
64702#[doc = "## Safety"]
64703#[doc = " * Neon intrinsic unsafe"]
64704#[inline(always)]
64705#[target_feature(enable = "neon")]
64706#[cfg(not(target_arch = "arm"))]
64707#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64708#[cfg_attr(test, assert_instr(st1))]
64709pub unsafe fn vst1q_s32_x4(a: *mut i32, b: int32x4x4_t) {
64710 unsafe extern "unadjusted" {
64711 #[cfg_attr(
64712 any(target_arch = "aarch64", target_arch = "arm64ec"),
64713 link_name = "llvm.aarch64.neon.st1x4.v4i32.p0"
64714 )]
64715 fn _vst1q_s32_x4(a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t, ptr: *mut i32);
64716 }
64717 _vst1q_s32_x4(b.0, b.1, b.2, b.3, a)
64718}
64719#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x4)"]
64721#[doc = "## Safety"]
64722#[doc = " * Neon intrinsic unsafe"]
64723#[inline(always)]
64724#[target_feature(enable = "neon")]
64725#[cfg(not(target_arch = "arm"))]
64726#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64727#[cfg_attr(test, assert_instr(st1))]
64728pub unsafe fn vst1_s64_x4(a: *mut i64, b: int64x1x4_t) {
64729 unsafe extern "unadjusted" {
64730 #[cfg_attr(
64731 any(target_arch = "aarch64", target_arch = "arm64ec"),
64732 link_name = "llvm.aarch64.neon.st1x4.v1i64.p0"
64733 )]
64734 fn _vst1_s64_x4(a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t, ptr: *mut i64);
64735 }
64736 _vst1_s64_x4(b.0, b.1, b.2, b.3, a)
64737}
64738#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64739#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x4)"]
64740#[doc = "## Safety"]
64741#[doc = " * Neon intrinsic unsafe"]
64742#[inline(always)]
64743#[target_feature(enable = "neon")]
64744#[cfg(not(target_arch = "arm"))]
64745#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64746#[cfg_attr(test, assert_instr(st1))]
64747pub unsafe fn vst1q_s64_x4(a: *mut i64, b: int64x2x4_t) {
64748 unsafe extern "unadjusted" {
64749 #[cfg_attr(
64750 any(target_arch = "aarch64", target_arch = "arm64ec"),
64751 link_name = "llvm.aarch64.neon.st1x4.v2i64.p0"
64752 )]
64753 fn _vst1q_s64_x4(a: int64x2_t, b: int64x2_t, c: int64x2_t, d: int64x2_t, ptr: *mut i64);
64754 }
64755 _vst1q_s64_x4(b.0, b.1, b.2, b.3, a)
64756}
64757#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x4)"]
64759#[doc = "## Safety"]
64760#[doc = " * Neon intrinsic unsafe"]
64761#[inline(always)]
64762#[cfg(target_arch = "arm")]
64763#[target_feature(enable = "neon,v7")]
64764#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64765#[cfg_attr(test, assert_instr(vst1))]
64766pub unsafe fn vst1_s8_x4(a: *mut i8, b: int8x8x4_t) {
64767 unsafe extern "unadjusted" {
64768 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8i8.p0")]
64769 fn _vst1_s8_x4(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t);
64770 }
64771 _vst1_s8_x4(a, b.0, b.1, b.2, b.3)
64772}
64773#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64774#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x4)"]
64775#[doc = "## Safety"]
64776#[doc = " * Neon intrinsic unsafe"]
64777#[inline(always)]
64778#[cfg(target_arch = "arm")]
64779#[target_feature(enable = "neon,v7")]
64780#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64781#[cfg_attr(test, assert_instr(vst1))]
64782pub unsafe fn vst1q_s8_x4(a: *mut i8, b: int8x16x4_t) {
64783 unsafe extern "unadjusted" {
64784 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v16i8.p0")]
64785 fn _vst1q_s8_x4(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t);
64786 }
64787 _vst1q_s8_x4(a, b.0, b.1, b.2, b.3)
64788}
64789#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x4)"]
64791#[doc = "## Safety"]
64792#[doc = " * Neon intrinsic unsafe"]
64793#[inline(always)]
64794#[cfg(target_arch = "arm")]
64795#[target_feature(enable = "neon,v7")]
64796#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64797#[cfg_attr(test, assert_instr(vst1))]
64798pub unsafe fn vst1_s16_x4(a: *mut i16, b: int16x4x4_t) {
64799 unsafe extern "unadjusted" {
64800 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4i16.p0")]
64801 fn _vst1_s16_x4(ptr: *mut i16, a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t);
64802 }
64803 _vst1_s16_x4(a, b.0, b.1, b.2, b.3)
64804}
64805#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64806#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x4)"]
64807#[doc = "## Safety"]
64808#[doc = " * Neon intrinsic unsafe"]
64809#[inline(always)]
64810#[cfg(target_arch = "arm")]
64811#[target_feature(enable = "neon,v7")]
64812#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64813#[cfg_attr(test, assert_instr(vst1))]
64814pub unsafe fn vst1q_s16_x4(a: *mut i16, b: int16x8x4_t) {
64815 unsafe extern "unadjusted" {
64816 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8i16.p0")]
64817 fn _vst1q_s16_x4(ptr: *mut i16, a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t);
64818 }
64819 _vst1q_s16_x4(a, b.0, b.1, b.2, b.3)
64820}
64821#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x4)"]
64823#[doc = "## Safety"]
64824#[doc = " * Neon intrinsic unsafe"]
64825#[inline(always)]
64826#[cfg(target_arch = "arm")]
64827#[target_feature(enable = "neon,v7")]
64828#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64829#[cfg_attr(test, assert_instr(vst1))]
64830pub unsafe fn vst1_s32_x4(a: *mut i32, b: int32x2x4_t) {
64831 unsafe extern "unadjusted" {
64832 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2i32.p0")]
64833 fn _vst1_s32_x4(ptr: *mut i32, a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t);
64834 }
64835 _vst1_s32_x4(a, b.0, b.1, b.2, b.3)
64836}
64837#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x4)"]
64839#[doc = "## Safety"]
64840#[doc = " * Neon intrinsic unsafe"]
64841#[inline(always)]
64842#[cfg(target_arch = "arm")]
64843#[target_feature(enable = "neon,v7")]
64844#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64845#[cfg_attr(test, assert_instr(vst1))]
64846pub unsafe fn vst1q_s32_x4(a: *mut i32, b: int32x4x4_t) {
64847 unsafe extern "unadjusted" {
64848 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4i32.p0")]
64849 fn _vst1q_s32_x4(ptr: *mut i32, a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t);
64850 }
64851 _vst1q_s32_x4(a, b.0, b.1, b.2, b.3)
64852}
64853#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64854#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x4)"]
64855#[doc = "## Safety"]
64856#[doc = " * Neon intrinsic unsafe"]
64857#[inline(always)]
64858#[cfg(target_arch = "arm")]
64859#[target_feature(enable = "neon,v7")]
64860#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64861#[cfg_attr(test, assert_instr(vst1))]
64862pub unsafe fn vst1_s64_x4(a: *mut i64, b: int64x1x4_t) {
64863 unsafe extern "unadjusted" {
64864 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v1i64.p0")]
64865 fn _vst1_s64_x4(ptr: *mut i64, a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t);
64866 }
64867 _vst1_s64_x4(a, b.0, b.1, b.2, b.3)
64868}
64869#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x4)"]
64871#[doc = "## Safety"]
64872#[doc = " * Neon intrinsic unsafe"]
64873#[inline(always)]
64874#[cfg(target_arch = "arm")]
64875#[target_feature(enable = "neon,v7")]
64876#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64877#[cfg_attr(test, assert_instr(vst1))]
64878pub unsafe fn vst1q_s64_x4(a: *mut i64, b: int64x2x4_t) {
64879 unsafe extern "unadjusted" {
64880 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2i64.p0")]
64881 fn _vst1q_s64_x4(ptr: *mut i64, a: int64x2_t, b: int64x2_t, c: int64x2_t, d: int64x2_t);
64882 }
64883 _vst1q_s64_x4(a, b.0, b.1, b.2, b.3)
64884}
64885#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64886#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x2)"]
64887#[doc = "## Safety"]
64888#[doc = " * Neon intrinsic unsafe"]
64889#[inline(always)]
64890#[target_feature(enable = "neon")]
64891#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64892#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64893#[cfg_attr(
64894 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64895 assert_instr(st1)
64896)]
64897#[cfg_attr(
64898 not(target_arch = "arm"),
64899 stable(feature = "neon_intrinsics", since = "1.59.0")
64900)]
64901#[cfg_attr(
64902 target_arch = "arm",
64903 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64904)]
64905pub unsafe fn vst1_u8_x2(a: *mut u8, b: uint8x8x2_t) {
64906 vst1_s8_x2(transmute(a), transmute(b))
64907}
64908#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x3)"]
64910#[doc = "## Safety"]
64911#[doc = " * Neon intrinsic unsafe"]
64912#[inline(always)]
64913#[target_feature(enable = "neon")]
64914#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64915#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64916#[cfg_attr(
64917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64918 assert_instr(st1)
64919)]
64920#[cfg_attr(
64921 not(target_arch = "arm"),
64922 stable(feature = "neon_intrinsics", since = "1.59.0")
64923)]
64924#[cfg_attr(
64925 target_arch = "arm",
64926 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64927)]
64928pub unsafe fn vst1_u8_x3(a: *mut u8, b: uint8x8x3_t) {
64929 vst1_s8_x3(transmute(a), transmute(b))
64930}
64931#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x4)"]
64933#[doc = "## Safety"]
64934#[doc = " * Neon intrinsic unsafe"]
64935#[inline(always)]
64936#[target_feature(enable = "neon")]
64937#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64938#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64939#[cfg_attr(
64940 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64941 assert_instr(st1)
64942)]
64943#[cfg_attr(
64944 not(target_arch = "arm"),
64945 stable(feature = "neon_intrinsics", since = "1.59.0")
64946)]
64947#[cfg_attr(
64948 target_arch = "arm",
64949 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64950)]
64951pub unsafe fn vst1_u8_x4(a: *mut u8, b: uint8x8x4_t) {
64952 vst1_s8_x4(transmute(a), transmute(b))
64953}
64954#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64955#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x2)"]
64956#[doc = "## Safety"]
64957#[doc = " * Neon intrinsic unsafe"]
64958#[inline(always)]
64959#[target_feature(enable = "neon")]
64960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64961#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64962#[cfg_attr(
64963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64964 assert_instr(st1)
64965)]
64966#[cfg_attr(
64967 not(target_arch = "arm"),
64968 stable(feature = "neon_intrinsics", since = "1.59.0")
64969)]
64970#[cfg_attr(
64971 target_arch = "arm",
64972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64973)]
64974pub unsafe fn vst1q_u8_x2(a: *mut u8, b: uint8x16x2_t) {
64975 vst1q_s8_x2(transmute(a), transmute(b))
64976}
64977#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x3)"]
64979#[doc = "## Safety"]
64980#[doc = " * Neon intrinsic unsafe"]
64981#[inline(always)]
64982#[target_feature(enable = "neon")]
64983#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64984#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64985#[cfg_attr(
64986 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64987 assert_instr(st1)
64988)]
64989#[cfg_attr(
64990 not(target_arch = "arm"),
64991 stable(feature = "neon_intrinsics", since = "1.59.0")
64992)]
64993#[cfg_attr(
64994 target_arch = "arm",
64995 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64996)]
64997pub unsafe fn vst1q_u8_x3(a: *mut u8, b: uint8x16x3_t) {
64998 vst1q_s8_x3(transmute(a), transmute(b))
64999}
65000#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x4)"]
65002#[doc = "## Safety"]
65003#[doc = " * Neon intrinsic unsafe"]
65004#[inline(always)]
65005#[target_feature(enable = "neon")]
65006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65007#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65008#[cfg_attr(
65009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65010 assert_instr(st1)
65011)]
65012#[cfg_attr(
65013 not(target_arch = "arm"),
65014 stable(feature = "neon_intrinsics", since = "1.59.0")
65015)]
65016#[cfg_attr(
65017 target_arch = "arm",
65018 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65019)]
65020pub unsafe fn vst1q_u8_x4(a: *mut u8, b: uint8x16x4_t) {
65021 vst1q_s8_x4(transmute(a), transmute(b))
65022}
65023#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x2)"]
65025#[doc = "## Safety"]
65026#[doc = " * Neon intrinsic unsafe"]
65027#[inline(always)]
65028#[target_feature(enable = "neon")]
65029#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65030#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65031#[cfg_attr(
65032 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65033 assert_instr(st1)
65034)]
65035#[cfg_attr(
65036 not(target_arch = "arm"),
65037 stable(feature = "neon_intrinsics", since = "1.59.0")
65038)]
65039#[cfg_attr(
65040 target_arch = "arm",
65041 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65042)]
65043pub unsafe fn vst1_u16_x2(a: *mut u16, b: uint16x4x2_t) {
65044 vst1_s16_x2(transmute(a), transmute(b))
65045}
65046#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65047#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x3)"]
65048#[doc = "## Safety"]
65049#[doc = " * Neon intrinsic unsafe"]
65050#[inline(always)]
65051#[target_feature(enable = "neon")]
65052#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65053#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65054#[cfg_attr(
65055 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65056 assert_instr(st1)
65057)]
65058#[cfg_attr(
65059 not(target_arch = "arm"),
65060 stable(feature = "neon_intrinsics", since = "1.59.0")
65061)]
65062#[cfg_attr(
65063 target_arch = "arm",
65064 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65065)]
65066pub unsafe fn vst1_u16_x3(a: *mut u16, b: uint16x4x3_t) {
65067 vst1_s16_x3(transmute(a), transmute(b))
65068}
65069#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x4)"]
65071#[doc = "## Safety"]
65072#[doc = " * Neon intrinsic unsafe"]
65073#[inline(always)]
65074#[target_feature(enable = "neon")]
65075#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65076#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65077#[cfg_attr(
65078 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65079 assert_instr(st1)
65080)]
65081#[cfg_attr(
65082 not(target_arch = "arm"),
65083 stable(feature = "neon_intrinsics", since = "1.59.0")
65084)]
65085#[cfg_attr(
65086 target_arch = "arm",
65087 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65088)]
65089pub unsafe fn vst1_u16_x4(a: *mut u16, b: uint16x4x4_t) {
65090 vst1_s16_x4(transmute(a), transmute(b))
65091}
65092#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65093#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x2)"]
65094#[doc = "## Safety"]
65095#[doc = " * Neon intrinsic unsafe"]
65096#[inline(always)]
65097#[target_feature(enable = "neon")]
65098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65099#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65100#[cfg_attr(
65101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65102 assert_instr(st1)
65103)]
65104#[cfg_attr(
65105 not(target_arch = "arm"),
65106 stable(feature = "neon_intrinsics", since = "1.59.0")
65107)]
65108#[cfg_attr(
65109 target_arch = "arm",
65110 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65111)]
65112pub unsafe fn vst1q_u16_x2(a: *mut u16, b: uint16x8x2_t) {
65113 vst1q_s16_x2(transmute(a), transmute(b))
65114}
65115#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x3)"]
65117#[doc = "## Safety"]
65118#[doc = " * Neon intrinsic unsafe"]
65119#[inline(always)]
65120#[target_feature(enable = "neon")]
65121#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65122#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65123#[cfg_attr(
65124 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65125 assert_instr(st1)
65126)]
65127#[cfg_attr(
65128 not(target_arch = "arm"),
65129 stable(feature = "neon_intrinsics", since = "1.59.0")
65130)]
65131#[cfg_attr(
65132 target_arch = "arm",
65133 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65134)]
65135pub unsafe fn vst1q_u16_x3(a: *mut u16, b: uint16x8x3_t) {
65136 vst1q_s16_x3(transmute(a), transmute(b))
65137}
65138#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65139#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x4)"]
65140#[doc = "## Safety"]
65141#[doc = " * Neon intrinsic unsafe"]
65142#[inline(always)]
65143#[target_feature(enable = "neon")]
65144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65145#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65146#[cfg_attr(
65147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65148 assert_instr(st1)
65149)]
65150#[cfg_attr(
65151 not(target_arch = "arm"),
65152 stable(feature = "neon_intrinsics", since = "1.59.0")
65153)]
65154#[cfg_attr(
65155 target_arch = "arm",
65156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65157)]
65158pub unsafe fn vst1q_u16_x4(a: *mut u16, b: uint16x8x4_t) {
65159 vst1q_s16_x4(transmute(a), transmute(b))
65160}
65161#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x2)"]
65163#[doc = "## Safety"]
65164#[doc = " * Neon intrinsic unsafe"]
65165#[inline(always)]
65166#[target_feature(enable = "neon")]
65167#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65168#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65169#[cfg_attr(
65170 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65171 assert_instr(st1)
65172)]
65173#[cfg_attr(
65174 not(target_arch = "arm"),
65175 stable(feature = "neon_intrinsics", since = "1.59.0")
65176)]
65177#[cfg_attr(
65178 target_arch = "arm",
65179 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65180)]
65181pub unsafe fn vst1_u32_x2(a: *mut u32, b: uint32x2x2_t) {
65182 vst1_s32_x2(transmute(a), transmute(b))
65183}
65184#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x3)"]
65186#[doc = "## Safety"]
65187#[doc = " * Neon intrinsic unsafe"]
65188#[inline(always)]
65189#[target_feature(enable = "neon")]
65190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65191#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65192#[cfg_attr(
65193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65194 assert_instr(st1)
65195)]
65196#[cfg_attr(
65197 not(target_arch = "arm"),
65198 stable(feature = "neon_intrinsics", since = "1.59.0")
65199)]
65200#[cfg_attr(
65201 target_arch = "arm",
65202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65203)]
65204pub unsafe fn vst1_u32_x3(a: *mut u32, b: uint32x2x3_t) {
65205 vst1_s32_x3(transmute(a), transmute(b))
65206}
65207#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x4)"]
65209#[doc = "## Safety"]
65210#[doc = " * Neon intrinsic unsafe"]
65211#[inline(always)]
65212#[target_feature(enable = "neon")]
65213#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65214#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65215#[cfg_attr(
65216 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65217 assert_instr(st1)
65218)]
65219#[cfg_attr(
65220 not(target_arch = "arm"),
65221 stable(feature = "neon_intrinsics", since = "1.59.0")
65222)]
65223#[cfg_attr(
65224 target_arch = "arm",
65225 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65226)]
65227pub unsafe fn vst1_u32_x4(a: *mut u32, b: uint32x2x4_t) {
65228 vst1_s32_x4(transmute(a), transmute(b))
65229}
65230#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x2)"]
65232#[doc = "## Safety"]
65233#[doc = " * Neon intrinsic unsafe"]
65234#[inline(always)]
65235#[target_feature(enable = "neon")]
65236#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65237#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65238#[cfg_attr(
65239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65240 assert_instr(st1)
65241)]
65242#[cfg_attr(
65243 not(target_arch = "arm"),
65244 stable(feature = "neon_intrinsics", since = "1.59.0")
65245)]
65246#[cfg_attr(
65247 target_arch = "arm",
65248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65249)]
65250pub unsafe fn vst1q_u32_x2(a: *mut u32, b: uint32x4x2_t) {
65251 vst1q_s32_x2(transmute(a), transmute(b))
65252}
65253#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65254#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x3)"]
65255#[doc = "## Safety"]
65256#[doc = " * Neon intrinsic unsafe"]
65257#[inline(always)]
65258#[target_feature(enable = "neon")]
65259#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65260#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65261#[cfg_attr(
65262 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65263 assert_instr(st1)
65264)]
65265#[cfg_attr(
65266 not(target_arch = "arm"),
65267 stable(feature = "neon_intrinsics", since = "1.59.0")
65268)]
65269#[cfg_attr(
65270 target_arch = "arm",
65271 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65272)]
65273pub unsafe fn vst1q_u32_x3(a: *mut u32, b: uint32x4x3_t) {
65274 vst1q_s32_x3(transmute(a), transmute(b))
65275}
65276#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65277#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x4)"]
65278#[doc = "## Safety"]
65279#[doc = " * Neon intrinsic unsafe"]
65280#[inline(always)]
65281#[target_feature(enable = "neon")]
65282#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65283#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65284#[cfg_attr(
65285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65286 assert_instr(st1)
65287)]
65288#[cfg_attr(
65289 not(target_arch = "arm"),
65290 stable(feature = "neon_intrinsics", since = "1.59.0")
65291)]
65292#[cfg_attr(
65293 target_arch = "arm",
65294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65295)]
65296pub unsafe fn vst1q_u32_x4(a: *mut u32, b: uint32x4x4_t) {
65297 vst1q_s32_x4(transmute(a), transmute(b))
65298}
65299#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x2)"]
65301#[doc = "## Safety"]
65302#[doc = " * Neon intrinsic unsafe"]
65303#[inline(always)]
65304#[target_feature(enable = "neon")]
65305#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65306#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65307#[cfg_attr(
65308 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65309 assert_instr(st1)
65310)]
65311#[cfg_attr(
65312 not(target_arch = "arm"),
65313 stable(feature = "neon_intrinsics", since = "1.59.0")
65314)]
65315#[cfg_attr(
65316 target_arch = "arm",
65317 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65318)]
65319pub unsafe fn vst1_u64_x2(a: *mut u64, b: uint64x1x2_t) {
65320 vst1_s64_x2(transmute(a), transmute(b))
65321}
65322#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x3)"]
65324#[doc = "## Safety"]
65325#[doc = " * Neon intrinsic unsafe"]
65326#[inline(always)]
65327#[target_feature(enable = "neon")]
65328#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65329#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65330#[cfg_attr(
65331 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65332 assert_instr(st1)
65333)]
65334#[cfg_attr(
65335 not(target_arch = "arm"),
65336 stable(feature = "neon_intrinsics", since = "1.59.0")
65337)]
65338#[cfg_attr(
65339 target_arch = "arm",
65340 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65341)]
65342pub unsafe fn vst1_u64_x3(a: *mut u64, b: uint64x1x3_t) {
65343 vst1_s64_x3(transmute(a), transmute(b))
65344}
65345#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x4)"]
65347#[doc = "## Safety"]
65348#[doc = " * Neon intrinsic unsafe"]
65349#[inline(always)]
65350#[target_feature(enable = "neon")]
65351#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65352#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65353#[cfg_attr(
65354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65355 assert_instr(st1)
65356)]
65357#[cfg_attr(
65358 not(target_arch = "arm"),
65359 stable(feature = "neon_intrinsics", since = "1.59.0")
65360)]
65361#[cfg_attr(
65362 target_arch = "arm",
65363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65364)]
65365pub unsafe fn vst1_u64_x4(a: *mut u64, b: uint64x1x4_t) {
65366 vst1_s64_x4(transmute(a), transmute(b))
65367}
65368#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x2)"]
65370#[doc = "## Safety"]
65371#[doc = " * Neon intrinsic unsafe"]
65372#[inline(always)]
65373#[target_feature(enable = "neon")]
65374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65376#[cfg_attr(
65377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65378 assert_instr(st1)
65379)]
65380#[cfg_attr(
65381 not(target_arch = "arm"),
65382 stable(feature = "neon_intrinsics", since = "1.59.0")
65383)]
65384#[cfg_attr(
65385 target_arch = "arm",
65386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65387)]
65388pub unsafe fn vst1q_u64_x2(a: *mut u64, b: uint64x2x2_t) {
65389 vst1q_s64_x2(transmute(a), transmute(b))
65390}
65391#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x3)"]
65393#[doc = "## Safety"]
65394#[doc = " * Neon intrinsic unsafe"]
65395#[inline(always)]
65396#[target_feature(enable = "neon")]
65397#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65398#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65399#[cfg_attr(
65400 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65401 assert_instr(st1)
65402)]
65403#[cfg_attr(
65404 not(target_arch = "arm"),
65405 stable(feature = "neon_intrinsics", since = "1.59.0")
65406)]
65407#[cfg_attr(
65408 target_arch = "arm",
65409 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65410)]
65411pub unsafe fn vst1q_u64_x3(a: *mut u64, b: uint64x2x3_t) {
65412 vst1q_s64_x3(transmute(a), transmute(b))
65413}
65414#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x4)"]
65416#[doc = "## Safety"]
65417#[doc = " * Neon intrinsic unsafe"]
65418#[inline(always)]
65419#[target_feature(enable = "neon")]
65420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65421#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65422#[cfg_attr(
65423 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65424 assert_instr(st1)
65425)]
65426#[cfg_attr(
65427 not(target_arch = "arm"),
65428 stable(feature = "neon_intrinsics", since = "1.59.0")
65429)]
65430#[cfg_attr(
65431 target_arch = "arm",
65432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65433)]
65434pub unsafe fn vst1q_u64_x4(a: *mut u64, b: uint64x2x4_t) {
65435 vst1q_s64_x4(transmute(a), transmute(b))
65436}
65437#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x2)"]
65439#[doc = "## Safety"]
65440#[doc = " * Neon intrinsic unsafe"]
65441#[inline(always)]
65442#[target_feature(enable = "neon")]
65443#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65444#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65445#[cfg_attr(
65446 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65447 assert_instr(st1)
65448)]
65449#[cfg_attr(
65450 not(target_arch = "arm"),
65451 stable(feature = "neon_intrinsics", since = "1.59.0")
65452)]
65453#[cfg_attr(
65454 target_arch = "arm",
65455 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65456)]
65457pub unsafe fn vst1_p8_x2(a: *mut p8, b: poly8x8x2_t) {
65458 vst1_s8_x2(transmute(a), transmute(b))
65459}
65460#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65461#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x3)"]
65462#[doc = "## Safety"]
65463#[doc = " * Neon intrinsic unsafe"]
65464#[inline(always)]
65465#[target_feature(enable = "neon")]
65466#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65467#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65468#[cfg_attr(
65469 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65470 assert_instr(st1)
65471)]
65472#[cfg_attr(
65473 not(target_arch = "arm"),
65474 stable(feature = "neon_intrinsics", since = "1.59.0")
65475)]
65476#[cfg_attr(
65477 target_arch = "arm",
65478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65479)]
65480pub unsafe fn vst1_p8_x3(a: *mut p8, b: poly8x8x3_t) {
65481 vst1_s8_x3(transmute(a), transmute(b))
65482}
65483#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65484#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x4)"]
65485#[doc = "## Safety"]
65486#[doc = " * Neon intrinsic unsafe"]
65487#[inline(always)]
65488#[target_feature(enable = "neon")]
65489#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65490#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65491#[cfg_attr(
65492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65493 assert_instr(st1)
65494)]
65495#[cfg_attr(
65496 not(target_arch = "arm"),
65497 stable(feature = "neon_intrinsics", since = "1.59.0")
65498)]
65499#[cfg_attr(
65500 target_arch = "arm",
65501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65502)]
65503pub unsafe fn vst1_p8_x4(a: *mut p8, b: poly8x8x4_t) {
65504 vst1_s8_x4(transmute(a), transmute(b))
65505}
65506#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x2)"]
65508#[doc = "## Safety"]
65509#[doc = " * Neon intrinsic unsafe"]
65510#[inline(always)]
65511#[target_feature(enable = "neon")]
65512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65513#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65514#[cfg_attr(
65515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65516 assert_instr(st1)
65517)]
65518#[cfg_attr(
65519 not(target_arch = "arm"),
65520 stable(feature = "neon_intrinsics", since = "1.59.0")
65521)]
65522#[cfg_attr(
65523 target_arch = "arm",
65524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65525)]
65526pub unsafe fn vst1q_p8_x2(a: *mut p8, b: poly8x16x2_t) {
65527 vst1q_s8_x2(transmute(a), transmute(b))
65528}
65529#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x3)"]
65531#[doc = "## Safety"]
65532#[doc = " * Neon intrinsic unsafe"]
65533#[inline(always)]
65534#[target_feature(enable = "neon")]
65535#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65536#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65537#[cfg_attr(
65538 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65539 assert_instr(st1)
65540)]
65541#[cfg_attr(
65542 not(target_arch = "arm"),
65543 stable(feature = "neon_intrinsics", since = "1.59.0")
65544)]
65545#[cfg_attr(
65546 target_arch = "arm",
65547 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65548)]
65549pub unsafe fn vst1q_p8_x3(a: *mut p8, b: poly8x16x3_t) {
65550 vst1q_s8_x3(transmute(a), transmute(b))
65551}
65552#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65553#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x4)"]
65554#[doc = "## Safety"]
65555#[doc = " * Neon intrinsic unsafe"]
65556#[inline(always)]
65557#[target_feature(enable = "neon")]
65558#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65559#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65560#[cfg_attr(
65561 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65562 assert_instr(st1)
65563)]
65564#[cfg_attr(
65565 not(target_arch = "arm"),
65566 stable(feature = "neon_intrinsics", since = "1.59.0")
65567)]
65568#[cfg_attr(
65569 target_arch = "arm",
65570 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65571)]
65572pub unsafe fn vst1q_p8_x4(a: *mut p8, b: poly8x16x4_t) {
65573 vst1q_s8_x4(transmute(a), transmute(b))
65574}
65575#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65576#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x2)"]
65577#[doc = "## Safety"]
65578#[doc = " * Neon intrinsic unsafe"]
65579#[inline(always)]
65580#[target_feature(enable = "neon")]
65581#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65582#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65583#[cfg_attr(
65584 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65585 assert_instr(st1)
65586)]
65587#[cfg_attr(
65588 not(target_arch = "arm"),
65589 stable(feature = "neon_intrinsics", since = "1.59.0")
65590)]
65591#[cfg_attr(
65592 target_arch = "arm",
65593 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65594)]
65595pub unsafe fn vst1_p16_x2(a: *mut p16, b: poly16x4x2_t) {
65596 vst1_s16_x2(transmute(a), transmute(b))
65597}
65598#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x3)"]
65600#[doc = "## Safety"]
65601#[doc = " * Neon intrinsic unsafe"]
65602#[inline(always)]
65603#[target_feature(enable = "neon")]
65604#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65605#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65606#[cfg_attr(
65607 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65608 assert_instr(st1)
65609)]
65610#[cfg_attr(
65611 not(target_arch = "arm"),
65612 stable(feature = "neon_intrinsics", since = "1.59.0")
65613)]
65614#[cfg_attr(
65615 target_arch = "arm",
65616 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65617)]
65618pub unsafe fn vst1_p16_x3(a: *mut p16, b: poly16x4x3_t) {
65619 vst1_s16_x3(transmute(a), transmute(b))
65620}
65621#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x4)"]
65623#[doc = "## Safety"]
65624#[doc = " * Neon intrinsic unsafe"]
65625#[inline(always)]
65626#[target_feature(enable = "neon")]
65627#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65628#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65629#[cfg_attr(
65630 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65631 assert_instr(st1)
65632)]
65633#[cfg_attr(
65634 not(target_arch = "arm"),
65635 stable(feature = "neon_intrinsics", since = "1.59.0")
65636)]
65637#[cfg_attr(
65638 target_arch = "arm",
65639 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65640)]
65641pub unsafe fn vst1_p16_x4(a: *mut p16, b: poly16x4x4_t) {
65642 vst1_s16_x4(transmute(a), transmute(b))
65643}
65644#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x2)"]
65646#[doc = "## Safety"]
65647#[doc = " * Neon intrinsic unsafe"]
65648#[inline(always)]
65649#[target_feature(enable = "neon")]
65650#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65651#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65652#[cfg_attr(
65653 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65654 assert_instr(st1)
65655)]
65656#[cfg_attr(
65657 not(target_arch = "arm"),
65658 stable(feature = "neon_intrinsics", since = "1.59.0")
65659)]
65660#[cfg_attr(
65661 target_arch = "arm",
65662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65663)]
65664pub unsafe fn vst1q_p16_x2(a: *mut p16, b: poly16x8x2_t) {
65665 vst1q_s16_x2(transmute(a), transmute(b))
65666}
65667#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x3)"]
65669#[doc = "## Safety"]
65670#[doc = " * Neon intrinsic unsafe"]
65671#[inline(always)]
65672#[target_feature(enable = "neon")]
65673#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65674#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65675#[cfg_attr(
65676 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65677 assert_instr(st1)
65678)]
65679#[cfg_attr(
65680 not(target_arch = "arm"),
65681 stable(feature = "neon_intrinsics", since = "1.59.0")
65682)]
65683#[cfg_attr(
65684 target_arch = "arm",
65685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65686)]
65687pub unsafe fn vst1q_p16_x3(a: *mut p16, b: poly16x8x3_t) {
65688 vst1q_s16_x3(transmute(a), transmute(b))
65689}
65690#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x4)"]
65692#[doc = "## Safety"]
65693#[doc = " * Neon intrinsic unsafe"]
65694#[inline(always)]
65695#[target_feature(enable = "neon")]
65696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65697#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65698#[cfg_attr(
65699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65700 assert_instr(st1)
65701)]
65702#[cfg_attr(
65703 not(target_arch = "arm"),
65704 stable(feature = "neon_intrinsics", since = "1.59.0")
65705)]
65706#[cfg_attr(
65707 target_arch = "arm",
65708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65709)]
65710pub unsafe fn vst1q_p16_x4(a: *mut p16, b: poly16x8x4_t) {
65711 vst1q_s16_x4(transmute(a), transmute(b))
65712}
65713#[inline(always)]
65714#[target_feature(enable = "neon")]
65715#[cfg(target_arch = "arm")]
65716#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65717#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65718#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64", ALIGN = 0))]
65719#[rustc_legacy_const_generics(2)]
65720unsafe fn vst1_v1i64<const ALIGN: i32>(addr: *const i8, val: int64x1_t) {
65721 unsafe extern "unadjusted" {
65722 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v1i64.p0")]
65723 fn _vst1_v1i64(addr: *const i8, val: int64x1_t, align: i32);
65724 }
65725 _vst1_v1i64(addr, val, ALIGN)
65726}
65727#[inline(always)]
65728#[target_feature(enable = "neon")]
65729#[cfg(target_arch = "arm")]
65730#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65731#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65732#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
65733#[rustc_legacy_const_generics(2)]
65734unsafe fn vst1_v2f32<const ALIGN: i32>(addr: *const i8, val: float32x2_t) {
65735 unsafe extern "unadjusted" {
65736 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2f32.p0")]
65737 fn _vst1_v2f32(addr: *const i8, val: float32x2_t, align: i32);
65738 }
65739 _vst1_v2f32(addr, val, ALIGN)
65740}
65741#[inline(always)]
65742#[target_feature(enable = "neon")]
65743#[cfg(target_arch = "arm")]
65744#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65745#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65746#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
65747#[rustc_legacy_const_generics(2)]
65748unsafe fn vst1_v2i32<const ALIGN: i32>(addr: *const i8, val: int32x2_t) {
65749 unsafe extern "unadjusted" {
65750 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2i32.p0")]
65751 fn _vst1_v2i32(addr: *const i8, val: int32x2_t, align: i32);
65752 }
65753 _vst1_v2i32(addr, val, ALIGN)
65754}
65755#[inline(always)]
65756#[target_feature(enable = "neon")]
65757#[cfg(target_arch = "arm")]
65758#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65759#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65760#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16", ALIGN = 0))]
65761#[rustc_legacy_const_generics(2)]
65762unsafe fn vst1_v4i16<const ALIGN: i32>(addr: *const i8, val: int16x4_t) {
65763 unsafe extern "unadjusted" {
65764 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4i16.p0")]
65765 fn _vst1_v4i16(addr: *const i8, val: int16x4_t, align: i32);
65766 }
65767 _vst1_v4i16(addr, val, ALIGN)
65768}
65769#[inline(always)]
65770#[target_feature(enable = "neon")]
65771#[cfg(target_arch = "arm")]
65772#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65773#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65774#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8", ALIGN = 0))]
65775#[rustc_legacy_const_generics(2)]
65776unsafe fn vst1_v8i8<const ALIGN: i32>(addr: *const i8, val: int8x8_t) {
65777 unsafe extern "unadjusted" {
65778 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8i8.p0")]
65779 fn _vst1_v8i8(addr: *const i8, val: int8x8_t, align: i32);
65780 }
65781 _vst1_v8i8(addr, val, ALIGN)
65782}
65783#[inline(always)]
65784#[target_feature(enable = "neon")]
65785#[cfg(target_arch = "arm")]
65786#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65787#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65788#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8", ALIGN = 0))]
65789#[rustc_legacy_const_generics(2)]
65790unsafe fn vst1q_v16i8<const ALIGN: i32>(addr: *const i8, val: int8x16_t) {
65791 unsafe extern "unadjusted" {
65792 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v16i8.p0")]
65793 fn _vst1q_v16i8(addr: *const i8, val: int8x16_t, align: i32);
65794 }
65795 _vst1q_v16i8(addr, val, ALIGN)
65796}
65797#[inline(always)]
65798#[target_feature(enable = "neon")]
65799#[cfg(target_arch = "arm")]
65800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65801#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65802#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64", ALIGN = 0))]
65803#[rustc_legacy_const_generics(2)]
65804unsafe fn vst1q_v2i64<const ALIGN: i32>(addr: *const i8, val: int64x2_t) {
65805 unsafe extern "unadjusted" {
65806 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2i64.p0")]
65807 fn _vst1q_v2i64(addr: *const i8, val: int64x2_t, align: i32);
65808 }
65809 _vst1q_v2i64(addr, val, ALIGN)
65810}
65811#[inline(always)]
65812#[target_feature(enable = "neon")]
65813#[cfg(target_arch = "arm")]
65814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65815#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65816#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
65817#[rustc_legacy_const_generics(2)]
65818unsafe fn vst1q_v4f32<const ALIGN: i32>(addr: *const i8, val: float32x4_t) {
65819 unsafe extern "unadjusted" {
65820 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4f32.p0")]
65821 fn _vst1q_v4f32(addr: *const i8, val: float32x4_t, align: i32);
65822 }
65823 _vst1q_v4f32(addr, val, ALIGN)
65824}
65825#[inline(always)]
65826#[target_feature(enable = "neon")]
65827#[cfg(target_arch = "arm")]
65828#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65829#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65830#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
65831#[rustc_legacy_const_generics(2)]
65832unsafe fn vst1q_v4i32<const ALIGN: i32>(addr: *const i8, val: int32x4_t) {
65833 unsafe extern "unadjusted" {
65834 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4i32.p0")]
65835 fn _vst1q_v4i32(addr: *const i8, val: int32x4_t, align: i32);
65836 }
65837 _vst1q_v4i32(addr, val, ALIGN)
65838}
65839#[inline(always)]
65840#[target_feature(enable = "neon")]
65841#[cfg(target_arch = "arm")]
65842#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65843#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65844#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16", ALIGN = 0))]
65845#[rustc_legacy_const_generics(2)]
65846unsafe fn vst1q_v8i16<const ALIGN: i32>(addr: *const i8, val: int16x8_t) {
65847 unsafe extern "unadjusted" {
65848 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8i16.p0")]
65849 fn _vst1q_v8i16(addr: *const i8, val: int16x8_t, align: i32);
65850 }
65851 _vst1q_v8i16(addr, val, ALIGN)
65852}
65853#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65854#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_v4f16)"]
65855#[doc = "## Safety"]
65856#[doc = " * Neon intrinsic unsafe"]
65857#[inline(always)]
65858#[cfg(target_arch = "arm")]
65859#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65860#[target_feature(enable = "neon,fp16")]
65861#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65862#[cfg(not(target_arch = "arm64ec"))]
65863#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
65864unsafe fn vst1_v4f16(addr: *const i8, val: float16x4_t, align: i32) {
65865 unsafe extern "unadjusted" {
65866 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4f16.p0")]
65867 fn _vst1_v4f16(addr: *const i8, val: float16x4_t, align: i32);
65868 }
65869 _vst1_v4f16(addr, val, align)
65870}
65871#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_v8f16)"]
65873#[doc = "## Safety"]
65874#[doc = " * Neon intrinsic unsafe"]
65875#[inline(always)]
65876#[cfg(target_arch = "arm")]
65877#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65878#[target_feature(enable = "neon,fp16")]
65879#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65880#[cfg(not(target_arch = "arm64ec"))]
65881#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
65882unsafe fn vst1q_v8f16(addr: *const i8, val: float16x8_t, align: i32) {
65883 unsafe extern "unadjusted" {
65884 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8f16.p0")]
65885 fn _vst1q_v8f16(addr: *const i8, val: float16x8_t, align: i32);
65886 }
65887 _vst1q_v8f16(addr, val, align)
65888}
65889#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p64)"]
65891#[doc = "## Safety"]
65892#[doc = " * Neon intrinsic unsafe"]
65893#[inline(always)]
65894#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
65895#[target_feature(enable = "neon,aes")]
65896#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65897#[cfg_attr(
65898 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65899 assert_instr(nop, LANE = 0)
65900)]
65901#[rustc_legacy_const_generics(2)]
65902#[cfg_attr(
65903 not(target_arch = "arm"),
65904 stable(feature = "neon_intrinsics", since = "1.59.0")
65905)]
65906#[cfg_attr(
65907 target_arch = "arm",
65908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65909)]
65910pub unsafe fn vst1q_lane_p64<const LANE: i32>(a: *mut p64, b: poly64x2_t) {
65911 static_assert_uimm_bits!(LANE, 1);
65912 *a = simd_extract!(b, LANE as u32);
65913}
65914#[doc = "Store multiple 2-element structures from two registers"]
65915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f16)"]
65916#[doc = "## Safety"]
65917#[doc = " * Neon intrinsic unsafe"]
65918#[inline(always)]
65919#[target_feature(enable = "neon")]
65920#[cfg(not(target_arch = "arm"))]
65921#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65922#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65923#[cfg(not(target_arch = "arm64ec"))]
65924#[cfg_attr(test, assert_instr(st2))]
65925pub unsafe fn vst2_f16(a: *mut f16, b: float16x4x2_t) {
65926 unsafe extern "unadjusted" {
65927 #[cfg_attr(
65928 any(target_arch = "aarch64", target_arch = "arm64ec"),
65929 link_name = "llvm.aarch64.neon.st2.v4f16.p0"
65930 )]
65931 fn _vst2_f16(a: float16x4_t, b: float16x4_t, ptr: *mut i8);
65932 }
65933 _vst2_f16(b.0, b.1, a as _)
65934}
65935#[doc = "Store multiple 2-element structures from two registers"]
65936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f16)"]
65937#[doc = "## Safety"]
65938#[doc = " * Neon intrinsic unsafe"]
65939#[inline(always)]
65940#[target_feature(enable = "neon")]
65941#[cfg(not(target_arch = "arm"))]
65942#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65943#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65944#[cfg(not(target_arch = "arm64ec"))]
65945#[cfg_attr(test, assert_instr(st2))]
65946pub unsafe fn vst2q_f16(a: *mut f16, b: float16x8x2_t) {
65947 unsafe extern "unadjusted" {
65948 #[cfg_attr(
65949 any(target_arch = "aarch64", target_arch = "arm64ec"),
65950 link_name = "llvm.aarch64.neon.st2.v8f16.p0"
65951 )]
65952 fn _vst2q_f16(a: float16x8_t, b: float16x8_t, ptr: *mut i8);
65953 }
65954 _vst2q_f16(b.0, b.1, a as _)
65955}
65956#[doc = "Store multiple 2-element structures from two registers"]
65957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f16)"]
65958#[doc = "## Safety"]
65959#[doc = " * Neon intrinsic unsafe"]
65960#[inline(always)]
65961#[target_feature(enable = "neon")]
65962#[cfg(target_arch = "arm")]
65963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65964#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65965#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65966#[cfg(not(target_arch = "arm64ec"))]
65967#[cfg_attr(test, assert_instr(vst2))]
65968pub unsafe fn vst2_f16(a: *mut f16, b: float16x4x2_t) {
65969 unsafe extern "unadjusted" {
65970 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.p0.v4f16")]
65971 fn _vst2_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, size: i32);
65972 }
65973 _vst2_f16(a as _, b.0, b.1, 2)
65974}
65975#[doc = "Store multiple 2-element structures from two registers"]
65976#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f16)"]
65977#[doc = "## Safety"]
65978#[doc = " * Neon intrinsic unsafe"]
65979#[inline(always)]
65980#[target_feature(enable = "neon")]
65981#[cfg(target_arch = "arm")]
65982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65983#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65984#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65985#[cfg(not(target_arch = "arm64ec"))]
65986#[cfg_attr(test, assert_instr(vst2))]
65987pub unsafe fn vst2q_f16(a: *mut f16, b: float16x8x2_t) {
65988 unsafe extern "unadjusted" {
65989 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.p0.v8f16")]
65990 fn _vst2q_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, size: i32);
65991 }
65992 _vst2q_f16(a as _, b.0, b.1, 2)
65993}
65994#[doc = "Store multiple 2-element structures from two registers"]
65995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f32)"]
65996#[doc = "## Safety"]
65997#[doc = " * Neon intrinsic unsafe"]
65998#[inline(always)]
65999#[target_feature(enable = "neon")]
66000#[cfg(not(target_arch = "arm"))]
66001#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66002#[cfg_attr(test, assert_instr(st2))]
66003pub unsafe fn vst2_f32(a: *mut f32, b: float32x2x2_t) {
66004 unsafe extern "unadjusted" {
66005 #[cfg_attr(
66006 any(target_arch = "aarch64", target_arch = "arm64ec"),
66007 link_name = "llvm.aarch64.neon.st2.v2f32.p0"
66008 )]
66009 fn _vst2_f32(a: float32x2_t, b: float32x2_t, ptr: *mut i8);
66010 }
66011 _vst2_f32(b.0, b.1, a as _)
66012}
66013#[doc = "Store multiple 2-element structures from two registers"]
66014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f32)"]
66015#[doc = "## Safety"]
66016#[doc = " * Neon intrinsic unsafe"]
66017#[inline(always)]
66018#[target_feature(enable = "neon")]
66019#[cfg(not(target_arch = "arm"))]
66020#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66021#[cfg_attr(test, assert_instr(st2))]
66022pub unsafe fn vst2q_f32(a: *mut f32, b: float32x4x2_t) {
66023 unsafe extern "unadjusted" {
66024 #[cfg_attr(
66025 any(target_arch = "aarch64", target_arch = "arm64ec"),
66026 link_name = "llvm.aarch64.neon.st2.v4f32.p0"
66027 )]
66028 fn _vst2q_f32(a: float32x4_t, b: float32x4_t, ptr: *mut i8);
66029 }
66030 _vst2q_f32(b.0, b.1, a as _)
66031}
66032#[doc = "Store multiple 2-element structures from two registers"]
66033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s8)"]
66034#[doc = "## Safety"]
66035#[doc = " * Neon intrinsic unsafe"]
66036#[inline(always)]
66037#[target_feature(enable = "neon")]
66038#[cfg(not(target_arch = "arm"))]
66039#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66040#[cfg_attr(test, assert_instr(st2))]
66041pub unsafe fn vst2_s8(a: *mut i8, b: int8x8x2_t) {
66042 unsafe extern "unadjusted" {
66043 #[cfg_attr(
66044 any(target_arch = "aarch64", target_arch = "arm64ec"),
66045 link_name = "llvm.aarch64.neon.st2.v8i8.p0"
66046 )]
66047 fn _vst2_s8(a: int8x8_t, b: int8x8_t, ptr: *mut i8);
66048 }
66049 _vst2_s8(b.0, b.1, a as _)
66050}
66051#[doc = "Store multiple 2-element structures from two registers"]
66052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s8)"]
66053#[doc = "## Safety"]
66054#[doc = " * Neon intrinsic unsafe"]
66055#[inline(always)]
66056#[target_feature(enable = "neon")]
66057#[cfg(not(target_arch = "arm"))]
66058#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66059#[cfg_attr(test, assert_instr(st2))]
66060pub unsafe fn vst2q_s8(a: *mut i8, b: int8x16x2_t) {
66061 unsafe extern "unadjusted" {
66062 #[cfg_attr(
66063 any(target_arch = "aarch64", target_arch = "arm64ec"),
66064 link_name = "llvm.aarch64.neon.st2.v16i8.p0"
66065 )]
66066 fn _vst2q_s8(a: int8x16_t, b: int8x16_t, ptr: *mut i8);
66067 }
66068 _vst2q_s8(b.0, b.1, a as _)
66069}
66070#[doc = "Store multiple 2-element structures from two registers"]
66071#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s16)"]
66072#[doc = "## Safety"]
66073#[doc = " * Neon intrinsic unsafe"]
66074#[inline(always)]
66075#[target_feature(enable = "neon")]
66076#[cfg(not(target_arch = "arm"))]
66077#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66078#[cfg_attr(test, assert_instr(st2))]
66079pub unsafe fn vst2_s16(a: *mut i16, b: int16x4x2_t) {
66080 unsafe extern "unadjusted" {
66081 #[cfg_attr(
66082 any(target_arch = "aarch64", target_arch = "arm64ec"),
66083 link_name = "llvm.aarch64.neon.st2.v4i16.p0"
66084 )]
66085 fn _vst2_s16(a: int16x4_t, b: int16x4_t, ptr: *mut i8);
66086 }
66087 _vst2_s16(b.0, b.1, a as _)
66088}
66089#[doc = "Store multiple 2-element structures from two registers"]
66090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s16)"]
66091#[doc = "## Safety"]
66092#[doc = " * Neon intrinsic unsafe"]
66093#[inline(always)]
66094#[target_feature(enable = "neon")]
66095#[cfg(not(target_arch = "arm"))]
66096#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66097#[cfg_attr(test, assert_instr(st2))]
66098pub unsafe fn vst2q_s16(a: *mut i16, b: int16x8x2_t) {
66099 unsafe extern "unadjusted" {
66100 #[cfg_attr(
66101 any(target_arch = "aarch64", target_arch = "arm64ec"),
66102 link_name = "llvm.aarch64.neon.st2.v8i16.p0"
66103 )]
66104 fn _vst2q_s16(a: int16x8_t, b: int16x8_t, ptr: *mut i8);
66105 }
66106 _vst2q_s16(b.0, b.1, a as _)
66107}
66108#[doc = "Store multiple 2-element structures from two registers"]
66109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s32)"]
66110#[doc = "## Safety"]
66111#[doc = " * Neon intrinsic unsafe"]
66112#[inline(always)]
66113#[target_feature(enable = "neon")]
66114#[cfg(not(target_arch = "arm"))]
66115#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66116#[cfg_attr(test, assert_instr(st2))]
66117pub unsafe fn vst2_s32(a: *mut i32, b: int32x2x2_t) {
66118 unsafe extern "unadjusted" {
66119 #[cfg_attr(
66120 any(target_arch = "aarch64", target_arch = "arm64ec"),
66121 link_name = "llvm.aarch64.neon.st2.v2i32.p0"
66122 )]
66123 fn _vst2_s32(a: int32x2_t, b: int32x2_t, ptr: *mut i8);
66124 }
66125 _vst2_s32(b.0, b.1, a as _)
66126}
66127#[doc = "Store multiple 2-element structures from two registers"]
66128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s32)"]
66129#[doc = "## Safety"]
66130#[doc = " * Neon intrinsic unsafe"]
66131#[inline(always)]
66132#[target_feature(enable = "neon")]
66133#[cfg(not(target_arch = "arm"))]
66134#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66135#[cfg_attr(test, assert_instr(st2))]
66136pub unsafe fn vst2q_s32(a: *mut i32, b: int32x4x2_t) {
66137 unsafe extern "unadjusted" {
66138 #[cfg_attr(
66139 any(target_arch = "aarch64", target_arch = "arm64ec"),
66140 link_name = "llvm.aarch64.neon.st2.v4i32.p0"
66141 )]
66142 fn _vst2q_s32(a: int32x4_t, b: int32x4_t, ptr: *mut i8);
66143 }
66144 _vst2q_s32(b.0, b.1, a as _)
66145}
66146#[doc = "Store multiple 2-element structures from two registers"]
66147#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f32)"]
66148#[doc = "## Safety"]
66149#[doc = " * Neon intrinsic unsafe"]
66150#[inline(always)]
66151#[cfg(target_arch = "arm")]
66152#[target_feature(enable = "neon,v7")]
66153#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66154#[cfg_attr(test, assert_instr(vst2))]
66155pub unsafe fn vst2_f32(a: *mut f32, b: float32x2x2_t) {
66156 unsafe extern "unadjusted" {
66157 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v2f32.p0")]
66158 fn _vst2_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, size: i32);
66159 }
66160 _vst2_f32(a as _, b.0, b.1, 4)
66161}
66162#[doc = "Store multiple 2-element structures from two registers"]
66163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f32)"]
66164#[doc = "## Safety"]
66165#[doc = " * Neon intrinsic unsafe"]
66166#[inline(always)]
66167#[cfg(target_arch = "arm")]
66168#[target_feature(enable = "neon,v7")]
66169#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66170#[cfg_attr(test, assert_instr(vst2))]
66171pub unsafe fn vst2q_f32(a: *mut f32, b: float32x4x2_t) {
66172 unsafe extern "unadjusted" {
66173 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4f32.p0")]
66174 fn _vst2q_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, size: i32);
66175 }
66176 _vst2q_f32(a as _, b.0, b.1, 4)
66177}
66178#[doc = "Store multiple 2-element structures from two registers"]
66179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s8)"]
66180#[doc = "## Safety"]
66181#[doc = " * Neon intrinsic unsafe"]
66182#[inline(always)]
66183#[cfg(target_arch = "arm")]
66184#[target_feature(enable = "neon,v7")]
66185#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66186#[cfg_attr(test, assert_instr(vst2))]
66187pub unsafe fn vst2_s8(a: *mut i8, b: int8x8x2_t) {
66188 unsafe extern "unadjusted" {
66189 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v8i8.p0")]
66190 fn _vst2_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, size: i32);
66191 }
66192 _vst2_s8(a as _, b.0, b.1, 1)
66193}
66194#[doc = "Store multiple 2-element structures from two registers"]
66195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s8)"]
66196#[doc = "## Safety"]
66197#[doc = " * Neon intrinsic unsafe"]
66198#[inline(always)]
66199#[cfg(target_arch = "arm")]
66200#[target_feature(enable = "neon,v7")]
66201#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66202#[cfg_attr(test, assert_instr(vst2))]
66203pub unsafe fn vst2q_s8(a: *mut i8, b: int8x16x2_t) {
66204 unsafe extern "unadjusted" {
66205 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v16i8.p0")]
66206 fn _vst2q_s8(ptr: *mut i8, a: int8x16_t, b: int8x16_t, size: i32);
66207 }
66208 _vst2q_s8(a as _, b.0, b.1, 1)
66209}
66210#[doc = "Store multiple 2-element structures from two registers"]
66211#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s16)"]
66212#[doc = "## Safety"]
66213#[doc = " * Neon intrinsic unsafe"]
66214#[inline(always)]
66215#[cfg(target_arch = "arm")]
66216#[target_feature(enable = "neon,v7")]
66217#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66218#[cfg_attr(test, assert_instr(vst2))]
66219pub unsafe fn vst2_s16(a: *mut i16, b: int16x4x2_t) {
66220 unsafe extern "unadjusted" {
66221 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4i16.p0")]
66222 fn _vst2_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, size: i32);
66223 }
66224 _vst2_s16(a as _, b.0, b.1, 2)
66225}
66226#[doc = "Store multiple 2-element structures from two registers"]
66227#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s16)"]
66228#[doc = "## Safety"]
66229#[doc = " * Neon intrinsic unsafe"]
66230#[inline(always)]
66231#[cfg(target_arch = "arm")]
66232#[target_feature(enable = "neon,v7")]
66233#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66234#[cfg_attr(test, assert_instr(vst2))]
66235pub unsafe fn vst2q_s16(a: *mut i16, b: int16x8x2_t) {
66236 unsafe extern "unadjusted" {
66237 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v8i16.p0")]
66238 fn _vst2q_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, size: i32);
66239 }
66240 _vst2q_s16(a as _, b.0, b.1, 2)
66241}
66242#[doc = "Store multiple 2-element structures from two registers"]
66243#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s32)"]
66244#[doc = "## Safety"]
66245#[doc = " * Neon intrinsic unsafe"]
66246#[inline(always)]
66247#[cfg(target_arch = "arm")]
66248#[target_feature(enable = "neon,v7")]
66249#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66250#[cfg_attr(test, assert_instr(vst2))]
66251pub unsafe fn vst2_s32(a: *mut i32, b: int32x2x2_t) {
66252 unsafe extern "unadjusted" {
66253 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v2i32.p0")]
66254 fn _vst2_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, size: i32);
66255 }
66256 _vst2_s32(a as _, b.0, b.1, 4)
66257}
66258#[doc = "Store multiple 2-element structures from two registers"]
66259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s32)"]
66260#[doc = "## Safety"]
66261#[doc = " * Neon intrinsic unsafe"]
66262#[inline(always)]
66263#[cfg(target_arch = "arm")]
66264#[target_feature(enable = "neon,v7")]
66265#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66266#[cfg_attr(test, assert_instr(vst2))]
66267pub unsafe fn vst2q_s32(a: *mut i32, b: int32x4x2_t) {
66268 unsafe extern "unadjusted" {
66269 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4i32.p0")]
66270 fn _vst2q_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, size: i32);
66271 }
66272 _vst2q_s32(a as _, b.0, b.1, 4)
66273}
66274#[doc = "Store multiple 2-element structures from two registers"]
66275#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f16)"]
66276#[doc = "## Safety"]
66277#[doc = " * Neon intrinsic unsafe"]
66278#[inline(always)]
66279#[target_feature(enable = "neon")]
66280#[cfg(not(target_arch = "arm"))]
66281#[rustc_legacy_const_generics(2)]
66282#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66283#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
66284#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66285#[cfg(not(target_arch = "arm64ec"))]
66286pub unsafe fn vst2_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x2_t) {
66287 static_assert_uimm_bits!(LANE, 2);
66288 unsafe extern "unadjusted" {
66289 #[cfg_attr(
66290 any(target_arch = "aarch64", target_arch = "arm64ec"),
66291 link_name = "llvm.aarch64.neon.st2lane.v4f16.p0"
66292 )]
66293 fn _vst2_lane_f16(a: float16x4_t, b: float16x4_t, n: i64, ptr: *mut i8);
66294 }
66295 _vst2_lane_f16(b.0, b.1, LANE as i64, a as _)
66296}
66297#[doc = "Store multiple 2-element structures from two registers"]
66298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f16)"]
66299#[doc = "## Safety"]
66300#[doc = " * Neon intrinsic unsafe"]
66301#[inline(always)]
66302#[target_feature(enable = "neon")]
66303#[cfg(not(target_arch = "arm"))]
66304#[rustc_legacy_const_generics(2)]
66305#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66306#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
66307#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66308#[cfg(not(target_arch = "arm64ec"))]
66309pub unsafe fn vst2q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x2_t) {
66310 static_assert_uimm_bits!(LANE, 3);
66311 unsafe extern "unadjusted" {
66312 #[cfg_attr(
66313 any(target_arch = "aarch64", target_arch = "arm64ec"),
66314 link_name = "llvm.aarch64.neon.st2lane.v8f16.p0"
66315 )]
66316 fn _vst2q_lane_f16(a: float16x8_t, b: float16x8_t, n: i64, ptr: *mut i8);
66317 }
66318 _vst2q_lane_f16(b.0, b.1, LANE as i64, a as _)
66319}
66320#[doc = "Store multiple 2-element structures from two registers"]
66321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f16)"]
66322#[doc = "## Safety"]
66323#[doc = " * Neon intrinsic unsafe"]
66324#[inline(always)]
66325#[target_feature(enable = "neon")]
66326#[cfg(target_arch = "arm")]
66327#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66328#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66329#[rustc_legacy_const_generics(2)]
66330#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
66331#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66332#[cfg(not(target_arch = "arm64ec"))]
66333pub unsafe fn vst2_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x2_t) {
66334 static_assert_uimm_bits!(LANE, 2);
66335 unsafe extern "unadjusted" {
66336 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.p0.v4f16")]
66337 fn _vst2_lane_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, n: i32, size: i32);
66338 }
66339 _vst2_lane_f16(a as _, b.0, b.1, LANE, 2)
66340}
66341#[doc = "Store multiple 2-element structures from two registers"]
66342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f16)"]
66343#[doc = "## Safety"]
66344#[doc = " * Neon intrinsic unsafe"]
66345#[inline(always)]
66346#[target_feature(enable = "neon")]
66347#[cfg(target_arch = "arm")]
66348#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66349#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66350#[rustc_legacy_const_generics(2)]
66351#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
66352#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66353#[cfg(not(target_arch = "arm64ec"))]
66354pub unsafe fn vst2q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x2_t) {
66355 static_assert_uimm_bits!(LANE, 1);
66356 unsafe extern "unadjusted" {
66357 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.p0.v8f16")]
66358 fn _vst2q_lane_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, n: i32, size: i32);
66359 }
66360 _vst2q_lane_f16(a as _, b.0, b.1, LANE, 2)
66361}
66362#[doc = "Store multiple 2-element structures from two registers"]
66363#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f32)"]
66364#[doc = "## Safety"]
66365#[doc = " * Neon intrinsic unsafe"]
66366#[inline(always)]
66367#[target_feature(enable = "neon")]
66368#[cfg(not(target_arch = "arm"))]
66369#[rustc_legacy_const_generics(2)]
66370#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66371#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66372pub unsafe fn vst2_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x2_t) {
66373 static_assert_uimm_bits!(LANE, 1);
66374 unsafe extern "unadjusted" {
66375 #[cfg_attr(
66376 any(target_arch = "aarch64", target_arch = "arm64ec"),
66377 link_name = "llvm.aarch64.neon.st2lane.v2f32.p0"
66378 )]
66379 fn _vst2_lane_f32(a: float32x2_t, b: float32x2_t, n: i64, ptr: *mut i8);
66380 }
66381 _vst2_lane_f32(b.0, b.1, LANE as i64, a as _)
66382}
66383#[doc = "Store multiple 2-element structures from two registers"]
66384#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f32)"]
66385#[doc = "## Safety"]
66386#[doc = " * Neon intrinsic unsafe"]
66387#[inline(always)]
66388#[target_feature(enable = "neon")]
66389#[cfg(not(target_arch = "arm"))]
66390#[rustc_legacy_const_generics(2)]
66391#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66392#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66393pub unsafe fn vst2q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x2_t) {
66394 static_assert_uimm_bits!(LANE, 2);
66395 unsafe extern "unadjusted" {
66396 #[cfg_attr(
66397 any(target_arch = "aarch64", target_arch = "arm64ec"),
66398 link_name = "llvm.aarch64.neon.st2lane.v4f32.p0"
66399 )]
66400 fn _vst2q_lane_f32(a: float32x4_t, b: float32x4_t, n: i64, ptr: *mut i8);
66401 }
66402 _vst2q_lane_f32(b.0, b.1, LANE as i64, a as _)
66403}
66404#[doc = "Store multiple 2-element structures from two registers"]
66405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s8)"]
66406#[doc = "## Safety"]
66407#[doc = " * Neon intrinsic unsafe"]
66408#[inline(always)]
66409#[target_feature(enable = "neon")]
66410#[cfg(not(target_arch = "arm"))]
66411#[rustc_legacy_const_generics(2)]
66412#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66413#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66414pub unsafe fn vst2_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x2_t) {
66415 static_assert_uimm_bits!(LANE, 3);
66416 unsafe extern "unadjusted" {
66417 #[cfg_attr(
66418 any(target_arch = "aarch64", target_arch = "arm64ec"),
66419 link_name = "llvm.aarch64.neon.st2lane.v8i8.p0"
66420 )]
66421 fn _vst2_lane_s8(a: int8x8_t, b: int8x8_t, n: i64, ptr: *mut i8);
66422 }
66423 _vst2_lane_s8(b.0, b.1, LANE as i64, a as _)
66424}
66425#[doc = "Store multiple 2-element structures from two registers"]
66426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s16)"]
66427#[doc = "## Safety"]
66428#[doc = " * Neon intrinsic unsafe"]
66429#[inline(always)]
66430#[target_feature(enable = "neon")]
66431#[cfg(not(target_arch = "arm"))]
66432#[rustc_legacy_const_generics(2)]
66433#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66434#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66435pub unsafe fn vst2_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x2_t) {
66436 static_assert_uimm_bits!(LANE, 2);
66437 unsafe extern "unadjusted" {
66438 #[cfg_attr(
66439 any(target_arch = "aarch64", target_arch = "arm64ec"),
66440 link_name = "llvm.aarch64.neon.st2lane.v4i16.p0"
66441 )]
66442 fn _vst2_lane_s16(a: int16x4_t, b: int16x4_t, n: i64, ptr: *mut i8);
66443 }
66444 _vst2_lane_s16(b.0, b.1, LANE as i64, a as _)
66445}
66446#[doc = "Store multiple 2-element structures from two registers"]
66447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s16)"]
66448#[doc = "## Safety"]
66449#[doc = " * Neon intrinsic unsafe"]
66450#[inline(always)]
66451#[target_feature(enable = "neon")]
66452#[cfg(not(target_arch = "arm"))]
66453#[rustc_legacy_const_generics(2)]
66454#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66455#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66456pub unsafe fn vst2q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x2_t) {
66457 static_assert_uimm_bits!(LANE, 3);
66458 unsafe extern "unadjusted" {
66459 #[cfg_attr(
66460 any(target_arch = "aarch64", target_arch = "arm64ec"),
66461 link_name = "llvm.aarch64.neon.st2lane.v8i16.p0"
66462 )]
66463 fn _vst2q_lane_s16(a: int16x8_t, b: int16x8_t, n: i64, ptr: *mut i8);
66464 }
66465 _vst2q_lane_s16(b.0, b.1, LANE as i64, a as _)
66466}
66467#[doc = "Store multiple 2-element structures from two registers"]
66468#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s32)"]
66469#[doc = "## Safety"]
66470#[doc = " * Neon intrinsic unsafe"]
66471#[inline(always)]
66472#[target_feature(enable = "neon")]
66473#[cfg(not(target_arch = "arm"))]
66474#[rustc_legacy_const_generics(2)]
66475#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66476#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66477pub unsafe fn vst2_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x2_t) {
66478 static_assert_uimm_bits!(LANE, 1);
66479 unsafe extern "unadjusted" {
66480 #[cfg_attr(
66481 any(target_arch = "aarch64", target_arch = "arm64ec"),
66482 link_name = "llvm.aarch64.neon.st2lane.v2i32.p0"
66483 )]
66484 fn _vst2_lane_s32(a: int32x2_t, b: int32x2_t, n: i64, ptr: *mut i8);
66485 }
66486 _vst2_lane_s32(b.0, b.1, LANE as i64, a as _)
66487}
66488#[doc = "Store multiple 2-element structures from two registers"]
66489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s32)"]
66490#[doc = "## Safety"]
66491#[doc = " * Neon intrinsic unsafe"]
66492#[inline(always)]
66493#[target_feature(enable = "neon")]
66494#[cfg(not(target_arch = "arm"))]
66495#[rustc_legacy_const_generics(2)]
66496#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66497#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66498pub unsafe fn vst2q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x2_t) {
66499 static_assert_uimm_bits!(LANE, 2);
66500 unsafe extern "unadjusted" {
66501 #[cfg_attr(
66502 any(target_arch = "aarch64", target_arch = "arm64ec"),
66503 link_name = "llvm.aarch64.neon.st2lane.v4i32.p0"
66504 )]
66505 fn _vst2q_lane_s32(a: int32x4_t, b: int32x4_t, n: i64, ptr: *mut i8);
66506 }
66507 _vst2q_lane_s32(b.0, b.1, LANE as i64, a as _)
66508}
66509#[doc = "Store multiple 2-element structures from two registers"]
66510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f32)"]
66511#[doc = "## Safety"]
66512#[doc = " * Neon intrinsic unsafe"]
66513#[inline(always)]
66514#[cfg(target_arch = "arm")]
66515#[target_feature(enable = "neon,v7")]
66516#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66517#[rustc_legacy_const_generics(2)]
66518#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66519pub unsafe fn vst2_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x2_t) {
66520 static_assert_uimm_bits!(LANE, 1);
66521 unsafe extern "unadjusted" {
66522 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v2f32.p0")]
66523 fn _vst2_lane_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, n: i32, size: i32);
66524 }
66525 _vst2_lane_f32(a as _, b.0, b.1, LANE, 4)
66526}
66527#[doc = "Store multiple 2-element structures from two registers"]
66528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f32)"]
66529#[doc = "## Safety"]
66530#[doc = " * Neon intrinsic unsafe"]
66531#[inline(always)]
66532#[cfg(target_arch = "arm")]
66533#[target_feature(enable = "neon,v7")]
66534#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66535#[rustc_legacy_const_generics(2)]
66536#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66537pub unsafe fn vst2q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x2_t) {
66538 static_assert_uimm_bits!(LANE, 2);
66539 unsafe extern "unadjusted" {
66540 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4f32.p0")]
66541 fn _vst2q_lane_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, n: i32, size: i32);
66542 }
66543 _vst2q_lane_f32(a as _, b.0, b.1, LANE, 4)
66544}
66545#[doc = "Store multiple 2-element structures from two registers"]
66546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s8)"]
66547#[doc = "## Safety"]
66548#[doc = " * Neon intrinsic unsafe"]
66549#[inline(always)]
66550#[cfg(target_arch = "arm")]
66551#[target_feature(enable = "neon,v7")]
66552#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66553#[rustc_legacy_const_generics(2)]
66554#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66555pub unsafe fn vst2_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x2_t) {
66556 static_assert_uimm_bits!(LANE, 3);
66557 unsafe extern "unadjusted" {
66558 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v8i8.p0")]
66559 fn _vst2_lane_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, n: i32, size: i32);
66560 }
66561 _vst2_lane_s8(a as _, b.0, b.1, LANE, 1)
66562}
66563#[doc = "Store multiple 2-element structures from two registers"]
66564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s16)"]
66565#[doc = "## Safety"]
66566#[doc = " * Neon intrinsic unsafe"]
66567#[inline(always)]
66568#[cfg(target_arch = "arm")]
66569#[target_feature(enable = "neon,v7")]
66570#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66571#[rustc_legacy_const_generics(2)]
66572#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66573pub unsafe fn vst2_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x2_t) {
66574 static_assert_uimm_bits!(LANE, 2);
66575 unsafe extern "unadjusted" {
66576 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4i16.p0")]
66577 fn _vst2_lane_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, n: i32, size: i32);
66578 }
66579 _vst2_lane_s16(a as _, b.0, b.1, LANE, 2)
66580}
66581#[doc = "Store multiple 2-element structures from two registers"]
66582#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s16)"]
66583#[doc = "## Safety"]
66584#[doc = " * Neon intrinsic unsafe"]
66585#[inline(always)]
66586#[cfg(target_arch = "arm")]
66587#[target_feature(enable = "neon,v7")]
66588#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66589#[rustc_legacy_const_generics(2)]
66590#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66591pub unsafe fn vst2q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x2_t) {
66592 static_assert_uimm_bits!(LANE, 3);
66593 unsafe extern "unadjusted" {
66594 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v8i16.p0")]
66595 fn _vst2q_lane_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, n: i32, size: i32);
66596 }
66597 _vst2q_lane_s16(a as _, b.0, b.1, LANE, 2)
66598}
66599#[doc = "Store multiple 2-element structures from two registers"]
66600#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s32)"]
66601#[doc = "## Safety"]
66602#[doc = " * Neon intrinsic unsafe"]
66603#[inline(always)]
66604#[cfg(target_arch = "arm")]
66605#[target_feature(enable = "neon,v7")]
66606#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66607#[rustc_legacy_const_generics(2)]
66608#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66609pub unsafe fn vst2_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x2_t) {
66610 static_assert_uimm_bits!(LANE, 1);
66611 unsafe extern "unadjusted" {
66612 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v2i32.p0")]
66613 fn _vst2_lane_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, n: i32, size: i32);
66614 }
66615 _vst2_lane_s32(a as _, b.0, b.1, LANE, 4)
66616}
66617#[doc = "Store multiple 2-element structures from two registers"]
66618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s32)"]
66619#[doc = "## Safety"]
66620#[doc = " * Neon intrinsic unsafe"]
66621#[inline(always)]
66622#[cfg(target_arch = "arm")]
66623#[target_feature(enable = "neon,v7")]
66624#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66625#[rustc_legacy_const_generics(2)]
66626#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66627pub unsafe fn vst2q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x2_t) {
66628 static_assert_uimm_bits!(LANE, 2);
66629 unsafe extern "unadjusted" {
66630 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4i32.p0")]
66631 fn _vst2q_lane_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, n: i32, size: i32);
66632 }
66633 _vst2q_lane_s32(a as _, b.0, b.1, LANE, 4)
66634}
66635#[doc = "Store multiple 2-element structures from two registers"]
66636#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u8)"]
66637#[doc = "## Safety"]
66638#[doc = " * Neon intrinsic unsafe"]
66639#[inline(always)]
66640#[target_feature(enable = "neon")]
66641#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66642#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66643#[cfg_attr(
66644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66645 assert_instr(st2, LANE = 0)
66646)]
66647#[rustc_legacy_const_generics(2)]
66648#[cfg_attr(
66649 not(target_arch = "arm"),
66650 stable(feature = "neon_intrinsics", since = "1.59.0")
66651)]
66652#[cfg_attr(
66653 target_arch = "arm",
66654 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66655)]
66656pub unsafe fn vst2_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x2_t) {
66657 static_assert_uimm_bits!(LANE, 3);
66658 vst2_lane_s8::<LANE>(transmute(a), transmute(b))
66659}
66660#[doc = "Store multiple 2-element structures from two registers"]
66661#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u16)"]
66662#[doc = "## Safety"]
66663#[doc = " * Neon intrinsic unsafe"]
66664#[inline(always)]
66665#[target_feature(enable = "neon")]
66666#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66667#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66668#[cfg_attr(
66669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66670 assert_instr(st2, LANE = 0)
66671)]
66672#[rustc_legacy_const_generics(2)]
66673#[cfg_attr(
66674 not(target_arch = "arm"),
66675 stable(feature = "neon_intrinsics", since = "1.59.0")
66676)]
66677#[cfg_attr(
66678 target_arch = "arm",
66679 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66680)]
66681pub unsafe fn vst2_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x2_t) {
66682 static_assert_uimm_bits!(LANE, 2);
66683 vst2_lane_s16::<LANE>(transmute(a), transmute(b))
66684}
66685#[doc = "Store multiple 2-element structures from two registers"]
66686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_u16)"]
66687#[doc = "## Safety"]
66688#[doc = " * Neon intrinsic unsafe"]
66689#[inline(always)]
66690#[target_feature(enable = "neon")]
66691#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66692#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66693#[cfg_attr(
66694 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66695 assert_instr(st2, LANE = 0)
66696)]
66697#[rustc_legacy_const_generics(2)]
66698#[cfg_attr(
66699 not(target_arch = "arm"),
66700 stable(feature = "neon_intrinsics", since = "1.59.0")
66701)]
66702#[cfg_attr(
66703 target_arch = "arm",
66704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66705)]
66706pub unsafe fn vst2q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x2_t) {
66707 static_assert_uimm_bits!(LANE, 3);
66708 vst2q_lane_s16::<LANE>(transmute(a), transmute(b))
66709}
66710#[doc = "Store multiple 2-element structures from two registers"]
66711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u32)"]
66712#[doc = "## Safety"]
66713#[doc = " * Neon intrinsic unsafe"]
66714#[inline(always)]
66715#[target_feature(enable = "neon")]
66716#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66717#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66718#[cfg_attr(
66719 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66720 assert_instr(st2, LANE = 0)
66721)]
66722#[rustc_legacy_const_generics(2)]
66723#[cfg_attr(
66724 not(target_arch = "arm"),
66725 stable(feature = "neon_intrinsics", since = "1.59.0")
66726)]
66727#[cfg_attr(
66728 target_arch = "arm",
66729 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66730)]
66731pub unsafe fn vst2_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x2_t) {
66732 static_assert_uimm_bits!(LANE, 1);
66733 vst2_lane_s32::<LANE>(transmute(a), transmute(b))
66734}
66735#[doc = "Store multiple 2-element structures from two registers"]
66736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_u32)"]
66737#[doc = "## Safety"]
66738#[doc = " * Neon intrinsic unsafe"]
66739#[inline(always)]
66740#[target_feature(enable = "neon")]
66741#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66742#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66743#[cfg_attr(
66744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66745 assert_instr(st2, LANE = 0)
66746)]
66747#[rustc_legacy_const_generics(2)]
66748#[cfg_attr(
66749 not(target_arch = "arm"),
66750 stable(feature = "neon_intrinsics", since = "1.59.0")
66751)]
66752#[cfg_attr(
66753 target_arch = "arm",
66754 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66755)]
66756pub unsafe fn vst2q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x2_t) {
66757 static_assert_uimm_bits!(LANE, 2);
66758 vst2q_lane_s32::<LANE>(transmute(a), transmute(b))
66759}
66760#[doc = "Store multiple 2-element structures from two registers"]
66761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_p8)"]
66762#[doc = "## Safety"]
66763#[doc = " * Neon intrinsic unsafe"]
66764#[inline(always)]
66765#[target_feature(enable = "neon")]
66766#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66767#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66768#[cfg_attr(
66769 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66770 assert_instr(st2, LANE = 0)
66771)]
66772#[rustc_legacy_const_generics(2)]
66773#[cfg_attr(
66774 not(target_arch = "arm"),
66775 stable(feature = "neon_intrinsics", since = "1.59.0")
66776)]
66777#[cfg_attr(
66778 target_arch = "arm",
66779 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66780)]
66781pub unsafe fn vst2_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x2_t) {
66782 static_assert_uimm_bits!(LANE, 3);
66783 vst2_lane_s8::<LANE>(transmute(a), transmute(b))
66784}
66785#[doc = "Store multiple 2-element structures from two registers"]
66786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_p16)"]
66787#[doc = "## Safety"]
66788#[doc = " * Neon intrinsic unsafe"]
66789#[inline(always)]
66790#[target_feature(enable = "neon")]
66791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66793#[cfg_attr(
66794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66795 assert_instr(st2, LANE = 0)
66796)]
66797#[rustc_legacy_const_generics(2)]
66798#[cfg_attr(
66799 not(target_arch = "arm"),
66800 stable(feature = "neon_intrinsics", since = "1.59.0")
66801)]
66802#[cfg_attr(
66803 target_arch = "arm",
66804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66805)]
66806pub unsafe fn vst2_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x2_t) {
66807 static_assert_uimm_bits!(LANE, 2);
66808 vst2_lane_s16::<LANE>(transmute(a), transmute(b))
66809}
66810#[doc = "Store multiple 2-element structures from two registers"]
66811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_p16)"]
66812#[doc = "## Safety"]
66813#[doc = " * Neon intrinsic unsafe"]
66814#[inline(always)]
66815#[target_feature(enable = "neon")]
66816#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66817#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66818#[cfg_attr(
66819 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66820 assert_instr(st2, LANE = 0)
66821)]
66822#[rustc_legacy_const_generics(2)]
66823#[cfg_attr(
66824 not(target_arch = "arm"),
66825 stable(feature = "neon_intrinsics", since = "1.59.0")
66826)]
66827#[cfg_attr(
66828 target_arch = "arm",
66829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66830)]
66831pub unsafe fn vst2q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x2_t) {
66832 static_assert_uimm_bits!(LANE, 3);
66833 vst2q_lane_s16::<LANE>(transmute(a), transmute(b))
66834}
66835#[doc = "Store multiple 2-element structures from two registers"]
66836#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p64)"]
66837#[doc = "## Safety"]
66838#[doc = " * Neon intrinsic unsafe"]
66839#[inline(always)]
66840#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
66841#[target_feature(enable = "neon,aes")]
66842#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
66843#[cfg_attr(
66844 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66845 assert_instr(nop)
66846)]
66847#[cfg_attr(
66848 not(target_arch = "arm"),
66849 stable(feature = "neon_intrinsics", since = "1.59.0")
66850)]
66851#[cfg_attr(
66852 target_arch = "arm",
66853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66854)]
66855pub unsafe fn vst2_p64(a: *mut p64, b: poly64x1x2_t) {
66856 vst2_s64(transmute(a), transmute(b))
66857}
66858#[doc = "Store multiple 2-element structures from two registers"]
66859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s64)"]
66860#[doc = "## Safety"]
66861#[doc = " * Neon intrinsic unsafe"]
66862#[inline(always)]
66863#[cfg(target_arch = "arm")]
66864#[target_feature(enable = "neon,v7")]
66865#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66866#[cfg_attr(test, assert_instr(nop))]
66867pub unsafe fn vst2_s64(a: *mut i64, b: int64x1x2_t) {
66868 unsafe extern "unadjusted" {
66869 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v1i64.p0")]
66870 fn _vst2_s64(ptr: *mut i8, a: int64x1_t, b: int64x1_t, size: i32);
66871 }
66872 _vst2_s64(a as _, b.0, b.1, 8)
66873}
66874#[doc = "Store multiple 2-element structures from two registers"]
66875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s64)"]
66876#[doc = "## Safety"]
66877#[doc = " * Neon intrinsic unsafe"]
66878#[inline(always)]
66879#[target_feature(enable = "neon")]
66880#[cfg(not(target_arch = "arm"))]
66881#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66882#[cfg_attr(test, assert_instr(nop))]
66883pub unsafe fn vst2_s64(a: *mut i64, b: int64x1x2_t) {
66884 unsafe extern "unadjusted" {
66885 #[cfg_attr(
66886 any(target_arch = "aarch64", target_arch = "arm64ec"),
66887 link_name = "llvm.aarch64.neon.st2.v1i64.p0"
66888 )]
66889 fn _vst2_s64(a: int64x1_t, b: int64x1_t, ptr: *mut i8);
66890 }
66891 _vst2_s64(b.0, b.1, a as _)
66892}
66893#[doc = "Store multiple 2-element structures from two registers"]
66894#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u64)"]
66895#[doc = "## Safety"]
66896#[doc = " * Neon intrinsic unsafe"]
66897#[inline(always)]
66898#[target_feature(enable = "neon")]
66899#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66900#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
66901#[cfg_attr(
66902 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66903 assert_instr(nop)
66904)]
66905#[cfg_attr(
66906 not(target_arch = "arm"),
66907 stable(feature = "neon_intrinsics", since = "1.59.0")
66908)]
66909#[cfg_attr(
66910 target_arch = "arm",
66911 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66912)]
66913pub unsafe fn vst2_u64(a: *mut u64, b: uint64x1x2_t) {
66914 vst2_s64(transmute(a), transmute(b))
66915}
66916#[doc = "Store multiple 2-element structures from two registers"]
66917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u8)"]
66918#[doc = "## Safety"]
66919#[doc = " * Neon intrinsic unsafe"]
66920#[inline(always)]
66921#[target_feature(enable = "neon")]
66922#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66923#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66924#[cfg_attr(
66925 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66926 assert_instr(st2)
66927)]
66928#[cfg_attr(
66929 not(target_arch = "arm"),
66930 stable(feature = "neon_intrinsics", since = "1.59.0")
66931)]
66932#[cfg_attr(
66933 target_arch = "arm",
66934 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66935)]
66936pub unsafe fn vst2_u8(a: *mut u8, b: uint8x8x2_t) {
66937 vst2_s8(transmute(a), transmute(b))
66938}
66939#[doc = "Store multiple 2-element structures from two registers"]
66940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u8)"]
66941#[doc = "## Safety"]
66942#[doc = " * Neon intrinsic unsafe"]
66943#[inline(always)]
66944#[target_feature(enable = "neon")]
66945#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66946#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66947#[cfg_attr(
66948 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66949 assert_instr(st2)
66950)]
66951#[cfg_attr(
66952 not(target_arch = "arm"),
66953 stable(feature = "neon_intrinsics", since = "1.59.0")
66954)]
66955#[cfg_attr(
66956 target_arch = "arm",
66957 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66958)]
66959pub unsafe fn vst2q_u8(a: *mut u8, b: uint8x16x2_t) {
66960 vst2q_s8(transmute(a), transmute(b))
66961}
66962#[doc = "Store multiple 2-element structures from two registers"]
66963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u16)"]
66964#[doc = "## Safety"]
66965#[doc = " * Neon intrinsic unsafe"]
66966#[inline(always)]
66967#[target_feature(enable = "neon")]
66968#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66969#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66970#[cfg_attr(
66971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66972 assert_instr(st2)
66973)]
66974#[cfg_attr(
66975 not(target_arch = "arm"),
66976 stable(feature = "neon_intrinsics", since = "1.59.0")
66977)]
66978#[cfg_attr(
66979 target_arch = "arm",
66980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66981)]
66982pub unsafe fn vst2_u16(a: *mut u16, b: uint16x4x2_t) {
66983 vst2_s16(transmute(a), transmute(b))
66984}
66985#[doc = "Store multiple 2-element structures from two registers"]
66986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u16)"]
66987#[doc = "## Safety"]
66988#[doc = " * Neon intrinsic unsafe"]
66989#[inline(always)]
66990#[target_feature(enable = "neon")]
66991#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66992#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66993#[cfg_attr(
66994 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66995 assert_instr(st2)
66996)]
66997#[cfg_attr(
66998 not(target_arch = "arm"),
66999 stable(feature = "neon_intrinsics", since = "1.59.0")
67000)]
67001#[cfg_attr(
67002 target_arch = "arm",
67003 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67004)]
67005pub unsafe fn vst2q_u16(a: *mut u16, b: uint16x8x2_t) {
67006 vst2q_s16(transmute(a), transmute(b))
67007}
67008#[doc = "Store multiple 2-element structures from two registers"]
67009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u32)"]
67010#[doc = "## Safety"]
67011#[doc = " * Neon intrinsic unsafe"]
67012#[inline(always)]
67013#[target_feature(enable = "neon")]
67014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67015#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
67016#[cfg_attr(
67017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67018 assert_instr(st2)
67019)]
67020#[cfg_attr(
67021 not(target_arch = "arm"),
67022 stable(feature = "neon_intrinsics", since = "1.59.0")
67023)]
67024#[cfg_attr(
67025 target_arch = "arm",
67026 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67027)]
67028pub unsafe fn vst2_u32(a: *mut u32, b: uint32x2x2_t) {
67029 vst2_s32(transmute(a), transmute(b))
67030}
67031#[doc = "Store multiple 2-element structures from two registers"]
67032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u32)"]
67033#[doc = "## Safety"]
67034#[doc = " * Neon intrinsic unsafe"]
67035#[inline(always)]
67036#[target_feature(enable = "neon")]
67037#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67038#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
67039#[cfg_attr(
67040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67041 assert_instr(st2)
67042)]
67043#[cfg_attr(
67044 not(target_arch = "arm"),
67045 stable(feature = "neon_intrinsics", since = "1.59.0")
67046)]
67047#[cfg_attr(
67048 target_arch = "arm",
67049 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67050)]
67051pub unsafe fn vst2q_u32(a: *mut u32, b: uint32x4x2_t) {
67052 vst2q_s32(transmute(a), transmute(b))
67053}
67054#[doc = "Store multiple 2-element structures from two registers"]
67055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p8)"]
67056#[doc = "## Safety"]
67057#[doc = " * Neon intrinsic unsafe"]
67058#[inline(always)]
67059#[target_feature(enable = "neon")]
67060#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67061#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
67062#[cfg_attr(
67063 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67064 assert_instr(st2)
67065)]
67066#[cfg_attr(
67067 not(target_arch = "arm"),
67068 stable(feature = "neon_intrinsics", since = "1.59.0")
67069)]
67070#[cfg_attr(
67071 target_arch = "arm",
67072 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67073)]
67074pub unsafe fn vst2_p8(a: *mut p8, b: poly8x8x2_t) {
67075 vst2_s8(transmute(a), transmute(b))
67076}
67077#[doc = "Store multiple 2-element structures from two registers"]
67078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_p8)"]
67079#[doc = "## Safety"]
67080#[doc = " * Neon intrinsic unsafe"]
67081#[inline(always)]
67082#[target_feature(enable = "neon")]
67083#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67084#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
67085#[cfg_attr(
67086 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67087 assert_instr(st2)
67088)]
67089#[cfg_attr(
67090 not(target_arch = "arm"),
67091 stable(feature = "neon_intrinsics", since = "1.59.0")
67092)]
67093#[cfg_attr(
67094 target_arch = "arm",
67095 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67096)]
67097pub unsafe fn vst2q_p8(a: *mut p8, b: poly8x16x2_t) {
67098 vst2q_s8(transmute(a), transmute(b))
67099}
67100#[doc = "Store multiple 2-element structures from two registers"]
67101#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p16)"]
67102#[doc = "## Safety"]
67103#[doc = " * Neon intrinsic unsafe"]
67104#[inline(always)]
67105#[target_feature(enable = "neon")]
67106#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67107#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
67108#[cfg_attr(
67109 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67110 assert_instr(st2)
67111)]
67112#[cfg_attr(
67113 not(target_arch = "arm"),
67114 stable(feature = "neon_intrinsics", since = "1.59.0")
67115)]
67116#[cfg_attr(
67117 target_arch = "arm",
67118 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67119)]
67120pub unsafe fn vst2_p16(a: *mut p16, b: poly16x4x2_t) {
67121 vst2_s16(transmute(a), transmute(b))
67122}
67123#[doc = "Store multiple 2-element structures from two registers"]
67124#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_p16)"]
67125#[doc = "## Safety"]
67126#[doc = " * Neon intrinsic unsafe"]
67127#[inline(always)]
67128#[target_feature(enable = "neon")]
67129#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67130#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
67131#[cfg_attr(
67132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67133 assert_instr(st2)
67134)]
67135#[cfg_attr(
67136 not(target_arch = "arm"),
67137 stable(feature = "neon_intrinsics", since = "1.59.0")
67138)]
67139#[cfg_attr(
67140 target_arch = "arm",
67141 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67142)]
67143pub unsafe fn vst2q_p16(a: *mut p16, b: poly16x8x2_t) {
67144 vst2q_s16(transmute(a), transmute(b))
67145}
67146#[doc = "Store multiple 3-element structures from three registers"]
67147#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f16)"]
67148#[doc = "## Safety"]
67149#[doc = " * Neon intrinsic unsafe"]
67150#[inline(always)]
67151#[target_feature(enable = "neon")]
67152#[cfg(target_arch = "arm")]
67153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67154#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67155#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67156#[cfg(not(target_arch = "arm64ec"))]
67157#[cfg_attr(test, assert_instr(vst3))]
67158pub unsafe fn vst3_f16(a: *mut f16, b: float16x4x3_t) {
67159 unsafe extern "unadjusted" {
67160 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4f16")]
67161 fn _vst3_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, c: float16x4_t, size: i32);
67162 }
67163 _vst3_f16(a as _, b.0, b.1, b.2, 2)
67164}
67165#[doc = "Store multiple 3-element structures from three registers"]
67166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f16)"]
67167#[doc = "## Safety"]
67168#[doc = " * Neon intrinsic unsafe"]
67169#[inline(always)]
67170#[target_feature(enable = "neon")]
67171#[cfg(target_arch = "arm")]
67172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67173#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67174#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67175#[cfg(not(target_arch = "arm64ec"))]
67176#[cfg_attr(test, assert_instr(vst3))]
67177pub unsafe fn vst3q_f16(a: *mut f16, b: float16x8x3_t) {
67178 unsafe extern "unadjusted" {
67179 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v8f16")]
67180 fn _vst3q_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, c: float16x8_t, size: i32);
67181 }
67182 _vst3q_f16(a as _, b.0, b.1, b.2, 2)
67183}
67184#[doc = "Store multiple 3-element structures from three registers"]
67185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f16)"]
67186#[doc = "## Safety"]
67187#[doc = " * Neon intrinsic unsafe"]
67188#[inline(always)]
67189#[target_feature(enable = "neon")]
67190#[cfg(not(target_arch = "arm"))]
67191#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67192#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67193#[cfg(not(target_arch = "arm64ec"))]
67194#[cfg_attr(test, assert_instr(st3))]
67195pub unsafe fn vst3_f16(a: *mut f16, b: float16x4x3_t) {
67196 unsafe extern "unadjusted" {
67197 #[cfg_attr(
67198 any(target_arch = "aarch64", target_arch = "arm64ec"),
67199 link_name = "llvm.aarch64.neon.st3.v4f16.p0"
67200 )]
67201 fn _vst3_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, ptr: *mut i8);
67202 }
67203 _vst3_f16(b.0, b.1, b.2, a as _)
67204}
67205#[doc = "Store multiple 3-element structures from three registers"]
67206#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f16)"]
67207#[doc = "## Safety"]
67208#[doc = " * Neon intrinsic unsafe"]
67209#[inline(always)]
67210#[target_feature(enable = "neon")]
67211#[cfg(not(target_arch = "arm"))]
67212#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67213#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67214#[cfg(not(target_arch = "arm64ec"))]
67215#[cfg_attr(test, assert_instr(st3))]
67216pub unsafe fn vst3q_f16(a: *mut f16, b: float16x8x3_t) {
67217 unsafe extern "unadjusted" {
67218 #[cfg_attr(
67219 any(target_arch = "aarch64", target_arch = "arm64ec"),
67220 link_name = "llvm.aarch64.neon.st3.v8f16.p0"
67221 )]
67222 fn _vst3q_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, ptr: *mut i8);
67223 }
67224 _vst3q_f16(b.0, b.1, b.2, a as _)
67225}
67226#[doc = "Store multiple 3-element structures from three registers"]
67227#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f32)"]
67228#[doc = "## Safety"]
67229#[doc = " * Neon intrinsic unsafe"]
67230#[inline(always)]
67231#[cfg(target_arch = "arm")]
67232#[target_feature(enable = "neon,v7")]
67233#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67234#[cfg_attr(test, assert_instr(vst3))]
67235pub unsafe fn vst3_f32(a: *mut f32, b: float32x2x3_t) {
67236 unsafe extern "unadjusted" {
67237 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v2f32")]
67238 fn _vst3_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, c: float32x2_t, size: i32);
67239 }
67240 _vst3_f32(a as _, b.0, b.1, b.2, 4)
67241}
67242#[doc = "Store multiple 3-element structures from three registers"]
67243#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f32)"]
67244#[doc = "## Safety"]
67245#[doc = " * Neon intrinsic unsafe"]
67246#[inline(always)]
67247#[cfg(target_arch = "arm")]
67248#[target_feature(enable = "neon,v7")]
67249#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67250#[cfg_attr(test, assert_instr(vst3))]
67251pub unsafe fn vst3q_f32(a: *mut f32, b: float32x4x3_t) {
67252 unsafe extern "unadjusted" {
67253 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4f32")]
67254 fn _vst3q_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, c: float32x4_t, size: i32);
67255 }
67256 _vst3q_f32(a as _, b.0, b.1, b.2, 4)
67257}
67258#[doc = "Store multiple 3-element structures from three registers"]
67259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s8)"]
67260#[doc = "## Safety"]
67261#[doc = " * Neon intrinsic unsafe"]
67262#[inline(always)]
67263#[cfg(target_arch = "arm")]
67264#[target_feature(enable = "neon,v7")]
67265#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67266#[cfg_attr(test, assert_instr(vst3))]
67267pub unsafe fn vst3_s8(a: *mut i8, b: int8x8x3_t) {
67268 unsafe extern "unadjusted" {
67269 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v8i8")]
67270 fn _vst3_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, size: i32);
67271 }
67272 _vst3_s8(a as _, b.0, b.1, b.2, 1)
67273}
67274#[doc = "Store multiple 3-element structures from three registers"]
67275#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s8)"]
67276#[doc = "## Safety"]
67277#[doc = " * Neon intrinsic unsafe"]
67278#[inline(always)]
67279#[cfg(target_arch = "arm")]
67280#[target_feature(enable = "neon,v7")]
67281#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67282#[cfg_attr(test, assert_instr(vst3))]
67283pub unsafe fn vst3q_s8(a: *mut i8, b: int8x16x3_t) {
67284 unsafe extern "unadjusted" {
67285 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v16i8")]
67286 fn _vst3q_s8(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t, size: i32);
67287 }
67288 _vst3q_s8(a as _, b.0, b.1, b.2, 1)
67289}
67290#[doc = "Store multiple 3-element structures from three registers"]
67291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s16)"]
67292#[doc = "## Safety"]
67293#[doc = " * Neon intrinsic unsafe"]
67294#[inline(always)]
67295#[cfg(target_arch = "arm")]
67296#[target_feature(enable = "neon,v7")]
67297#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67298#[cfg_attr(test, assert_instr(vst3))]
67299pub unsafe fn vst3_s16(a: *mut i16, b: int16x4x3_t) {
67300 unsafe extern "unadjusted" {
67301 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4i16")]
67302 fn _vst3_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, c: int16x4_t, size: i32);
67303 }
67304 _vst3_s16(a as _, b.0, b.1, b.2, 2)
67305}
67306#[doc = "Store multiple 3-element structures from three registers"]
67307#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s16)"]
67308#[doc = "## Safety"]
67309#[doc = " * Neon intrinsic unsafe"]
67310#[inline(always)]
67311#[cfg(target_arch = "arm")]
67312#[target_feature(enable = "neon,v7")]
67313#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67314#[cfg_attr(test, assert_instr(vst3))]
67315pub unsafe fn vst3q_s16(a: *mut i16, b: int16x8x3_t) {
67316 unsafe extern "unadjusted" {
67317 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v8i16")]
67318 fn _vst3q_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, c: int16x8_t, size: i32);
67319 }
67320 _vst3q_s16(a as _, b.0, b.1, b.2, 2)
67321}
67322#[doc = "Store multiple 3-element structures from three registers"]
67323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s32)"]
67324#[doc = "## Safety"]
67325#[doc = " * Neon intrinsic unsafe"]
67326#[inline(always)]
67327#[cfg(target_arch = "arm")]
67328#[target_feature(enable = "neon,v7")]
67329#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67330#[cfg_attr(test, assert_instr(vst3))]
67331pub unsafe fn vst3_s32(a: *mut i32, b: int32x2x3_t) {
67332 unsafe extern "unadjusted" {
67333 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v2i32")]
67334 fn _vst3_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, c: int32x2_t, size: i32);
67335 }
67336 _vst3_s32(a as _, b.0, b.1, b.2, 4)
67337}
67338#[doc = "Store multiple 3-element structures from three registers"]
67339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s32)"]
67340#[doc = "## Safety"]
67341#[doc = " * Neon intrinsic unsafe"]
67342#[inline(always)]
67343#[cfg(target_arch = "arm")]
67344#[target_feature(enable = "neon,v7")]
67345#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67346#[cfg_attr(test, assert_instr(vst3))]
67347pub unsafe fn vst3q_s32(a: *mut i32, b: int32x4x3_t) {
67348 unsafe extern "unadjusted" {
67349 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4i32")]
67350 fn _vst3q_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, c: int32x4_t, size: i32);
67351 }
67352 _vst3q_s32(a as _, b.0, b.1, b.2, 4)
67353}
67354#[doc = "Store multiple 3-element structures from three registers"]
67355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f32)"]
67356#[doc = "## Safety"]
67357#[doc = " * Neon intrinsic unsafe"]
67358#[inline(always)]
67359#[target_feature(enable = "neon")]
67360#[cfg(not(target_arch = "arm"))]
67361#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67362#[cfg_attr(test, assert_instr(st3))]
67363pub unsafe fn vst3_f32(a: *mut f32, b: float32x2x3_t) {
67364 unsafe extern "unadjusted" {
67365 #[cfg_attr(
67366 any(target_arch = "aarch64", target_arch = "arm64ec"),
67367 link_name = "llvm.aarch64.neon.st3.v2f32.p0"
67368 )]
67369 fn _vst3_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t, ptr: *mut i8);
67370 }
67371 _vst3_f32(b.0, b.1, b.2, a as _)
67372}
67373#[doc = "Store multiple 3-element structures from three registers"]
67374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f32)"]
67375#[doc = "## Safety"]
67376#[doc = " * Neon intrinsic unsafe"]
67377#[inline(always)]
67378#[target_feature(enable = "neon")]
67379#[cfg(not(target_arch = "arm"))]
67380#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67381#[cfg_attr(test, assert_instr(st3))]
67382pub unsafe fn vst3q_f32(a: *mut f32, b: float32x4x3_t) {
67383 unsafe extern "unadjusted" {
67384 #[cfg_attr(
67385 any(target_arch = "aarch64", target_arch = "arm64ec"),
67386 link_name = "llvm.aarch64.neon.st3.v4f32.p0"
67387 )]
67388 fn _vst3q_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t, ptr: *mut i8);
67389 }
67390 _vst3q_f32(b.0, b.1, b.2, a as _)
67391}
67392#[doc = "Store multiple 3-element structures from three registers"]
67393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s8)"]
67394#[doc = "## Safety"]
67395#[doc = " * Neon intrinsic unsafe"]
67396#[inline(always)]
67397#[target_feature(enable = "neon")]
67398#[cfg(not(target_arch = "arm"))]
67399#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67400#[cfg_attr(test, assert_instr(st3))]
67401pub unsafe fn vst3_s8(a: *mut i8, b: int8x8x3_t) {
67402 unsafe extern "unadjusted" {
67403 #[cfg_attr(
67404 any(target_arch = "aarch64", target_arch = "arm64ec"),
67405 link_name = "llvm.aarch64.neon.st3.v8i8.p0"
67406 )]
67407 fn _vst3_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, ptr: *mut i8);
67408 }
67409 _vst3_s8(b.0, b.1, b.2, a as _)
67410}
67411#[doc = "Store multiple 3-element structures from three registers"]
67412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s8)"]
67413#[doc = "## Safety"]
67414#[doc = " * Neon intrinsic unsafe"]
67415#[inline(always)]
67416#[target_feature(enable = "neon")]
67417#[cfg(not(target_arch = "arm"))]
67418#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67419#[cfg_attr(test, assert_instr(st3))]
67420pub unsafe fn vst3q_s8(a: *mut i8, b: int8x16x3_t) {
67421 unsafe extern "unadjusted" {
67422 #[cfg_attr(
67423 any(target_arch = "aarch64", target_arch = "arm64ec"),
67424 link_name = "llvm.aarch64.neon.st3.v16i8.p0"
67425 )]
67426 fn _vst3q_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t, ptr: *mut i8);
67427 }
67428 _vst3q_s8(b.0, b.1, b.2, a as _)
67429}
67430#[doc = "Store multiple 3-element structures from three registers"]
67431#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s16)"]
67432#[doc = "## Safety"]
67433#[doc = " * Neon intrinsic unsafe"]
67434#[inline(always)]
67435#[target_feature(enable = "neon")]
67436#[cfg(not(target_arch = "arm"))]
67437#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67438#[cfg_attr(test, assert_instr(st3))]
67439pub unsafe fn vst3_s16(a: *mut i16, b: int16x4x3_t) {
67440 unsafe extern "unadjusted" {
67441 #[cfg_attr(
67442 any(target_arch = "aarch64", target_arch = "arm64ec"),
67443 link_name = "llvm.aarch64.neon.st3.v4i16.p0"
67444 )]
67445 fn _vst3_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t, ptr: *mut i8);
67446 }
67447 _vst3_s16(b.0, b.1, b.2, a as _)
67448}
67449#[doc = "Store multiple 3-element structures from three registers"]
67450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s16)"]
67451#[doc = "## Safety"]
67452#[doc = " * Neon intrinsic unsafe"]
67453#[inline(always)]
67454#[target_feature(enable = "neon")]
67455#[cfg(not(target_arch = "arm"))]
67456#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67457#[cfg_attr(test, assert_instr(st3))]
67458pub unsafe fn vst3q_s16(a: *mut i16, b: int16x8x3_t) {
67459 unsafe extern "unadjusted" {
67460 #[cfg_attr(
67461 any(target_arch = "aarch64", target_arch = "arm64ec"),
67462 link_name = "llvm.aarch64.neon.st3.v8i16.p0"
67463 )]
67464 fn _vst3q_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t, ptr: *mut i8);
67465 }
67466 _vst3q_s16(b.0, b.1, b.2, a as _)
67467}
67468#[doc = "Store multiple 3-element structures from three registers"]
67469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s32)"]
67470#[doc = "## Safety"]
67471#[doc = " * Neon intrinsic unsafe"]
67472#[inline(always)]
67473#[target_feature(enable = "neon")]
67474#[cfg(not(target_arch = "arm"))]
67475#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67476#[cfg_attr(test, assert_instr(st3))]
67477pub unsafe fn vst3_s32(a: *mut i32, b: int32x2x3_t) {
67478 unsafe extern "unadjusted" {
67479 #[cfg_attr(
67480 any(target_arch = "aarch64", target_arch = "arm64ec"),
67481 link_name = "llvm.aarch64.neon.st3.v2i32.p0"
67482 )]
67483 fn _vst3_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t, ptr: *mut i8);
67484 }
67485 _vst3_s32(b.0, b.1, b.2, a as _)
67486}
67487#[doc = "Store multiple 3-element structures from three registers"]
67488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s32)"]
67489#[doc = "## Safety"]
67490#[doc = " * Neon intrinsic unsafe"]
67491#[inline(always)]
67492#[target_feature(enable = "neon")]
67493#[cfg(not(target_arch = "arm"))]
67494#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67495#[cfg_attr(test, assert_instr(st3))]
67496pub unsafe fn vst3q_s32(a: *mut i32, b: int32x4x3_t) {
67497 unsafe extern "unadjusted" {
67498 #[cfg_attr(
67499 any(target_arch = "aarch64", target_arch = "arm64ec"),
67500 link_name = "llvm.aarch64.neon.st3.v4i32.p0"
67501 )]
67502 fn _vst3q_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t, ptr: *mut i8);
67503 }
67504 _vst3q_s32(b.0, b.1, b.2, a as _)
67505}
67506#[doc = "Store multiple 3-element structures from three registers"]
67507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f16)"]
67508#[doc = "## Safety"]
67509#[doc = " * Neon intrinsic unsafe"]
67510#[inline(always)]
67511#[target_feature(enable = "neon")]
67512#[cfg(target_arch = "arm")]
67513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67514#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67515#[rustc_legacy_const_generics(2)]
67516#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67517#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67518#[cfg(not(target_arch = "arm64ec"))]
67519pub unsafe fn vst3_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x3_t) {
67520 static_assert_uimm_bits!(LANE, 2);
67521 unsafe extern "unadjusted" {
67522 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4f16")]
67523 fn _vst3_lane_f16(
67524 ptr: *mut i8,
67525 a: float16x4_t,
67526 b: float16x4_t,
67527 c: float16x4_t,
67528 n: i32,
67529 size: i32,
67530 );
67531 }
67532 _vst3_lane_f16(a as _, b.0, b.1, b.2, LANE, 4)
67533}
67534#[doc = "Store multiple 3-element structures from three registers"]
67535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f16)"]
67536#[doc = "## Safety"]
67537#[doc = " * Neon intrinsic unsafe"]
67538#[inline(always)]
67539#[target_feature(enable = "neon")]
67540#[cfg(target_arch = "arm")]
67541#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67542#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67543#[rustc_legacy_const_generics(2)]
67544#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67545#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67546#[cfg(not(target_arch = "arm64ec"))]
67547pub unsafe fn vst3q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x3_t) {
67548 static_assert_uimm_bits!(LANE, 3);
67549 unsafe extern "unadjusted" {
67550 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8f16")]
67551 fn _vst3q_lane_f16(
67552 ptr: *mut i8,
67553 a: float16x8_t,
67554 b: float16x8_t,
67555 c: float16x8_t,
67556 n: i32,
67557 size: i32,
67558 );
67559 }
67560 _vst3q_lane_f16(a as _, b.0, b.1, b.2, LANE, 4)
67561}
67562#[doc = "Store multiple 3-element structures from three registers"]
67563#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f16)"]
67564#[doc = "## Safety"]
67565#[doc = " * Neon intrinsic unsafe"]
67566#[inline(always)]
67567#[target_feature(enable = "neon")]
67568#[cfg(not(target_arch = "arm"))]
67569#[rustc_legacy_const_generics(2)]
67570#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67571#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67572#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67573#[cfg(not(target_arch = "arm64ec"))]
67574pub unsafe fn vst3_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x3_t) {
67575 static_assert_uimm_bits!(LANE, 2);
67576 unsafe extern "unadjusted" {
67577 #[cfg_attr(
67578 any(target_arch = "aarch64", target_arch = "arm64ec"),
67579 link_name = "llvm.aarch64.neon.st3lane.v4f16.p0"
67580 )]
67581 fn _vst3_lane_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, n: i64, ptr: *mut i8);
67582 }
67583 _vst3_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
67584}
67585#[doc = "Store multiple 3-element structures from three registers"]
67586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f16)"]
67587#[doc = "## Safety"]
67588#[doc = " * Neon intrinsic unsafe"]
67589#[inline(always)]
67590#[target_feature(enable = "neon")]
67591#[cfg(not(target_arch = "arm"))]
67592#[rustc_legacy_const_generics(2)]
67593#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67594#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67595#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67596#[cfg(not(target_arch = "arm64ec"))]
67597pub unsafe fn vst3q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x3_t) {
67598 static_assert_uimm_bits!(LANE, 3);
67599 unsafe extern "unadjusted" {
67600 #[cfg_attr(
67601 any(target_arch = "aarch64", target_arch = "arm64ec"),
67602 link_name = "llvm.aarch64.neon.st3lane.v8f16.p0"
67603 )]
67604 fn _vst3q_lane_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, n: i64, ptr: *mut i8);
67605 }
67606 _vst3q_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
67607}
67608#[doc = "Store multiple 3-element structures from three registers"]
67609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f32)"]
67610#[doc = "## Safety"]
67611#[doc = " * Neon intrinsic unsafe"]
67612#[inline(always)]
67613#[cfg(target_arch = "arm")]
67614#[target_feature(enable = "neon,v7")]
67615#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67616#[rustc_legacy_const_generics(2)]
67617#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67618pub unsafe fn vst3_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x3_t) {
67619 static_assert_uimm_bits!(LANE, 1);
67620 unsafe extern "unadjusted" {
67621 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v2f32")]
67622 fn _vst3_lane_f32(
67623 ptr: *mut i8,
67624 a: float32x2_t,
67625 b: float32x2_t,
67626 c: float32x2_t,
67627 n: i32,
67628 size: i32,
67629 );
67630 }
67631 _vst3_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
67632}
67633#[doc = "Store multiple 3-element structures from three registers"]
67634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f32)"]
67635#[doc = "## Safety"]
67636#[doc = " * Neon intrinsic unsafe"]
67637#[inline(always)]
67638#[cfg(target_arch = "arm")]
67639#[target_feature(enable = "neon,v7")]
67640#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67641#[rustc_legacy_const_generics(2)]
67642#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67643pub unsafe fn vst3q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x3_t) {
67644 static_assert_uimm_bits!(LANE, 2);
67645 unsafe extern "unadjusted" {
67646 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4f32")]
67647 fn _vst3q_lane_f32(
67648 ptr: *mut i8,
67649 a: float32x4_t,
67650 b: float32x4_t,
67651 c: float32x4_t,
67652 n: i32,
67653 size: i32,
67654 );
67655 }
67656 _vst3q_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
67657}
67658#[doc = "Store multiple 3-element structures from three registers"]
67659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s8)"]
67660#[doc = "## Safety"]
67661#[doc = " * Neon intrinsic unsafe"]
67662#[inline(always)]
67663#[cfg(target_arch = "arm")]
67664#[target_feature(enable = "neon,v7")]
67665#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67666#[rustc_legacy_const_generics(2)]
67667#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67668pub unsafe fn vst3_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x3_t) {
67669 static_assert_uimm_bits!(LANE, 3);
67670 unsafe extern "unadjusted" {
67671 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8i8")]
67672 fn _vst3_lane_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, n: i32, size: i32);
67673 }
67674 _vst3_lane_s8(a as _, b.0, b.1, b.2, LANE, 1)
67675}
67676#[doc = "Store multiple 3-element structures from three registers"]
67677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s16)"]
67678#[doc = "## Safety"]
67679#[doc = " * Neon intrinsic unsafe"]
67680#[inline(always)]
67681#[cfg(target_arch = "arm")]
67682#[target_feature(enable = "neon,v7")]
67683#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67684#[rustc_legacy_const_generics(2)]
67685#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67686pub unsafe fn vst3_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x3_t) {
67687 static_assert_uimm_bits!(LANE, 2);
67688 unsafe extern "unadjusted" {
67689 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4i16")]
67690 fn _vst3_lane_s16(
67691 ptr: *mut i8,
67692 a: int16x4_t,
67693 b: int16x4_t,
67694 c: int16x4_t,
67695 n: i32,
67696 size: i32,
67697 );
67698 }
67699 _vst3_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
67700}
67701#[doc = "Store multiple 3-element structures from three registers"]
67702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s16)"]
67703#[doc = "## Safety"]
67704#[doc = " * Neon intrinsic unsafe"]
67705#[inline(always)]
67706#[cfg(target_arch = "arm")]
67707#[target_feature(enable = "neon,v7")]
67708#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67709#[rustc_legacy_const_generics(2)]
67710#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67711pub unsafe fn vst3q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x3_t) {
67712 static_assert_uimm_bits!(LANE, 3);
67713 unsafe extern "unadjusted" {
67714 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8i16")]
67715 fn _vst3q_lane_s16(
67716 ptr: *mut i8,
67717 a: int16x8_t,
67718 b: int16x8_t,
67719 c: int16x8_t,
67720 n: i32,
67721 size: i32,
67722 );
67723 }
67724 _vst3q_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
67725}
67726#[doc = "Store multiple 3-element structures from three registers"]
67727#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s32)"]
67728#[doc = "## Safety"]
67729#[doc = " * Neon intrinsic unsafe"]
67730#[inline(always)]
67731#[cfg(target_arch = "arm")]
67732#[target_feature(enable = "neon,v7")]
67733#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67734#[rustc_legacy_const_generics(2)]
67735#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67736pub unsafe fn vst3_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x3_t) {
67737 static_assert_uimm_bits!(LANE, 1);
67738 unsafe extern "unadjusted" {
67739 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v2i32")]
67740 fn _vst3_lane_s32(
67741 ptr: *mut i8,
67742 a: int32x2_t,
67743 b: int32x2_t,
67744 c: int32x2_t,
67745 n: i32,
67746 size: i32,
67747 );
67748 }
67749 _vst3_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
67750}
67751#[doc = "Store multiple 3-element structures from three registers"]
67752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s32)"]
67753#[doc = "## Safety"]
67754#[doc = " * Neon intrinsic unsafe"]
67755#[inline(always)]
67756#[cfg(target_arch = "arm")]
67757#[target_feature(enable = "neon,v7")]
67758#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67759#[rustc_legacy_const_generics(2)]
67760#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67761pub unsafe fn vst3q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x3_t) {
67762 static_assert_uimm_bits!(LANE, 2);
67763 unsafe extern "unadjusted" {
67764 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4i32")]
67765 fn _vst3q_lane_s32(
67766 ptr: *mut i8,
67767 a: int32x4_t,
67768 b: int32x4_t,
67769 c: int32x4_t,
67770 n: i32,
67771 size: i32,
67772 );
67773 }
67774 _vst3q_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
67775}
67776#[doc = "Store multiple 3-element structures from three registers"]
67777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f32)"]
67778#[doc = "## Safety"]
67779#[doc = " * Neon intrinsic unsafe"]
67780#[inline(always)]
67781#[target_feature(enable = "neon")]
67782#[cfg(not(target_arch = "arm"))]
67783#[rustc_legacy_const_generics(2)]
67784#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67785#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67786pub unsafe fn vst3_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x3_t) {
67787 static_assert_uimm_bits!(LANE, 1);
67788 unsafe extern "unadjusted" {
67789 #[cfg_attr(
67790 any(target_arch = "aarch64", target_arch = "arm64ec"),
67791 link_name = "llvm.aarch64.neon.st3lane.v2f32.p0"
67792 )]
67793 fn _vst3_lane_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t, n: i64, ptr: *mut i8);
67794 }
67795 _vst3_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
67796}
67797#[doc = "Store multiple 3-element structures from three registers"]
67798#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f32)"]
67799#[doc = "## Safety"]
67800#[doc = " * Neon intrinsic unsafe"]
67801#[inline(always)]
67802#[target_feature(enable = "neon")]
67803#[cfg(not(target_arch = "arm"))]
67804#[rustc_legacy_const_generics(2)]
67805#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67806#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67807pub unsafe fn vst3q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x3_t) {
67808 static_assert_uimm_bits!(LANE, 2);
67809 unsafe extern "unadjusted" {
67810 #[cfg_attr(
67811 any(target_arch = "aarch64", target_arch = "arm64ec"),
67812 link_name = "llvm.aarch64.neon.st3lane.v4f32.p0"
67813 )]
67814 fn _vst3q_lane_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t, n: i64, ptr: *mut i8);
67815 }
67816 _vst3q_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
67817}
67818#[doc = "Store multiple 3-element structures from three registers"]
67819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s8)"]
67820#[doc = "## Safety"]
67821#[doc = " * Neon intrinsic unsafe"]
67822#[inline(always)]
67823#[target_feature(enable = "neon")]
67824#[cfg(not(target_arch = "arm"))]
67825#[rustc_legacy_const_generics(2)]
67826#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67827#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67828pub unsafe fn vst3_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x3_t) {
67829 static_assert_uimm_bits!(LANE, 3);
67830 unsafe extern "unadjusted" {
67831 #[cfg_attr(
67832 any(target_arch = "aarch64", target_arch = "arm64ec"),
67833 link_name = "llvm.aarch64.neon.st3lane.v8i8.p0"
67834 )]
67835 fn _vst3_lane_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, n: i64, ptr: *mut i8);
67836 }
67837 _vst3_lane_s8(b.0, b.1, b.2, LANE as i64, a as _)
67838}
67839#[doc = "Store multiple 3-element structures from three registers"]
67840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s16)"]
67841#[doc = "## Safety"]
67842#[doc = " * Neon intrinsic unsafe"]
67843#[inline(always)]
67844#[target_feature(enable = "neon")]
67845#[cfg(not(target_arch = "arm"))]
67846#[rustc_legacy_const_generics(2)]
67847#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67848#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67849pub unsafe fn vst3_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x3_t) {
67850 static_assert_uimm_bits!(LANE, 2);
67851 unsafe extern "unadjusted" {
67852 #[cfg_attr(
67853 any(target_arch = "aarch64", target_arch = "arm64ec"),
67854 link_name = "llvm.aarch64.neon.st3lane.v4i16.p0"
67855 )]
67856 fn _vst3_lane_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t, n: i64, ptr: *mut i8);
67857 }
67858 _vst3_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
67859}
67860#[doc = "Store multiple 3-element structures from three registers"]
67861#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s16)"]
67862#[doc = "## Safety"]
67863#[doc = " * Neon intrinsic unsafe"]
67864#[inline(always)]
67865#[target_feature(enable = "neon")]
67866#[cfg(not(target_arch = "arm"))]
67867#[rustc_legacy_const_generics(2)]
67868#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67869#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67870pub unsafe fn vst3q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x3_t) {
67871 static_assert_uimm_bits!(LANE, 3);
67872 unsafe extern "unadjusted" {
67873 #[cfg_attr(
67874 any(target_arch = "aarch64", target_arch = "arm64ec"),
67875 link_name = "llvm.aarch64.neon.st3lane.v8i16.p0"
67876 )]
67877 fn _vst3q_lane_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t, n: i64, ptr: *mut i8);
67878 }
67879 _vst3q_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
67880}
67881#[doc = "Store multiple 3-element structures from three registers"]
67882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s32)"]
67883#[doc = "## Safety"]
67884#[doc = " * Neon intrinsic unsafe"]
67885#[inline(always)]
67886#[target_feature(enable = "neon")]
67887#[cfg(not(target_arch = "arm"))]
67888#[rustc_legacy_const_generics(2)]
67889#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67890#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67891pub unsafe fn vst3_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x3_t) {
67892 static_assert_uimm_bits!(LANE, 1);
67893 unsafe extern "unadjusted" {
67894 #[cfg_attr(
67895 any(target_arch = "aarch64", target_arch = "arm64ec"),
67896 link_name = "llvm.aarch64.neon.st3lane.v2i32.p0"
67897 )]
67898 fn _vst3_lane_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t, n: i64, ptr: *mut i8);
67899 }
67900 _vst3_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
67901}
67902#[doc = "Store multiple 3-element structures from three registers"]
67903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s32)"]
67904#[doc = "## Safety"]
67905#[doc = " * Neon intrinsic unsafe"]
67906#[inline(always)]
67907#[target_feature(enable = "neon")]
67908#[cfg(not(target_arch = "arm"))]
67909#[rustc_legacy_const_generics(2)]
67910#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67911#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67912pub unsafe fn vst3q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x3_t) {
67913 static_assert_uimm_bits!(LANE, 2);
67914 unsafe extern "unadjusted" {
67915 #[cfg_attr(
67916 any(target_arch = "aarch64", target_arch = "arm64ec"),
67917 link_name = "llvm.aarch64.neon.st3lane.v4i32.p0"
67918 )]
67919 fn _vst3q_lane_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t, n: i64, ptr: *mut i8);
67920 }
67921 _vst3q_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
67922}
67923#[doc = "Store multiple 3-element structures from three registers"]
67924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u8)"]
67925#[doc = "## Safety"]
67926#[doc = " * Neon intrinsic unsafe"]
67927#[inline(always)]
67928#[target_feature(enable = "neon")]
67929#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67930#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67931#[cfg_attr(
67932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67933 assert_instr(st3, LANE = 0)
67934)]
67935#[rustc_legacy_const_generics(2)]
67936#[cfg_attr(
67937 not(target_arch = "arm"),
67938 stable(feature = "neon_intrinsics", since = "1.59.0")
67939)]
67940#[cfg_attr(
67941 target_arch = "arm",
67942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67943)]
67944pub unsafe fn vst3_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x3_t) {
67945 static_assert_uimm_bits!(LANE, 3);
67946 vst3_lane_s8::<LANE>(transmute(a), transmute(b))
67947}
67948#[doc = "Store multiple 3-element structures from three registers"]
67949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u16)"]
67950#[doc = "## Safety"]
67951#[doc = " * Neon intrinsic unsafe"]
67952#[inline(always)]
67953#[target_feature(enable = "neon")]
67954#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67955#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67956#[cfg_attr(
67957 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67958 assert_instr(st3, LANE = 0)
67959)]
67960#[rustc_legacy_const_generics(2)]
67961#[cfg_attr(
67962 not(target_arch = "arm"),
67963 stable(feature = "neon_intrinsics", since = "1.59.0")
67964)]
67965#[cfg_attr(
67966 target_arch = "arm",
67967 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67968)]
67969pub unsafe fn vst3_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x3_t) {
67970 static_assert_uimm_bits!(LANE, 2);
67971 vst3_lane_s16::<LANE>(transmute(a), transmute(b))
67972}
67973#[doc = "Store multiple 3-element structures from three registers"]
67974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_u16)"]
67975#[doc = "## Safety"]
67976#[doc = " * Neon intrinsic unsafe"]
67977#[inline(always)]
67978#[target_feature(enable = "neon")]
67979#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67980#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67981#[cfg_attr(
67982 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67983 assert_instr(st3, LANE = 0)
67984)]
67985#[rustc_legacy_const_generics(2)]
67986#[cfg_attr(
67987 not(target_arch = "arm"),
67988 stable(feature = "neon_intrinsics", since = "1.59.0")
67989)]
67990#[cfg_attr(
67991 target_arch = "arm",
67992 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67993)]
67994pub unsafe fn vst3q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x3_t) {
67995 static_assert_uimm_bits!(LANE, 3);
67996 vst3q_lane_s16::<LANE>(transmute(a), transmute(b))
67997}
67998#[doc = "Store multiple 3-element structures from three registers"]
67999#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u32)"]
68000#[doc = "## Safety"]
68001#[doc = " * Neon intrinsic unsafe"]
68002#[inline(always)]
68003#[target_feature(enable = "neon")]
68004#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68005#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
68006#[cfg_attr(
68007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68008 assert_instr(st3, LANE = 0)
68009)]
68010#[rustc_legacy_const_generics(2)]
68011#[cfg_attr(
68012 not(target_arch = "arm"),
68013 stable(feature = "neon_intrinsics", since = "1.59.0")
68014)]
68015#[cfg_attr(
68016 target_arch = "arm",
68017 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68018)]
68019pub unsafe fn vst3_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x3_t) {
68020 static_assert_uimm_bits!(LANE, 1);
68021 vst3_lane_s32::<LANE>(transmute(a), transmute(b))
68022}
68023#[doc = "Store multiple 3-element structures from three registers"]
68024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_u32)"]
68025#[doc = "## Safety"]
68026#[doc = " * Neon intrinsic unsafe"]
68027#[inline(always)]
68028#[target_feature(enable = "neon")]
68029#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68030#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
68031#[cfg_attr(
68032 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68033 assert_instr(st3, LANE = 0)
68034)]
68035#[rustc_legacy_const_generics(2)]
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 vst3q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x3_t) {
68045 static_assert_uimm_bits!(LANE, 2);
68046 vst3q_lane_s32::<LANE>(transmute(a), transmute(b))
68047}
68048#[doc = "Store multiple 3-element structures from three registers"]
68049#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_p8)"]
68050#[doc = "## Safety"]
68051#[doc = " * Neon intrinsic unsafe"]
68052#[inline(always)]
68053#[target_feature(enable = "neon")]
68054#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68055#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
68056#[cfg_attr(
68057 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68058 assert_instr(st3, LANE = 0)
68059)]
68060#[rustc_legacy_const_generics(2)]
68061#[cfg_attr(
68062 not(target_arch = "arm"),
68063 stable(feature = "neon_intrinsics", since = "1.59.0")
68064)]
68065#[cfg_attr(
68066 target_arch = "arm",
68067 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68068)]
68069pub unsafe fn vst3_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x3_t) {
68070 static_assert_uimm_bits!(LANE, 3);
68071 vst3_lane_s8::<LANE>(transmute(a), transmute(b))
68072}
68073#[doc = "Store multiple 3-element structures from three registers"]
68074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_p16)"]
68075#[doc = "## Safety"]
68076#[doc = " * Neon intrinsic unsafe"]
68077#[inline(always)]
68078#[target_feature(enable = "neon")]
68079#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68080#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
68081#[cfg_attr(
68082 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68083 assert_instr(st3, LANE = 0)
68084)]
68085#[rustc_legacy_const_generics(2)]
68086#[cfg_attr(
68087 not(target_arch = "arm"),
68088 stable(feature = "neon_intrinsics", since = "1.59.0")
68089)]
68090#[cfg_attr(
68091 target_arch = "arm",
68092 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68093)]
68094pub unsafe fn vst3_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x3_t) {
68095 static_assert_uimm_bits!(LANE, 2);
68096 vst3_lane_s16::<LANE>(transmute(a), transmute(b))
68097}
68098#[doc = "Store multiple 3-element structures from three registers"]
68099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_p16)"]
68100#[doc = "## Safety"]
68101#[doc = " * Neon intrinsic unsafe"]
68102#[inline(always)]
68103#[target_feature(enable = "neon")]
68104#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68105#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
68106#[cfg_attr(
68107 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68108 assert_instr(st3, LANE = 0)
68109)]
68110#[rustc_legacy_const_generics(2)]
68111#[cfg_attr(
68112 not(target_arch = "arm"),
68113 stable(feature = "neon_intrinsics", since = "1.59.0")
68114)]
68115#[cfg_attr(
68116 target_arch = "arm",
68117 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68118)]
68119pub unsafe fn vst3q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x3_t) {
68120 static_assert_uimm_bits!(LANE, 3);
68121 vst3q_lane_s16::<LANE>(transmute(a), transmute(b))
68122}
68123#[doc = "Store multiple 3-element structures from three registers"]
68124#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p64)"]
68125#[doc = "## Safety"]
68126#[doc = " * Neon intrinsic unsafe"]
68127#[inline(always)]
68128#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
68129#[target_feature(enable = "neon,aes")]
68130#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
68131#[cfg_attr(
68132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68133 assert_instr(nop)
68134)]
68135#[cfg_attr(
68136 not(target_arch = "arm"),
68137 stable(feature = "neon_intrinsics", since = "1.59.0")
68138)]
68139#[cfg_attr(
68140 target_arch = "arm",
68141 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68142)]
68143pub unsafe fn vst3_p64(a: *mut p64, b: poly64x1x3_t) {
68144 vst3_s64(transmute(a), transmute(b))
68145}
68146#[doc = "Store multiple 3-element structures from three registers"]
68147#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s64)"]
68148#[doc = "## Safety"]
68149#[doc = " * Neon intrinsic unsafe"]
68150#[inline(always)]
68151#[target_feature(enable = "neon")]
68152#[cfg(not(target_arch = "arm"))]
68153#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68154#[cfg_attr(test, assert_instr(nop))]
68155pub unsafe fn vst3_s64(a: *mut i64, b: int64x1x3_t) {
68156 unsafe extern "unadjusted" {
68157 #[cfg_attr(
68158 any(target_arch = "aarch64", target_arch = "arm64ec"),
68159 link_name = "llvm.aarch64.neon.st3.v1i64.p0"
68160 )]
68161 fn _vst3_s64(a: int64x1_t, b: int64x1_t, c: int64x1_t, ptr: *mut i8);
68162 }
68163 _vst3_s64(b.0, b.1, b.2, a as _)
68164}
68165#[doc = "Store multiple 3-element structures from three registers"]
68166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s64)"]
68167#[doc = "## Safety"]
68168#[doc = " * Neon intrinsic unsafe"]
68169#[inline(always)]
68170#[cfg(target_arch = "arm")]
68171#[target_feature(enable = "neon,v7")]
68172#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68173#[cfg_attr(test, assert_instr(nop))]
68174pub unsafe fn vst3_s64(a: *mut i64, b: int64x1x3_t) {
68175 unsafe extern "unadjusted" {
68176 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v1i64")]
68177 fn _vst3_s64(ptr: *mut i8, a: int64x1_t, b: int64x1_t, c: int64x1_t, size: i32);
68178 }
68179 _vst3_s64(a as _, b.0, b.1, b.2, 8)
68180}
68181#[doc = "Store multiple 3-element structures from three registers"]
68182#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u64)"]
68183#[doc = "## Safety"]
68184#[doc = " * Neon intrinsic unsafe"]
68185#[inline(always)]
68186#[target_feature(enable = "neon")]
68187#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68188#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
68189#[cfg_attr(
68190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68191 assert_instr(nop)
68192)]
68193#[cfg_attr(
68194 not(target_arch = "arm"),
68195 stable(feature = "neon_intrinsics", since = "1.59.0")
68196)]
68197#[cfg_attr(
68198 target_arch = "arm",
68199 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68200)]
68201pub unsafe fn vst3_u64(a: *mut u64, b: uint64x1x3_t) {
68202 vst3_s64(transmute(a), transmute(b))
68203}
68204#[doc = "Store multiple 3-element structures from three registers"]
68205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u8)"]
68206#[doc = "## Safety"]
68207#[doc = " * Neon intrinsic unsafe"]
68208#[inline(always)]
68209#[target_feature(enable = "neon")]
68210#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68211#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68212#[cfg_attr(
68213 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68214 assert_instr(st3)
68215)]
68216#[cfg_attr(
68217 not(target_arch = "arm"),
68218 stable(feature = "neon_intrinsics", since = "1.59.0")
68219)]
68220#[cfg_attr(
68221 target_arch = "arm",
68222 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68223)]
68224pub unsafe fn vst3_u8(a: *mut u8, b: uint8x8x3_t) {
68225 vst3_s8(transmute(a), transmute(b))
68226}
68227#[doc = "Store multiple 3-element structures from three registers"]
68228#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u8)"]
68229#[doc = "## Safety"]
68230#[doc = " * Neon intrinsic unsafe"]
68231#[inline(always)]
68232#[target_feature(enable = "neon")]
68233#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68234#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68235#[cfg_attr(
68236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68237 assert_instr(st3)
68238)]
68239#[cfg_attr(
68240 not(target_arch = "arm"),
68241 stable(feature = "neon_intrinsics", since = "1.59.0")
68242)]
68243#[cfg_attr(
68244 target_arch = "arm",
68245 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68246)]
68247pub unsafe fn vst3q_u8(a: *mut u8, b: uint8x16x3_t) {
68248 vst3q_s8(transmute(a), transmute(b))
68249}
68250#[doc = "Store multiple 3-element structures from three registers"]
68251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u16)"]
68252#[doc = "## Safety"]
68253#[doc = " * Neon intrinsic unsafe"]
68254#[inline(always)]
68255#[target_feature(enable = "neon")]
68256#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68257#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68258#[cfg_attr(
68259 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68260 assert_instr(st3)
68261)]
68262#[cfg_attr(
68263 not(target_arch = "arm"),
68264 stable(feature = "neon_intrinsics", since = "1.59.0")
68265)]
68266#[cfg_attr(
68267 target_arch = "arm",
68268 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68269)]
68270pub unsafe fn vst3_u16(a: *mut u16, b: uint16x4x3_t) {
68271 vst3_s16(transmute(a), transmute(b))
68272}
68273#[doc = "Store multiple 3-element structures from three registers"]
68274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u16)"]
68275#[doc = "## Safety"]
68276#[doc = " * Neon intrinsic unsafe"]
68277#[inline(always)]
68278#[target_feature(enable = "neon")]
68279#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68280#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68281#[cfg_attr(
68282 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68283 assert_instr(st3)
68284)]
68285#[cfg_attr(
68286 not(target_arch = "arm"),
68287 stable(feature = "neon_intrinsics", since = "1.59.0")
68288)]
68289#[cfg_attr(
68290 target_arch = "arm",
68291 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68292)]
68293pub unsafe fn vst3q_u16(a: *mut u16, b: uint16x8x3_t) {
68294 vst3q_s16(transmute(a), transmute(b))
68295}
68296#[doc = "Store multiple 3-element structures from three registers"]
68297#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u32)"]
68298#[doc = "## Safety"]
68299#[doc = " * Neon intrinsic unsafe"]
68300#[inline(always)]
68301#[target_feature(enable = "neon")]
68302#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68303#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68304#[cfg_attr(
68305 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68306 assert_instr(st3)
68307)]
68308#[cfg_attr(
68309 not(target_arch = "arm"),
68310 stable(feature = "neon_intrinsics", since = "1.59.0")
68311)]
68312#[cfg_attr(
68313 target_arch = "arm",
68314 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68315)]
68316pub unsafe fn vst3_u32(a: *mut u32, b: uint32x2x3_t) {
68317 vst3_s32(transmute(a), transmute(b))
68318}
68319#[doc = "Store multiple 3-element structures from three registers"]
68320#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u32)"]
68321#[doc = "## Safety"]
68322#[doc = " * Neon intrinsic unsafe"]
68323#[inline(always)]
68324#[target_feature(enable = "neon")]
68325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68326#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68327#[cfg_attr(
68328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68329 assert_instr(st3)
68330)]
68331#[cfg_attr(
68332 not(target_arch = "arm"),
68333 stable(feature = "neon_intrinsics", since = "1.59.0")
68334)]
68335#[cfg_attr(
68336 target_arch = "arm",
68337 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68338)]
68339pub unsafe fn vst3q_u32(a: *mut u32, b: uint32x4x3_t) {
68340 vst3q_s32(transmute(a), transmute(b))
68341}
68342#[doc = "Store multiple 3-element structures from three registers"]
68343#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p8)"]
68344#[doc = "## Safety"]
68345#[doc = " * Neon intrinsic unsafe"]
68346#[inline(always)]
68347#[target_feature(enable = "neon")]
68348#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68349#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68350#[cfg_attr(
68351 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68352 assert_instr(st3)
68353)]
68354#[cfg_attr(
68355 not(target_arch = "arm"),
68356 stable(feature = "neon_intrinsics", since = "1.59.0")
68357)]
68358#[cfg_attr(
68359 target_arch = "arm",
68360 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68361)]
68362pub unsafe fn vst3_p8(a: *mut p8, b: poly8x8x3_t) {
68363 vst3_s8(transmute(a), transmute(b))
68364}
68365#[doc = "Store multiple 3-element structures from three registers"]
68366#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_p8)"]
68367#[doc = "## Safety"]
68368#[doc = " * Neon intrinsic unsafe"]
68369#[inline(always)]
68370#[target_feature(enable = "neon")]
68371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68373#[cfg_attr(
68374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68375 assert_instr(st3)
68376)]
68377#[cfg_attr(
68378 not(target_arch = "arm"),
68379 stable(feature = "neon_intrinsics", since = "1.59.0")
68380)]
68381#[cfg_attr(
68382 target_arch = "arm",
68383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68384)]
68385pub unsafe fn vst3q_p8(a: *mut p8, b: poly8x16x3_t) {
68386 vst3q_s8(transmute(a), transmute(b))
68387}
68388#[doc = "Store multiple 3-element structures from three registers"]
68389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p16)"]
68390#[doc = "## Safety"]
68391#[doc = " * Neon intrinsic unsafe"]
68392#[inline(always)]
68393#[target_feature(enable = "neon")]
68394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68395#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68396#[cfg_attr(
68397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68398 assert_instr(st3)
68399)]
68400#[cfg_attr(
68401 not(target_arch = "arm"),
68402 stable(feature = "neon_intrinsics", since = "1.59.0")
68403)]
68404#[cfg_attr(
68405 target_arch = "arm",
68406 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68407)]
68408pub unsafe fn vst3_p16(a: *mut p16, b: poly16x4x3_t) {
68409 vst3_s16(transmute(a), transmute(b))
68410}
68411#[doc = "Store multiple 3-element structures from three registers"]
68412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_p16)"]
68413#[doc = "## Safety"]
68414#[doc = " * Neon intrinsic unsafe"]
68415#[inline(always)]
68416#[target_feature(enable = "neon")]
68417#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68418#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68419#[cfg_attr(
68420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68421 assert_instr(st3)
68422)]
68423#[cfg_attr(
68424 not(target_arch = "arm"),
68425 stable(feature = "neon_intrinsics", since = "1.59.0")
68426)]
68427#[cfg_attr(
68428 target_arch = "arm",
68429 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68430)]
68431pub unsafe fn vst3q_p16(a: *mut p16, b: poly16x8x3_t) {
68432 vst3q_s16(transmute(a), transmute(b))
68433}
68434#[doc = "Store multiple 4-element structures from four registers"]
68435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f16)"]
68436#[doc = "## Safety"]
68437#[doc = " * Neon intrinsic unsafe"]
68438#[inline(always)]
68439#[target_feature(enable = "neon")]
68440#[cfg(target_arch = "arm")]
68441#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68442#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68443#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68444#[cfg(not(target_arch = "arm64ec"))]
68445#[cfg_attr(test, assert_instr(vst4))]
68446pub unsafe fn vst4_f16(a: *mut f16, b: float16x4x4_t) {
68447 unsafe extern "unadjusted" {
68448 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4f16")]
68449 fn _vst4_f16(
68450 ptr: *mut i8,
68451 a: float16x4_t,
68452 b: float16x4_t,
68453 c: float16x4_t,
68454 d: float16x4_t,
68455 size: i32,
68456 );
68457 }
68458 _vst4_f16(a as _, b.0, b.1, b.2, b.3, 2)
68459}
68460#[doc = "Store multiple 4-element structures from four registers"]
68461#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f16)"]
68462#[doc = "## Safety"]
68463#[doc = " * Neon intrinsic unsafe"]
68464#[inline(always)]
68465#[target_feature(enable = "neon")]
68466#[cfg(target_arch = "arm")]
68467#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68468#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68469#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68470#[cfg(not(target_arch = "arm64ec"))]
68471#[cfg_attr(test, assert_instr(vst4))]
68472pub unsafe fn vst4q_f16(a: *mut f16, b: float16x8x4_t) {
68473 unsafe extern "unadjusted" {
68474 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8f16")]
68475 fn _vst4q_f16(
68476 ptr: *mut i8,
68477 a: float16x8_t,
68478 b: float16x8_t,
68479 c: float16x8_t,
68480 d: float16x8_t,
68481 size: i32,
68482 );
68483 }
68484 _vst4q_f16(a as _, b.0, b.1, b.2, b.3, 2)
68485}
68486#[doc = "Store multiple 4-element structures from four registers"]
68487#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f16)"]
68488#[doc = "## Safety"]
68489#[doc = " * Neon intrinsic unsafe"]
68490#[inline(always)]
68491#[target_feature(enable = "neon")]
68492#[cfg(not(target_arch = "arm"))]
68493#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68494#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68495#[cfg(not(target_arch = "arm64ec"))]
68496#[cfg_attr(test, assert_instr(st4))]
68497pub unsafe fn vst4_f16(a: *mut f16, b: float16x4x4_t) {
68498 unsafe extern "unadjusted" {
68499 #[cfg_attr(
68500 any(target_arch = "aarch64", target_arch = "arm64ec"),
68501 link_name = "llvm.aarch64.neon.st4.v4f16.p0"
68502 )]
68503 fn _vst4_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, d: float16x4_t, ptr: *mut i8);
68504 }
68505 _vst4_f16(b.0, b.1, b.2, b.3, a as _)
68506}
68507#[doc = "Store multiple 4-element structures from four registers"]
68508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f16)"]
68509#[doc = "## Safety"]
68510#[doc = " * Neon intrinsic unsafe"]
68511#[inline(always)]
68512#[target_feature(enable = "neon")]
68513#[cfg(not(target_arch = "arm"))]
68514#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68515#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68516#[cfg(not(target_arch = "arm64ec"))]
68517#[cfg_attr(test, assert_instr(st4))]
68518pub unsafe fn vst4q_f16(a: *mut f16, b: float16x8x4_t) {
68519 unsafe extern "unadjusted" {
68520 #[cfg_attr(
68521 any(target_arch = "aarch64", target_arch = "arm64ec"),
68522 link_name = "llvm.aarch64.neon.st4.v8f16.p0"
68523 )]
68524 fn _vst4q_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, d: float16x8_t, ptr: *mut i8);
68525 }
68526 _vst4q_f16(b.0, b.1, b.2, b.3, a as _)
68527}
68528#[doc = "Store multiple 4-element structures from four registers"]
68529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f32)"]
68530#[doc = "## Safety"]
68531#[doc = " * Neon intrinsic unsafe"]
68532#[inline(always)]
68533#[cfg(target_arch = "arm")]
68534#[target_feature(enable = "neon,v7")]
68535#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68536#[cfg_attr(test, assert_instr(vst4))]
68537pub unsafe fn vst4_f32(a: *mut f32, b: float32x2x4_t) {
68538 unsafe extern "unadjusted" {
68539 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v2f32")]
68540 fn _vst4_f32(
68541 ptr: *mut i8,
68542 a: float32x2_t,
68543 b: float32x2_t,
68544 c: float32x2_t,
68545 d: float32x2_t,
68546 size: i32,
68547 );
68548 }
68549 _vst4_f32(a as _, b.0, b.1, b.2, b.3, 4)
68550}
68551#[doc = "Store multiple 4-element structures from four registers"]
68552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f32)"]
68553#[doc = "## Safety"]
68554#[doc = " * Neon intrinsic unsafe"]
68555#[inline(always)]
68556#[cfg(target_arch = "arm")]
68557#[target_feature(enable = "neon,v7")]
68558#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68559#[cfg_attr(test, assert_instr(vst4))]
68560pub unsafe fn vst4q_f32(a: *mut f32, b: float32x4x4_t) {
68561 unsafe extern "unadjusted" {
68562 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4f32")]
68563 fn _vst4q_f32(
68564 ptr: *mut i8,
68565 a: float32x4_t,
68566 b: float32x4_t,
68567 c: float32x4_t,
68568 d: float32x4_t,
68569 size: i32,
68570 );
68571 }
68572 _vst4q_f32(a as _, b.0, b.1, b.2, b.3, 4)
68573}
68574#[doc = "Store multiple 4-element structures from four registers"]
68575#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s8)"]
68576#[doc = "## Safety"]
68577#[doc = " * Neon intrinsic unsafe"]
68578#[inline(always)]
68579#[cfg(target_arch = "arm")]
68580#[target_feature(enable = "neon,v7")]
68581#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68582#[cfg_attr(test, assert_instr(vst4))]
68583pub unsafe fn vst4_s8(a: *mut i8, b: int8x8x4_t) {
68584 unsafe extern "unadjusted" {
68585 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8i8")]
68586 fn _vst4_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, size: i32);
68587 }
68588 _vst4_s8(a as _, b.0, b.1, b.2, b.3, 1)
68589}
68590#[doc = "Store multiple 4-element structures from four registers"]
68591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s8)"]
68592#[doc = "## Safety"]
68593#[doc = " * Neon intrinsic unsafe"]
68594#[inline(always)]
68595#[cfg(target_arch = "arm")]
68596#[target_feature(enable = "neon,v7")]
68597#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68598#[cfg_attr(test, assert_instr(vst4))]
68599pub unsafe fn vst4q_s8(a: *mut i8, b: int8x16x4_t) {
68600 unsafe extern "unadjusted" {
68601 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v16i8")]
68602 fn _vst4q_s8(
68603 ptr: *mut i8,
68604 a: int8x16_t,
68605 b: int8x16_t,
68606 c: int8x16_t,
68607 d: int8x16_t,
68608 size: i32,
68609 );
68610 }
68611 _vst4q_s8(a as _, b.0, b.1, b.2, b.3, 1)
68612}
68613#[doc = "Store multiple 4-element structures from four registers"]
68614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s16)"]
68615#[doc = "## Safety"]
68616#[doc = " * Neon intrinsic unsafe"]
68617#[inline(always)]
68618#[cfg(target_arch = "arm")]
68619#[target_feature(enable = "neon,v7")]
68620#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68621#[cfg_attr(test, assert_instr(vst4))]
68622pub unsafe fn vst4_s16(a: *mut i16, b: int16x4x4_t) {
68623 unsafe extern "unadjusted" {
68624 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4i16")]
68625 fn _vst4_s16(
68626 ptr: *mut i8,
68627 a: int16x4_t,
68628 b: int16x4_t,
68629 c: int16x4_t,
68630 d: int16x4_t,
68631 size: i32,
68632 );
68633 }
68634 _vst4_s16(a as _, b.0, b.1, b.2, b.3, 2)
68635}
68636#[doc = "Store multiple 4-element structures from four registers"]
68637#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s16)"]
68638#[doc = "## Safety"]
68639#[doc = " * Neon intrinsic unsafe"]
68640#[inline(always)]
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(vst4))]
68645pub unsafe fn vst4q_s16(a: *mut i16, b: int16x8x4_t) {
68646 unsafe extern "unadjusted" {
68647 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8i16")]
68648 fn _vst4q_s16(
68649 ptr: *mut i8,
68650 a: int16x8_t,
68651 b: int16x8_t,
68652 c: int16x8_t,
68653 d: int16x8_t,
68654 size: i32,
68655 );
68656 }
68657 _vst4q_s16(a as _, b.0, b.1, b.2, b.3, 2)
68658}
68659#[doc = "Store multiple 4-element structures from four registers"]
68660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s32)"]
68661#[doc = "## Safety"]
68662#[doc = " * Neon intrinsic unsafe"]
68663#[inline(always)]
68664#[cfg(target_arch = "arm")]
68665#[target_feature(enable = "neon,v7")]
68666#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68667#[cfg_attr(test, assert_instr(vst4))]
68668pub unsafe fn vst4_s32(a: *mut i32, b: int32x2x4_t) {
68669 unsafe extern "unadjusted" {
68670 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v2i32")]
68671 fn _vst4_s32(
68672 ptr: *mut i8,
68673 a: int32x2_t,
68674 b: int32x2_t,
68675 c: int32x2_t,
68676 d: int32x2_t,
68677 size: i32,
68678 );
68679 }
68680 _vst4_s32(a as _, b.0, b.1, b.2, b.3, 4)
68681}
68682#[doc = "Store multiple 4-element structures from four registers"]
68683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s32)"]
68684#[doc = "## Safety"]
68685#[doc = " * Neon intrinsic unsafe"]
68686#[inline(always)]
68687#[cfg(target_arch = "arm")]
68688#[target_feature(enable = "neon,v7")]
68689#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68690#[cfg_attr(test, assert_instr(vst4))]
68691pub unsafe fn vst4q_s32(a: *mut i32, b: int32x4x4_t) {
68692 unsafe extern "unadjusted" {
68693 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4i32")]
68694 fn _vst4q_s32(
68695 ptr: *mut i8,
68696 a: int32x4_t,
68697 b: int32x4_t,
68698 c: int32x4_t,
68699 d: int32x4_t,
68700 size: i32,
68701 );
68702 }
68703 _vst4q_s32(a as _, b.0, b.1, b.2, b.3, 4)
68704}
68705#[doc = "Store multiple 4-element structures from four registers"]
68706#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f32)"]
68707#[doc = "## Safety"]
68708#[doc = " * Neon intrinsic unsafe"]
68709#[inline(always)]
68710#[target_feature(enable = "neon")]
68711#[cfg(not(target_arch = "arm"))]
68712#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68713#[cfg_attr(test, assert_instr(st4))]
68714pub unsafe fn vst4_f32(a: *mut f32, b: float32x2x4_t) {
68715 unsafe extern "unadjusted" {
68716 #[cfg_attr(
68717 any(target_arch = "aarch64", target_arch = "arm64ec"),
68718 link_name = "llvm.aarch64.neon.st4.v2f32.p0"
68719 )]
68720 fn _vst4_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t, d: float32x2_t, ptr: *mut i8);
68721 }
68722 _vst4_f32(b.0, b.1, b.2, b.3, a as _)
68723}
68724#[doc = "Store multiple 4-element structures from four registers"]
68725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f32)"]
68726#[doc = "## Safety"]
68727#[doc = " * Neon intrinsic unsafe"]
68728#[inline(always)]
68729#[target_feature(enable = "neon")]
68730#[cfg(not(target_arch = "arm"))]
68731#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68732#[cfg_attr(test, assert_instr(st4))]
68733pub unsafe fn vst4q_f32(a: *mut f32, b: float32x4x4_t) {
68734 unsafe extern "unadjusted" {
68735 #[cfg_attr(
68736 any(target_arch = "aarch64", target_arch = "arm64ec"),
68737 link_name = "llvm.aarch64.neon.st4.v4f32.p0"
68738 )]
68739 fn _vst4q_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t, d: float32x4_t, ptr: *mut i8);
68740 }
68741 _vst4q_f32(b.0, b.1, b.2, b.3, a as _)
68742}
68743#[doc = "Store multiple 4-element structures from four registers"]
68744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s8)"]
68745#[doc = "## Safety"]
68746#[doc = " * Neon intrinsic unsafe"]
68747#[inline(always)]
68748#[target_feature(enable = "neon")]
68749#[cfg(not(target_arch = "arm"))]
68750#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68751#[cfg_attr(test, assert_instr(st4))]
68752pub unsafe fn vst4_s8(a: *mut i8, b: int8x8x4_t) {
68753 unsafe extern "unadjusted" {
68754 #[cfg_attr(
68755 any(target_arch = "aarch64", target_arch = "arm64ec"),
68756 link_name = "llvm.aarch64.neon.st4.v8i8.p0"
68757 )]
68758 fn _vst4_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, ptr: *mut i8);
68759 }
68760 _vst4_s8(b.0, b.1, b.2, b.3, a as _)
68761}
68762#[doc = "Store multiple 4-element structures from four registers"]
68763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s8)"]
68764#[doc = "## Safety"]
68765#[doc = " * Neon intrinsic unsafe"]
68766#[inline(always)]
68767#[target_feature(enable = "neon")]
68768#[cfg(not(target_arch = "arm"))]
68769#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68770#[cfg_attr(test, assert_instr(st4))]
68771pub unsafe fn vst4q_s8(a: *mut i8, b: int8x16x4_t) {
68772 unsafe extern "unadjusted" {
68773 #[cfg_attr(
68774 any(target_arch = "aarch64", target_arch = "arm64ec"),
68775 link_name = "llvm.aarch64.neon.st4.v16i8.p0"
68776 )]
68777 fn _vst4q_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t, ptr: *mut i8);
68778 }
68779 _vst4q_s8(b.0, b.1, b.2, b.3, a as _)
68780}
68781#[doc = "Store multiple 4-element structures from four registers"]
68782#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s16)"]
68783#[doc = "## Safety"]
68784#[doc = " * Neon intrinsic unsafe"]
68785#[inline(always)]
68786#[target_feature(enable = "neon")]
68787#[cfg(not(target_arch = "arm"))]
68788#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68789#[cfg_attr(test, assert_instr(st4))]
68790pub unsafe fn vst4_s16(a: *mut i16, b: int16x4x4_t) {
68791 unsafe extern "unadjusted" {
68792 #[cfg_attr(
68793 any(target_arch = "aarch64", target_arch = "arm64ec"),
68794 link_name = "llvm.aarch64.neon.st4.v4i16.p0"
68795 )]
68796 fn _vst4_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t, ptr: *mut i8);
68797 }
68798 _vst4_s16(b.0, b.1, b.2, b.3, a as _)
68799}
68800#[doc = "Store multiple 4-element structures from four registers"]
68801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s16)"]
68802#[doc = "## Safety"]
68803#[doc = " * Neon intrinsic unsafe"]
68804#[inline(always)]
68805#[target_feature(enable = "neon")]
68806#[cfg(not(target_arch = "arm"))]
68807#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68808#[cfg_attr(test, assert_instr(st4))]
68809pub unsafe fn vst4q_s16(a: *mut i16, b: int16x8x4_t) {
68810 unsafe extern "unadjusted" {
68811 #[cfg_attr(
68812 any(target_arch = "aarch64", target_arch = "arm64ec"),
68813 link_name = "llvm.aarch64.neon.st4.v8i16.p0"
68814 )]
68815 fn _vst4q_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t, ptr: *mut i8);
68816 }
68817 _vst4q_s16(b.0, b.1, b.2, b.3, a as _)
68818}
68819#[doc = "Store multiple 4-element structures from four registers"]
68820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s32)"]
68821#[doc = "## Safety"]
68822#[doc = " * Neon intrinsic unsafe"]
68823#[inline(always)]
68824#[target_feature(enable = "neon")]
68825#[cfg(not(target_arch = "arm"))]
68826#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68827#[cfg_attr(test, assert_instr(st4))]
68828pub unsafe fn vst4_s32(a: *mut i32, b: int32x2x4_t) {
68829 unsafe extern "unadjusted" {
68830 #[cfg_attr(
68831 any(target_arch = "aarch64", target_arch = "arm64ec"),
68832 link_name = "llvm.aarch64.neon.st4.v2i32.p0"
68833 )]
68834 fn _vst4_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t, ptr: *mut i8);
68835 }
68836 _vst4_s32(b.0, b.1, b.2, b.3, a as _)
68837}
68838#[doc = "Store multiple 4-element structures from four registers"]
68839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s32)"]
68840#[doc = "## Safety"]
68841#[doc = " * Neon intrinsic unsafe"]
68842#[inline(always)]
68843#[target_feature(enable = "neon")]
68844#[cfg(not(target_arch = "arm"))]
68845#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68846#[cfg_attr(test, assert_instr(st4))]
68847pub unsafe fn vst4q_s32(a: *mut i32, b: int32x4x4_t) {
68848 unsafe extern "unadjusted" {
68849 #[cfg_attr(
68850 any(target_arch = "aarch64", target_arch = "arm64ec"),
68851 link_name = "llvm.aarch64.neon.st4.v4i32.p0"
68852 )]
68853 fn _vst4q_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t, ptr: *mut i8);
68854 }
68855 _vst4q_s32(b.0, b.1, b.2, b.3, a as _)
68856}
68857#[doc = "Store multiple 4-element structures from four registers"]
68858#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f16)"]
68859#[doc = "## Safety"]
68860#[doc = " * Neon intrinsic unsafe"]
68861#[inline(always)]
68862#[target_feature(enable = "neon")]
68863#[cfg(target_arch = "arm")]
68864#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68865#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68866#[rustc_legacy_const_generics(2)]
68867#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68868#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68869#[cfg(not(target_arch = "arm64ec"))]
68870pub unsafe fn vst4_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x4_t) {
68871 static_assert_uimm_bits!(LANE, 2);
68872 unsafe extern "unadjusted" {
68873 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4f16")]
68874 fn _vst4_lane_f16(
68875 ptr: *mut i8,
68876 a: float16x4_t,
68877 b: float16x4_t,
68878 c: float16x4_t,
68879 d: float16x4_t,
68880 n: i32,
68881 size: i32,
68882 );
68883 }
68884 _vst4_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
68885}
68886#[doc = "Store multiple 4-element structures from four registers"]
68887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f16)"]
68888#[doc = "## Safety"]
68889#[doc = " * Neon intrinsic unsafe"]
68890#[inline(always)]
68891#[target_feature(enable = "neon")]
68892#[cfg(target_arch = "arm")]
68893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68894#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68895#[rustc_legacy_const_generics(2)]
68896#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68897#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68898#[cfg(not(target_arch = "arm64ec"))]
68899pub unsafe fn vst4q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x4_t) {
68900 static_assert_uimm_bits!(LANE, 3);
68901 unsafe extern "unadjusted" {
68902 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8f16")]
68903 fn _vst4q_lane_f16(
68904 ptr: *mut i8,
68905 a: float16x8_t,
68906 b: float16x8_t,
68907 c: float16x8_t,
68908 d: float16x8_t,
68909 n: i32,
68910 size: i32,
68911 );
68912 }
68913 _vst4q_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
68914}
68915#[doc = "Store multiple 4-element structures from four registers"]
68916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f16)"]
68917#[doc = "## Safety"]
68918#[doc = " * Neon intrinsic unsafe"]
68919#[inline(always)]
68920#[target_feature(enable = "neon")]
68921#[cfg(not(target_arch = "arm"))]
68922#[rustc_legacy_const_generics(2)]
68923#[cfg_attr(test, assert_instr(st4, LANE = 0))]
68924#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68925#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68926#[cfg(not(target_arch = "arm64ec"))]
68927pub unsafe fn vst4_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x4_t) {
68928 static_assert_uimm_bits!(LANE, 2);
68929 unsafe extern "unadjusted" {
68930 #[cfg_attr(
68931 any(target_arch = "aarch64", target_arch = "arm64ec"),
68932 link_name = "llvm.aarch64.neon.st4lane.v4f16.p0"
68933 )]
68934 fn _vst4_lane_f16(
68935 a: float16x4_t,
68936 b: float16x4_t,
68937 c: float16x4_t,
68938 d: float16x4_t,
68939 n: i64,
68940 ptr: *mut i8,
68941 );
68942 }
68943 _vst4_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
68944}
68945#[doc = "Store multiple 4-element structures from four registers"]
68946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f16)"]
68947#[doc = "## Safety"]
68948#[doc = " * Neon intrinsic unsafe"]
68949#[inline(always)]
68950#[target_feature(enable = "neon")]
68951#[cfg(not(target_arch = "arm"))]
68952#[rustc_legacy_const_generics(2)]
68953#[cfg_attr(test, assert_instr(st4, LANE = 0))]
68954#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68955#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68956#[cfg(not(target_arch = "arm64ec"))]
68957pub unsafe fn vst4q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x4_t) {
68958 static_assert_uimm_bits!(LANE, 3);
68959 unsafe extern "unadjusted" {
68960 #[cfg_attr(
68961 any(target_arch = "aarch64", target_arch = "arm64ec"),
68962 link_name = "llvm.aarch64.neon.st4lane.v8f16.p0"
68963 )]
68964 fn _vst4q_lane_f16(
68965 a: float16x8_t,
68966 b: float16x8_t,
68967 c: float16x8_t,
68968 d: float16x8_t,
68969 n: i64,
68970 ptr: *mut i8,
68971 );
68972 }
68973 _vst4q_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
68974}
68975#[doc = "Store multiple 4-element structures from four registers"]
68976#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f32)"]
68977#[doc = "## Safety"]
68978#[doc = " * Neon intrinsic unsafe"]
68979#[inline(always)]
68980#[cfg(target_arch = "arm")]
68981#[target_feature(enable = "neon,v7")]
68982#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68983#[rustc_legacy_const_generics(2)]
68984#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68985pub unsafe fn vst4_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x4_t) {
68986 static_assert_uimm_bits!(LANE, 1);
68987 unsafe extern "unadjusted" {
68988 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v2f32")]
68989 fn _vst4_lane_f32(
68990 ptr: *mut i8,
68991 a: float32x2_t,
68992 b: float32x2_t,
68993 c: float32x2_t,
68994 d: float32x2_t,
68995 n: i32,
68996 size: i32,
68997 );
68998 }
68999 _vst4_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
69000}
69001#[doc = "Store multiple 4-element structures from four registers"]
69002#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f32)"]
69003#[doc = "## Safety"]
69004#[doc = " * Neon intrinsic unsafe"]
69005#[inline(always)]
69006#[cfg(target_arch = "arm")]
69007#[target_feature(enable = "neon,v7")]
69008#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
69009#[rustc_legacy_const_generics(2)]
69010#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69011pub unsafe fn vst4q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x4_t) {
69012 static_assert_uimm_bits!(LANE, 2);
69013 unsafe extern "unadjusted" {
69014 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4f32")]
69015 fn _vst4q_lane_f32(
69016 ptr: *mut i8,
69017 a: float32x4_t,
69018 b: float32x4_t,
69019 c: float32x4_t,
69020 d: float32x4_t,
69021 n: i32,
69022 size: i32,
69023 );
69024 }
69025 _vst4q_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
69026}
69027#[doc = "Store multiple 4-element structures from four registers"]
69028#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s8)"]
69029#[doc = "## Safety"]
69030#[doc = " * Neon intrinsic unsafe"]
69031#[inline(always)]
69032#[cfg(target_arch = "arm")]
69033#[target_feature(enable = "neon,v7")]
69034#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
69035#[rustc_legacy_const_generics(2)]
69036#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69037pub unsafe fn vst4_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x4_t) {
69038 static_assert_uimm_bits!(LANE, 3);
69039 unsafe extern "unadjusted" {
69040 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8i8")]
69041 fn _vst4_lane_s8(
69042 ptr: *mut i8,
69043 a: int8x8_t,
69044 b: int8x8_t,
69045 c: int8x8_t,
69046 d: int8x8_t,
69047 n: i32,
69048 size: i32,
69049 );
69050 }
69051 _vst4_lane_s8(a as _, b.0, b.1, b.2, b.3, LANE, 1)
69052}
69053#[doc = "Store multiple 4-element structures from four registers"]
69054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s16)"]
69055#[doc = "## Safety"]
69056#[doc = " * Neon intrinsic unsafe"]
69057#[inline(always)]
69058#[cfg(target_arch = "arm")]
69059#[target_feature(enable = "neon,v7")]
69060#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
69061#[rustc_legacy_const_generics(2)]
69062#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69063pub unsafe fn vst4_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x4_t) {
69064 static_assert_uimm_bits!(LANE, 2);
69065 unsafe extern "unadjusted" {
69066 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4i16")]
69067 fn _vst4_lane_s16(
69068 ptr: *mut i8,
69069 a: int16x4_t,
69070 b: int16x4_t,
69071 c: int16x4_t,
69072 d: int16x4_t,
69073 n: i32,
69074 size: i32,
69075 );
69076 }
69077 _vst4_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
69078}
69079#[doc = "Store multiple 4-element structures from four registers"]
69080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s16)"]
69081#[doc = "## Safety"]
69082#[doc = " * Neon intrinsic unsafe"]
69083#[inline(always)]
69084#[cfg(target_arch = "arm")]
69085#[target_feature(enable = "neon,v7")]
69086#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
69087#[rustc_legacy_const_generics(2)]
69088#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69089pub unsafe fn vst4q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x4_t) {
69090 static_assert_uimm_bits!(LANE, 3);
69091 unsafe extern "unadjusted" {
69092 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8i16")]
69093 fn _vst4q_lane_s16(
69094 ptr: *mut i8,
69095 a: int16x8_t,
69096 b: int16x8_t,
69097 c: int16x8_t,
69098 d: int16x8_t,
69099 n: i32,
69100 size: i32,
69101 );
69102 }
69103 _vst4q_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
69104}
69105#[doc = "Store multiple 4-element structures from four registers"]
69106#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s32)"]
69107#[doc = "## Safety"]
69108#[doc = " * Neon intrinsic unsafe"]
69109#[inline(always)]
69110#[cfg(target_arch = "arm")]
69111#[target_feature(enable = "neon,v7")]
69112#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
69113#[rustc_legacy_const_generics(2)]
69114#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69115pub unsafe fn vst4_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x4_t) {
69116 static_assert_uimm_bits!(LANE, 1);
69117 unsafe extern "unadjusted" {
69118 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v2i32")]
69119 fn _vst4_lane_s32(
69120 ptr: *mut i8,
69121 a: int32x2_t,
69122 b: int32x2_t,
69123 c: int32x2_t,
69124 d: int32x2_t,
69125 n: i32,
69126 size: i32,
69127 );
69128 }
69129 _vst4_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
69130}
69131#[doc = "Store multiple 4-element structures from four registers"]
69132#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s32)"]
69133#[doc = "## Safety"]
69134#[doc = " * Neon intrinsic unsafe"]
69135#[inline(always)]
69136#[cfg(target_arch = "arm")]
69137#[target_feature(enable = "neon,v7")]
69138#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
69139#[rustc_legacy_const_generics(2)]
69140#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69141pub unsafe fn vst4q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x4_t) {
69142 static_assert_uimm_bits!(LANE, 2);
69143 unsafe extern "unadjusted" {
69144 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4i32")]
69145 fn _vst4q_lane_s32(
69146 ptr: *mut i8,
69147 a: int32x4_t,
69148 b: int32x4_t,
69149 c: int32x4_t,
69150 d: int32x4_t,
69151 n: i32,
69152 size: i32,
69153 );
69154 }
69155 _vst4q_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
69156}
69157#[doc = "Store multiple 4-element structures from four registers"]
69158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f32)"]
69159#[doc = "## Safety"]
69160#[doc = " * Neon intrinsic unsafe"]
69161#[inline(always)]
69162#[target_feature(enable = "neon")]
69163#[cfg(not(target_arch = "arm"))]
69164#[rustc_legacy_const_generics(2)]
69165#[cfg_attr(test, assert_instr(st4, LANE = 0))]
69166#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69167pub unsafe fn vst4_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x4_t) {
69168 static_assert_uimm_bits!(LANE, 1);
69169 unsafe extern "unadjusted" {
69170 #[cfg_attr(
69171 any(target_arch = "aarch64", target_arch = "arm64ec"),
69172 link_name = "llvm.aarch64.neon.st4lane.v2f32.p0"
69173 )]
69174 fn _vst4_lane_f32(
69175 a: float32x2_t,
69176 b: float32x2_t,
69177 c: float32x2_t,
69178 d: float32x2_t,
69179 n: i64,
69180 ptr: *mut i8,
69181 );
69182 }
69183 _vst4_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
69184}
69185#[doc = "Store multiple 4-element structures from four registers"]
69186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f32)"]
69187#[doc = "## Safety"]
69188#[doc = " * Neon intrinsic unsafe"]
69189#[inline(always)]
69190#[target_feature(enable = "neon")]
69191#[cfg(not(target_arch = "arm"))]
69192#[rustc_legacy_const_generics(2)]
69193#[cfg_attr(test, assert_instr(st4, LANE = 0))]
69194#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69195pub unsafe fn vst4q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x4_t) {
69196 static_assert_uimm_bits!(LANE, 2);
69197 unsafe extern "unadjusted" {
69198 #[cfg_attr(
69199 any(target_arch = "aarch64", target_arch = "arm64ec"),
69200 link_name = "llvm.aarch64.neon.st4lane.v4f32.p0"
69201 )]
69202 fn _vst4q_lane_f32(
69203 a: float32x4_t,
69204 b: float32x4_t,
69205 c: float32x4_t,
69206 d: float32x4_t,
69207 n: i64,
69208 ptr: *mut i8,
69209 );
69210 }
69211 _vst4q_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
69212}
69213#[doc = "Store multiple 4-element structures from four registers"]
69214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s8)"]
69215#[doc = "## Safety"]
69216#[doc = " * Neon intrinsic unsafe"]
69217#[inline(always)]
69218#[target_feature(enable = "neon")]
69219#[cfg(not(target_arch = "arm"))]
69220#[rustc_legacy_const_generics(2)]
69221#[cfg_attr(test, assert_instr(st4, LANE = 0))]
69222#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69223pub unsafe fn vst4_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x4_t) {
69224 static_assert_uimm_bits!(LANE, 3);
69225 unsafe extern "unadjusted" {
69226 #[cfg_attr(
69227 any(target_arch = "aarch64", target_arch = "arm64ec"),
69228 link_name = "llvm.aarch64.neon.st4lane.v8i8.p0"
69229 )]
69230 fn _vst4_lane_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, n: i64, ptr: *mut i8);
69231 }
69232 _vst4_lane_s8(b.0, b.1, b.2, b.3, LANE as i64, a as _)
69233}
69234#[doc = "Store multiple 4-element structures from four registers"]
69235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s16)"]
69236#[doc = "## Safety"]
69237#[doc = " * Neon intrinsic unsafe"]
69238#[inline(always)]
69239#[target_feature(enable = "neon")]
69240#[cfg(not(target_arch = "arm"))]
69241#[rustc_legacy_const_generics(2)]
69242#[cfg_attr(test, assert_instr(st4, LANE = 0))]
69243#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69244pub unsafe fn vst4_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x4_t) {
69245 static_assert_uimm_bits!(LANE, 2);
69246 unsafe extern "unadjusted" {
69247 #[cfg_attr(
69248 any(target_arch = "aarch64", target_arch = "arm64ec"),
69249 link_name = "llvm.aarch64.neon.st4lane.v4i16.p0"
69250 )]
69251 fn _vst4_lane_s16(
69252 a: int16x4_t,
69253 b: int16x4_t,
69254 c: int16x4_t,
69255 d: int16x4_t,
69256 n: i64,
69257 ptr: *mut i8,
69258 );
69259 }
69260 _vst4_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
69261}
69262#[doc = "Store multiple 4-element structures from four registers"]
69263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s16)"]
69264#[doc = "## Safety"]
69265#[doc = " * Neon intrinsic unsafe"]
69266#[inline(always)]
69267#[target_feature(enable = "neon")]
69268#[cfg(not(target_arch = "arm"))]
69269#[rustc_legacy_const_generics(2)]
69270#[cfg_attr(test, assert_instr(st4, LANE = 0))]
69271#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69272pub unsafe fn vst4q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x4_t) {
69273 static_assert_uimm_bits!(LANE, 3);
69274 unsafe extern "unadjusted" {
69275 #[cfg_attr(
69276 any(target_arch = "aarch64", target_arch = "arm64ec"),
69277 link_name = "llvm.aarch64.neon.st4lane.v8i16.p0"
69278 )]
69279 fn _vst4q_lane_s16(
69280 a: int16x8_t,
69281 b: int16x8_t,
69282 c: int16x8_t,
69283 d: int16x8_t,
69284 n: i64,
69285 ptr: *mut i8,
69286 );
69287 }
69288 _vst4q_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
69289}
69290#[doc = "Store multiple 4-element structures from four registers"]
69291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s32)"]
69292#[doc = "## Safety"]
69293#[doc = " * Neon intrinsic unsafe"]
69294#[inline(always)]
69295#[target_feature(enable = "neon")]
69296#[cfg(not(target_arch = "arm"))]
69297#[rustc_legacy_const_generics(2)]
69298#[cfg_attr(test, assert_instr(st4, LANE = 0))]
69299#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69300pub unsafe fn vst4_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x4_t) {
69301 static_assert_uimm_bits!(LANE, 1);
69302 unsafe extern "unadjusted" {
69303 #[cfg_attr(
69304 any(target_arch = "aarch64", target_arch = "arm64ec"),
69305 link_name = "llvm.aarch64.neon.st4lane.v2i32.p0"
69306 )]
69307 fn _vst4_lane_s32(
69308 a: int32x2_t,
69309 b: int32x2_t,
69310 c: int32x2_t,
69311 d: int32x2_t,
69312 n: i64,
69313 ptr: *mut i8,
69314 );
69315 }
69316 _vst4_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
69317}
69318#[doc = "Store multiple 4-element structures from four registers"]
69319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s32)"]
69320#[doc = "## Safety"]
69321#[doc = " * Neon intrinsic unsafe"]
69322#[inline(always)]
69323#[target_feature(enable = "neon")]
69324#[cfg(not(target_arch = "arm"))]
69325#[rustc_legacy_const_generics(2)]
69326#[cfg_attr(test, assert_instr(st4, LANE = 0))]
69327#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69328pub unsafe fn vst4q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x4_t) {
69329 static_assert_uimm_bits!(LANE, 2);
69330 unsafe extern "unadjusted" {
69331 #[cfg_attr(
69332 any(target_arch = "aarch64", target_arch = "arm64ec"),
69333 link_name = "llvm.aarch64.neon.st4lane.v4i32.p0"
69334 )]
69335 fn _vst4q_lane_s32(
69336 a: int32x4_t,
69337 b: int32x4_t,
69338 c: int32x4_t,
69339 d: int32x4_t,
69340 n: i64,
69341 ptr: *mut i8,
69342 );
69343 }
69344 _vst4q_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
69345}
69346#[doc = "Store multiple 4-element structures from four registers"]
69347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u8)"]
69348#[doc = "## Safety"]
69349#[doc = " * Neon intrinsic unsafe"]
69350#[inline(always)]
69351#[target_feature(enable = "neon")]
69352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69354#[cfg_attr(
69355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69356 assert_instr(st4, LANE = 0)
69357)]
69358#[rustc_legacy_const_generics(2)]
69359#[cfg_attr(
69360 not(target_arch = "arm"),
69361 stable(feature = "neon_intrinsics", since = "1.59.0")
69362)]
69363#[cfg_attr(
69364 target_arch = "arm",
69365 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69366)]
69367pub unsafe fn vst4_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x4_t) {
69368 static_assert_uimm_bits!(LANE, 3);
69369 vst4_lane_s8::<LANE>(transmute(a), transmute(b))
69370}
69371#[doc = "Store multiple 4-element structures from four registers"]
69372#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u16)"]
69373#[doc = "## Safety"]
69374#[doc = " * Neon intrinsic unsafe"]
69375#[inline(always)]
69376#[target_feature(enable = "neon")]
69377#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69378#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69379#[cfg_attr(
69380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69381 assert_instr(st4, LANE = 0)
69382)]
69383#[rustc_legacy_const_generics(2)]
69384#[cfg_attr(
69385 not(target_arch = "arm"),
69386 stable(feature = "neon_intrinsics", since = "1.59.0")
69387)]
69388#[cfg_attr(
69389 target_arch = "arm",
69390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69391)]
69392pub unsafe fn vst4_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x4_t) {
69393 static_assert_uimm_bits!(LANE, 2);
69394 vst4_lane_s16::<LANE>(transmute(a), transmute(b))
69395}
69396#[doc = "Store multiple 4-element structures from four registers"]
69397#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_u16)"]
69398#[doc = "## Safety"]
69399#[doc = " * Neon intrinsic unsafe"]
69400#[inline(always)]
69401#[target_feature(enable = "neon")]
69402#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69403#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69404#[cfg_attr(
69405 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69406 assert_instr(st4, LANE = 0)
69407)]
69408#[rustc_legacy_const_generics(2)]
69409#[cfg_attr(
69410 not(target_arch = "arm"),
69411 stable(feature = "neon_intrinsics", since = "1.59.0")
69412)]
69413#[cfg_attr(
69414 target_arch = "arm",
69415 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69416)]
69417pub unsafe fn vst4q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x4_t) {
69418 static_assert_uimm_bits!(LANE, 3);
69419 vst4q_lane_s16::<LANE>(transmute(a), transmute(b))
69420}
69421#[doc = "Store multiple 4-element structures from four registers"]
69422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u32)"]
69423#[doc = "## Safety"]
69424#[doc = " * Neon intrinsic unsafe"]
69425#[inline(always)]
69426#[target_feature(enable = "neon")]
69427#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69428#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69429#[cfg_attr(
69430 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69431 assert_instr(st4, LANE = 0)
69432)]
69433#[rustc_legacy_const_generics(2)]
69434#[cfg_attr(
69435 not(target_arch = "arm"),
69436 stable(feature = "neon_intrinsics", since = "1.59.0")
69437)]
69438#[cfg_attr(
69439 target_arch = "arm",
69440 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69441)]
69442pub unsafe fn vst4_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x4_t) {
69443 static_assert_uimm_bits!(LANE, 1);
69444 vst4_lane_s32::<LANE>(transmute(a), transmute(b))
69445}
69446#[doc = "Store multiple 4-element structures from four registers"]
69447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_u32)"]
69448#[doc = "## Safety"]
69449#[doc = " * Neon intrinsic unsafe"]
69450#[inline(always)]
69451#[target_feature(enable = "neon")]
69452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69453#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69454#[cfg_attr(
69455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69456 assert_instr(st4, LANE = 0)
69457)]
69458#[rustc_legacy_const_generics(2)]
69459#[cfg_attr(
69460 not(target_arch = "arm"),
69461 stable(feature = "neon_intrinsics", since = "1.59.0")
69462)]
69463#[cfg_attr(
69464 target_arch = "arm",
69465 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69466)]
69467pub unsafe fn vst4q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x4_t) {
69468 static_assert_uimm_bits!(LANE, 2);
69469 vst4q_lane_s32::<LANE>(transmute(a), transmute(b))
69470}
69471#[doc = "Store multiple 4-element structures from four registers"]
69472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_p8)"]
69473#[doc = "## Safety"]
69474#[doc = " * Neon intrinsic unsafe"]
69475#[inline(always)]
69476#[target_feature(enable = "neon")]
69477#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69478#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69479#[cfg_attr(
69480 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69481 assert_instr(st4, LANE = 0)
69482)]
69483#[rustc_legacy_const_generics(2)]
69484#[cfg_attr(
69485 not(target_arch = "arm"),
69486 stable(feature = "neon_intrinsics", since = "1.59.0")
69487)]
69488#[cfg_attr(
69489 target_arch = "arm",
69490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69491)]
69492pub unsafe fn vst4_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x4_t) {
69493 static_assert_uimm_bits!(LANE, 3);
69494 vst4_lane_s8::<LANE>(transmute(a), transmute(b))
69495}
69496#[doc = "Store multiple 4-element structures from four registers"]
69497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_p16)"]
69498#[doc = "## Safety"]
69499#[doc = " * Neon intrinsic unsafe"]
69500#[inline(always)]
69501#[target_feature(enable = "neon")]
69502#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69503#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69504#[cfg_attr(
69505 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69506 assert_instr(st4, LANE = 0)
69507)]
69508#[rustc_legacy_const_generics(2)]
69509#[cfg_attr(
69510 not(target_arch = "arm"),
69511 stable(feature = "neon_intrinsics", since = "1.59.0")
69512)]
69513#[cfg_attr(
69514 target_arch = "arm",
69515 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69516)]
69517pub unsafe fn vst4_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x4_t) {
69518 static_assert_uimm_bits!(LANE, 2);
69519 vst4_lane_s16::<LANE>(transmute(a), transmute(b))
69520}
69521#[doc = "Store multiple 4-element structures from four registers"]
69522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_p16)"]
69523#[doc = "## Safety"]
69524#[doc = " * Neon intrinsic unsafe"]
69525#[inline(always)]
69526#[target_feature(enable = "neon")]
69527#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69528#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69529#[cfg_attr(
69530 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69531 assert_instr(st4, LANE = 0)
69532)]
69533#[rustc_legacy_const_generics(2)]
69534#[cfg_attr(
69535 not(target_arch = "arm"),
69536 stable(feature = "neon_intrinsics", since = "1.59.0")
69537)]
69538#[cfg_attr(
69539 target_arch = "arm",
69540 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69541)]
69542pub unsafe fn vst4q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x4_t) {
69543 static_assert_uimm_bits!(LANE, 3);
69544 vst4q_lane_s16::<LANE>(transmute(a), transmute(b))
69545}
69546#[doc = "Store multiple 4-element structures from four registers"]
69547#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p64)"]
69548#[doc = "## Safety"]
69549#[doc = " * Neon intrinsic unsafe"]
69550#[inline(always)]
69551#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
69552#[target_feature(enable = "neon,aes")]
69553#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
69554#[cfg_attr(
69555 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69556 assert_instr(nop)
69557)]
69558#[cfg_attr(
69559 not(target_arch = "arm"),
69560 stable(feature = "neon_intrinsics", since = "1.59.0")
69561)]
69562#[cfg_attr(
69563 target_arch = "arm",
69564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69565)]
69566pub unsafe fn vst4_p64(a: *mut p64, b: poly64x1x4_t) {
69567 vst4_s64(transmute(a), transmute(b))
69568}
69569#[doc = "Store multiple 4-element structures from four registers"]
69570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s64)"]
69571#[doc = "## Safety"]
69572#[doc = " * Neon intrinsic unsafe"]
69573#[inline(always)]
69574#[cfg(target_arch = "arm")]
69575#[target_feature(enable = "neon,v7")]
69576#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69577#[cfg_attr(test, assert_instr(nop))]
69578pub unsafe fn vst4_s64(a: *mut i64, b: int64x1x4_t) {
69579 unsafe extern "unadjusted" {
69580 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v1i64")]
69581 fn _vst4_s64(
69582 ptr: *mut i8,
69583 a: int64x1_t,
69584 b: int64x1_t,
69585 c: int64x1_t,
69586 d: int64x1_t,
69587 size: i32,
69588 );
69589 }
69590 _vst4_s64(a as _, b.0, b.1, b.2, b.3, 8)
69591}
69592#[doc = "Store multiple 4-element structures from four registers"]
69593#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s64)"]
69594#[doc = "## Safety"]
69595#[doc = " * Neon intrinsic unsafe"]
69596#[inline(always)]
69597#[target_feature(enable = "neon")]
69598#[cfg(not(target_arch = "arm"))]
69599#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69600#[cfg_attr(test, assert_instr(nop))]
69601pub unsafe fn vst4_s64(a: *mut i64, b: int64x1x4_t) {
69602 unsafe extern "unadjusted" {
69603 #[cfg_attr(
69604 any(target_arch = "aarch64", target_arch = "arm64ec"),
69605 link_name = "llvm.aarch64.neon.st4.v1i64.p0"
69606 )]
69607 fn _vst4_s64(a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t, ptr: *mut i8);
69608 }
69609 _vst4_s64(b.0, b.1, b.2, b.3, a as _)
69610}
69611#[doc = "Store multiple 4-element structures from four registers"]
69612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u64)"]
69613#[doc = "## Safety"]
69614#[doc = " * Neon intrinsic unsafe"]
69615#[inline(always)]
69616#[target_feature(enable = "neon")]
69617#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69618#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
69619#[cfg_attr(
69620 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69621 assert_instr(nop)
69622)]
69623#[cfg_attr(
69624 not(target_arch = "arm"),
69625 stable(feature = "neon_intrinsics", since = "1.59.0")
69626)]
69627#[cfg_attr(
69628 target_arch = "arm",
69629 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69630)]
69631pub unsafe fn vst4_u64(a: *mut u64, b: uint64x1x4_t) {
69632 vst4_s64(transmute(a), transmute(b))
69633}
69634#[doc = "Store multiple 4-element structures from four registers"]
69635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u8)"]
69636#[doc = "## Safety"]
69637#[doc = " * Neon intrinsic unsafe"]
69638#[inline(always)]
69639#[target_feature(enable = "neon")]
69640#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69641#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69642#[cfg_attr(
69643 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69644 assert_instr(st4)
69645)]
69646#[cfg_attr(
69647 not(target_arch = "arm"),
69648 stable(feature = "neon_intrinsics", since = "1.59.0")
69649)]
69650#[cfg_attr(
69651 target_arch = "arm",
69652 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69653)]
69654pub unsafe fn vst4_u8(a: *mut u8, b: uint8x8x4_t) {
69655 vst4_s8(transmute(a), transmute(b))
69656}
69657#[doc = "Store multiple 4-element structures from four registers"]
69658#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u8)"]
69659#[doc = "## Safety"]
69660#[doc = " * Neon intrinsic unsafe"]
69661#[inline(always)]
69662#[target_feature(enable = "neon")]
69663#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69664#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69665#[cfg_attr(
69666 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69667 assert_instr(st4)
69668)]
69669#[cfg_attr(
69670 not(target_arch = "arm"),
69671 stable(feature = "neon_intrinsics", since = "1.59.0")
69672)]
69673#[cfg_attr(
69674 target_arch = "arm",
69675 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69676)]
69677pub unsafe fn vst4q_u8(a: *mut u8, b: uint8x16x4_t) {
69678 vst4q_s8(transmute(a), transmute(b))
69679}
69680#[doc = "Store multiple 4-element structures from four registers"]
69681#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u16)"]
69682#[doc = "## Safety"]
69683#[doc = " * Neon intrinsic unsafe"]
69684#[inline(always)]
69685#[target_feature(enable = "neon")]
69686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69687#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69688#[cfg_attr(
69689 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69690 assert_instr(st4)
69691)]
69692#[cfg_attr(
69693 not(target_arch = "arm"),
69694 stable(feature = "neon_intrinsics", since = "1.59.0")
69695)]
69696#[cfg_attr(
69697 target_arch = "arm",
69698 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69699)]
69700pub unsafe fn vst4_u16(a: *mut u16, b: uint16x4x4_t) {
69701 vst4_s16(transmute(a), transmute(b))
69702}
69703#[doc = "Store multiple 4-element structures from four registers"]
69704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u16)"]
69705#[doc = "## Safety"]
69706#[doc = " * Neon intrinsic unsafe"]
69707#[inline(always)]
69708#[target_feature(enable = "neon")]
69709#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69710#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69711#[cfg_attr(
69712 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69713 assert_instr(st4)
69714)]
69715#[cfg_attr(
69716 not(target_arch = "arm"),
69717 stable(feature = "neon_intrinsics", since = "1.59.0")
69718)]
69719#[cfg_attr(
69720 target_arch = "arm",
69721 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69722)]
69723pub unsafe fn vst4q_u16(a: *mut u16, b: uint16x8x4_t) {
69724 vst4q_s16(transmute(a), transmute(b))
69725}
69726#[doc = "Store multiple 4-element structures from four registers"]
69727#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u32)"]
69728#[doc = "## Safety"]
69729#[doc = " * Neon intrinsic unsafe"]
69730#[inline(always)]
69731#[target_feature(enable = "neon")]
69732#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69733#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69734#[cfg_attr(
69735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69736 assert_instr(st4)
69737)]
69738#[cfg_attr(
69739 not(target_arch = "arm"),
69740 stable(feature = "neon_intrinsics", since = "1.59.0")
69741)]
69742#[cfg_attr(
69743 target_arch = "arm",
69744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69745)]
69746pub unsafe fn vst4_u32(a: *mut u32, b: uint32x2x4_t) {
69747 vst4_s32(transmute(a), transmute(b))
69748}
69749#[doc = "Store multiple 4-element structures from four registers"]
69750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u32)"]
69751#[doc = "## Safety"]
69752#[doc = " * Neon intrinsic unsafe"]
69753#[inline(always)]
69754#[target_feature(enable = "neon")]
69755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69756#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69757#[cfg_attr(
69758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69759 assert_instr(st4)
69760)]
69761#[cfg_attr(
69762 not(target_arch = "arm"),
69763 stable(feature = "neon_intrinsics", since = "1.59.0")
69764)]
69765#[cfg_attr(
69766 target_arch = "arm",
69767 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69768)]
69769pub unsafe fn vst4q_u32(a: *mut u32, b: uint32x4x4_t) {
69770 vst4q_s32(transmute(a), transmute(b))
69771}
69772#[doc = "Store multiple 4-element structures from four registers"]
69773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p8)"]
69774#[doc = "## Safety"]
69775#[doc = " * Neon intrinsic unsafe"]
69776#[inline(always)]
69777#[target_feature(enable = "neon")]
69778#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69779#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69780#[cfg_attr(
69781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69782 assert_instr(st4)
69783)]
69784#[cfg_attr(
69785 not(target_arch = "arm"),
69786 stable(feature = "neon_intrinsics", since = "1.59.0")
69787)]
69788#[cfg_attr(
69789 target_arch = "arm",
69790 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69791)]
69792pub unsafe fn vst4_p8(a: *mut p8, b: poly8x8x4_t) {
69793 vst4_s8(transmute(a), transmute(b))
69794}
69795#[doc = "Store multiple 4-element structures from four registers"]
69796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_p8)"]
69797#[doc = "## Safety"]
69798#[doc = " * Neon intrinsic unsafe"]
69799#[inline(always)]
69800#[target_feature(enable = "neon")]
69801#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69802#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69803#[cfg_attr(
69804 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69805 assert_instr(st4)
69806)]
69807#[cfg_attr(
69808 not(target_arch = "arm"),
69809 stable(feature = "neon_intrinsics", since = "1.59.0")
69810)]
69811#[cfg_attr(
69812 target_arch = "arm",
69813 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69814)]
69815pub unsafe fn vst4q_p8(a: *mut p8, b: poly8x16x4_t) {
69816 vst4q_s8(transmute(a), transmute(b))
69817}
69818#[doc = "Store multiple 4-element structures from four registers"]
69819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p16)"]
69820#[doc = "## Safety"]
69821#[doc = " * Neon intrinsic unsafe"]
69822#[inline(always)]
69823#[target_feature(enable = "neon")]
69824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69825#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69826#[cfg_attr(
69827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69828 assert_instr(st4)
69829)]
69830#[cfg_attr(
69831 not(target_arch = "arm"),
69832 stable(feature = "neon_intrinsics", since = "1.59.0")
69833)]
69834#[cfg_attr(
69835 target_arch = "arm",
69836 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69837)]
69838pub unsafe fn vst4_p16(a: *mut p16, b: poly16x4x4_t) {
69839 vst4_s16(transmute(a), transmute(b))
69840}
69841#[doc = "Store multiple 4-element structures from four registers"]
69842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_p16)"]
69843#[doc = "## Safety"]
69844#[doc = " * Neon intrinsic unsafe"]
69845#[inline(always)]
69846#[target_feature(enable = "neon")]
69847#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69848#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69849#[cfg_attr(
69850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69851 assert_instr(st4)
69852)]
69853#[cfg_attr(
69854 not(target_arch = "arm"),
69855 stable(feature = "neon_intrinsics", since = "1.59.0")
69856)]
69857#[cfg_attr(
69858 target_arch = "arm",
69859 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69860)]
69861pub unsafe fn vst4q_p16(a: *mut p16, b: poly16x8x4_t) {
69862 vst4q_s16(transmute(a), transmute(b))
69863}
69864#[doc = "Store SIMD&FP register (immediate offset)"]
69865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vstrq_p128)"]
69866#[doc = "## Safety"]
69867#[doc = " * Neon intrinsic unsafe"]
69868#[inline(always)]
69869#[target_feature(enable = "neon")]
69870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69871#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
69872#[cfg_attr(
69873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69874 assert_instr(nop)
69875)]
69876#[cfg_attr(
69877 not(target_arch = "arm"),
69878 stable(feature = "neon_intrinsics", since = "1.59.0")
69879)]
69880#[cfg_attr(
69881 target_arch = "arm",
69882 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69883)]
69884pub unsafe fn vstrq_p128(a: *mut p128, b: p128) {
69885 *a = b
69886}
69887#[doc = "Subtract"]
69888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_f16)"]
69889#[inline(always)]
69890#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
69891#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f16"))]
69892#[cfg_attr(
69893 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69894 assert_instr(fsub)
69895)]
69896#[target_feature(enable = "neon,fp16")]
69897#[cfg_attr(
69898 not(target_arch = "arm"),
69899 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
69900)]
69901#[cfg_attr(
69902 target_arch = "arm",
69903 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69904)]
69905#[cfg(not(target_arch = "arm64ec"))]
69906pub fn vsub_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
69907 unsafe { simd_sub(a, b) }
69908}
69909#[doc = "Subtract"]
69910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_f16)"]
69911#[inline(always)]
69912#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
69913#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f16"))]
69914#[cfg_attr(
69915 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69916 assert_instr(fsub)
69917)]
69918#[target_feature(enable = "neon,fp16")]
69919#[cfg_attr(
69920 not(target_arch = "arm"),
69921 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
69922)]
69923#[cfg_attr(
69924 target_arch = "arm",
69925 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69926)]
69927#[cfg(not(target_arch = "arm64ec"))]
69928pub fn vsubq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
69929 unsafe { simd_sub(a, b) }
69930}
69931#[doc = "Subtract"]
69932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_f32)"]
69933#[inline(always)]
69934#[target_feature(enable = "neon")]
69935#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69936#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f32"))]
69937#[cfg_attr(
69938 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69939 assert_instr(fsub)
69940)]
69941#[cfg_attr(
69942 not(target_arch = "arm"),
69943 stable(feature = "neon_intrinsics", since = "1.59.0")
69944)]
69945#[cfg_attr(
69946 target_arch = "arm",
69947 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69948)]
69949pub fn vsub_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
69950 unsafe { simd_sub(a, b) }
69951}
69952#[doc = "Subtract"]
69953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_f32)"]
69954#[inline(always)]
69955#[target_feature(enable = "neon")]
69956#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69957#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f32"))]
69958#[cfg_attr(
69959 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69960 assert_instr(fsub)
69961)]
69962#[cfg_attr(
69963 not(target_arch = "arm"),
69964 stable(feature = "neon_intrinsics", since = "1.59.0")
69965)]
69966#[cfg_attr(
69967 target_arch = "arm",
69968 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69969)]
69970pub fn vsubq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
69971 unsafe { simd_sub(a, b) }
69972}
69973#[doc = "Subtract"]
69974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s16)"]
69975#[inline(always)]
69976#[target_feature(enable = "neon")]
69977#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69978#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
69979#[cfg_attr(
69980 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69981 assert_instr(sub)
69982)]
69983#[cfg_attr(
69984 not(target_arch = "arm"),
69985 stable(feature = "neon_intrinsics", since = "1.59.0")
69986)]
69987#[cfg_attr(
69988 target_arch = "arm",
69989 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69990)]
69991pub fn vsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
69992 unsafe { simd_sub(a, b) }
69993}
69994#[doc = "Subtract"]
69995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s16)"]
69996#[inline(always)]
69997#[target_feature(enable = "neon")]
69998#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69999#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
70000#[cfg_attr(
70001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70002 assert_instr(sub)
70003)]
70004#[cfg_attr(
70005 not(target_arch = "arm"),
70006 stable(feature = "neon_intrinsics", since = "1.59.0")
70007)]
70008#[cfg_attr(
70009 target_arch = "arm",
70010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70011)]
70012pub fn vsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
70013 unsafe { simd_sub(a, b) }
70014}
70015#[doc = "Subtract"]
70016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u16)"]
70017#[inline(always)]
70018#[target_feature(enable = "neon")]
70019#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70020#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
70021#[cfg_attr(
70022 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70023 assert_instr(sub)
70024)]
70025#[cfg_attr(
70026 not(target_arch = "arm"),
70027 stable(feature = "neon_intrinsics", since = "1.59.0")
70028)]
70029#[cfg_attr(
70030 target_arch = "arm",
70031 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70032)]
70033pub fn vsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
70034 unsafe { simd_sub(a, b) }
70035}
70036#[doc = "Subtract"]
70037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u16)"]
70038#[inline(always)]
70039#[target_feature(enable = "neon")]
70040#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70041#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
70042#[cfg_attr(
70043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70044 assert_instr(sub)
70045)]
70046#[cfg_attr(
70047 not(target_arch = "arm"),
70048 stable(feature = "neon_intrinsics", since = "1.59.0")
70049)]
70050#[cfg_attr(
70051 target_arch = "arm",
70052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70053)]
70054pub fn vsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
70055 unsafe { simd_sub(a, b) }
70056}
70057#[doc = "Subtract"]
70058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s32)"]
70059#[inline(always)]
70060#[target_feature(enable = "neon")]
70061#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70062#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
70063#[cfg_attr(
70064 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70065 assert_instr(sub)
70066)]
70067#[cfg_attr(
70068 not(target_arch = "arm"),
70069 stable(feature = "neon_intrinsics", since = "1.59.0")
70070)]
70071#[cfg_attr(
70072 target_arch = "arm",
70073 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70074)]
70075pub fn vsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
70076 unsafe { simd_sub(a, b) }
70077}
70078#[doc = "Subtract"]
70079#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s32)"]
70080#[inline(always)]
70081#[target_feature(enable = "neon")]
70082#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70083#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
70084#[cfg_attr(
70085 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70086 assert_instr(sub)
70087)]
70088#[cfg_attr(
70089 not(target_arch = "arm"),
70090 stable(feature = "neon_intrinsics", since = "1.59.0")
70091)]
70092#[cfg_attr(
70093 target_arch = "arm",
70094 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70095)]
70096pub fn vsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
70097 unsafe { simd_sub(a, b) }
70098}
70099#[doc = "Subtract"]
70100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u32)"]
70101#[inline(always)]
70102#[target_feature(enable = "neon")]
70103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70104#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
70105#[cfg_attr(
70106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70107 assert_instr(sub)
70108)]
70109#[cfg_attr(
70110 not(target_arch = "arm"),
70111 stable(feature = "neon_intrinsics", since = "1.59.0")
70112)]
70113#[cfg_attr(
70114 target_arch = "arm",
70115 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70116)]
70117pub fn vsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
70118 unsafe { simd_sub(a, b) }
70119}
70120#[doc = "Subtract"]
70121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u32)"]
70122#[inline(always)]
70123#[target_feature(enable = "neon")]
70124#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70125#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
70126#[cfg_attr(
70127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70128 assert_instr(sub)
70129)]
70130#[cfg_attr(
70131 not(target_arch = "arm"),
70132 stable(feature = "neon_intrinsics", since = "1.59.0")
70133)]
70134#[cfg_attr(
70135 target_arch = "arm",
70136 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70137)]
70138pub fn vsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
70139 unsafe { simd_sub(a, b) }
70140}
70141#[doc = "Subtract"]
70142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s64)"]
70143#[inline(always)]
70144#[target_feature(enable = "neon")]
70145#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70146#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
70147#[cfg_attr(
70148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70149 assert_instr(sub)
70150)]
70151#[cfg_attr(
70152 not(target_arch = "arm"),
70153 stable(feature = "neon_intrinsics", since = "1.59.0")
70154)]
70155#[cfg_attr(
70156 target_arch = "arm",
70157 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70158)]
70159pub fn vsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
70160 unsafe { simd_sub(a, b) }
70161}
70162#[doc = "Subtract"]
70163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s64)"]
70164#[inline(always)]
70165#[target_feature(enable = "neon")]
70166#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70167#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
70168#[cfg_attr(
70169 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70170 assert_instr(sub)
70171)]
70172#[cfg_attr(
70173 not(target_arch = "arm"),
70174 stable(feature = "neon_intrinsics", since = "1.59.0")
70175)]
70176#[cfg_attr(
70177 target_arch = "arm",
70178 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70179)]
70180pub fn vsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
70181 unsafe { simd_sub(a, b) }
70182}
70183#[doc = "Subtract"]
70184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u64)"]
70185#[inline(always)]
70186#[target_feature(enable = "neon")]
70187#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70188#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
70189#[cfg_attr(
70190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70191 assert_instr(sub)
70192)]
70193#[cfg_attr(
70194 not(target_arch = "arm"),
70195 stable(feature = "neon_intrinsics", since = "1.59.0")
70196)]
70197#[cfg_attr(
70198 target_arch = "arm",
70199 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70200)]
70201pub fn vsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
70202 unsafe { simd_sub(a, b) }
70203}
70204#[doc = "Subtract"]
70205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u64)"]
70206#[inline(always)]
70207#[target_feature(enable = "neon")]
70208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70209#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
70210#[cfg_attr(
70211 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70212 assert_instr(sub)
70213)]
70214#[cfg_attr(
70215 not(target_arch = "arm"),
70216 stable(feature = "neon_intrinsics", since = "1.59.0")
70217)]
70218#[cfg_attr(
70219 target_arch = "arm",
70220 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70221)]
70222pub fn vsubq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
70223 unsafe { simd_sub(a, b) }
70224}
70225#[doc = "Subtract"]
70226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s8)"]
70227#[inline(always)]
70228#[target_feature(enable = "neon")]
70229#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70230#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
70231#[cfg_attr(
70232 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70233 assert_instr(sub)
70234)]
70235#[cfg_attr(
70236 not(target_arch = "arm"),
70237 stable(feature = "neon_intrinsics", since = "1.59.0")
70238)]
70239#[cfg_attr(
70240 target_arch = "arm",
70241 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70242)]
70243pub fn vsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
70244 unsafe { simd_sub(a, b) }
70245}
70246#[doc = "Subtract"]
70247#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s8)"]
70248#[inline(always)]
70249#[target_feature(enable = "neon")]
70250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70251#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
70252#[cfg_attr(
70253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70254 assert_instr(sub)
70255)]
70256#[cfg_attr(
70257 not(target_arch = "arm"),
70258 stable(feature = "neon_intrinsics", since = "1.59.0")
70259)]
70260#[cfg_attr(
70261 target_arch = "arm",
70262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70263)]
70264pub fn vsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
70265 unsafe { simd_sub(a, b) }
70266}
70267#[doc = "Subtract"]
70268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u8)"]
70269#[inline(always)]
70270#[target_feature(enable = "neon")]
70271#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70272#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
70273#[cfg_attr(
70274 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70275 assert_instr(sub)
70276)]
70277#[cfg_attr(
70278 not(target_arch = "arm"),
70279 stable(feature = "neon_intrinsics", since = "1.59.0")
70280)]
70281#[cfg_attr(
70282 target_arch = "arm",
70283 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70284)]
70285pub fn vsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
70286 unsafe { simd_sub(a, b) }
70287}
70288#[doc = "Subtract"]
70289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u8)"]
70290#[inline(always)]
70291#[target_feature(enable = "neon")]
70292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70293#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
70294#[cfg_attr(
70295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70296 assert_instr(sub)
70297)]
70298#[cfg_attr(
70299 not(target_arch = "arm"),
70300 stable(feature = "neon_intrinsics", since = "1.59.0")
70301)]
70302#[cfg_attr(
70303 target_arch = "arm",
70304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70305)]
70306pub fn vsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
70307 unsafe { simd_sub(a, b) }
70308}
70309#[doc = "Subtract returning high narrow"]
70310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s16)"]
70311#[inline(always)]
70312#[target_feature(enable = "neon")]
70313#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70314#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70315#[cfg_attr(
70316 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70317 assert_instr(subhn2)
70318)]
70319#[cfg_attr(
70320 not(target_arch = "arm"),
70321 stable(feature = "neon_intrinsics", since = "1.59.0")
70322)]
70323#[cfg_attr(
70324 target_arch = "arm",
70325 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70326)]
70327pub fn vsubhn_high_s16(a: int8x8_t, b: int16x8_t, c: int16x8_t) -> int8x16_t {
70328 let d: int8x8_t = vsubhn_s16(b, c);
70329 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
70330}
70331#[doc = "Subtract returning high narrow"]
70332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s32)"]
70333#[inline(always)]
70334#[target_feature(enable = "neon")]
70335#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70336#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70337#[cfg_attr(
70338 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70339 assert_instr(subhn2)
70340)]
70341#[cfg_attr(
70342 not(target_arch = "arm"),
70343 stable(feature = "neon_intrinsics", since = "1.59.0")
70344)]
70345#[cfg_attr(
70346 target_arch = "arm",
70347 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70348)]
70349pub fn vsubhn_high_s32(a: int16x4_t, b: int32x4_t, c: int32x4_t) -> int16x8_t {
70350 let d: int16x4_t = vsubhn_s32(b, c);
70351 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7]) }
70352}
70353#[doc = "Subtract returning high narrow"]
70354#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s64)"]
70355#[inline(always)]
70356#[target_feature(enable = "neon")]
70357#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70358#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70359#[cfg_attr(
70360 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70361 assert_instr(subhn2)
70362)]
70363#[cfg_attr(
70364 not(target_arch = "arm"),
70365 stable(feature = "neon_intrinsics", since = "1.59.0")
70366)]
70367#[cfg_attr(
70368 target_arch = "arm",
70369 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70370)]
70371pub fn vsubhn_high_s64(a: int32x2_t, b: int64x2_t, c: int64x2_t) -> int32x4_t {
70372 let d: int32x2_t = vsubhn_s64(b, c);
70373 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3]) }
70374}
70375#[doc = "Subtract returning high narrow"]
70376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u16)"]
70377#[inline(always)]
70378#[target_feature(enable = "neon")]
70379#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70380#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70381#[cfg_attr(
70382 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70383 assert_instr(subhn2)
70384)]
70385#[cfg_attr(
70386 not(target_arch = "arm"),
70387 stable(feature = "neon_intrinsics", since = "1.59.0")
70388)]
70389#[cfg_attr(
70390 target_arch = "arm",
70391 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70392)]
70393pub fn vsubhn_high_u16(a: uint8x8_t, b: uint16x8_t, c: uint16x8_t) -> uint8x16_t {
70394 let d: uint8x8_t = vsubhn_u16(b, c);
70395 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
70396}
70397#[doc = "Subtract returning high narrow"]
70398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u32)"]
70399#[inline(always)]
70400#[target_feature(enable = "neon")]
70401#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70402#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70403#[cfg_attr(
70404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70405 assert_instr(subhn2)
70406)]
70407#[cfg_attr(
70408 not(target_arch = "arm"),
70409 stable(feature = "neon_intrinsics", since = "1.59.0")
70410)]
70411#[cfg_attr(
70412 target_arch = "arm",
70413 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70414)]
70415pub fn vsubhn_high_u32(a: uint16x4_t, b: uint32x4_t, c: uint32x4_t) -> uint16x8_t {
70416 let d: uint16x4_t = vsubhn_u32(b, c);
70417 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7]) }
70418}
70419#[doc = "Subtract returning high narrow"]
70420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u64)"]
70421#[inline(always)]
70422#[target_feature(enable = "neon")]
70423#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70424#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70425#[cfg_attr(
70426 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70427 assert_instr(subhn2)
70428)]
70429#[cfg_attr(
70430 not(target_arch = "arm"),
70431 stable(feature = "neon_intrinsics", since = "1.59.0")
70432)]
70433#[cfg_attr(
70434 target_arch = "arm",
70435 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70436)]
70437pub fn vsubhn_high_u64(a: uint32x2_t, b: uint64x2_t, c: uint64x2_t) -> uint32x4_t {
70438 let d: uint32x2_t = vsubhn_u64(b, c);
70439 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3]) }
70440}
70441#[doc = "Subtract returning high narrow"]
70442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s16)"]
70443#[inline(always)]
70444#[target_feature(enable = "neon")]
70445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70446#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70447#[cfg_attr(
70448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70449 assert_instr(subhn)
70450)]
70451#[cfg_attr(
70452 not(target_arch = "arm"),
70453 stable(feature = "neon_intrinsics", since = "1.59.0")
70454)]
70455#[cfg_attr(
70456 target_arch = "arm",
70457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70458)]
70459pub fn vsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
70460 let c: i16x8 = i16x8::new(8, 8, 8, 8, 8, 8, 8, 8);
70461 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70462}
70463#[doc = "Subtract returning high narrow"]
70464#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s32)"]
70465#[inline(always)]
70466#[target_feature(enable = "neon")]
70467#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70468#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70469#[cfg_attr(
70470 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70471 assert_instr(subhn)
70472)]
70473#[cfg_attr(
70474 not(target_arch = "arm"),
70475 stable(feature = "neon_intrinsics", since = "1.59.0")
70476)]
70477#[cfg_attr(
70478 target_arch = "arm",
70479 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70480)]
70481pub fn vsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
70482 let c: i32x4 = i32x4::new(16, 16, 16, 16);
70483 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70484}
70485#[doc = "Subtract returning high narrow"]
70486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s64)"]
70487#[inline(always)]
70488#[target_feature(enable = "neon")]
70489#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70490#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70491#[cfg_attr(
70492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70493 assert_instr(subhn)
70494)]
70495#[cfg_attr(
70496 not(target_arch = "arm"),
70497 stable(feature = "neon_intrinsics", since = "1.59.0")
70498)]
70499#[cfg_attr(
70500 target_arch = "arm",
70501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70502)]
70503pub fn vsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
70504 let c: i64x2 = i64x2::new(32, 32);
70505 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70506}
70507#[doc = "Subtract returning high narrow"]
70508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u16)"]
70509#[inline(always)]
70510#[target_feature(enable = "neon")]
70511#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70512#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70513#[cfg_attr(
70514 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70515 assert_instr(subhn)
70516)]
70517#[cfg_attr(
70518 not(target_arch = "arm"),
70519 stable(feature = "neon_intrinsics", since = "1.59.0")
70520)]
70521#[cfg_attr(
70522 target_arch = "arm",
70523 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70524)]
70525pub fn vsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
70526 let c: u16x8 = u16x8::new(8, 8, 8, 8, 8, 8, 8, 8);
70527 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70528}
70529#[doc = "Subtract returning high narrow"]
70530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u32)"]
70531#[inline(always)]
70532#[target_feature(enable = "neon")]
70533#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70534#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70535#[cfg_attr(
70536 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70537 assert_instr(subhn)
70538)]
70539#[cfg_attr(
70540 not(target_arch = "arm"),
70541 stable(feature = "neon_intrinsics", since = "1.59.0")
70542)]
70543#[cfg_attr(
70544 target_arch = "arm",
70545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70546)]
70547pub fn vsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
70548 let c: u32x4 = u32x4::new(16, 16, 16, 16);
70549 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70550}
70551#[doc = "Subtract returning high narrow"]
70552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u64)"]
70553#[inline(always)]
70554#[target_feature(enable = "neon")]
70555#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70556#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70557#[cfg_attr(
70558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70559 assert_instr(subhn)
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 fn vsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
70570 let c: u64x2 = u64x2::new(32, 32);
70571 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70572}
70573#[doc = "Signed Subtract Long"]
70574#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s8)"]
70575#[inline(always)]
70576#[target_feature(enable = "neon")]
70577#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70578#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70579#[cfg_attr(
70580 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70581 assert_instr(ssubl)
70582)]
70583#[cfg_attr(
70584 not(target_arch = "arm"),
70585 stable(feature = "neon_intrinsics", since = "1.59.0")
70586)]
70587#[cfg_attr(
70588 target_arch = "arm",
70589 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70590)]
70591pub fn vsubl_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
70592 unsafe {
70593 let c: int16x8_t = simd_cast(a);
70594 let d: int16x8_t = simd_cast(b);
70595 simd_sub(c, d)
70596 }
70597}
70598#[doc = "Signed Subtract Long"]
70599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s16)"]
70600#[inline(always)]
70601#[target_feature(enable = "neon")]
70602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70603#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70604#[cfg_attr(
70605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70606 assert_instr(ssubl)
70607)]
70608#[cfg_attr(
70609 not(target_arch = "arm"),
70610 stable(feature = "neon_intrinsics", since = "1.59.0")
70611)]
70612#[cfg_attr(
70613 target_arch = "arm",
70614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70615)]
70616pub fn vsubl_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
70617 unsafe {
70618 let c: int32x4_t = simd_cast(a);
70619 let d: int32x4_t = simd_cast(b);
70620 simd_sub(c, d)
70621 }
70622}
70623#[doc = "Signed Subtract Long"]
70624#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s32)"]
70625#[inline(always)]
70626#[target_feature(enable = "neon")]
70627#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70628#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70629#[cfg_attr(
70630 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70631 assert_instr(ssubl)
70632)]
70633#[cfg_attr(
70634 not(target_arch = "arm"),
70635 stable(feature = "neon_intrinsics", since = "1.59.0")
70636)]
70637#[cfg_attr(
70638 target_arch = "arm",
70639 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70640)]
70641pub fn vsubl_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
70642 unsafe {
70643 let c: int64x2_t = simd_cast(a);
70644 let d: int64x2_t = simd_cast(b);
70645 simd_sub(c, d)
70646 }
70647}
70648#[doc = "Unsigned Subtract Long"]
70649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u8)"]
70650#[inline(always)]
70651#[target_feature(enable = "neon")]
70652#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70653#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70654#[cfg_attr(
70655 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70656 assert_instr(usubl)
70657)]
70658#[cfg_attr(
70659 not(target_arch = "arm"),
70660 stable(feature = "neon_intrinsics", since = "1.59.0")
70661)]
70662#[cfg_attr(
70663 target_arch = "arm",
70664 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70665)]
70666pub fn vsubl_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
70667 unsafe {
70668 let c: uint16x8_t = simd_cast(a);
70669 let d: uint16x8_t = simd_cast(b);
70670 simd_sub(c, d)
70671 }
70672}
70673#[doc = "Unsigned Subtract Long"]
70674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u16)"]
70675#[inline(always)]
70676#[target_feature(enable = "neon")]
70677#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70678#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70679#[cfg_attr(
70680 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70681 assert_instr(usubl)
70682)]
70683#[cfg_attr(
70684 not(target_arch = "arm"),
70685 stable(feature = "neon_intrinsics", since = "1.59.0")
70686)]
70687#[cfg_attr(
70688 target_arch = "arm",
70689 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70690)]
70691pub fn vsubl_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
70692 unsafe {
70693 let c: uint32x4_t = simd_cast(a);
70694 let d: uint32x4_t = simd_cast(b);
70695 simd_sub(c, d)
70696 }
70697}
70698#[doc = "Unsigned Subtract Long"]
70699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u32)"]
70700#[inline(always)]
70701#[target_feature(enable = "neon")]
70702#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70703#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70704#[cfg_attr(
70705 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70706 assert_instr(usubl)
70707)]
70708#[cfg_attr(
70709 not(target_arch = "arm"),
70710 stable(feature = "neon_intrinsics", since = "1.59.0")
70711)]
70712#[cfg_attr(
70713 target_arch = "arm",
70714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70715)]
70716pub fn vsubl_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
70717 unsafe {
70718 let c: uint64x2_t = simd_cast(a);
70719 let d: uint64x2_t = simd_cast(b);
70720 simd_sub(c, d)
70721 }
70722}
70723#[doc = "Signed Subtract Wide"]
70724#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s8)"]
70725#[inline(always)]
70726#[target_feature(enable = "neon")]
70727#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70728#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70729#[cfg_attr(
70730 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70731 assert_instr(ssubw)
70732)]
70733#[cfg_attr(
70734 not(target_arch = "arm"),
70735 stable(feature = "neon_intrinsics", since = "1.59.0")
70736)]
70737#[cfg_attr(
70738 target_arch = "arm",
70739 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70740)]
70741pub fn vsubw_s8(a: int16x8_t, b: int8x8_t) -> int16x8_t {
70742 unsafe { simd_sub(a, simd_cast(b)) }
70743}
70744#[doc = "Signed Subtract Wide"]
70745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s16)"]
70746#[inline(always)]
70747#[target_feature(enable = "neon")]
70748#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70749#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70750#[cfg_attr(
70751 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70752 assert_instr(ssubw)
70753)]
70754#[cfg_attr(
70755 not(target_arch = "arm"),
70756 stable(feature = "neon_intrinsics", since = "1.59.0")
70757)]
70758#[cfg_attr(
70759 target_arch = "arm",
70760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70761)]
70762pub fn vsubw_s16(a: int32x4_t, b: int16x4_t) -> int32x4_t {
70763 unsafe { simd_sub(a, simd_cast(b)) }
70764}
70765#[doc = "Signed Subtract Wide"]
70766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s32)"]
70767#[inline(always)]
70768#[target_feature(enable = "neon")]
70769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70771#[cfg_attr(
70772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70773 assert_instr(ssubw)
70774)]
70775#[cfg_attr(
70776 not(target_arch = "arm"),
70777 stable(feature = "neon_intrinsics", since = "1.59.0")
70778)]
70779#[cfg_attr(
70780 target_arch = "arm",
70781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70782)]
70783pub fn vsubw_s32(a: int64x2_t, b: int32x2_t) -> int64x2_t {
70784 unsafe { simd_sub(a, simd_cast(b)) }
70785}
70786#[doc = "Unsigned Subtract Wide"]
70787#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u8)"]
70788#[inline(always)]
70789#[target_feature(enable = "neon")]
70790#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70791#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70792#[cfg_attr(
70793 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70794 assert_instr(usubw)
70795)]
70796#[cfg_attr(
70797 not(target_arch = "arm"),
70798 stable(feature = "neon_intrinsics", since = "1.59.0")
70799)]
70800#[cfg_attr(
70801 target_arch = "arm",
70802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70803)]
70804pub fn vsubw_u8(a: uint16x8_t, b: uint8x8_t) -> uint16x8_t {
70805 unsafe { simd_sub(a, simd_cast(b)) }
70806}
70807#[doc = "Unsigned Subtract Wide"]
70808#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u16)"]
70809#[inline(always)]
70810#[target_feature(enable = "neon")]
70811#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70812#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70813#[cfg_attr(
70814 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70815 assert_instr(usubw)
70816)]
70817#[cfg_attr(
70818 not(target_arch = "arm"),
70819 stable(feature = "neon_intrinsics", since = "1.59.0")
70820)]
70821#[cfg_attr(
70822 target_arch = "arm",
70823 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70824)]
70825pub fn vsubw_u16(a: uint32x4_t, b: uint16x4_t) -> uint32x4_t {
70826 unsafe { simd_sub(a, simd_cast(b)) }
70827}
70828#[doc = "Unsigned Subtract Wide"]
70829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u32)"]
70830#[inline(always)]
70831#[target_feature(enable = "neon")]
70832#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70833#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70834#[cfg_attr(
70835 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70836 assert_instr(usubw)
70837)]
70838#[cfg_attr(
70839 not(target_arch = "arm"),
70840 stable(feature = "neon_intrinsics", since = "1.59.0")
70841)]
70842#[cfg_attr(
70843 target_arch = "arm",
70844 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70845)]
70846pub fn vsubw_u32(a: uint64x2_t, b: uint32x2_t) -> uint64x2_t {
70847 unsafe { simd_sub(a, simd_cast(b)) }
70848}
70849#[doc = "Dot product index form with signed and unsigned integers"]
70850#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudot_lane_s32)"]
70851#[inline(always)]
70852#[cfg(target_endian = "little")]
70853#[target_feature(enable = "neon,i8mm")]
70854#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70855#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
70856#[cfg_attr(
70857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70858 assert_instr(sudot, LANE = 0)
70859)]
70860#[rustc_legacy_const_generics(3)]
70861#[cfg_attr(
70862 not(target_arch = "arm"),
70863 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
70864)]
70865#[cfg_attr(
70866 target_arch = "arm",
70867 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70868)]
70869pub fn vsudot_lane_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: uint8x8_t) -> int32x2_t {
70870 static_assert_uimm_bits!(LANE, 1);
70871 unsafe {
70872 let c: uint32x2_t = transmute(c);
70873 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
70874 vusdot_s32(a, transmute(c), b)
70875 }
70876}
70877#[doc = "Dot product index form with signed and unsigned integers"]
70878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudot_lane_s32)"]
70879#[inline(always)]
70880#[cfg(target_endian = "big")]
70881#[target_feature(enable = "neon,i8mm")]
70882#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70883#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
70884#[cfg_attr(
70885 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70886 assert_instr(sudot, LANE = 0)
70887)]
70888#[rustc_legacy_const_generics(3)]
70889#[cfg_attr(
70890 not(target_arch = "arm"),
70891 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
70892)]
70893#[cfg_attr(
70894 target_arch = "arm",
70895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70896)]
70897pub fn vsudot_lane_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: uint8x8_t) -> int32x2_t {
70898 static_assert_uimm_bits!(LANE, 1);
70899 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
70900 let b: int8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
70901 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
70902 unsafe {
70903 let c: uint32x2_t = transmute(c);
70904 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
70905 let ret_val: int32x2_t = vusdot_s32(a, transmute(c), b);
70906 simd_shuffle!(ret_val, ret_val, [1, 0])
70907 }
70908}
70909#[doc = "Dot product index form with signed and unsigned integers"]
70910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudotq_lane_s32)"]
70911#[inline(always)]
70912#[cfg(target_endian = "little")]
70913#[target_feature(enable = "neon,i8mm")]
70914#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70915#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
70916#[cfg_attr(
70917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70918 assert_instr(sudot, LANE = 0)
70919)]
70920#[rustc_legacy_const_generics(3)]
70921#[cfg_attr(
70922 not(target_arch = "arm"),
70923 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
70924)]
70925#[cfg_attr(
70926 target_arch = "arm",
70927 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70928)]
70929pub fn vsudotq_lane_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: uint8x8_t) -> int32x4_t {
70930 static_assert_uimm_bits!(LANE, 1);
70931 unsafe {
70932 let c: uint32x2_t = transmute(c);
70933 let c: uint32x4_t =
70934 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
70935 vusdotq_s32(a, transmute(c), b)
70936 }
70937}
70938#[doc = "Dot product index form with signed and unsigned integers"]
70939#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudotq_lane_s32)"]
70940#[inline(always)]
70941#[cfg(target_endian = "big")]
70942#[target_feature(enable = "neon,i8mm")]
70943#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70944#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
70945#[cfg_attr(
70946 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70947 assert_instr(sudot, LANE = 0)
70948)]
70949#[rustc_legacy_const_generics(3)]
70950#[cfg_attr(
70951 not(target_arch = "arm"),
70952 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
70953)]
70954#[cfg_attr(
70955 target_arch = "arm",
70956 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70957)]
70958pub fn vsudotq_lane_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: uint8x8_t) -> int32x4_t {
70959 static_assert_uimm_bits!(LANE, 1);
70960 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
70961 let b: int8x16_t =
70962 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
70963 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
70964 unsafe {
70965 let c: uint32x2_t = transmute(c);
70966 let c: uint32x4_t =
70967 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
70968 let ret_val: int32x4_t = vusdotq_s32(a, transmute(c), b);
70969 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
70970 }
70971}
70972#[doc = "Dot product index form with signed and unsigned integers"]
70973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudot_laneq_s32)"]
70974#[inline(always)]
70975#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70976#[target_feature(enable = "neon,i8mm")]
70977#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 1))]
70978#[cfg_attr(
70979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70980 assert_instr(sudot, LANE = 3)
70981)]
70982#[rustc_legacy_const_generics(3)]
70983#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
70984pub fn vsudot_laneq_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: uint8x16_t) -> int32x2_t {
70985 static_assert_uimm_bits!(LANE, 2);
70986 unsafe {
70987 let c: uint32x4_t = transmute(c);
70988 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
70989 vusdot_s32(a, transmute(c), b)
70990 }
70991}
70992#[doc = "Dot product index form with signed and unsigned integers"]
70993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudotq_laneq_s32)"]
70994#[inline(always)]
70995#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70996#[target_feature(enable = "neon,i8mm")]
70997#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 1))]
70998#[cfg_attr(
70999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71000 assert_instr(sudot, LANE = 3)
71001)]
71002#[rustc_legacy_const_generics(3)]
71003#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
71004pub fn vsudotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: uint8x16_t) -> int32x4_t {
71005 static_assert_uimm_bits!(LANE, 2);
71006 unsafe {
71007 let c: uint32x4_t = transmute(c);
71008 let c: uint32x4_t =
71009 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
71010 vusdotq_s32(a, transmute(c), b)
71011 }
71012}
71013#[doc = "Table look-up"]
71014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1)"]
71015#[inline(always)]
71016#[target_feature(enable = "neon")]
71017#[cfg(target_arch = "arm")]
71018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71019#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71020#[cfg_attr(test, assert_instr(vtbl))]
71021fn vtbl1(a: int8x8_t, b: int8x8_t) -> int8x8_t {
71022 unsafe extern "unadjusted" {
71023 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl1")]
71024 fn _vtbl1(a: int8x8_t, b: int8x8_t) -> int8x8_t;
71025 }
71026 unsafe { _vtbl1(a, b) }
71027}
71028#[doc = "Table look-up"]
71029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_s8)"]
71030#[inline(always)]
71031#[target_feature(enable = "neon")]
71032#[cfg(target_arch = "arm")]
71033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71034#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71035#[cfg_attr(test, assert_instr(vtbl))]
71036pub fn vtbl1_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
71037 vtbl1(a, b)
71038}
71039#[doc = "Table look-up"]
71040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_u8)"]
71041#[inline(always)]
71042#[cfg(target_endian = "little")]
71043#[target_feature(enable = "neon")]
71044#[cfg(target_arch = "arm")]
71045#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71046#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71047#[cfg_attr(test, assert_instr(vtbl))]
71048pub fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
71049 unsafe { transmute(vtbl1(transmute(a), transmute(b))) }
71050}
71051#[doc = "Table look-up"]
71052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_u8)"]
71053#[inline(always)]
71054#[cfg(target_endian = "big")]
71055#[target_feature(enable = "neon")]
71056#[cfg(target_arch = "arm")]
71057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71058#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71059#[cfg_attr(test, assert_instr(vtbl))]
71060pub fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
71061 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71062 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71063 unsafe {
71064 let ret_val: uint8x8_t = transmute(vtbl1(transmute(a), transmute(b)));
71065 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71066 }
71067}
71068#[doc = "Table look-up"]
71069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_p8)"]
71070#[inline(always)]
71071#[cfg(target_endian = "little")]
71072#[target_feature(enable = "neon")]
71073#[cfg(target_arch = "arm")]
71074#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71075#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71076#[cfg_attr(test, assert_instr(vtbl))]
71077pub fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
71078 unsafe { transmute(vtbl1(transmute(a), transmute(b))) }
71079}
71080#[doc = "Table look-up"]
71081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_p8)"]
71082#[inline(always)]
71083#[cfg(target_endian = "big")]
71084#[target_feature(enable = "neon")]
71085#[cfg(target_arch = "arm")]
71086#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71087#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71088#[cfg_attr(test, assert_instr(vtbl))]
71089pub fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
71090 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71091 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71092 unsafe {
71093 let ret_val: poly8x8_t = transmute(vtbl1(transmute(a), transmute(b)));
71094 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71095 }
71096}
71097#[doc = "Table look-up"]
71098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2)"]
71099#[inline(always)]
71100#[target_feature(enable = "neon")]
71101#[cfg(target_arch = "arm")]
71102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71103#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71104#[cfg_attr(test, assert_instr(vtbl))]
71105fn vtbl2(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
71106 unsafe extern "unadjusted" {
71107 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl2")]
71108 fn _vtbl2(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
71109 }
71110 unsafe { _vtbl2(a, b, c) }
71111}
71112#[doc = "Table look-up"]
71113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_s8)"]
71114#[inline(always)]
71115#[target_feature(enable = "neon")]
71116#[cfg(target_arch = "arm")]
71117#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71118#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71119#[cfg_attr(test, assert_instr(vtbl))]
71120pub fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
71121 vtbl2(a.0, a.1, b)
71122}
71123#[doc = "Table look-up"]
71124#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_u8)"]
71125#[inline(always)]
71126#[cfg(target_endian = "little")]
71127#[target_feature(enable = "neon")]
71128#[cfg(target_arch = "arm")]
71129#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71130#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71131#[cfg_attr(test, assert_instr(vtbl))]
71132pub fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
71133 unsafe { transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b))) }
71134}
71135#[doc = "Table look-up"]
71136#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_u8)"]
71137#[inline(always)]
71138#[cfg(target_endian = "big")]
71139#[target_feature(enable = "neon")]
71140#[cfg(target_arch = "arm")]
71141#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71142#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71143#[cfg_attr(test, assert_instr(vtbl))]
71144pub fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
71145 let mut a: uint8x8x2_t = a;
71146 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71147 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71148 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71149 unsafe {
71150 let ret_val: uint8x8_t = transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b)));
71151 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71152 }
71153}
71154#[doc = "Table look-up"]
71155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_p8)"]
71156#[inline(always)]
71157#[cfg(target_endian = "little")]
71158#[target_feature(enable = "neon")]
71159#[cfg(target_arch = "arm")]
71160#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71161#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71162#[cfg_attr(test, assert_instr(vtbl))]
71163pub fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
71164 unsafe { transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b))) }
71165}
71166#[doc = "Table look-up"]
71167#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_p8)"]
71168#[inline(always)]
71169#[cfg(target_endian = "big")]
71170#[target_feature(enable = "neon")]
71171#[cfg(target_arch = "arm")]
71172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71173#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71174#[cfg_attr(test, assert_instr(vtbl))]
71175pub fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
71176 let mut a: poly8x8x2_t = a;
71177 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71178 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71179 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71180 unsafe {
71181 let ret_val: poly8x8_t = transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b)));
71182 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71183 }
71184}
71185#[doc = "Table look-up"]
71186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3)"]
71187#[inline(always)]
71188#[target_feature(enable = "neon")]
71189#[cfg(target_arch = "arm")]
71190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71191#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71192#[cfg_attr(test, assert_instr(vtbl))]
71193fn vtbl3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t {
71194 unsafe extern "unadjusted" {
71195 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl3")]
71196 fn _vtbl3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t;
71197 }
71198 unsafe { _vtbl3(a, b, c, d) }
71199}
71200#[doc = "Table look-up"]
71201#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_s8)"]
71202#[inline(always)]
71203#[target_feature(enable = "neon")]
71204#[cfg(target_arch = "arm")]
71205#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71206#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71207#[cfg_attr(test, assert_instr(vtbl))]
71208pub fn vtbl3_s8(a: int8x8x3_t, b: int8x8_t) -> int8x8_t {
71209 vtbl3(a.0, a.1, a.2, b)
71210}
71211#[doc = "Table look-up"]
71212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_u8)"]
71213#[inline(always)]
71214#[cfg(target_endian = "little")]
71215#[target_feature(enable = "neon")]
71216#[cfg(target_arch = "arm")]
71217#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71218#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71219#[cfg_attr(test, assert_instr(vtbl))]
71220pub fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
71221 unsafe {
71222 transmute(vtbl3(
71223 transmute(a.0),
71224 transmute(a.1),
71225 transmute(a.2),
71226 transmute(b),
71227 ))
71228 }
71229}
71230#[doc = "Table look-up"]
71231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_u8)"]
71232#[inline(always)]
71233#[cfg(target_endian = "big")]
71234#[target_feature(enable = "neon")]
71235#[cfg(target_arch = "arm")]
71236#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71237#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71238#[cfg_attr(test, assert_instr(vtbl))]
71239pub fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
71240 let mut a: uint8x8x3_t = a;
71241 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71242 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71243 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71244 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71245 unsafe {
71246 let ret_val: uint8x8_t = transmute(vtbl3(
71247 transmute(a.0),
71248 transmute(a.1),
71249 transmute(a.2),
71250 transmute(b),
71251 ));
71252 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71253 }
71254}
71255#[doc = "Table look-up"]
71256#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_p8)"]
71257#[inline(always)]
71258#[cfg(target_endian = "little")]
71259#[target_feature(enable = "neon")]
71260#[cfg(target_arch = "arm")]
71261#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71262#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71263#[cfg_attr(test, assert_instr(vtbl))]
71264pub fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
71265 unsafe {
71266 transmute(vtbl3(
71267 transmute(a.0),
71268 transmute(a.1),
71269 transmute(a.2),
71270 transmute(b),
71271 ))
71272 }
71273}
71274#[doc = "Table look-up"]
71275#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_p8)"]
71276#[inline(always)]
71277#[cfg(target_endian = "big")]
71278#[target_feature(enable = "neon")]
71279#[cfg(target_arch = "arm")]
71280#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71281#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71282#[cfg_attr(test, assert_instr(vtbl))]
71283pub fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
71284 let mut a: poly8x8x3_t = a;
71285 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71286 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71287 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71288 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71289 unsafe {
71290 let ret_val: poly8x8_t = transmute(vtbl3(
71291 transmute(a.0),
71292 transmute(a.1),
71293 transmute(a.2),
71294 transmute(b),
71295 ));
71296 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71297 }
71298}
71299#[doc = "Table look-up"]
71300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4)"]
71301#[inline(always)]
71302#[target_feature(enable = "neon")]
71303#[cfg(target_arch = "arm")]
71304#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71305#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71306#[cfg_attr(test, assert_instr(vtbl))]
71307fn vtbl4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t {
71308 unsafe extern "unadjusted" {
71309 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl4")]
71310 fn _vtbl4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t;
71311 }
71312 unsafe { _vtbl4(a, b, c, d, e) }
71313}
71314#[doc = "Table look-up"]
71315#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_s8)"]
71316#[inline(always)]
71317#[target_feature(enable = "neon")]
71318#[cfg(target_arch = "arm")]
71319#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71320#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71321#[cfg_attr(test, assert_instr(vtbl))]
71322pub fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
71323 vtbl4(a.0, a.1, a.2, a.3, b)
71324}
71325#[doc = "Table look-up"]
71326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_u8)"]
71327#[inline(always)]
71328#[cfg(target_endian = "little")]
71329#[target_feature(enable = "neon")]
71330#[cfg(target_arch = "arm")]
71331#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71332#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71333#[cfg_attr(test, assert_instr(vtbl))]
71334pub fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
71335 unsafe {
71336 transmute(vtbl4(
71337 transmute(a.0),
71338 transmute(a.1),
71339 transmute(a.2),
71340 transmute(a.3),
71341 transmute(b),
71342 ))
71343 }
71344}
71345#[doc = "Table look-up"]
71346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_u8)"]
71347#[inline(always)]
71348#[cfg(target_endian = "big")]
71349#[target_feature(enable = "neon")]
71350#[cfg(target_arch = "arm")]
71351#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71352#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71353#[cfg_attr(test, assert_instr(vtbl))]
71354pub fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
71355 let mut a: uint8x8x4_t = a;
71356 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71357 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71358 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71359 a.3 = unsafe { simd_shuffle!(a.3, a.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
71360 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71361 unsafe {
71362 let ret_val: uint8x8_t = transmute(vtbl4(
71363 transmute(a.0),
71364 transmute(a.1),
71365 transmute(a.2),
71366 transmute(a.3),
71367 transmute(b),
71368 ));
71369 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71370 }
71371}
71372#[doc = "Table look-up"]
71373#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_p8)"]
71374#[inline(always)]
71375#[cfg(target_endian = "little")]
71376#[target_feature(enable = "neon")]
71377#[cfg(target_arch = "arm")]
71378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71379#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71380#[cfg_attr(test, assert_instr(vtbl))]
71381pub fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
71382 unsafe {
71383 transmute(vtbl4(
71384 transmute(a.0),
71385 transmute(a.1),
71386 transmute(a.2),
71387 transmute(a.3),
71388 transmute(b),
71389 ))
71390 }
71391}
71392#[doc = "Table look-up"]
71393#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_p8)"]
71394#[inline(always)]
71395#[cfg(target_endian = "big")]
71396#[target_feature(enable = "neon")]
71397#[cfg(target_arch = "arm")]
71398#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71399#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71400#[cfg_attr(test, assert_instr(vtbl))]
71401pub fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
71402 let mut a: poly8x8x4_t = a;
71403 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71404 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71405 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71406 a.3 = unsafe { simd_shuffle!(a.3, a.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
71407 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71408 unsafe {
71409 let ret_val: poly8x8_t = transmute(vtbl4(
71410 transmute(a.0),
71411 transmute(a.1),
71412 transmute(a.2),
71413 transmute(a.3),
71414 transmute(b),
71415 ));
71416 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71417 }
71418}
71419#[doc = "Extended table look-up"]
71420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1)"]
71421#[inline(always)]
71422#[target_feature(enable = "neon,v7")]
71423#[cfg(target_arch = "arm")]
71424#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71425#[cfg_attr(test, assert_instr(vtbx))]
71426fn vtbx1(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
71427 unsafe extern "unadjusted" {
71428 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx1")]
71429 fn _vtbx1(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
71430 }
71431 unsafe { _vtbx1(a, b, c) }
71432}
71433#[doc = "Extended table look-up"]
71434#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_s8)"]
71435#[inline(always)]
71436#[target_feature(enable = "neon,v7")]
71437#[cfg(target_arch = "arm")]
71438#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71439#[cfg_attr(test, assert_instr(vtbx))]
71440pub fn vtbx1_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
71441 vtbx1(a, b, c)
71442}
71443#[doc = "Extended table look-up"]
71444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_u8)"]
71445#[inline(always)]
71446#[cfg(target_endian = "little")]
71447#[target_feature(enable = "neon,v7")]
71448#[cfg(target_arch = "arm")]
71449#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71450#[cfg_attr(test, assert_instr(vtbx))]
71451pub fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
71452 unsafe { transmute(vtbx1(transmute(a), transmute(b), transmute(c))) }
71453}
71454#[doc = "Extended table look-up"]
71455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_u8)"]
71456#[inline(always)]
71457#[cfg(target_endian = "big")]
71458#[target_feature(enable = "neon,v7")]
71459#[cfg(target_arch = "arm")]
71460#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71461#[cfg_attr(test, assert_instr(vtbx))]
71462pub fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
71463 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71464 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71465 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71466 unsafe {
71467 let ret_val: uint8x8_t = transmute(vtbx1(transmute(a), transmute(b), transmute(c)));
71468 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71469 }
71470}
71471#[doc = "Extended table look-up"]
71472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_p8)"]
71473#[inline(always)]
71474#[cfg(target_endian = "little")]
71475#[target_feature(enable = "neon,v7")]
71476#[cfg(target_arch = "arm")]
71477#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71478#[cfg_attr(test, assert_instr(vtbx))]
71479pub fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
71480 unsafe { transmute(vtbx1(transmute(a), transmute(b), transmute(c))) }
71481}
71482#[doc = "Extended table look-up"]
71483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_p8)"]
71484#[inline(always)]
71485#[cfg(target_endian = "big")]
71486#[target_feature(enable = "neon,v7")]
71487#[cfg(target_arch = "arm")]
71488#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71489#[cfg_attr(test, assert_instr(vtbx))]
71490pub fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
71491 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71492 let b: poly8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71493 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71494 unsafe {
71495 let ret_val: poly8x8_t = transmute(vtbx1(transmute(a), transmute(b), transmute(c)));
71496 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71497 }
71498}
71499#[doc = "Extended table look-up"]
71500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2)"]
71501#[inline(always)]
71502#[target_feature(enable = "neon,v7")]
71503#[cfg(target_arch = "arm")]
71504#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71505#[cfg_attr(test, assert_instr(vtbx))]
71506fn vtbx2(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t {
71507 unsafe extern "unadjusted" {
71508 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx2")]
71509 fn _vtbx2(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t;
71510 }
71511 unsafe { _vtbx2(a, b, c, d) }
71512}
71513#[doc = "Extended table look-up"]
71514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_s8)"]
71515#[inline(always)]
71516#[target_feature(enable = "neon,v7")]
71517#[cfg(target_arch = "arm")]
71518#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71519#[cfg_attr(test, assert_instr(vtbx))]
71520pub fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
71521 vtbx2(a, b.0, b.1, c)
71522}
71523#[doc = "Extended table look-up"]
71524#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_u8)"]
71525#[inline(always)]
71526#[cfg(target_endian = "little")]
71527#[target_feature(enable = "neon,v7")]
71528#[cfg(target_arch = "arm")]
71529#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71530#[cfg_attr(test, assert_instr(vtbx))]
71531pub fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
71532 unsafe {
71533 transmute(vtbx2(
71534 transmute(a),
71535 transmute(b.0),
71536 transmute(b.1),
71537 transmute(c),
71538 ))
71539 }
71540}
71541#[doc = "Extended table look-up"]
71542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_u8)"]
71543#[inline(always)]
71544#[cfg(target_endian = "big")]
71545#[target_feature(enable = "neon,v7")]
71546#[cfg(target_arch = "arm")]
71547#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71548#[cfg_attr(test, assert_instr(vtbx))]
71549pub fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
71550 let mut b: uint8x8x2_t = b;
71551 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71552 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71553 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71554 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71555 unsafe {
71556 let ret_val: uint8x8_t = transmute(vtbx2(
71557 transmute(a),
71558 transmute(b.0),
71559 transmute(b.1),
71560 transmute(c),
71561 ));
71562 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71563 }
71564}
71565#[doc = "Extended table look-up"]
71566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_p8)"]
71567#[inline(always)]
71568#[cfg(target_endian = "little")]
71569#[target_feature(enable = "neon,v7")]
71570#[cfg(target_arch = "arm")]
71571#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71572#[cfg_attr(test, assert_instr(vtbx))]
71573pub fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t {
71574 unsafe {
71575 transmute(vtbx2(
71576 transmute(a),
71577 transmute(b.0),
71578 transmute(b.1),
71579 transmute(c),
71580 ))
71581 }
71582}
71583#[doc = "Extended table look-up"]
71584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_p8)"]
71585#[inline(always)]
71586#[cfg(target_endian = "big")]
71587#[target_feature(enable = "neon,v7")]
71588#[cfg(target_arch = "arm")]
71589#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71590#[cfg_attr(test, assert_instr(vtbx))]
71591pub fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t {
71592 let mut b: poly8x8x2_t = b;
71593 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71594 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71595 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71596 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71597 unsafe {
71598 let ret_val: poly8x8_t = transmute(vtbx2(
71599 transmute(a),
71600 transmute(b.0),
71601 transmute(b.1),
71602 transmute(c),
71603 ));
71604 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71605 }
71606}
71607#[doc = "Extended table look-up"]
71608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3)"]
71609#[inline(always)]
71610#[target_feature(enable = "neon,v7")]
71611#[cfg(target_arch = "arm")]
71612#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71613#[cfg_attr(test, assert_instr(vtbx))]
71614fn vtbx3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t {
71615 unsafe extern "unadjusted" {
71616 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx3")]
71617 fn _vtbx3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t;
71618 }
71619 unsafe { _vtbx3(a, b, c, d, e) }
71620}
71621#[doc = "Extended table look-up"]
71622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_s8)"]
71623#[inline(always)]
71624#[target_feature(enable = "neon,v7")]
71625#[cfg(target_arch = "arm")]
71626#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71627#[cfg_attr(test, assert_instr(vtbx))]
71628pub fn vtbx3_s8(a: int8x8_t, b: int8x8x3_t, c: int8x8_t) -> int8x8_t {
71629 vtbx3(a, b.0, b.1, b.2, c)
71630}
71631#[doc = "Extended table look-up"]
71632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_u8)"]
71633#[inline(always)]
71634#[cfg(target_endian = "little")]
71635#[target_feature(enable = "neon,v7")]
71636#[cfg(target_arch = "arm")]
71637#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71638#[cfg_attr(test, assert_instr(vtbx))]
71639pub fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t {
71640 unsafe {
71641 transmute(vtbx3(
71642 transmute(a),
71643 transmute(b.0),
71644 transmute(b.1),
71645 transmute(b.2),
71646 transmute(c),
71647 ))
71648 }
71649}
71650#[doc = "Extended table look-up"]
71651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_u8)"]
71652#[inline(always)]
71653#[cfg(target_endian = "big")]
71654#[target_feature(enable = "neon,v7")]
71655#[cfg(target_arch = "arm")]
71656#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71657#[cfg_attr(test, assert_instr(vtbx))]
71658pub fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t {
71659 let mut b: uint8x8x3_t = b;
71660 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71661 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71662 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71663 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71664 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71665 unsafe {
71666 let ret_val: uint8x8_t = transmute(vtbx3(
71667 transmute(a),
71668 transmute(b.0),
71669 transmute(b.1),
71670 transmute(b.2),
71671 transmute(c),
71672 ));
71673 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71674 }
71675}
71676#[doc = "Extended table look-up"]
71677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_p8)"]
71678#[inline(always)]
71679#[cfg(target_endian = "little")]
71680#[target_feature(enable = "neon,v7")]
71681#[cfg(target_arch = "arm")]
71682#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71683#[cfg_attr(test, assert_instr(vtbx))]
71684pub fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
71685 unsafe {
71686 transmute(vtbx3(
71687 transmute(a),
71688 transmute(b.0),
71689 transmute(b.1),
71690 transmute(b.2),
71691 transmute(c),
71692 ))
71693 }
71694}
71695#[doc = "Extended table look-up"]
71696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_p8)"]
71697#[inline(always)]
71698#[cfg(target_endian = "big")]
71699#[target_feature(enable = "neon,v7")]
71700#[cfg(target_arch = "arm")]
71701#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71702#[cfg_attr(test, assert_instr(vtbx))]
71703pub fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
71704 let mut b: poly8x8x3_t = b;
71705 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71706 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71707 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71708 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71709 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71710 unsafe {
71711 let ret_val: poly8x8_t = transmute(vtbx3(
71712 transmute(a),
71713 transmute(b.0),
71714 transmute(b.1),
71715 transmute(b.2),
71716 transmute(c),
71717 ));
71718 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71719 }
71720}
71721#[doc = "Extended table look-up"]
71722#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4)"]
71723#[inline(always)]
71724#[target_feature(enable = "neon,v7")]
71725#[cfg(target_arch = "arm")]
71726#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71727#[cfg_attr(test, assert_instr(vtbx))]
71728fn vtbx4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t, f: int8x8_t) -> int8x8_t {
71729 unsafe extern "unadjusted" {
71730 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx4")]
71731 fn _vtbx4(
71732 a: int8x8_t,
71733 b: int8x8_t,
71734 c: int8x8_t,
71735 d: int8x8_t,
71736 e: int8x8_t,
71737 f: int8x8_t,
71738 ) -> int8x8_t;
71739 }
71740 unsafe { _vtbx4(a, b, c, d, e, f) }
71741}
71742#[doc = "Extended table look-up"]
71743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_s8)"]
71744#[inline(always)]
71745#[cfg(target_endian = "little")]
71746#[target_feature(enable = "neon,v7")]
71747#[cfg(target_arch = "arm")]
71748#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71749#[cfg_attr(test, assert_instr(vtbx))]
71750pub fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
71751 unsafe {
71752 vtbx4(
71753 a,
71754 transmute(b.0),
71755 transmute(b.1),
71756 transmute(b.2),
71757 transmute(b.3),
71758 c,
71759 )
71760 }
71761}
71762#[doc = "Extended table look-up"]
71763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_s8)"]
71764#[inline(always)]
71765#[cfg(target_endian = "big")]
71766#[target_feature(enable = "neon,v7")]
71767#[cfg(target_arch = "arm")]
71768#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71769#[cfg_attr(test, assert_instr(vtbx))]
71770pub fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
71771 let mut b: int8x8x4_t = b;
71772 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71773 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71774 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71775 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71776 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
71777 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71778 unsafe {
71779 let ret_val: int8x8_t = vtbx4(
71780 a,
71781 transmute(b.0),
71782 transmute(b.1),
71783 transmute(b.2),
71784 transmute(b.3),
71785 c,
71786 );
71787 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71788 }
71789}
71790#[doc = "Extended table look-up"]
71791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_u8)"]
71792#[inline(always)]
71793#[cfg(target_endian = "little")]
71794#[target_feature(enable = "neon,v7")]
71795#[cfg(target_arch = "arm")]
71796#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71797#[cfg_attr(test, assert_instr(vtbx))]
71798pub fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
71799 unsafe {
71800 transmute(vtbx4(
71801 transmute(a),
71802 transmute(b.0),
71803 transmute(b.1),
71804 transmute(b.2),
71805 transmute(b.3),
71806 transmute(c),
71807 ))
71808 }
71809}
71810#[doc = "Extended table look-up"]
71811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_u8)"]
71812#[inline(always)]
71813#[cfg(target_endian = "big")]
71814#[target_feature(enable = "neon,v7")]
71815#[cfg(target_arch = "arm")]
71816#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71817#[cfg_attr(test, assert_instr(vtbx))]
71818pub fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
71819 let mut b: uint8x8x4_t = b;
71820 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71821 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71822 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71823 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71824 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
71825 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71826 unsafe {
71827 let ret_val: uint8x8_t = transmute(vtbx4(
71828 transmute(a),
71829 transmute(b.0),
71830 transmute(b.1),
71831 transmute(b.2),
71832 transmute(b.3),
71833 transmute(c),
71834 ));
71835 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71836 }
71837}
71838#[doc = "Extended table look-up"]
71839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_p8)"]
71840#[inline(always)]
71841#[cfg(target_endian = "little")]
71842#[target_feature(enable = "neon,v7")]
71843#[cfg(target_arch = "arm")]
71844#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71845#[cfg_attr(test, assert_instr(vtbx))]
71846pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
71847 unsafe {
71848 transmute(vtbx4(
71849 transmute(a),
71850 transmute(b.0),
71851 transmute(b.1),
71852 transmute(b.2),
71853 transmute(b.3),
71854 transmute(c),
71855 ))
71856 }
71857}
71858#[doc = "Extended table look-up"]
71859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_p8)"]
71860#[inline(always)]
71861#[cfg(target_endian = "big")]
71862#[target_feature(enable = "neon,v7")]
71863#[cfg(target_arch = "arm")]
71864#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71865#[cfg_attr(test, assert_instr(vtbx))]
71866pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
71867 let mut b: poly8x8x4_t = b;
71868 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71869 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71870 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71871 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71872 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
71873 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71874 unsafe {
71875 let ret_val: poly8x8_t = transmute(vtbx4(
71876 transmute(a),
71877 transmute(b.0),
71878 transmute(b.1),
71879 transmute(b.2),
71880 transmute(b.3),
71881 transmute(c),
71882 ));
71883 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71884 }
71885}
71886#[doc = "Transpose elements"]
71887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_f16)"]
71888#[inline(always)]
71889#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71890#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71891#[cfg_attr(
71892 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71893 assert_instr(trn1)
71894)]
71895#[cfg_attr(
71896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71897 assert_instr(trn2)
71898)]
71899#[target_feature(enable = "neon,fp16")]
71900#[cfg_attr(
71901 not(target_arch = "arm"),
71902 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
71903)]
71904#[cfg_attr(
71905 target_arch = "arm",
71906 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71907)]
71908#[cfg(not(target_arch = "arm64ec"))]
71909pub fn vtrn_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
71910 unsafe {
71911 let a1: float16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
71912 let b1: float16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
71913 transmute((a1, b1))
71914 }
71915}
71916#[doc = "Transpose elements"]
71917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_f16)"]
71918#[inline(always)]
71919#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71921#[cfg_attr(
71922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71923 assert_instr(trn1)
71924)]
71925#[cfg_attr(
71926 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71927 assert_instr(trn2)
71928)]
71929#[target_feature(enable = "neon,fp16")]
71930#[cfg_attr(
71931 not(target_arch = "arm"),
71932 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
71933)]
71934#[cfg_attr(
71935 target_arch = "arm",
71936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71937)]
71938#[cfg(not(target_arch = "arm64ec"))]
71939pub fn vtrnq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
71940 unsafe {
71941 let a1: float16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
71942 let b1: float16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
71943 transmute((a1, b1))
71944 }
71945}
71946#[doc = "Transpose elements"]
71947#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_f32)"]
71948#[inline(always)]
71949#[target_feature(enable = "neon")]
71950#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71951#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71952#[cfg_attr(
71953 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71954 assert_instr(zip1)
71955)]
71956#[cfg_attr(
71957 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71958 assert_instr(zip2)
71959)]
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 fn vtrn_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
71969 unsafe {
71970 let a1: float32x2_t = simd_shuffle!(a, b, [0, 2]);
71971 let b1: float32x2_t = simd_shuffle!(a, b, [1, 3]);
71972 transmute((a1, b1))
71973 }
71974}
71975#[doc = "Transpose elements"]
71976#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s32)"]
71977#[inline(always)]
71978#[target_feature(enable = "neon")]
71979#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71980#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71981#[cfg_attr(
71982 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71983 assert_instr(zip1)
71984)]
71985#[cfg_attr(
71986 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71987 assert_instr(zip2)
71988)]
71989#[cfg_attr(
71990 not(target_arch = "arm"),
71991 stable(feature = "neon_intrinsics", since = "1.59.0")
71992)]
71993#[cfg_attr(
71994 target_arch = "arm",
71995 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71996)]
71997pub fn vtrn_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
71998 unsafe {
71999 let a1: int32x2_t = simd_shuffle!(a, b, [0, 2]);
72000 let b1: int32x2_t = simd_shuffle!(a, b, [1, 3]);
72001 transmute((a1, b1))
72002 }
72003}
72004#[doc = "Transpose elements"]
72005#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u32)"]
72006#[inline(always)]
72007#[target_feature(enable = "neon")]
72008#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72009#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72010#[cfg_attr(
72011 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72012 assert_instr(zip1)
72013)]
72014#[cfg_attr(
72015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72016 assert_instr(zip2)
72017)]
72018#[cfg_attr(
72019 not(target_arch = "arm"),
72020 stable(feature = "neon_intrinsics", since = "1.59.0")
72021)]
72022#[cfg_attr(
72023 target_arch = "arm",
72024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72025)]
72026pub fn vtrn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
72027 unsafe {
72028 let a1: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
72029 let b1: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
72030 transmute((a1, b1))
72031 }
72032}
72033#[doc = "Transpose elements"]
72034#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_f32)"]
72035#[inline(always)]
72036#[target_feature(enable = "neon")]
72037#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72038#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72039#[cfg_attr(
72040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72041 assert_instr(trn1)
72042)]
72043#[cfg_attr(
72044 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72045 assert_instr(trn2)
72046)]
72047#[cfg_attr(
72048 not(target_arch = "arm"),
72049 stable(feature = "neon_intrinsics", since = "1.59.0")
72050)]
72051#[cfg_attr(
72052 target_arch = "arm",
72053 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72054)]
72055pub fn vtrnq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
72056 unsafe {
72057 let a1: float32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
72058 let b1: float32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
72059 transmute((a1, b1))
72060 }
72061}
72062#[doc = "Transpose elements"]
72063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s8)"]
72064#[inline(always)]
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(vtrn))]
72068#[cfg_attr(
72069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72070 assert_instr(trn1)
72071)]
72072#[cfg_attr(
72073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72074 assert_instr(trn2)
72075)]
72076#[cfg_attr(
72077 not(target_arch = "arm"),
72078 stable(feature = "neon_intrinsics", since = "1.59.0")
72079)]
72080#[cfg_attr(
72081 target_arch = "arm",
72082 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72083)]
72084pub fn vtrn_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
72085 unsafe {
72086 let a1: int8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
72087 let b1: int8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
72088 transmute((a1, b1))
72089 }
72090}
72091#[doc = "Transpose elements"]
72092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s8)"]
72093#[inline(always)]
72094#[target_feature(enable = "neon")]
72095#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72096#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72097#[cfg_attr(
72098 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72099 assert_instr(trn1)
72100)]
72101#[cfg_attr(
72102 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72103 assert_instr(trn2)
72104)]
72105#[cfg_attr(
72106 not(target_arch = "arm"),
72107 stable(feature = "neon_intrinsics", since = "1.59.0")
72108)]
72109#[cfg_attr(
72110 target_arch = "arm",
72111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72112)]
72113pub fn vtrnq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
72114 unsafe {
72115 let a1: int8x16_t = simd_shuffle!(
72116 a,
72117 b,
72118 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
72119 );
72120 let b1: int8x16_t = simd_shuffle!(
72121 a,
72122 b,
72123 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
72124 );
72125 transmute((a1, b1))
72126 }
72127}
72128#[doc = "Transpose elements"]
72129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s16)"]
72130#[inline(always)]
72131#[target_feature(enable = "neon")]
72132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72133#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72134#[cfg_attr(
72135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72136 assert_instr(trn1)
72137)]
72138#[cfg_attr(
72139 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72140 assert_instr(trn2)
72141)]
72142#[cfg_attr(
72143 not(target_arch = "arm"),
72144 stable(feature = "neon_intrinsics", since = "1.59.0")
72145)]
72146#[cfg_attr(
72147 target_arch = "arm",
72148 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72149)]
72150pub fn vtrn_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
72151 unsafe {
72152 let a1: int16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
72153 let b1: int16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
72154 transmute((a1, b1))
72155 }
72156}
72157#[doc = "Transpose elements"]
72158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s16)"]
72159#[inline(always)]
72160#[target_feature(enable = "neon")]
72161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72163#[cfg_attr(
72164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72165 assert_instr(trn1)
72166)]
72167#[cfg_attr(
72168 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72169 assert_instr(trn2)
72170)]
72171#[cfg_attr(
72172 not(target_arch = "arm"),
72173 stable(feature = "neon_intrinsics", since = "1.59.0")
72174)]
72175#[cfg_attr(
72176 target_arch = "arm",
72177 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72178)]
72179pub fn vtrnq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
72180 unsafe {
72181 let a1: int16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
72182 let b1: int16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
72183 transmute((a1, b1))
72184 }
72185}
72186#[doc = "Transpose elements"]
72187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s32)"]
72188#[inline(always)]
72189#[target_feature(enable = "neon")]
72190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72191#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72192#[cfg_attr(
72193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72194 assert_instr(trn1)
72195)]
72196#[cfg_attr(
72197 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72198 assert_instr(trn2)
72199)]
72200#[cfg_attr(
72201 not(target_arch = "arm"),
72202 stable(feature = "neon_intrinsics", since = "1.59.0")
72203)]
72204#[cfg_attr(
72205 target_arch = "arm",
72206 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72207)]
72208pub fn vtrnq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
72209 unsafe {
72210 let a1: int32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
72211 let b1: int32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
72212 transmute((a1, b1))
72213 }
72214}
72215#[doc = "Transpose elements"]
72216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u8)"]
72217#[inline(always)]
72218#[target_feature(enable = "neon")]
72219#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72220#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72221#[cfg_attr(
72222 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72223 assert_instr(trn1)
72224)]
72225#[cfg_attr(
72226 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72227 assert_instr(trn2)
72228)]
72229#[cfg_attr(
72230 not(target_arch = "arm"),
72231 stable(feature = "neon_intrinsics", since = "1.59.0")
72232)]
72233#[cfg_attr(
72234 target_arch = "arm",
72235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72236)]
72237pub fn vtrn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
72238 unsafe {
72239 let a1: uint8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
72240 let b1: uint8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
72241 transmute((a1, b1))
72242 }
72243}
72244#[doc = "Transpose elements"]
72245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u8)"]
72246#[inline(always)]
72247#[target_feature(enable = "neon")]
72248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72250#[cfg_attr(
72251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72252 assert_instr(trn1)
72253)]
72254#[cfg_attr(
72255 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72256 assert_instr(trn2)
72257)]
72258#[cfg_attr(
72259 not(target_arch = "arm"),
72260 stable(feature = "neon_intrinsics", since = "1.59.0")
72261)]
72262#[cfg_attr(
72263 target_arch = "arm",
72264 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72265)]
72266pub fn vtrnq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
72267 unsafe {
72268 let a1: uint8x16_t = simd_shuffle!(
72269 a,
72270 b,
72271 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
72272 );
72273 let b1: uint8x16_t = simd_shuffle!(
72274 a,
72275 b,
72276 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
72277 );
72278 transmute((a1, b1))
72279 }
72280}
72281#[doc = "Transpose elements"]
72282#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u16)"]
72283#[inline(always)]
72284#[target_feature(enable = "neon")]
72285#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72286#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72287#[cfg_attr(
72288 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72289 assert_instr(trn1)
72290)]
72291#[cfg_attr(
72292 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72293 assert_instr(trn2)
72294)]
72295#[cfg_attr(
72296 not(target_arch = "arm"),
72297 stable(feature = "neon_intrinsics", since = "1.59.0")
72298)]
72299#[cfg_attr(
72300 target_arch = "arm",
72301 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72302)]
72303pub fn vtrn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
72304 unsafe {
72305 let a1: uint16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
72306 let b1: uint16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
72307 transmute((a1, b1))
72308 }
72309}
72310#[doc = "Transpose elements"]
72311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u16)"]
72312#[inline(always)]
72313#[target_feature(enable = "neon")]
72314#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72315#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72316#[cfg_attr(
72317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72318 assert_instr(trn1)
72319)]
72320#[cfg_attr(
72321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72322 assert_instr(trn2)
72323)]
72324#[cfg_attr(
72325 not(target_arch = "arm"),
72326 stable(feature = "neon_intrinsics", since = "1.59.0")
72327)]
72328#[cfg_attr(
72329 target_arch = "arm",
72330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72331)]
72332pub fn vtrnq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
72333 unsafe {
72334 let a1: uint16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
72335 let b1: uint16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
72336 transmute((a1, b1))
72337 }
72338}
72339#[doc = "Transpose elements"]
72340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u32)"]
72341#[inline(always)]
72342#[target_feature(enable = "neon")]
72343#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72344#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72345#[cfg_attr(
72346 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72347 assert_instr(trn1)
72348)]
72349#[cfg_attr(
72350 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72351 assert_instr(trn2)
72352)]
72353#[cfg_attr(
72354 not(target_arch = "arm"),
72355 stable(feature = "neon_intrinsics", since = "1.59.0")
72356)]
72357#[cfg_attr(
72358 target_arch = "arm",
72359 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72360)]
72361pub fn vtrnq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
72362 unsafe {
72363 let a1: uint32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
72364 let b1: uint32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
72365 transmute((a1, b1))
72366 }
72367}
72368#[doc = "Transpose elements"]
72369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_p8)"]
72370#[inline(always)]
72371#[target_feature(enable = "neon")]
72372#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72373#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72374#[cfg_attr(
72375 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72376 assert_instr(trn1)
72377)]
72378#[cfg_attr(
72379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72380 assert_instr(trn2)
72381)]
72382#[cfg_attr(
72383 not(target_arch = "arm"),
72384 stable(feature = "neon_intrinsics", since = "1.59.0")
72385)]
72386#[cfg_attr(
72387 target_arch = "arm",
72388 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72389)]
72390pub fn vtrn_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
72391 unsafe {
72392 let a1: poly8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
72393 let b1: poly8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
72394 transmute((a1, b1))
72395 }
72396}
72397#[doc = "Transpose elements"]
72398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_p8)"]
72399#[inline(always)]
72400#[target_feature(enable = "neon")]
72401#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72402#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72403#[cfg_attr(
72404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72405 assert_instr(trn1)
72406)]
72407#[cfg_attr(
72408 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72409 assert_instr(trn2)
72410)]
72411#[cfg_attr(
72412 not(target_arch = "arm"),
72413 stable(feature = "neon_intrinsics", since = "1.59.0")
72414)]
72415#[cfg_attr(
72416 target_arch = "arm",
72417 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72418)]
72419pub fn vtrnq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
72420 unsafe {
72421 let a1: poly8x16_t = simd_shuffle!(
72422 a,
72423 b,
72424 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
72425 );
72426 let b1: poly8x16_t = simd_shuffle!(
72427 a,
72428 b,
72429 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
72430 );
72431 transmute((a1, b1))
72432 }
72433}
72434#[doc = "Transpose elements"]
72435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_p16)"]
72436#[inline(always)]
72437#[target_feature(enable = "neon")]
72438#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72440#[cfg_attr(
72441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72442 assert_instr(trn1)
72443)]
72444#[cfg_attr(
72445 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72446 assert_instr(trn2)
72447)]
72448#[cfg_attr(
72449 not(target_arch = "arm"),
72450 stable(feature = "neon_intrinsics", since = "1.59.0")
72451)]
72452#[cfg_attr(
72453 target_arch = "arm",
72454 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72455)]
72456pub fn vtrn_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
72457 unsafe {
72458 let a1: poly16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
72459 let b1: poly16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
72460 transmute((a1, b1))
72461 }
72462}
72463#[doc = "Transpose elements"]
72464#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_p16)"]
72465#[inline(always)]
72466#[target_feature(enable = "neon")]
72467#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72468#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72469#[cfg_attr(
72470 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72471 assert_instr(trn1)
72472)]
72473#[cfg_attr(
72474 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72475 assert_instr(trn2)
72476)]
72477#[cfg_attr(
72478 not(target_arch = "arm"),
72479 stable(feature = "neon_intrinsics", since = "1.59.0")
72480)]
72481#[cfg_attr(
72482 target_arch = "arm",
72483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72484)]
72485pub fn vtrnq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
72486 unsafe {
72487 let a1: poly16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
72488 let b1: poly16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
72489 transmute((a1, b1))
72490 }
72491}
72492#[doc = "Signed compare bitwise Test bits nonzero"]
72493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s8)"]
72494#[inline(always)]
72495#[target_feature(enable = "neon")]
72496#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72497#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72498#[cfg_attr(
72499 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72500 assert_instr(cmtst)
72501)]
72502#[cfg_attr(
72503 not(target_arch = "arm"),
72504 stable(feature = "neon_intrinsics", since = "1.59.0")
72505)]
72506#[cfg_attr(
72507 target_arch = "arm",
72508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72509)]
72510pub fn vtst_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
72511 unsafe {
72512 let c: int8x8_t = simd_and(a, b);
72513 let d: i8x8 = i8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72514 simd_ne(c, transmute(d))
72515 }
72516}
72517#[doc = "Signed compare bitwise Test bits nonzero"]
72518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s8)"]
72519#[inline(always)]
72520#[target_feature(enable = "neon")]
72521#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72522#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72523#[cfg_attr(
72524 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72525 assert_instr(cmtst)
72526)]
72527#[cfg_attr(
72528 not(target_arch = "arm"),
72529 stable(feature = "neon_intrinsics", since = "1.59.0")
72530)]
72531#[cfg_attr(
72532 target_arch = "arm",
72533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72534)]
72535pub fn vtstq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
72536 unsafe {
72537 let c: int8x16_t = simd_and(a, b);
72538 let d: i8x16 = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
72539 simd_ne(c, transmute(d))
72540 }
72541}
72542#[doc = "Signed compare bitwise Test bits nonzero"]
72543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s16)"]
72544#[inline(always)]
72545#[target_feature(enable = "neon")]
72546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72547#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72548#[cfg_attr(
72549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72550 assert_instr(cmtst)
72551)]
72552#[cfg_attr(
72553 not(target_arch = "arm"),
72554 stable(feature = "neon_intrinsics", since = "1.59.0")
72555)]
72556#[cfg_attr(
72557 target_arch = "arm",
72558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72559)]
72560pub fn vtst_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
72561 unsafe {
72562 let c: int16x4_t = simd_and(a, b);
72563 let d: i16x4 = i16x4::new(0, 0, 0, 0);
72564 simd_ne(c, transmute(d))
72565 }
72566}
72567#[doc = "Signed compare bitwise Test bits nonzero"]
72568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s16)"]
72569#[inline(always)]
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(vtst))]
72573#[cfg_attr(
72574 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72575 assert_instr(cmtst)
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 vtstq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
72586 unsafe {
72587 let c: int16x8_t = simd_and(a, b);
72588 let d: i16x8 = i16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72589 simd_ne(c, transmute(d))
72590 }
72591}
72592#[doc = "Signed compare bitwise Test bits nonzero"]
72593#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s32)"]
72594#[inline(always)]
72595#[target_feature(enable = "neon")]
72596#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72597#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72598#[cfg_attr(
72599 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72600 assert_instr(cmtst)
72601)]
72602#[cfg_attr(
72603 not(target_arch = "arm"),
72604 stable(feature = "neon_intrinsics", since = "1.59.0")
72605)]
72606#[cfg_attr(
72607 target_arch = "arm",
72608 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72609)]
72610pub fn vtst_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
72611 unsafe {
72612 let c: int32x2_t = simd_and(a, b);
72613 let d: i32x2 = i32x2::new(0, 0);
72614 simd_ne(c, transmute(d))
72615 }
72616}
72617#[doc = "Signed compare bitwise Test bits nonzero"]
72618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s32)"]
72619#[inline(always)]
72620#[target_feature(enable = "neon")]
72621#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72622#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72623#[cfg_attr(
72624 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72625 assert_instr(cmtst)
72626)]
72627#[cfg_attr(
72628 not(target_arch = "arm"),
72629 stable(feature = "neon_intrinsics", since = "1.59.0")
72630)]
72631#[cfg_attr(
72632 target_arch = "arm",
72633 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72634)]
72635pub fn vtstq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
72636 unsafe {
72637 let c: int32x4_t = simd_and(a, b);
72638 let d: i32x4 = i32x4::new(0, 0, 0, 0);
72639 simd_ne(c, transmute(d))
72640 }
72641}
72642#[doc = "Signed compare bitwise Test bits nonzero"]
72643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_p8)"]
72644#[inline(always)]
72645#[target_feature(enable = "neon")]
72646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72647#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72648#[cfg_attr(
72649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72650 assert_instr(cmtst)
72651)]
72652#[cfg_attr(
72653 not(target_arch = "arm"),
72654 stable(feature = "neon_intrinsics", since = "1.59.0")
72655)]
72656#[cfg_attr(
72657 target_arch = "arm",
72658 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72659)]
72660pub fn vtst_p8(a: poly8x8_t, b: poly8x8_t) -> uint8x8_t {
72661 unsafe {
72662 let c: poly8x8_t = simd_and(a, b);
72663 let d: i8x8 = i8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72664 simd_ne(c, transmute(d))
72665 }
72666}
72667#[doc = "Signed compare bitwise Test bits nonzero"]
72668#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_p8)"]
72669#[inline(always)]
72670#[target_feature(enable = "neon")]
72671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72672#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72673#[cfg_attr(
72674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72675 assert_instr(cmtst)
72676)]
72677#[cfg_attr(
72678 not(target_arch = "arm"),
72679 stable(feature = "neon_intrinsics", since = "1.59.0")
72680)]
72681#[cfg_attr(
72682 target_arch = "arm",
72683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72684)]
72685pub fn vtstq_p8(a: poly8x16_t, b: poly8x16_t) -> uint8x16_t {
72686 unsafe {
72687 let c: poly8x16_t = simd_and(a, b);
72688 let d: i8x16 = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
72689 simd_ne(c, transmute(d))
72690 }
72691}
72692#[doc = "Signed compare bitwise Test bits nonzero"]
72693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_p16)"]
72694#[inline(always)]
72695#[target_feature(enable = "neon")]
72696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72697#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72698#[cfg_attr(
72699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72700 assert_instr(cmtst)
72701)]
72702#[cfg_attr(
72703 not(target_arch = "arm"),
72704 stable(feature = "neon_intrinsics", since = "1.59.0")
72705)]
72706#[cfg_attr(
72707 target_arch = "arm",
72708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72709)]
72710pub fn vtst_p16(a: poly16x4_t, b: poly16x4_t) -> uint16x4_t {
72711 unsafe {
72712 let c: poly16x4_t = simd_and(a, b);
72713 let d: i16x4 = i16x4::new(0, 0, 0, 0);
72714 simd_ne(c, transmute(d))
72715 }
72716}
72717#[doc = "Signed compare bitwise Test bits nonzero"]
72718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_p16)"]
72719#[inline(always)]
72720#[target_feature(enable = "neon")]
72721#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72722#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72723#[cfg_attr(
72724 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72725 assert_instr(cmtst)
72726)]
72727#[cfg_attr(
72728 not(target_arch = "arm"),
72729 stable(feature = "neon_intrinsics", since = "1.59.0")
72730)]
72731#[cfg_attr(
72732 target_arch = "arm",
72733 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72734)]
72735pub fn vtstq_p16(a: poly16x8_t, b: poly16x8_t) -> uint16x8_t {
72736 unsafe {
72737 let c: poly16x8_t = simd_and(a, b);
72738 let d: i16x8 = i16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72739 simd_ne(c, transmute(d))
72740 }
72741}
72742#[doc = "Unsigned compare bitwise Test bits nonzero"]
72743#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u8)"]
72744#[inline(always)]
72745#[target_feature(enable = "neon")]
72746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72748#[cfg_attr(
72749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72750 assert_instr(cmtst)
72751)]
72752#[cfg_attr(
72753 not(target_arch = "arm"),
72754 stable(feature = "neon_intrinsics", since = "1.59.0")
72755)]
72756#[cfg_attr(
72757 target_arch = "arm",
72758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72759)]
72760pub fn vtst_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
72761 unsafe {
72762 let c: uint8x8_t = simd_and(a, b);
72763 let d: u8x8 = u8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72764 simd_ne(c, transmute(d))
72765 }
72766}
72767#[doc = "Unsigned compare bitwise Test bits nonzero"]
72768#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u8)"]
72769#[inline(always)]
72770#[target_feature(enable = "neon")]
72771#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72772#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72773#[cfg_attr(
72774 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72775 assert_instr(cmtst)
72776)]
72777#[cfg_attr(
72778 not(target_arch = "arm"),
72779 stable(feature = "neon_intrinsics", since = "1.59.0")
72780)]
72781#[cfg_attr(
72782 target_arch = "arm",
72783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72784)]
72785pub fn vtstq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
72786 unsafe {
72787 let c: uint8x16_t = simd_and(a, b);
72788 let d: u8x16 = u8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
72789 simd_ne(c, transmute(d))
72790 }
72791}
72792#[doc = "Unsigned compare bitwise Test bits nonzero"]
72793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u16)"]
72794#[inline(always)]
72795#[target_feature(enable = "neon")]
72796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72798#[cfg_attr(
72799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72800 assert_instr(cmtst)
72801)]
72802#[cfg_attr(
72803 not(target_arch = "arm"),
72804 stable(feature = "neon_intrinsics", since = "1.59.0")
72805)]
72806#[cfg_attr(
72807 target_arch = "arm",
72808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72809)]
72810pub fn vtst_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
72811 unsafe {
72812 let c: uint16x4_t = simd_and(a, b);
72813 let d: u16x4 = u16x4::new(0, 0, 0, 0);
72814 simd_ne(c, transmute(d))
72815 }
72816}
72817#[doc = "Unsigned compare bitwise Test bits nonzero"]
72818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u16)"]
72819#[inline(always)]
72820#[target_feature(enable = "neon")]
72821#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72822#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72823#[cfg_attr(
72824 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72825 assert_instr(cmtst)
72826)]
72827#[cfg_attr(
72828 not(target_arch = "arm"),
72829 stable(feature = "neon_intrinsics", since = "1.59.0")
72830)]
72831#[cfg_attr(
72832 target_arch = "arm",
72833 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72834)]
72835pub fn vtstq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
72836 unsafe {
72837 let c: uint16x8_t = simd_and(a, b);
72838 let d: u16x8 = u16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72839 simd_ne(c, transmute(d))
72840 }
72841}
72842#[doc = "Unsigned compare bitwise Test bits nonzero"]
72843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u32)"]
72844#[inline(always)]
72845#[target_feature(enable = "neon")]
72846#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72847#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72848#[cfg_attr(
72849 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72850 assert_instr(cmtst)
72851)]
72852#[cfg_attr(
72853 not(target_arch = "arm"),
72854 stable(feature = "neon_intrinsics", since = "1.59.0")
72855)]
72856#[cfg_attr(
72857 target_arch = "arm",
72858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72859)]
72860pub fn vtst_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
72861 unsafe {
72862 let c: uint32x2_t = simd_and(a, b);
72863 let d: u32x2 = u32x2::new(0, 0);
72864 simd_ne(c, transmute(d))
72865 }
72866}
72867#[doc = "Unsigned compare bitwise Test bits nonzero"]
72868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u32)"]
72869#[inline(always)]
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(vtst))]
72873#[cfg_attr(
72874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72875 assert_instr(cmtst)
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 vtstq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
72886 unsafe {
72887 let c: uint32x4_t = simd_and(a, b);
72888 let d: u32x4 = u32x4::new(0, 0, 0, 0);
72889 simd_ne(c, transmute(d))
72890 }
72891}
72892#[doc = "Dot product index form with unsigned and signed integers"]
72893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_lane_s32)"]
72894#[inline(always)]
72895#[cfg(target_endian = "little")]
72896#[target_feature(enable = "neon,i8mm")]
72897#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72898#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
72899#[cfg_attr(
72900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72901 assert_instr(usdot, LANE = 0)
72902)]
72903#[rustc_legacy_const_generics(3)]
72904#[cfg_attr(
72905 not(target_arch = "arm"),
72906 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72907)]
72908#[cfg_attr(
72909 target_arch = "arm",
72910 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72911)]
72912pub fn vusdot_lane_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
72913 static_assert_uimm_bits!(LANE, 1);
72914 unsafe {
72915 let c: int32x2_t = transmute(c);
72916 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
72917 vusdot_s32(a, b, transmute(c))
72918 }
72919}
72920#[doc = "Dot product index form with unsigned and signed integers"]
72921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_lane_s32)"]
72922#[inline(always)]
72923#[cfg(target_endian = "big")]
72924#[target_feature(enable = "neon,i8mm")]
72925#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72926#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
72927#[cfg_attr(
72928 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72929 assert_instr(usdot, LANE = 0)
72930)]
72931#[rustc_legacy_const_generics(3)]
72932#[cfg_attr(
72933 not(target_arch = "arm"),
72934 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72935)]
72936#[cfg_attr(
72937 target_arch = "arm",
72938 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72939)]
72940pub fn vusdot_lane_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
72941 static_assert_uimm_bits!(LANE, 1);
72942 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
72943 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
72944 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
72945 unsafe {
72946 let c: int32x2_t = transmute(c);
72947 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
72948 let ret_val: int32x2_t = vusdot_s32(a, b, transmute(c));
72949 simd_shuffle!(ret_val, ret_val, [1, 0])
72950 }
72951}
72952#[doc = "Dot product index form with unsigned and signed integers"]
72953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_lane_s32)"]
72954#[inline(always)]
72955#[cfg(target_endian = "little")]
72956#[target_feature(enable = "neon,i8mm")]
72957#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72958#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
72959#[cfg_attr(
72960 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72961 assert_instr(usdot, LANE = 0)
72962)]
72963#[rustc_legacy_const_generics(3)]
72964#[cfg_attr(
72965 not(target_arch = "arm"),
72966 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72967)]
72968#[cfg_attr(
72969 target_arch = "arm",
72970 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72971)]
72972pub fn vusdotq_lane_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x8_t) -> int32x4_t {
72973 static_assert_uimm_bits!(LANE, 1);
72974 unsafe {
72975 let c: int32x2_t = transmute(c);
72976 let c: int32x4_t =
72977 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
72978 vusdotq_s32(a, b, transmute(c))
72979 }
72980}
72981#[doc = "Dot product index form with unsigned and signed integers"]
72982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_lane_s32)"]
72983#[inline(always)]
72984#[cfg(target_endian = "big")]
72985#[target_feature(enable = "neon,i8mm")]
72986#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
72988#[cfg_attr(
72989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72990 assert_instr(usdot, LANE = 0)
72991)]
72992#[rustc_legacy_const_generics(3)]
72993#[cfg_attr(
72994 not(target_arch = "arm"),
72995 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72996)]
72997#[cfg_attr(
72998 target_arch = "arm",
72999 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73000)]
73001pub fn vusdotq_lane_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x8_t) -> int32x4_t {
73002 static_assert_uimm_bits!(LANE, 1);
73003 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
73004 let b: uint8x16_t =
73005 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
73006 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
73007 unsafe {
73008 let c: int32x2_t = transmute(c);
73009 let c: int32x4_t =
73010 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
73011 let ret_val: int32x4_t = vusdotq_s32(a, b, transmute(c));
73012 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
73013 }
73014}
73015#[doc = "Dot product index form with unsigned and signed integers"]
73016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_laneq_s32)"]
73017#[inline(always)]
73018#[cfg(target_endian = "little")]
73019#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73020#[target_feature(enable = "neon,i8mm")]
73021#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 3))]
73022#[cfg_attr(
73023 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73024 assert_instr(usdot, LANE = 3)
73025)]
73026#[rustc_legacy_const_generics(3)]
73027#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
73028pub fn vusdot_laneq_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x16_t) -> int32x2_t {
73029 static_assert_uimm_bits!(LANE, 2);
73030 unsafe {
73031 let c: int32x4_t = transmute(c);
73032 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
73033 vusdot_s32(a, b, transmute(c))
73034 }
73035}
73036#[doc = "Dot product index form with unsigned and signed integers"]
73037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_laneq_s32)"]
73038#[inline(always)]
73039#[cfg(target_endian = "big")]
73040#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73041#[target_feature(enable = "neon,i8mm")]
73042#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 3))]
73043#[cfg_attr(
73044 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73045 assert_instr(usdot, LANE = 3)
73046)]
73047#[rustc_legacy_const_generics(3)]
73048#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
73049pub fn vusdot_laneq_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x16_t) -> int32x2_t {
73050 static_assert_uimm_bits!(LANE, 2);
73051 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
73052 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
73053 let c: int8x16_t =
73054 unsafe { simd_shuffle!(c, c, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
73055 unsafe {
73056 let c: int32x4_t = transmute(c);
73057 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
73058 let ret_val: int32x2_t = vusdot_s32(a, b, transmute(c));
73059 simd_shuffle!(ret_val, ret_val, [1, 0])
73060 }
73061}
73062#[doc = "Dot product index form with unsigned and signed integers"]
73063#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_laneq_s32)"]
73064#[inline(always)]
73065#[cfg(target_endian = "little")]
73066#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73067#[target_feature(enable = "neon,i8mm")]
73068#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 3))]
73069#[cfg_attr(
73070 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73071 assert_instr(usdot, LANE = 3)
73072)]
73073#[rustc_legacy_const_generics(3)]
73074#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
73075pub fn vusdotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
73076 static_assert_uimm_bits!(LANE, 2);
73077 unsafe {
73078 let c: int32x4_t = transmute(c);
73079 let c: int32x4_t =
73080 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
73081 vusdotq_s32(a, b, transmute(c))
73082 }
73083}
73084#[doc = "Dot product index form with unsigned and signed integers"]
73085#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_laneq_s32)"]
73086#[inline(always)]
73087#[cfg(target_endian = "big")]
73088#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73089#[target_feature(enable = "neon,i8mm")]
73090#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 3))]
73091#[cfg_attr(
73092 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73093 assert_instr(usdot, LANE = 3)
73094)]
73095#[rustc_legacy_const_generics(3)]
73096#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
73097pub fn vusdotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
73098 static_assert_uimm_bits!(LANE, 2);
73099 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
73100 let b: uint8x16_t =
73101 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
73102 let c: int8x16_t =
73103 unsafe { simd_shuffle!(c, c, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
73104 unsafe {
73105 let c: int32x4_t = transmute(c);
73106 let c: int32x4_t =
73107 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
73108 let ret_val: int32x4_t = vusdotq_s32(a, b, transmute(c));
73109 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
73110 }
73111}
73112#[doc = "Dot product vector form with unsigned and signed integers"]
73113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_s32)"]
73114#[inline(always)]
73115#[target_feature(enable = "neon,i8mm")]
73116#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73117#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot))]
73118#[cfg_attr(
73119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73120 assert_instr(usdot)
73121)]
73122#[cfg_attr(
73123 not(target_arch = "arm"),
73124 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
73125)]
73126#[cfg_attr(
73127 target_arch = "arm",
73128 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73129)]
73130pub fn vusdot_s32(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
73131 unsafe extern "unadjusted" {
73132 #[cfg_attr(
73133 any(target_arch = "aarch64", target_arch = "arm64ec"),
73134 link_name = "llvm.aarch64.neon.usdot.v2i32.v8i8"
73135 )]
73136 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usdot.v2i32.v8i8")]
73137 fn _vusdot_s32(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t;
73138 }
73139 unsafe { _vusdot_s32(a, b, c) }
73140}
73141#[doc = "Dot product vector form with unsigned and signed integers"]
73142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_s32)"]
73143#[inline(always)]
73144#[target_feature(enable = "neon,i8mm")]
73145#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73146#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot))]
73147#[cfg_attr(
73148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73149 assert_instr(usdot)
73150)]
73151#[cfg_attr(
73152 not(target_arch = "arm"),
73153 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
73154)]
73155#[cfg_attr(
73156 target_arch = "arm",
73157 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73158)]
73159pub fn vusdotq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
73160 unsafe extern "unadjusted" {
73161 #[cfg_attr(
73162 any(target_arch = "aarch64", target_arch = "arm64ec"),
73163 link_name = "llvm.aarch64.neon.usdot.v4i32.v16i8"
73164 )]
73165 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usdot.v4i32.v16i8")]
73166 fn _vusdotq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t;
73167 }
73168 unsafe { _vusdotq_s32(a, b, c) }
73169}
73170#[doc = "Unsigned and signed 8-bit integer matrix multiply-accumulate"]
73171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusmmlaq_s32)"]
73172#[inline(always)]
73173#[target_feature(enable = "neon,i8mm")]
73174#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
73175#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
73176#[cfg_attr(
73177 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73178 assert_instr(usmmla)
73179)]
73180#[cfg_attr(
73181 not(target_arch = "arm"),
73182 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
73183)]
73184#[cfg_attr(
73185 target_arch = "arm",
73186 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73187)]
73188pub fn vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
73189 unsafe extern "unadjusted" {
73190 #[cfg_attr(
73191 any(target_arch = "aarch64", target_arch = "arm64ec"),
73192 link_name = "llvm.aarch64.neon.usmmla.v4i32.v16i8"
73193 )]
73194 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usmmla.v4i32.v16i8")]
73195 fn _vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t;
73196 }
73197 unsafe { _vusmmlaq_s32(a, b, c) }
73198}
73199#[doc = "Unzip vectors"]
73200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_f16)"]
73201#[inline(always)]
73202#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73203#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73204#[cfg_attr(
73205 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73206 assert_instr(uzp1)
73207)]
73208#[cfg_attr(
73209 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73210 assert_instr(uzp2)
73211)]
73212#[target_feature(enable = "neon,fp16")]
73213#[cfg_attr(
73214 not(target_arch = "arm"),
73215 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
73216)]
73217#[cfg_attr(
73218 target_arch = "arm",
73219 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73220)]
73221#[cfg(not(target_arch = "arm64ec"))]
73222pub fn vuzp_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
73223 unsafe {
73224 let a0: float16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73225 let b0: float16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73226 transmute((a0, b0))
73227 }
73228}
73229#[doc = "Unzip vectors"]
73230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_f16)"]
73231#[inline(always)]
73232#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73233#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73234#[cfg_attr(
73235 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73236 assert_instr(uzp1)
73237)]
73238#[cfg_attr(
73239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73240 assert_instr(uzp2)
73241)]
73242#[target_feature(enable = "neon,fp16")]
73243#[cfg_attr(
73244 not(target_arch = "arm"),
73245 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
73246)]
73247#[cfg_attr(
73248 target_arch = "arm",
73249 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73250)]
73251#[cfg(not(target_arch = "arm64ec"))]
73252pub fn vuzpq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
73253 unsafe {
73254 let a0: float16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73255 let b0: float16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73256 transmute((a0, b0))
73257 }
73258}
73259#[doc = "Unzip vectors"]
73260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_f32)"]
73261#[inline(always)]
73262#[target_feature(enable = "neon")]
73263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73264#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73265#[cfg_attr(
73266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73267 assert_instr(zip1)
73268)]
73269#[cfg_attr(
73270 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73271 assert_instr(zip2)
73272)]
73273#[cfg_attr(
73274 not(target_arch = "arm"),
73275 stable(feature = "neon_intrinsics", since = "1.59.0")
73276)]
73277#[cfg_attr(
73278 target_arch = "arm",
73279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73280)]
73281pub fn vuzp_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
73282 unsafe {
73283 let a0: float32x2_t = simd_shuffle!(a, b, [0, 2]);
73284 let b0: float32x2_t = simd_shuffle!(a, b, [1, 3]);
73285 transmute((a0, b0))
73286 }
73287}
73288#[doc = "Unzip vectors"]
73289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s32)"]
73290#[inline(always)]
73291#[target_feature(enable = "neon")]
73292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73293#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73294#[cfg_attr(
73295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73296 assert_instr(zip1)
73297)]
73298#[cfg_attr(
73299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73300 assert_instr(zip2)
73301)]
73302#[cfg_attr(
73303 not(target_arch = "arm"),
73304 stable(feature = "neon_intrinsics", since = "1.59.0")
73305)]
73306#[cfg_attr(
73307 target_arch = "arm",
73308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73309)]
73310pub fn vuzp_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
73311 unsafe {
73312 let a0: int32x2_t = simd_shuffle!(a, b, [0, 2]);
73313 let b0: int32x2_t = simd_shuffle!(a, b, [1, 3]);
73314 transmute((a0, b0))
73315 }
73316}
73317#[doc = "Unzip vectors"]
73318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u32)"]
73319#[inline(always)]
73320#[target_feature(enable = "neon")]
73321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73322#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73323#[cfg_attr(
73324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73325 assert_instr(zip1)
73326)]
73327#[cfg_attr(
73328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73329 assert_instr(zip2)
73330)]
73331#[cfg_attr(
73332 not(target_arch = "arm"),
73333 stable(feature = "neon_intrinsics", since = "1.59.0")
73334)]
73335#[cfg_attr(
73336 target_arch = "arm",
73337 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73338)]
73339pub fn vuzp_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
73340 unsafe {
73341 let a0: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
73342 let b0: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
73343 transmute((a0, b0))
73344 }
73345}
73346#[doc = "Unzip vectors"]
73347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_f32)"]
73348#[inline(always)]
73349#[target_feature(enable = "neon")]
73350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73351#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73352#[cfg_attr(
73353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73354 assert_instr(uzp1)
73355)]
73356#[cfg_attr(
73357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73358 assert_instr(uzp2)
73359)]
73360#[cfg_attr(
73361 not(target_arch = "arm"),
73362 stable(feature = "neon_intrinsics", since = "1.59.0")
73363)]
73364#[cfg_attr(
73365 target_arch = "arm",
73366 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73367)]
73368pub fn vuzpq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
73369 unsafe {
73370 let a0: float32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73371 let b0: float32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73372 transmute((a0, b0))
73373 }
73374}
73375#[doc = "Unzip vectors"]
73376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s8)"]
73377#[inline(always)]
73378#[target_feature(enable = "neon")]
73379#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73380#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73381#[cfg_attr(
73382 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73383 assert_instr(uzp1)
73384)]
73385#[cfg_attr(
73386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73387 assert_instr(uzp2)
73388)]
73389#[cfg_attr(
73390 not(target_arch = "arm"),
73391 stable(feature = "neon_intrinsics", since = "1.59.0")
73392)]
73393#[cfg_attr(
73394 target_arch = "arm",
73395 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73396)]
73397pub fn vuzp_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
73398 unsafe {
73399 let a0: int8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73400 let b0: int8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73401 transmute((a0, b0))
73402 }
73403}
73404#[doc = "Unzip vectors"]
73405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s8)"]
73406#[inline(always)]
73407#[target_feature(enable = "neon")]
73408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73410#[cfg_attr(
73411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73412 assert_instr(uzp1)
73413)]
73414#[cfg_attr(
73415 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73416 assert_instr(uzp2)
73417)]
73418#[cfg_attr(
73419 not(target_arch = "arm"),
73420 stable(feature = "neon_intrinsics", since = "1.59.0")
73421)]
73422#[cfg_attr(
73423 target_arch = "arm",
73424 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73425)]
73426pub fn vuzpq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
73427 unsafe {
73428 let a0: int8x16_t = simd_shuffle!(
73429 a,
73430 b,
73431 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
73432 );
73433 let b0: int8x16_t = simd_shuffle!(
73434 a,
73435 b,
73436 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
73437 );
73438 transmute((a0, b0))
73439 }
73440}
73441#[doc = "Unzip vectors"]
73442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s16)"]
73443#[inline(always)]
73444#[target_feature(enable = "neon")]
73445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73446#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73447#[cfg_attr(
73448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73449 assert_instr(uzp1)
73450)]
73451#[cfg_attr(
73452 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73453 assert_instr(uzp2)
73454)]
73455#[cfg_attr(
73456 not(target_arch = "arm"),
73457 stable(feature = "neon_intrinsics", since = "1.59.0")
73458)]
73459#[cfg_attr(
73460 target_arch = "arm",
73461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73462)]
73463pub fn vuzp_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
73464 unsafe {
73465 let a0: int16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73466 let b0: int16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73467 transmute((a0, b0))
73468 }
73469}
73470#[doc = "Unzip vectors"]
73471#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s16)"]
73472#[inline(always)]
73473#[target_feature(enable = "neon")]
73474#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73475#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73476#[cfg_attr(
73477 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73478 assert_instr(uzp1)
73479)]
73480#[cfg_attr(
73481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73482 assert_instr(uzp2)
73483)]
73484#[cfg_attr(
73485 not(target_arch = "arm"),
73486 stable(feature = "neon_intrinsics", since = "1.59.0")
73487)]
73488#[cfg_attr(
73489 target_arch = "arm",
73490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73491)]
73492pub fn vuzpq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
73493 unsafe {
73494 let a0: int16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73495 let b0: int16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73496 transmute((a0, b0))
73497 }
73498}
73499#[doc = "Unzip vectors"]
73500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s32)"]
73501#[inline(always)]
73502#[target_feature(enable = "neon")]
73503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73504#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73505#[cfg_attr(
73506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73507 assert_instr(uzp1)
73508)]
73509#[cfg_attr(
73510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73511 assert_instr(uzp2)
73512)]
73513#[cfg_attr(
73514 not(target_arch = "arm"),
73515 stable(feature = "neon_intrinsics", since = "1.59.0")
73516)]
73517#[cfg_attr(
73518 target_arch = "arm",
73519 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73520)]
73521pub fn vuzpq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
73522 unsafe {
73523 let a0: int32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73524 let b0: int32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73525 transmute((a0, b0))
73526 }
73527}
73528#[doc = "Unzip vectors"]
73529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u8)"]
73530#[inline(always)]
73531#[target_feature(enable = "neon")]
73532#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73533#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73534#[cfg_attr(
73535 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73536 assert_instr(uzp1)
73537)]
73538#[cfg_attr(
73539 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73540 assert_instr(uzp2)
73541)]
73542#[cfg_attr(
73543 not(target_arch = "arm"),
73544 stable(feature = "neon_intrinsics", since = "1.59.0")
73545)]
73546#[cfg_attr(
73547 target_arch = "arm",
73548 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73549)]
73550pub fn vuzp_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
73551 unsafe {
73552 let a0: uint8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73553 let b0: uint8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73554 transmute((a0, b0))
73555 }
73556}
73557#[doc = "Unzip vectors"]
73558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u8)"]
73559#[inline(always)]
73560#[target_feature(enable = "neon")]
73561#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73562#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73563#[cfg_attr(
73564 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73565 assert_instr(uzp1)
73566)]
73567#[cfg_attr(
73568 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73569 assert_instr(uzp2)
73570)]
73571#[cfg_attr(
73572 not(target_arch = "arm"),
73573 stable(feature = "neon_intrinsics", since = "1.59.0")
73574)]
73575#[cfg_attr(
73576 target_arch = "arm",
73577 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73578)]
73579pub fn vuzpq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
73580 unsafe {
73581 let a0: uint8x16_t = simd_shuffle!(
73582 a,
73583 b,
73584 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
73585 );
73586 let b0: uint8x16_t = simd_shuffle!(
73587 a,
73588 b,
73589 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
73590 );
73591 transmute((a0, b0))
73592 }
73593}
73594#[doc = "Unzip vectors"]
73595#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u16)"]
73596#[inline(always)]
73597#[target_feature(enable = "neon")]
73598#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73599#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73600#[cfg_attr(
73601 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73602 assert_instr(uzp1)
73603)]
73604#[cfg_attr(
73605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73606 assert_instr(uzp2)
73607)]
73608#[cfg_attr(
73609 not(target_arch = "arm"),
73610 stable(feature = "neon_intrinsics", since = "1.59.0")
73611)]
73612#[cfg_attr(
73613 target_arch = "arm",
73614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73615)]
73616pub fn vuzp_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
73617 unsafe {
73618 let a0: uint16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73619 let b0: uint16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73620 transmute((a0, b0))
73621 }
73622}
73623#[doc = "Unzip vectors"]
73624#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u16)"]
73625#[inline(always)]
73626#[target_feature(enable = "neon")]
73627#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73628#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73629#[cfg_attr(
73630 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73631 assert_instr(uzp1)
73632)]
73633#[cfg_attr(
73634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73635 assert_instr(uzp2)
73636)]
73637#[cfg_attr(
73638 not(target_arch = "arm"),
73639 stable(feature = "neon_intrinsics", since = "1.59.0")
73640)]
73641#[cfg_attr(
73642 target_arch = "arm",
73643 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73644)]
73645pub fn vuzpq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
73646 unsafe {
73647 let a0: uint16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73648 let b0: uint16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73649 transmute((a0, b0))
73650 }
73651}
73652#[doc = "Unzip vectors"]
73653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u32)"]
73654#[inline(always)]
73655#[target_feature(enable = "neon")]
73656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73657#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73658#[cfg_attr(
73659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73660 assert_instr(uzp1)
73661)]
73662#[cfg_attr(
73663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73664 assert_instr(uzp2)
73665)]
73666#[cfg_attr(
73667 not(target_arch = "arm"),
73668 stable(feature = "neon_intrinsics", since = "1.59.0")
73669)]
73670#[cfg_attr(
73671 target_arch = "arm",
73672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73673)]
73674pub fn vuzpq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
73675 unsafe {
73676 let a0: uint32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73677 let b0: uint32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73678 transmute((a0, b0))
73679 }
73680}
73681#[doc = "Unzip vectors"]
73682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_p8)"]
73683#[inline(always)]
73684#[target_feature(enable = "neon")]
73685#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73686#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73687#[cfg_attr(
73688 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73689 assert_instr(uzp1)
73690)]
73691#[cfg_attr(
73692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73693 assert_instr(uzp2)
73694)]
73695#[cfg_attr(
73696 not(target_arch = "arm"),
73697 stable(feature = "neon_intrinsics", since = "1.59.0")
73698)]
73699#[cfg_attr(
73700 target_arch = "arm",
73701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73702)]
73703pub fn vuzp_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
73704 unsafe {
73705 let a0: poly8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73706 let b0: poly8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73707 transmute((a0, b0))
73708 }
73709}
73710#[doc = "Unzip vectors"]
73711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_p8)"]
73712#[inline(always)]
73713#[target_feature(enable = "neon")]
73714#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73715#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73716#[cfg_attr(
73717 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73718 assert_instr(uzp1)
73719)]
73720#[cfg_attr(
73721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73722 assert_instr(uzp2)
73723)]
73724#[cfg_attr(
73725 not(target_arch = "arm"),
73726 stable(feature = "neon_intrinsics", since = "1.59.0")
73727)]
73728#[cfg_attr(
73729 target_arch = "arm",
73730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73731)]
73732pub fn vuzpq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
73733 unsafe {
73734 let a0: poly8x16_t = simd_shuffle!(
73735 a,
73736 b,
73737 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
73738 );
73739 let b0: poly8x16_t = simd_shuffle!(
73740 a,
73741 b,
73742 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
73743 );
73744 transmute((a0, b0))
73745 }
73746}
73747#[doc = "Unzip vectors"]
73748#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_p16)"]
73749#[inline(always)]
73750#[target_feature(enable = "neon")]
73751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73753#[cfg_attr(
73754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73755 assert_instr(uzp1)
73756)]
73757#[cfg_attr(
73758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73759 assert_instr(uzp2)
73760)]
73761#[cfg_attr(
73762 not(target_arch = "arm"),
73763 stable(feature = "neon_intrinsics", since = "1.59.0")
73764)]
73765#[cfg_attr(
73766 target_arch = "arm",
73767 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73768)]
73769pub fn vuzp_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
73770 unsafe {
73771 let a0: poly16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73772 let b0: poly16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73773 transmute((a0, b0))
73774 }
73775}
73776#[doc = "Unzip vectors"]
73777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_p16)"]
73778#[inline(always)]
73779#[target_feature(enable = "neon")]
73780#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73781#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73782#[cfg_attr(
73783 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73784 assert_instr(uzp1)
73785)]
73786#[cfg_attr(
73787 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73788 assert_instr(uzp2)
73789)]
73790#[cfg_attr(
73791 not(target_arch = "arm"),
73792 stable(feature = "neon_intrinsics", since = "1.59.0")
73793)]
73794#[cfg_attr(
73795 target_arch = "arm",
73796 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73797)]
73798pub fn vuzpq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
73799 unsafe {
73800 let a0: poly16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73801 let b0: poly16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73802 transmute((a0, b0))
73803 }
73804}
73805#[doc = "Zip vectors"]
73806#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_f16)"]
73807#[inline(always)]
73808#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73809#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
73810#[cfg_attr(
73811 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73812 assert_instr(zip1)
73813)]
73814#[cfg_attr(
73815 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73816 assert_instr(zip2)
73817)]
73818#[target_feature(enable = "neon,fp16")]
73819#[cfg_attr(
73820 not(target_arch = "arm"),
73821 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
73822)]
73823#[cfg_attr(
73824 target_arch = "arm",
73825 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73826)]
73827#[cfg(not(target_arch = "arm64ec"))]
73828pub fn vzip_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
73829 unsafe {
73830 let a0: float16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
73831 let b0: float16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
73832 transmute((a0, b0))
73833 }
73834}
73835#[doc = "Zip vectors"]
73836#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_f16)"]
73837#[inline(always)]
73838#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73839#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
73840#[cfg_attr(
73841 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73842 assert_instr(zip1)
73843)]
73844#[cfg_attr(
73845 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73846 assert_instr(zip2)
73847)]
73848#[target_feature(enable = "neon,fp16")]
73849#[cfg_attr(
73850 not(target_arch = "arm"),
73851 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
73852)]
73853#[cfg_attr(
73854 target_arch = "arm",
73855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73856)]
73857#[cfg(not(target_arch = "arm64ec"))]
73858pub fn vzipq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
73859 unsafe {
73860 let a0: float16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
73861 let b0: float16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
73862 transmute((a0, b0))
73863 }
73864}
73865#[doc = "Zip vectors"]
73866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_f32)"]
73867#[inline(always)]
73868#[target_feature(enable = "neon")]
73869#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73870#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73871#[cfg_attr(
73872 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73873 assert_instr(zip1)
73874)]
73875#[cfg_attr(
73876 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73877 assert_instr(zip2)
73878)]
73879#[cfg_attr(
73880 not(target_arch = "arm"),
73881 stable(feature = "neon_intrinsics", since = "1.59.0")
73882)]
73883#[cfg_attr(
73884 target_arch = "arm",
73885 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73886)]
73887pub fn vzip_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
73888 unsafe {
73889 let a0: float32x2_t = simd_shuffle!(a, b, [0, 2]);
73890 let b0: float32x2_t = simd_shuffle!(a, b, [1, 3]);
73891 transmute((a0, b0))
73892 }
73893}
73894#[doc = "Zip vectors"]
73895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s32)"]
73896#[inline(always)]
73897#[target_feature(enable = "neon")]
73898#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73899#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73900#[cfg_attr(
73901 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73902 assert_instr(zip1)
73903)]
73904#[cfg_attr(
73905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73906 assert_instr(zip2)
73907)]
73908#[cfg_attr(
73909 not(target_arch = "arm"),
73910 stable(feature = "neon_intrinsics", since = "1.59.0")
73911)]
73912#[cfg_attr(
73913 target_arch = "arm",
73914 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73915)]
73916pub fn vzip_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
73917 unsafe {
73918 let a0: int32x2_t = simd_shuffle!(a, b, [0, 2]);
73919 let b0: int32x2_t = simd_shuffle!(a, b, [1, 3]);
73920 transmute((a0, b0))
73921 }
73922}
73923#[doc = "Zip vectors"]
73924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u32)"]
73925#[inline(always)]
73926#[target_feature(enable = "neon")]
73927#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73928#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73929#[cfg_attr(
73930 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73931 assert_instr(zip1)
73932)]
73933#[cfg_attr(
73934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73935 assert_instr(zip2)
73936)]
73937#[cfg_attr(
73938 not(target_arch = "arm"),
73939 stable(feature = "neon_intrinsics", since = "1.59.0")
73940)]
73941#[cfg_attr(
73942 target_arch = "arm",
73943 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73944)]
73945pub fn vzip_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
73946 unsafe {
73947 let a0: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
73948 let b0: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
73949 transmute((a0, b0))
73950 }
73951}
73952#[doc = "Zip vectors"]
73953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s8)"]
73954#[inline(always)]
73955#[target_feature(enable = "neon")]
73956#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73957#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
73958#[cfg_attr(
73959 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73960 assert_instr(zip1)
73961)]
73962#[cfg_attr(
73963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73964 assert_instr(zip2)
73965)]
73966#[cfg_attr(
73967 not(target_arch = "arm"),
73968 stable(feature = "neon_intrinsics", since = "1.59.0")
73969)]
73970#[cfg_attr(
73971 target_arch = "arm",
73972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73973)]
73974pub fn vzip_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
73975 unsafe {
73976 let a0: int8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
73977 let b0: int8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
73978 transmute((a0, b0))
73979 }
73980}
73981#[doc = "Zip vectors"]
73982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s16)"]
73983#[inline(always)]
73984#[target_feature(enable = "neon")]
73985#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73986#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
73987#[cfg_attr(
73988 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73989 assert_instr(zip1)
73990)]
73991#[cfg_attr(
73992 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73993 assert_instr(zip2)
73994)]
73995#[cfg_attr(
73996 not(target_arch = "arm"),
73997 stable(feature = "neon_intrinsics", since = "1.59.0")
73998)]
73999#[cfg_attr(
74000 target_arch = "arm",
74001 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74002)]
74003pub fn vzip_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
74004 unsafe {
74005 let a0: int16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
74006 let b0: int16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
74007 transmute((a0, b0))
74008 }
74009}
74010#[doc = "Zip vectors"]
74011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u8)"]
74012#[inline(always)]
74013#[target_feature(enable = "neon")]
74014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74015#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
74016#[cfg_attr(
74017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74018 assert_instr(zip1)
74019)]
74020#[cfg_attr(
74021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74022 assert_instr(zip2)
74023)]
74024#[cfg_attr(
74025 not(target_arch = "arm"),
74026 stable(feature = "neon_intrinsics", since = "1.59.0")
74027)]
74028#[cfg_attr(
74029 target_arch = "arm",
74030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74031)]
74032pub fn vzip_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
74033 unsafe {
74034 let a0: uint8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
74035 let b0: uint8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
74036 transmute((a0, b0))
74037 }
74038}
74039#[doc = "Zip vectors"]
74040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u16)"]
74041#[inline(always)]
74042#[target_feature(enable = "neon")]
74043#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74044#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
74045#[cfg_attr(
74046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74047 assert_instr(zip1)
74048)]
74049#[cfg_attr(
74050 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74051 assert_instr(zip2)
74052)]
74053#[cfg_attr(
74054 not(target_arch = "arm"),
74055 stable(feature = "neon_intrinsics", since = "1.59.0")
74056)]
74057#[cfg_attr(
74058 target_arch = "arm",
74059 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74060)]
74061pub fn vzip_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
74062 unsafe {
74063 let a0: uint16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
74064 let b0: uint16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
74065 transmute((a0, b0))
74066 }
74067}
74068#[doc = "Zip vectors"]
74069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_p8)"]
74070#[inline(always)]
74071#[target_feature(enable = "neon")]
74072#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74073#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
74074#[cfg_attr(
74075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74076 assert_instr(zip1)
74077)]
74078#[cfg_attr(
74079 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74080 assert_instr(zip2)
74081)]
74082#[cfg_attr(
74083 not(target_arch = "arm"),
74084 stable(feature = "neon_intrinsics", since = "1.59.0")
74085)]
74086#[cfg_attr(
74087 target_arch = "arm",
74088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74089)]
74090pub fn vzip_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
74091 unsafe {
74092 let a0: poly8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
74093 let b0: poly8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
74094 transmute((a0, b0))
74095 }
74096}
74097#[doc = "Zip vectors"]
74098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_p16)"]
74099#[inline(always)]
74100#[target_feature(enable = "neon")]
74101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
74103#[cfg_attr(
74104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74105 assert_instr(zip1)
74106)]
74107#[cfg_attr(
74108 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74109 assert_instr(zip2)
74110)]
74111#[cfg_attr(
74112 not(target_arch = "arm"),
74113 stable(feature = "neon_intrinsics", since = "1.59.0")
74114)]
74115#[cfg_attr(
74116 target_arch = "arm",
74117 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74118)]
74119pub fn vzip_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
74120 unsafe {
74121 let a0: poly16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
74122 let b0: poly16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
74123 transmute((a0, b0))
74124 }
74125}
74126#[doc = "Zip vectors"]
74127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_f32)"]
74128#[inline(always)]
74129#[target_feature(enable = "neon")]
74130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74132#[cfg_attr(
74133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74134 assert_instr(zip1)
74135)]
74136#[cfg_attr(
74137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74138 assert_instr(zip2)
74139)]
74140#[cfg_attr(
74141 not(target_arch = "arm"),
74142 stable(feature = "neon_intrinsics", since = "1.59.0")
74143)]
74144#[cfg_attr(
74145 target_arch = "arm",
74146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74147)]
74148pub fn vzipq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
74149 unsafe {
74150 let a0: float32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
74151 let b0: float32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
74152 transmute((a0, b0))
74153 }
74154}
74155#[doc = "Zip vectors"]
74156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s8)"]
74157#[inline(always)]
74158#[target_feature(enable = "neon")]
74159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74161#[cfg_attr(
74162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74163 assert_instr(zip1)
74164)]
74165#[cfg_attr(
74166 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74167 assert_instr(zip2)
74168)]
74169#[cfg_attr(
74170 not(target_arch = "arm"),
74171 stable(feature = "neon_intrinsics", since = "1.59.0")
74172)]
74173#[cfg_attr(
74174 target_arch = "arm",
74175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74176)]
74177pub fn vzipq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
74178 unsafe {
74179 let a0: int8x16_t = simd_shuffle!(
74180 a,
74181 b,
74182 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
74183 );
74184 let b0: int8x16_t = simd_shuffle!(
74185 a,
74186 b,
74187 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
74188 );
74189 transmute((a0, b0))
74190 }
74191}
74192#[doc = "Zip vectors"]
74193#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s16)"]
74194#[inline(always)]
74195#[target_feature(enable = "neon")]
74196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74197#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74198#[cfg_attr(
74199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74200 assert_instr(zip1)
74201)]
74202#[cfg_attr(
74203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74204 assert_instr(zip2)
74205)]
74206#[cfg_attr(
74207 not(target_arch = "arm"),
74208 stable(feature = "neon_intrinsics", since = "1.59.0")
74209)]
74210#[cfg_attr(
74211 target_arch = "arm",
74212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74213)]
74214pub fn vzipq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
74215 unsafe {
74216 let a0: int16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
74217 let b0: int16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
74218 transmute((a0, b0))
74219 }
74220}
74221#[doc = "Zip vectors"]
74222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s32)"]
74223#[inline(always)]
74224#[target_feature(enable = "neon")]
74225#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74226#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74227#[cfg_attr(
74228 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74229 assert_instr(zip1)
74230)]
74231#[cfg_attr(
74232 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74233 assert_instr(zip2)
74234)]
74235#[cfg_attr(
74236 not(target_arch = "arm"),
74237 stable(feature = "neon_intrinsics", since = "1.59.0")
74238)]
74239#[cfg_attr(
74240 target_arch = "arm",
74241 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74242)]
74243pub fn vzipq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
74244 unsafe {
74245 let a0: int32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
74246 let b0: int32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
74247 transmute((a0, b0))
74248 }
74249}
74250#[doc = "Zip vectors"]
74251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u8)"]
74252#[inline(always)]
74253#[target_feature(enable = "neon")]
74254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74255#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74256#[cfg_attr(
74257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74258 assert_instr(zip1)
74259)]
74260#[cfg_attr(
74261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74262 assert_instr(zip2)
74263)]
74264#[cfg_attr(
74265 not(target_arch = "arm"),
74266 stable(feature = "neon_intrinsics", since = "1.59.0")
74267)]
74268#[cfg_attr(
74269 target_arch = "arm",
74270 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74271)]
74272pub fn vzipq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
74273 unsafe {
74274 let a0: uint8x16_t = simd_shuffle!(
74275 a,
74276 b,
74277 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
74278 );
74279 let b0: uint8x16_t = simd_shuffle!(
74280 a,
74281 b,
74282 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
74283 );
74284 transmute((a0, b0))
74285 }
74286}
74287#[doc = "Zip vectors"]
74288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u16)"]
74289#[inline(always)]
74290#[target_feature(enable = "neon")]
74291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74292#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74293#[cfg_attr(
74294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74295 assert_instr(zip1)
74296)]
74297#[cfg_attr(
74298 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74299 assert_instr(zip2)
74300)]
74301#[cfg_attr(
74302 not(target_arch = "arm"),
74303 stable(feature = "neon_intrinsics", since = "1.59.0")
74304)]
74305#[cfg_attr(
74306 target_arch = "arm",
74307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74308)]
74309pub fn vzipq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
74310 unsafe {
74311 let a0: uint16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
74312 let b0: uint16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
74313 transmute((a0, b0))
74314 }
74315}
74316#[doc = "Zip vectors"]
74317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u32)"]
74318#[inline(always)]
74319#[target_feature(enable = "neon")]
74320#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74321#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74322#[cfg_attr(
74323 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74324 assert_instr(zip1)
74325)]
74326#[cfg_attr(
74327 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74328 assert_instr(zip2)
74329)]
74330#[cfg_attr(
74331 not(target_arch = "arm"),
74332 stable(feature = "neon_intrinsics", since = "1.59.0")
74333)]
74334#[cfg_attr(
74335 target_arch = "arm",
74336 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74337)]
74338pub fn vzipq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
74339 unsafe {
74340 let a0: uint32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
74341 let b0: uint32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
74342 transmute((a0, b0))
74343 }
74344}
74345#[doc = "Zip vectors"]
74346#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_p8)"]
74347#[inline(always)]
74348#[target_feature(enable = "neon")]
74349#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74350#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74351#[cfg_attr(
74352 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74353 assert_instr(zip1)
74354)]
74355#[cfg_attr(
74356 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74357 assert_instr(zip2)
74358)]
74359#[cfg_attr(
74360 not(target_arch = "arm"),
74361 stable(feature = "neon_intrinsics", since = "1.59.0")
74362)]
74363#[cfg_attr(
74364 target_arch = "arm",
74365 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74366)]
74367pub fn vzipq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
74368 unsafe {
74369 let a0: poly8x16_t = simd_shuffle!(
74370 a,
74371 b,
74372 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
74373 );
74374 let b0: poly8x16_t = simd_shuffle!(
74375 a,
74376 b,
74377 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
74378 );
74379 transmute((a0, b0))
74380 }
74381}
74382#[doc = "Zip vectors"]
74383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_p16)"]
74384#[inline(always)]
74385#[target_feature(enable = "neon")]
74386#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74388#[cfg_attr(
74389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74390 assert_instr(zip1)
74391)]
74392#[cfg_attr(
74393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74394 assert_instr(zip2)
74395)]
74396#[cfg_attr(
74397 not(target_arch = "arm"),
74398 stable(feature = "neon_intrinsics", since = "1.59.0")
74399)]
74400#[cfg_attr(
74401 target_arch = "arm",
74402 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74403)]
74404pub fn vzipq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
74405 unsafe {
74406 let a0: poly16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
74407 let b0: poly16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
74408 transmute((a0, b0))
74409 }
74410}