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; 4]) }
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 { simd_shuffle!(a, a, [N as u32; 8]) }
10178}
10179#[doc = "Set all vector lanes to the same value"]
10180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_f32)"]
10181#[inline(always)]
10182#[target_feature(enable = "neon")]
10183#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10184#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10185#[cfg_attr(
10186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10187 assert_instr(dup, N = 1)
10188)]
10189#[rustc_legacy_const_generics(1)]
10190#[cfg_attr(
10191 not(target_arch = "arm"),
10192 stable(feature = "neon_intrinsics", since = "1.59.0")
10193)]
10194#[cfg_attr(
10195 target_arch = "arm",
10196 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10197)]
10198pub fn vdup_lane_f32<const N: i32>(a: float32x2_t) -> float32x2_t {
10199 static_assert_uimm_bits!(N, 1);
10200 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10201}
10202#[doc = "Set all vector lanes to the same value"]
10203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s32)"]
10204#[inline(always)]
10205#[target_feature(enable = "neon")]
10206#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10207#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10208#[cfg_attr(
10209 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10210 assert_instr(dup, N = 1)
10211)]
10212#[rustc_legacy_const_generics(1)]
10213#[cfg_attr(
10214 not(target_arch = "arm"),
10215 stable(feature = "neon_intrinsics", since = "1.59.0")
10216)]
10217#[cfg_attr(
10218 target_arch = "arm",
10219 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10220)]
10221pub fn vdup_lane_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
10222 static_assert_uimm_bits!(N, 1);
10223 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10224}
10225#[doc = "Set all vector lanes to the same value"]
10226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u32)"]
10227#[inline(always)]
10228#[target_feature(enable = "neon")]
10229#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10230#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10231#[cfg_attr(
10232 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10233 assert_instr(dup, N = 1)
10234)]
10235#[rustc_legacy_const_generics(1)]
10236#[cfg_attr(
10237 not(target_arch = "arm"),
10238 stable(feature = "neon_intrinsics", since = "1.59.0")
10239)]
10240#[cfg_attr(
10241 target_arch = "arm",
10242 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10243)]
10244pub fn vdup_lane_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
10245 static_assert_uimm_bits!(N, 1);
10246 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10247}
10248#[doc = "Set all vector lanes to the same value"]
10249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_f32)"]
10250#[inline(always)]
10251#[target_feature(enable = "neon")]
10252#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10253#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10254#[cfg_attr(
10255 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10256 assert_instr(dup, N = 1)
10257)]
10258#[rustc_legacy_const_generics(1)]
10259#[cfg_attr(
10260 not(target_arch = "arm"),
10261 stable(feature = "neon_intrinsics", since = "1.59.0")
10262)]
10263#[cfg_attr(
10264 target_arch = "arm",
10265 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10266)]
10267pub fn vdupq_lane_f32<const N: i32>(a: float32x2_t) -> float32x4_t {
10268 static_assert_uimm_bits!(N, 1);
10269 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10270}
10271#[doc = "Set all vector lanes to the same value"]
10272#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s32)"]
10273#[inline(always)]
10274#[target_feature(enable = "neon")]
10275#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10276#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10277#[cfg_attr(
10278 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10279 assert_instr(dup, N = 1)
10280)]
10281#[rustc_legacy_const_generics(1)]
10282#[cfg_attr(
10283 not(target_arch = "arm"),
10284 stable(feature = "neon_intrinsics", since = "1.59.0")
10285)]
10286#[cfg_attr(
10287 target_arch = "arm",
10288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10289)]
10290pub fn vdupq_lane_s32<const N: i32>(a: int32x2_t) -> int32x4_t {
10291 static_assert_uimm_bits!(N, 1);
10292 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10293}
10294#[doc = "Set all vector lanes to the same value"]
10295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u32)"]
10296#[inline(always)]
10297#[target_feature(enable = "neon")]
10298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10299#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 1))]
10300#[cfg_attr(
10301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10302 assert_instr(dup, N = 1)
10303)]
10304#[rustc_legacy_const_generics(1)]
10305#[cfg_attr(
10306 not(target_arch = "arm"),
10307 stable(feature = "neon_intrinsics", since = "1.59.0")
10308)]
10309#[cfg_attr(
10310 target_arch = "arm",
10311 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10312)]
10313pub fn vdupq_lane_u32<const N: i32>(a: uint32x2_t) -> uint32x4_t {
10314 static_assert_uimm_bits!(N, 1);
10315 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10316}
10317#[doc = "Set all vector lanes to the same value"]
10318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_p16)"]
10319#[inline(always)]
10320#[target_feature(enable = "neon")]
10321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10322#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10323#[cfg_attr(
10324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10325 assert_instr(dup, N = 2)
10326)]
10327#[rustc_legacy_const_generics(1)]
10328#[cfg_attr(
10329 not(target_arch = "arm"),
10330 stable(feature = "neon_intrinsics", since = "1.59.0")
10331)]
10332#[cfg_attr(
10333 target_arch = "arm",
10334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10335)]
10336pub fn vdup_lane_p16<const N: i32>(a: poly16x4_t) -> poly16x4_t {
10337 static_assert_uimm_bits!(N, 2);
10338 unsafe { simd_shuffle!(a, a, [N as u32; 4]) }
10339}
10340#[doc = "Set all vector lanes to the same value"]
10341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s16)"]
10342#[inline(always)]
10343#[target_feature(enable = "neon")]
10344#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10345#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10346#[cfg_attr(
10347 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10348 assert_instr(dup, N = 2)
10349)]
10350#[rustc_legacy_const_generics(1)]
10351#[cfg_attr(
10352 not(target_arch = "arm"),
10353 stable(feature = "neon_intrinsics", since = "1.59.0")
10354)]
10355#[cfg_attr(
10356 target_arch = "arm",
10357 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10358)]
10359pub fn vdup_lane_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
10360 static_assert_uimm_bits!(N, 2);
10361 unsafe { simd_shuffle!(a, a, [N as u32; 4]) }
10362}
10363#[doc = "Set all vector lanes to the same value"]
10364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u16)"]
10365#[inline(always)]
10366#[target_feature(enable = "neon")]
10367#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10368#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10369#[cfg_attr(
10370 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10371 assert_instr(dup, N = 2)
10372)]
10373#[rustc_legacy_const_generics(1)]
10374#[cfg_attr(
10375 not(target_arch = "arm"),
10376 stable(feature = "neon_intrinsics", since = "1.59.0")
10377)]
10378#[cfg_attr(
10379 target_arch = "arm",
10380 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10381)]
10382pub fn vdup_lane_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
10383 static_assert_uimm_bits!(N, 2);
10384 unsafe { simd_shuffle!(a, a, [N as u32; 4]) }
10385}
10386#[doc = "Set all vector lanes to the same value"]
10387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_p16)"]
10388#[inline(always)]
10389#[target_feature(enable = "neon")]
10390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10391#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10392#[cfg_attr(
10393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10394 assert_instr(dup, N = 2)
10395)]
10396#[rustc_legacy_const_generics(1)]
10397#[cfg_attr(
10398 not(target_arch = "arm"),
10399 stable(feature = "neon_intrinsics", since = "1.59.0")
10400)]
10401#[cfg_attr(
10402 target_arch = "arm",
10403 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10404)]
10405pub fn vdupq_lane_p16<const N: i32>(a: poly16x4_t) -> poly16x8_t {
10406 static_assert_uimm_bits!(N, 2);
10407 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10408}
10409#[doc = "Set all vector lanes to the same value"]
10410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s16)"]
10411#[inline(always)]
10412#[target_feature(enable = "neon")]
10413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10414#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10415#[cfg_attr(
10416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10417 assert_instr(dup, N = 2)
10418)]
10419#[rustc_legacy_const_generics(1)]
10420#[cfg_attr(
10421 not(target_arch = "arm"),
10422 stable(feature = "neon_intrinsics", since = "1.59.0")
10423)]
10424#[cfg_attr(
10425 target_arch = "arm",
10426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10427)]
10428pub fn vdupq_lane_s16<const N: i32>(a: int16x4_t) -> int16x8_t {
10429 static_assert_uimm_bits!(N, 2);
10430 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10431}
10432#[doc = "Set all vector lanes to the same value"]
10433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u16)"]
10434#[inline(always)]
10435#[target_feature(enable = "neon")]
10436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10437#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 2))]
10438#[cfg_attr(
10439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10440 assert_instr(dup, N = 2)
10441)]
10442#[rustc_legacy_const_generics(1)]
10443#[cfg_attr(
10444 not(target_arch = "arm"),
10445 stable(feature = "neon_intrinsics", since = "1.59.0")
10446)]
10447#[cfg_attr(
10448 target_arch = "arm",
10449 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10450)]
10451pub fn vdupq_lane_u16<const N: i32>(a: uint16x4_t) -> uint16x8_t {
10452 static_assert_uimm_bits!(N, 2);
10453 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10454}
10455#[doc = "Set all vector lanes to the same value"]
10456#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_p8)"]
10457#[inline(always)]
10458#[target_feature(enable = "neon")]
10459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10460#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10461#[cfg_attr(
10462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10463 assert_instr(dup, N = 4)
10464)]
10465#[rustc_legacy_const_generics(1)]
10466#[cfg_attr(
10467 not(target_arch = "arm"),
10468 stable(feature = "neon_intrinsics", since = "1.59.0")
10469)]
10470#[cfg_attr(
10471 target_arch = "arm",
10472 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10473)]
10474pub fn vdup_lane_p8<const N: i32>(a: poly8x8_t) -> poly8x8_t {
10475 static_assert_uimm_bits!(N, 3);
10476 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10477}
10478#[doc = "Set all vector lanes to the same value"]
10479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s8)"]
10480#[inline(always)]
10481#[target_feature(enable = "neon")]
10482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10483#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10484#[cfg_attr(
10485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10486 assert_instr(dup, N = 4)
10487)]
10488#[rustc_legacy_const_generics(1)]
10489#[cfg_attr(
10490 not(target_arch = "arm"),
10491 stable(feature = "neon_intrinsics", since = "1.59.0")
10492)]
10493#[cfg_attr(
10494 target_arch = "arm",
10495 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10496)]
10497pub fn vdup_lane_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
10498 static_assert_uimm_bits!(N, 3);
10499 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10500}
10501#[doc = "Set all vector lanes to the same value"]
10502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u8)"]
10503#[inline(always)]
10504#[target_feature(enable = "neon")]
10505#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10506#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10507#[cfg_attr(
10508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10509 assert_instr(dup, N = 4)
10510)]
10511#[rustc_legacy_const_generics(1)]
10512#[cfg_attr(
10513 not(target_arch = "arm"),
10514 stable(feature = "neon_intrinsics", since = "1.59.0")
10515)]
10516#[cfg_attr(
10517 target_arch = "arm",
10518 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10519)]
10520pub fn vdup_lane_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
10521 static_assert_uimm_bits!(N, 3);
10522 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10523}
10524#[doc = "Set all vector lanes to the same value"]
10525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_p8)"]
10526#[inline(always)]
10527#[target_feature(enable = "neon")]
10528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10529#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10530#[cfg_attr(
10531 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10532 assert_instr(dup, N = 4)
10533)]
10534#[rustc_legacy_const_generics(1)]
10535#[cfg_attr(
10536 not(target_arch = "arm"),
10537 stable(feature = "neon_intrinsics", since = "1.59.0")
10538)]
10539#[cfg_attr(
10540 target_arch = "arm",
10541 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10542)]
10543pub fn vdupq_lane_p8<const N: i32>(a: poly8x8_t) -> poly8x16_t {
10544 static_assert_uimm_bits!(N, 3);
10545 unsafe { simd_shuffle!(a, a, [N as u32; 16]) }
10546}
10547#[doc = "Set all vector lanes to the same value"]
10548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s8)"]
10549#[inline(always)]
10550#[target_feature(enable = "neon")]
10551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10552#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10553#[cfg_attr(
10554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10555 assert_instr(dup, N = 4)
10556)]
10557#[rustc_legacy_const_generics(1)]
10558#[cfg_attr(
10559 not(target_arch = "arm"),
10560 stable(feature = "neon_intrinsics", since = "1.59.0")
10561)]
10562#[cfg_attr(
10563 target_arch = "arm",
10564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10565)]
10566pub fn vdupq_lane_s8<const N: i32>(a: int8x8_t) -> int8x16_t {
10567 static_assert_uimm_bits!(N, 3);
10568 unsafe { simd_shuffle!(a, a, [N as u32; 16]) }
10569}
10570#[doc = "Set all vector lanes to the same value"]
10571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u8)"]
10572#[inline(always)]
10573#[target_feature(enable = "neon")]
10574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10575#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 4))]
10576#[cfg_attr(
10577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10578 assert_instr(dup, N = 4)
10579)]
10580#[rustc_legacy_const_generics(1)]
10581#[cfg_attr(
10582 not(target_arch = "arm"),
10583 stable(feature = "neon_intrinsics", since = "1.59.0")
10584)]
10585#[cfg_attr(
10586 target_arch = "arm",
10587 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10588)]
10589pub fn vdupq_lane_u8<const N: i32>(a: uint8x8_t) -> uint8x16_t {
10590 static_assert_uimm_bits!(N, 3);
10591 unsafe { simd_shuffle!(a, a, [N as u32; 16]) }
10592}
10593#[doc = "Set all vector lanes to the same value"]
10594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_s64)"]
10595#[inline(always)]
10596#[target_feature(enable = "neon")]
10597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10598#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
10599#[cfg_attr(
10600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10601 assert_instr(nop, N = 0)
10602)]
10603#[rustc_legacy_const_generics(1)]
10604#[cfg_attr(
10605 not(target_arch = "arm"),
10606 stable(feature = "neon_intrinsics", since = "1.59.0")
10607)]
10608#[cfg_attr(
10609 target_arch = "arm",
10610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10611)]
10612pub fn vdup_lane_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
10613 static_assert!(N == 0);
10614 a
10615}
10616#[doc = "Set all vector lanes to the same value"]
10617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_lane_u64)"]
10618#[inline(always)]
10619#[target_feature(enable = "neon")]
10620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10621#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
10622#[cfg_attr(
10623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10624 assert_instr(nop, N = 0)
10625)]
10626#[rustc_legacy_const_generics(1)]
10627#[cfg_attr(
10628 not(target_arch = "arm"),
10629 stable(feature = "neon_intrinsics", since = "1.59.0")
10630)]
10631#[cfg_attr(
10632 target_arch = "arm",
10633 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10634)]
10635pub fn vdup_lane_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
10636 static_assert!(N == 0);
10637 a
10638}
10639#[doc = "Set all vector lanes to the same value"]
10640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_f16)"]
10641#[inline(always)]
10642#[target_feature(enable = "neon")]
10643#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10644#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10645#[cfg_attr(
10646 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10647 assert_instr(dup, N = 4)
10648)]
10649#[rustc_legacy_const_generics(1)]
10650#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
10651#[cfg_attr(
10652 not(target_arch = "arm"),
10653 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
10654)]
10655#[cfg_attr(
10656 target_arch = "arm",
10657 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10658)]
10659#[cfg(not(target_arch = "arm64ec"))]
10660pub fn vdup_laneq_f16<const N: i32>(a: float16x8_t) -> float16x4_t {
10661 static_assert_uimm_bits!(N, 3);
10662 unsafe { simd_shuffle!(a, a, [N as u32; 4]) }
10663}
10664#[doc = "Set all vector lanes to the same value"]
10665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_f16)"]
10666#[inline(always)]
10667#[target_feature(enable = "neon")]
10668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10669#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10670#[cfg_attr(
10671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10672 assert_instr(dup, N = 4)
10673)]
10674#[rustc_legacy_const_generics(1)]
10675#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
10676#[cfg_attr(
10677 not(target_arch = "arm"),
10678 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
10679)]
10680#[cfg_attr(
10681 target_arch = "arm",
10682 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10683)]
10684#[cfg(not(target_arch = "arm64ec"))]
10685pub fn vdupq_laneq_f16<const N: i32>(a: float16x8_t) -> float16x8_t {
10686 static_assert_uimm_bits!(N, 3);
10687 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10688}
10689#[doc = "Set all vector lanes to the same value"]
10690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_f32)"]
10691#[inline(always)]
10692#[target_feature(enable = "neon")]
10693#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10694#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10695#[cfg_attr(
10696 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10697 assert_instr(dup, N = 2)
10698)]
10699#[rustc_legacy_const_generics(1)]
10700#[cfg_attr(
10701 not(target_arch = "arm"),
10702 stable(feature = "neon_intrinsics", since = "1.59.0")
10703)]
10704#[cfg_attr(
10705 target_arch = "arm",
10706 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10707)]
10708pub fn vdup_laneq_f32<const N: i32>(a: float32x4_t) -> float32x2_t {
10709 static_assert_uimm_bits!(N, 2);
10710 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10711}
10712#[doc = "Set all vector lanes to the same value"]
10713#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s32)"]
10714#[inline(always)]
10715#[target_feature(enable = "neon")]
10716#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10717#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10718#[cfg_attr(
10719 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10720 assert_instr(dup, N = 2)
10721)]
10722#[rustc_legacy_const_generics(1)]
10723#[cfg_attr(
10724 not(target_arch = "arm"),
10725 stable(feature = "neon_intrinsics", since = "1.59.0")
10726)]
10727#[cfg_attr(
10728 target_arch = "arm",
10729 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10730)]
10731pub fn vdup_laneq_s32<const N: i32>(a: int32x4_t) -> int32x2_t {
10732 static_assert_uimm_bits!(N, 2);
10733 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10734}
10735#[doc = "Set all vector lanes to the same value"]
10736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u32)"]
10737#[inline(always)]
10738#[target_feature(enable = "neon")]
10739#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10740#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10741#[cfg_attr(
10742 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10743 assert_instr(dup, N = 2)
10744)]
10745#[rustc_legacy_const_generics(1)]
10746#[cfg_attr(
10747 not(target_arch = "arm"),
10748 stable(feature = "neon_intrinsics", since = "1.59.0")
10749)]
10750#[cfg_attr(
10751 target_arch = "arm",
10752 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10753)]
10754pub fn vdup_laneq_u32<const N: i32>(a: uint32x4_t) -> uint32x2_t {
10755 static_assert_uimm_bits!(N, 2);
10756 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
10757}
10758#[doc = "Set all vector lanes to the same value"]
10759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_f32)"]
10760#[inline(always)]
10761#[target_feature(enable = "neon")]
10762#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10763#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10764#[cfg_attr(
10765 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10766 assert_instr(dup, N = 2)
10767)]
10768#[rustc_legacy_const_generics(1)]
10769#[cfg_attr(
10770 not(target_arch = "arm"),
10771 stable(feature = "neon_intrinsics", since = "1.59.0")
10772)]
10773#[cfg_attr(
10774 target_arch = "arm",
10775 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10776)]
10777pub fn vdupq_laneq_f32<const N: i32>(a: float32x4_t) -> float32x4_t {
10778 static_assert_uimm_bits!(N, 2);
10779 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10780}
10781#[doc = "Set all vector lanes to the same value"]
10782#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s32)"]
10783#[inline(always)]
10784#[target_feature(enable = "neon")]
10785#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10786#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10787#[cfg_attr(
10788 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10789 assert_instr(dup, N = 2)
10790)]
10791#[rustc_legacy_const_generics(1)]
10792#[cfg_attr(
10793 not(target_arch = "arm"),
10794 stable(feature = "neon_intrinsics", since = "1.59.0")
10795)]
10796#[cfg_attr(
10797 target_arch = "arm",
10798 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10799)]
10800pub fn vdupq_laneq_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
10801 static_assert_uimm_bits!(N, 2);
10802 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10803}
10804#[doc = "Set all vector lanes to the same value"]
10805#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u32)"]
10806#[inline(always)]
10807#[target_feature(enable = "neon")]
10808#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10809#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32", N = 2))]
10810#[cfg_attr(
10811 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10812 assert_instr(dup, N = 2)
10813)]
10814#[rustc_legacy_const_generics(1)]
10815#[cfg_attr(
10816 not(target_arch = "arm"),
10817 stable(feature = "neon_intrinsics", since = "1.59.0")
10818)]
10819#[cfg_attr(
10820 target_arch = "arm",
10821 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10822)]
10823pub fn vdupq_laneq_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
10824 static_assert_uimm_bits!(N, 2);
10825 unsafe { simd_shuffle!(a, a, [N as u32, N as u32, N as u32, N as u32]) }
10826}
10827#[doc = "Set all vector lanes to the same value"]
10828#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_p16)"]
10829#[inline(always)]
10830#[target_feature(enable = "neon")]
10831#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10832#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10833#[cfg_attr(
10834 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10835 assert_instr(dup, N = 4)
10836)]
10837#[rustc_legacy_const_generics(1)]
10838#[cfg_attr(
10839 not(target_arch = "arm"),
10840 stable(feature = "neon_intrinsics", since = "1.59.0")
10841)]
10842#[cfg_attr(
10843 target_arch = "arm",
10844 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10845)]
10846pub fn vdup_laneq_p16<const N: i32>(a: poly16x8_t) -> poly16x4_t {
10847 static_assert_uimm_bits!(N, 3);
10848 unsafe { simd_shuffle!(a, a, [N as u32; 4]) }
10849}
10850#[doc = "Set all vector lanes to the same value"]
10851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s16)"]
10852#[inline(always)]
10853#[target_feature(enable = "neon")]
10854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10855#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10856#[cfg_attr(
10857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10858 assert_instr(dup, N = 4)
10859)]
10860#[rustc_legacy_const_generics(1)]
10861#[cfg_attr(
10862 not(target_arch = "arm"),
10863 stable(feature = "neon_intrinsics", since = "1.59.0")
10864)]
10865#[cfg_attr(
10866 target_arch = "arm",
10867 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10868)]
10869pub fn vdup_laneq_s16<const N: i32>(a: int16x8_t) -> int16x4_t {
10870 static_assert_uimm_bits!(N, 3);
10871 unsafe { simd_shuffle!(a, a, [N as u32; 4]) }
10872}
10873#[doc = "Set all vector lanes to the same value"]
10874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u16)"]
10875#[inline(always)]
10876#[target_feature(enable = "neon")]
10877#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10878#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10879#[cfg_attr(
10880 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10881 assert_instr(dup, N = 4)
10882)]
10883#[rustc_legacy_const_generics(1)]
10884#[cfg_attr(
10885 not(target_arch = "arm"),
10886 stable(feature = "neon_intrinsics", since = "1.59.0")
10887)]
10888#[cfg_attr(
10889 target_arch = "arm",
10890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10891)]
10892pub fn vdup_laneq_u16<const N: i32>(a: uint16x8_t) -> uint16x4_t {
10893 static_assert_uimm_bits!(N, 3);
10894 unsafe { simd_shuffle!(a, a, [N as u32; 4]) }
10895}
10896#[doc = "Set all vector lanes to the same value"]
10897#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_p16)"]
10898#[inline(always)]
10899#[target_feature(enable = "neon")]
10900#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10901#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10902#[cfg_attr(
10903 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10904 assert_instr(dup, N = 4)
10905)]
10906#[rustc_legacy_const_generics(1)]
10907#[cfg_attr(
10908 not(target_arch = "arm"),
10909 stable(feature = "neon_intrinsics", since = "1.59.0")
10910)]
10911#[cfg_attr(
10912 target_arch = "arm",
10913 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10914)]
10915pub fn vdupq_laneq_p16<const N: i32>(a: poly16x8_t) -> poly16x8_t {
10916 static_assert_uimm_bits!(N, 3);
10917 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10918}
10919#[doc = "Set all vector lanes to the same value"]
10920#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s16)"]
10921#[inline(always)]
10922#[target_feature(enable = "neon")]
10923#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10924#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10925#[cfg_attr(
10926 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10927 assert_instr(dup, N = 4)
10928)]
10929#[rustc_legacy_const_generics(1)]
10930#[cfg_attr(
10931 not(target_arch = "arm"),
10932 stable(feature = "neon_intrinsics", since = "1.59.0")
10933)]
10934#[cfg_attr(
10935 target_arch = "arm",
10936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10937)]
10938pub fn vdupq_laneq_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
10939 static_assert_uimm_bits!(N, 3);
10940 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10941}
10942#[doc = "Set all vector lanes to the same value"]
10943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u16)"]
10944#[inline(always)]
10945#[target_feature(enable = "neon")]
10946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10947#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16", N = 4))]
10948#[cfg_attr(
10949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10950 assert_instr(dup, N = 4)
10951)]
10952#[rustc_legacy_const_generics(1)]
10953#[cfg_attr(
10954 not(target_arch = "arm"),
10955 stable(feature = "neon_intrinsics", since = "1.59.0")
10956)]
10957#[cfg_attr(
10958 target_arch = "arm",
10959 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10960)]
10961pub fn vdupq_laneq_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
10962 static_assert_uimm_bits!(N, 3);
10963 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10964}
10965#[doc = "Set all vector lanes to the same value"]
10966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_p8)"]
10967#[inline(always)]
10968#[target_feature(enable = "neon")]
10969#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10970#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10971#[cfg_attr(
10972 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10973 assert_instr(dup, N = 8)
10974)]
10975#[rustc_legacy_const_generics(1)]
10976#[cfg_attr(
10977 not(target_arch = "arm"),
10978 stable(feature = "neon_intrinsics", since = "1.59.0")
10979)]
10980#[cfg_attr(
10981 target_arch = "arm",
10982 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
10983)]
10984pub fn vdup_laneq_p8<const N: i32>(a: poly8x16_t) -> poly8x8_t {
10985 static_assert_uimm_bits!(N, 4);
10986 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
10987}
10988#[doc = "Set all vector lanes to the same value"]
10989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s8)"]
10990#[inline(always)]
10991#[target_feature(enable = "neon")]
10992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
10993#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
10994#[cfg_attr(
10995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
10996 assert_instr(dup, N = 8)
10997)]
10998#[rustc_legacy_const_generics(1)]
10999#[cfg_attr(
11000 not(target_arch = "arm"),
11001 stable(feature = "neon_intrinsics", since = "1.59.0")
11002)]
11003#[cfg_attr(
11004 target_arch = "arm",
11005 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11006)]
11007pub fn vdup_laneq_s8<const N: i32>(a: int8x16_t) -> int8x8_t {
11008 static_assert_uimm_bits!(N, 4);
11009 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
11010}
11011#[doc = "Set all vector lanes to the same value"]
11012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u8)"]
11013#[inline(always)]
11014#[target_feature(enable = "neon")]
11015#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11016#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
11017#[cfg_attr(
11018 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11019 assert_instr(dup, N = 8)
11020)]
11021#[rustc_legacy_const_generics(1)]
11022#[cfg_attr(
11023 not(target_arch = "arm"),
11024 stable(feature = "neon_intrinsics", since = "1.59.0")
11025)]
11026#[cfg_attr(
11027 target_arch = "arm",
11028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11029)]
11030pub fn vdup_laneq_u8<const N: i32>(a: uint8x16_t) -> uint8x8_t {
11031 static_assert_uimm_bits!(N, 4);
11032 unsafe { simd_shuffle!(a, a, [N as u32; 8]) }
11033}
11034#[doc = "Set all vector lanes to the same value"]
11035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_p8)"]
11036#[inline(always)]
11037#[target_feature(enable = "neon")]
11038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11039#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
11040#[cfg_attr(
11041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11042 assert_instr(dup, N = 8)
11043)]
11044#[rustc_legacy_const_generics(1)]
11045#[cfg_attr(
11046 not(target_arch = "arm"),
11047 stable(feature = "neon_intrinsics", since = "1.59.0")
11048)]
11049#[cfg_attr(
11050 target_arch = "arm",
11051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11052)]
11053pub fn vdupq_laneq_p8<const N: i32>(a: poly8x16_t) -> poly8x16_t {
11054 static_assert_uimm_bits!(N, 4);
11055 unsafe { simd_shuffle!(a, a, [N as u32; 16]) }
11056}
11057#[doc = "Set all vector lanes to the same value"]
11058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s8)"]
11059#[inline(always)]
11060#[target_feature(enable = "neon")]
11061#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11062#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
11063#[cfg_attr(
11064 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11065 assert_instr(dup, N = 8)
11066)]
11067#[rustc_legacy_const_generics(1)]
11068#[cfg_attr(
11069 not(target_arch = "arm"),
11070 stable(feature = "neon_intrinsics", since = "1.59.0")
11071)]
11072#[cfg_attr(
11073 target_arch = "arm",
11074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11075)]
11076pub fn vdupq_laneq_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
11077 static_assert_uimm_bits!(N, 4);
11078 unsafe { simd_shuffle!(a, a, [N as u32; 16]) }
11079}
11080#[doc = "Set all vector lanes to the same value"]
11081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u8)"]
11082#[inline(always)]
11083#[target_feature(enable = "neon")]
11084#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11085#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8", N = 8))]
11086#[cfg_attr(
11087 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11088 assert_instr(dup, N = 8)
11089)]
11090#[rustc_legacy_const_generics(1)]
11091#[cfg_attr(
11092 not(target_arch = "arm"),
11093 stable(feature = "neon_intrinsics", since = "1.59.0")
11094)]
11095#[cfg_attr(
11096 target_arch = "arm",
11097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11098)]
11099pub fn vdupq_laneq_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
11100 static_assert_uimm_bits!(N, 4);
11101 unsafe { simd_shuffle!(a, a, [N as u32; 16]) }
11102}
11103#[doc = "Set all vector lanes to the same value"]
11104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_s64)"]
11105#[inline(always)]
11106#[target_feature(enable = "neon")]
11107#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11108#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11109#[cfg_attr(
11110 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11111 assert_instr(nop, N = 1)
11112)]
11113#[rustc_legacy_const_generics(1)]
11114#[cfg_attr(
11115 not(target_arch = "arm"),
11116 stable(feature = "neon_intrinsics", since = "1.59.0")
11117)]
11118#[cfg_attr(
11119 target_arch = "arm",
11120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11121)]
11122pub fn vdup_laneq_s64<const N: i32>(a: int64x2_t) -> int64x1_t {
11123 static_assert_uimm_bits!(N, 1);
11124 unsafe { transmute::<i64, _>(simd_extract!(a, N as u32)) }
11125}
11126#[doc = "Set all vector lanes to the same value"]
11127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_laneq_u64)"]
11128#[inline(always)]
11129#[target_feature(enable = "neon")]
11130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11132#[cfg_attr(
11133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11134 assert_instr(nop, N = 1)
11135)]
11136#[rustc_legacy_const_generics(1)]
11137#[cfg_attr(
11138 not(target_arch = "arm"),
11139 stable(feature = "neon_intrinsics", since = "1.59.0")
11140)]
11141#[cfg_attr(
11142 target_arch = "arm",
11143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11144)]
11145pub fn vdup_laneq_u64<const N: i32>(a: uint64x2_t) -> uint64x1_t {
11146 static_assert_uimm_bits!(N, 1);
11147 unsafe { transmute::<u64, _>(simd_extract!(a, N as u32)) }
11148}
11149#[doc = "Create a new vector with all lanes set to a value"]
11150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f16)"]
11151#[inline(always)]
11152#[target_feature(enable = "neon")]
11153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11154#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11155#[cfg_attr(
11156 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11157 assert_instr(dup)
11158)]
11159#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
11160#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
11161#[cfg(not(target_arch = "arm64ec"))]
11162pub fn vdup_n_f16(a: f16) -> float16x4_t {
11163 float16x4_t::splat(a)
11164}
11165#[doc = "Create a new vector with all lanes set to a value"]
11166#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f16)"]
11167#[inline(always)]
11168#[target_feature(enable = "neon")]
11169#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11170#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11171#[cfg_attr(
11172 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11173 assert_instr(dup)
11174)]
11175#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
11176#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
11177#[cfg(not(target_arch = "arm64ec"))]
11178pub fn vdupq_n_f16(a: f16) -> float16x8_t {
11179 float16x8_t::splat(a)
11180}
11181#[doc = "Duplicate vector element to vector or scalar"]
11182#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f32)"]
11183#[inline(always)]
11184#[target_feature(enable = "neon")]
11185#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11186#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11187#[cfg_attr(
11188 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11189 assert_instr(dup)
11190)]
11191#[cfg_attr(
11192 not(target_arch = "arm"),
11193 stable(feature = "neon_intrinsics", since = "1.59.0")
11194)]
11195#[cfg_attr(
11196 target_arch = "arm",
11197 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11198)]
11199pub fn vdup_n_f32(value: f32) -> float32x2_t {
11200 float32x2_t::splat(value)
11201}
11202#[doc = "Duplicate vector element to vector or scalar"]
11203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_p16)"]
11204#[inline(always)]
11205#[target_feature(enable = "neon")]
11206#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11207#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11208#[cfg_attr(
11209 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11210 assert_instr(dup)
11211)]
11212#[cfg_attr(
11213 not(target_arch = "arm"),
11214 stable(feature = "neon_intrinsics", since = "1.59.0")
11215)]
11216#[cfg_attr(
11217 target_arch = "arm",
11218 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11219)]
11220pub fn vdup_n_p16(value: p16) -> poly16x4_t {
11221 poly16x4_t::splat(value)
11222}
11223#[doc = "Duplicate vector element to vector or scalar"]
11224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_p8)"]
11225#[inline(always)]
11226#[target_feature(enable = "neon")]
11227#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11228#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11229#[cfg_attr(
11230 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11231 assert_instr(dup)
11232)]
11233#[cfg_attr(
11234 not(target_arch = "arm"),
11235 stable(feature = "neon_intrinsics", since = "1.59.0")
11236)]
11237#[cfg_attr(
11238 target_arch = "arm",
11239 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11240)]
11241pub fn vdup_n_p8(value: p8) -> poly8x8_t {
11242 poly8x8_t::splat(value)
11243}
11244#[doc = "Duplicate vector element to vector or scalar"]
11245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s16)"]
11246#[inline(always)]
11247#[target_feature(enable = "neon")]
11248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11249#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11250#[cfg_attr(
11251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11252 assert_instr(dup)
11253)]
11254#[cfg_attr(
11255 not(target_arch = "arm"),
11256 stable(feature = "neon_intrinsics", since = "1.59.0")
11257)]
11258#[cfg_attr(
11259 target_arch = "arm",
11260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11261)]
11262pub fn vdup_n_s16(value: i16) -> int16x4_t {
11263 int16x4_t::splat(value)
11264}
11265#[doc = "Duplicate vector element to vector or scalar"]
11266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s32)"]
11267#[inline(always)]
11268#[target_feature(enable = "neon")]
11269#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11270#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11271#[cfg_attr(
11272 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11273 assert_instr(dup)
11274)]
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_n_s32(value: i32) -> int32x2_t {
11284 int32x2_t::splat(value)
11285}
11286#[doc = "Duplicate vector element to vector or scalar"]
11287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s64)"]
11288#[inline(always)]
11289#[target_feature(enable = "neon")]
11290#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11291#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11292#[cfg_attr(
11293 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11294 assert_instr(fmov)
11295)]
11296#[cfg_attr(
11297 not(target_arch = "arm"),
11298 stable(feature = "neon_intrinsics", since = "1.59.0")
11299)]
11300#[cfg_attr(
11301 target_arch = "arm",
11302 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11303)]
11304pub fn vdup_n_s64(value: i64) -> int64x1_t {
11305 int64x1_t::splat(value)
11306}
11307#[doc = "Duplicate vector element to vector or scalar"]
11308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_s8)"]
11309#[inline(always)]
11310#[target_feature(enable = "neon")]
11311#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11312#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11313#[cfg_attr(
11314 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11315 assert_instr(dup)
11316)]
11317#[cfg_attr(
11318 not(target_arch = "arm"),
11319 stable(feature = "neon_intrinsics", since = "1.59.0")
11320)]
11321#[cfg_attr(
11322 target_arch = "arm",
11323 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11324)]
11325pub fn vdup_n_s8(value: i8) -> int8x8_t {
11326 int8x8_t::splat(value)
11327}
11328#[doc = "Duplicate vector element to vector or scalar"]
11329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u16)"]
11330#[inline(always)]
11331#[target_feature(enable = "neon")]
11332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11333#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11334#[cfg_attr(
11335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11336 assert_instr(dup)
11337)]
11338#[cfg_attr(
11339 not(target_arch = "arm"),
11340 stable(feature = "neon_intrinsics", since = "1.59.0")
11341)]
11342#[cfg_attr(
11343 target_arch = "arm",
11344 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11345)]
11346pub fn vdup_n_u16(value: u16) -> uint16x4_t {
11347 uint16x4_t::splat(value)
11348}
11349#[doc = "Duplicate vector element to vector or scalar"]
11350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u32)"]
11351#[inline(always)]
11352#[target_feature(enable = "neon")]
11353#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11354#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11355#[cfg_attr(
11356 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11357 assert_instr(dup)
11358)]
11359#[cfg_attr(
11360 not(target_arch = "arm"),
11361 stable(feature = "neon_intrinsics", since = "1.59.0")
11362)]
11363#[cfg_attr(
11364 target_arch = "arm",
11365 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11366)]
11367pub fn vdup_n_u32(value: u32) -> uint32x2_t {
11368 uint32x2_t::splat(value)
11369}
11370#[doc = "Duplicate vector element to vector or scalar"]
11371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u64)"]
11372#[inline(always)]
11373#[target_feature(enable = "neon")]
11374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11375#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11376#[cfg_attr(
11377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11378 assert_instr(fmov)
11379)]
11380#[cfg_attr(
11381 not(target_arch = "arm"),
11382 stable(feature = "neon_intrinsics", since = "1.59.0")
11383)]
11384#[cfg_attr(
11385 target_arch = "arm",
11386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11387)]
11388pub fn vdup_n_u64(value: u64) -> uint64x1_t {
11389 uint64x1_t::splat(value)
11390}
11391#[doc = "Duplicate vector element to vector or scalar"]
11392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_u8)"]
11393#[inline(always)]
11394#[target_feature(enable = "neon")]
11395#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11396#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11397#[cfg_attr(
11398 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11399 assert_instr(dup)
11400)]
11401#[cfg_attr(
11402 not(target_arch = "arm"),
11403 stable(feature = "neon_intrinsics", since = "1.59.0")
11404)]
11405#[cfg_attr(
11406 target_arch = "arm",
11407 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11408)]
11409pub fn vdup_n_u8(value: u8) -> uint8x8_t {
11410 uint8x8_t::splat(value)
11411}
11412#[doc = "Duplicate vector element to vector or scalar"]
11413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f32)"]
11414#[inline(always)]
11415#[target_feature(enable = "neon")]
11416#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11417#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11418#[cfg_attr(
11419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11420 assert_instr(dup)
11421)]
11422#[cfg_attr(
11423 not(target_arch = "arm"),
11424 stable(feature = "neon_intrinsics", since = "1.59.0")
11425)]
11426#[cfg_attr(
11427 target_arch = "arm",
11428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11429)]
11430pub fn vdupq_n_f32(value: f32) -> float32x4_t {
11431 float32x4_t::splat(value)
11432}
11433#[doc = "Duplicate vector element to vector or scalar"]
11434#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_p16)"]
11435#[inline(always)]
11436#[target_feature(enable = "neon")]
11437#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11438#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11439#[cfg_attr(
11440 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11441 assert_instr(dup)
11442)]
11443#[cfg_attr(
11444 not(target_arch = "arm"),
11445 stable(feature = "neon_intrinsics", since = "1.59.0")
11446)]
11447#[cfg_attr(
11448 target_arch = "arm",
11449 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11450)]
11451pub fn vdupq_n_p16(value: p16) -> poly16x8_t {
11452 poly16x8_t::splat(value)
11453}
11454#[doc = "Duplicate vector element to vector or scalar"]
11455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_p8)"]
11456#[inline(always)]
11457#[target_feature(enable = "neon")]
11458#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11459#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11460#[cfg_attr(
11461 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11462 assert_instr(dup)
11463)]
11464#[cfg_attr(
11465 not(target_arch = "arm"),
11466 stable(feature = "neon_intrinsics", since = "1.59.0")
11467)]
11468#[cfg_attr(
11469 target_arch = "arm",
11470 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11471)]
11472pub fn vdupq_n_p8(value: p8) -> poly8x16_t {
11473 poly8x16_t::splat(value)
11474}
11475#[doc = "Duplicate vector element to vector or scalar"]
11476#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s16)"]
11477#[inline(always)]
11478#[target_feature(enable = "neon")]
11479#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11480#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11481#[cfg_attr(
11482 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11483 assert_instr(dup)
11484)]
11485#[cfg_attr(
11486 not(target_arch = "arm"),
11487 stable(feature = "neon_intrinsics", since = "1.59.0")
11488)]
11489#[cfg_attr(
11490 target_arch = "arm",
11491 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11492)]
11493pub fn vdupq_n_s16(value: i16) -> int16x8_t {
11494 int16x8_t::splat(value)
11495}
11496#[doc = "Duplicate vector element to vector or scalar"]
11497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s32)"]
11498#[inline(always)]
11499#[target_feature(enable = "neon")]
11500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11501#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11502#[cfg_attr(
11503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11504 assert_instr(dup)
11505)]
11506#[cfg_attr(
11507 not(target_arch = "arm"),
11508 stable(feature = "neon_intrinsics", since = "1.59.0")
11509)]
11510#[cfg_attr(
11511 target_arch = "arm",
11512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11513)]
11514pub fn vdupq_n_s32(value: i32) -> int32x4_t {
11515 int32x4_t::splat(value)
11516}
11517#[doc = "Duplicate vector element to vector or scalar"]
11518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s64)"]
11519#[inline(always)]
11520#[target_feature(enable = "neon")]
11521#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11522#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11523#[cfg_attr(
11524 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11525 assert_instr(dup)
11526)]
11527#[cfg_attr(
11528 not(target_arch = "arm"),
11529 stable(feature = "neon_intrinsics", since = "1.59.0")
11530)]
11531#[cfg_attr(
11532 target_arch = "arm",
11533 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11534)]
11535pub fn vdupq_n_s64(value: i64) -> int64x2_t {
11536 int64x2_t::splat(value)
11537}
11538#[doc = "Duplicate vector element to vector or scalar"]
11539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_s8)"]
11540#[inline(always)]
11541#[target_feature(enable = "neon")]
11542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11543#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11544#[cfg_attr(
11545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11546 assert_instr(dup)
11547)]
11548#[cfg_attr(
11549 not(target_arch = "arm"),
11550 stable(feature = "neon_intrinsics", since = "1.59.0")
11551)]
11552#[cfg_attr(
11553 target_arch = "arm",
11554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11555)]
11556pub fn vdupq_n_s8(value: i8) -> int8x16_t {
11557 int8x16_t::splat(value)
11558}
11559#[doc = "Duplicate vector element to vector or scalar"]
11560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u16)"]
11561#[inline(always)]
11562#[target_feature(enable = "neon")]
11563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11564#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
11565#[cfg_attr(
11566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11567 assert_instr(dup)
11568)]
11569#[cfg_attr(
11570 not(target_arch = "arm"),
11571 stable(feature = "neon_intrinsics", since = "1.59.0")
11572)]
11573#[cfg_attr(
11574 target_arch = "arm",
11575 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11576)]
11577pub fn vdupq_n_u16(value: u16) -> uint16x8_t {
11578 uint16x8_t::splat(value)
11579}
11580#[doc = "Duplicate vector element to vector or scalar"]
11581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u32)"]
11582#[inline(always)]
11583#[target_feature(enable = "neon")]
11584#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11585#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11586#[cfg_attr(
11587 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11588 assert_instr(dup)
11589)]
11590#[cfg_attr(
11591 not(target_arch = "arm"),
11592 stable(feature = "neon_intrinsics", since = "1.59.0")
11593)]
11594#[cfg_attr(
11595 target_arch = "arm",
11596 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11597)]
11598pub fn vdupq_n_u32(value: u32) -> uint32x4_t {
11599 uint32x4_t::splat(value)
11600}
11601#[doc = "Duplicate vector element to vector or scalar"]
11602#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u64)"]
11603#[inline(always)]
11604#[target_feature(enable = "neon")]
11605#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11606#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
11607#[cfg_attr(
11608 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11609 assert_instr(dup)
11610)]
11611#[cfg_attr(
11612 not(target_arch = "arm"),
11613 stable(feature = "neon_intrinsics", since = "1.59.0")
11614)]
11615#[cfg_attr(
11616 target_arch = "arm",
11617 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11618)]
11619pub fn vdupq_n_u64(value: u64) -> uint64x2_t {
11620 uint64x2_t::splat(value)
11621}
11622#[doc = "Duplicate vector element to vector or scalar"]
11623#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_u8)"]
11624#[inline(always)]
11625#[target_feature(enable = "neon")]
11626#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11627#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
11628#[cfg_attr(
11629 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11630 assert_instr(dup)
11631)]
11632#[cfg_attr(
11633 not(target_arch = "arm"),
11634 stable(feature = "neon_intrinsics", since = "1.59.0")
11635)]
11636#[cfg_attr(
11637 target_arch = "arm",
11638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11639)]
11640pub fn vdupq_n_u8(value: u8) -> uint8x16_t {
11641 uint8x16_t::splat(value)
11642}
11643#[doc = "Duplicate vector element to vector or scalar"]
11644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdup_n_f32_vfp4)"]
11645#[inline(always)]
11646#[target_feature(enable = "neon")]
11647#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
11648#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11649#[cfg_attr(
11650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11651 assert_instr(dup)
11652)]
11653#[cfg_attr(
11654 not(target_arch = "arm"),
11655 stable(feature = "neon_intrinsics", since = "1.59.0")
11656)]
11657#[cfg_attr(
11658 target_arch = "arm",
11659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11660)]
11661fn vdup_n_f32_vfp4(value: f32) -> float32x2_t {
11662 float32x2_t::splat(value)
11663}
11664#[doc = "Duplicate vector element to vector or scalar"]
11665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_n_f32_vfp4)"]
11666#[inline(always)]
11667#[target_feature(enable = "neon")]
11668#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
11669#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
11670#[cfg_attr(
11671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11672 assert_instr(dup)
11673)]
11674#[cfg_attr(
11675 not(target_arch = "arm"),
11676 stable(feature = "neon_intrinsics", since = "1.59.0")
11677)]
11678#[cfg_attr(
11679 target_arch = "arm",
11680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11681)]
11682fn vdupq_n_f32_vfp4(value: f32) -> float32x4_t {
11683 float32x4_t::splat(value)
11684}
11685#[doc = "Set all vector lanes to the same value"]
11686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_s64)"]
11687#[inline(always)]
11688#[target_feature(enable = "neon")]
11689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11690#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 0))]
11691#[cfg_attr(
11692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11693 assert_instr(dup, N = 0)
11694)]
11695#[rustc_legacy_const_generics(1)]
11696#[cfg_attr(
11697 not(target_arch = "arm"),
11698 stable(feature = "neon_intrinsics", since = "1.59.0")
11699)]
11700#[cfg_attr(
11701 target_arch = "arm",
11702 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11703)]
11704pub fn vdupq_lane_s64<const N: i32>(a: int64x1_t) -> int64x2_t {
11705 static_assert!(N == 0);
11706 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11707}
11708#[doc = "Set all vector lanes to the same value"]
11709#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_lane_u64)"]
11710#[inline(always)]
11711#[target_feature(enable = "neon")]
11712#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11713#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 0))]
11714#[cfg_attr(
11715 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11716 assert_instr(dup, N = 0)
11717)]
11718#[rustc_legacy_const_generics(1)]
11719#[cfg_attr(
11720 not(target_arch = "arm"),
11721 stable(feature = "neon_intrinsics", since = "1.59.0")
11722)]
11723#[cfg_attr(
11724 target_arch = "arm",
11725 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11726)]
11727pub fn vdupq_lane_u64<const N: i32>(a: uint64x1_t) -> uint64x2_t {
11728 static_assert!(N == 0);
11729 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11730}
11731#[doc = "Set all vector lanes to the same value"]
11732#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_s64)"]
11733#[inline(always)]
11734#[target_feature(enable = "neon")]
11735#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11736#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11737#[cfg_attr(
11738 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11739 assert_instr(dup, N = 1)
11740)]
11741#[rustc_legacy_const_generics(1)]
11742#[cfg_attr(
11743 not(target_arch = "arm"),
11744 stable(feature = "neon_intrinsics", since = "1.59.0")
11745)]
11746#[cfg_attr(
11747 target_arch = "arm",
11748 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11749)]
11750pub fn vdupq_laneq_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
11751 static_assert_uimm_bits!(N, 1);
11752 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11753}
11754#[doc = "Set all vector lanes to the same value"]
11755#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vdupq_laneq_u64)"]
11756#[inline(always)]
11757#[target_feature(enable = "neon")]
11758#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11759#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
11760#[cfg_attr(
11761 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11762 assert_instr(dup, N = 1)
11763)]
11764#[rustc_legacy_const_generics(1)]
11765#[cfg_attr(
11766 not(target_arch = "arm"),
11767 stable(feature = "neon_intrinsics", since = "1.59.0")
11768)]
11769#[cfg_attr(
11770 target_arch = "arm",
11771 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11772)]
11773pub fn vdupq_laneq_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
11774 static_assert_uimm_bits!(N, 1);
11775 unsafe { simd_shuffle!(a, a, [N as u32, N as u32]) }
11776}
11777#[doc = "Vector bitwise exclusive or (vector)"]
11778#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s8)"]
11779#[inline(always)]
11780#[target_feature(enable = "neon")]
11781#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11782#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11783#[cfg_attr(
11784 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11785 assert_instr(eor)
11786)]
11787#[cfg_attr(
11788 not(target_arch = "arm"),
11789 stable(feature = "neon_intrinsics", since = "1.59.0")
11790)]
11791#[cfg_attr(
11792 target_arch = "arm",
11793 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11794)]
11795pub fn veor_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
11796 unsafe { simd_xor(a, b) }
11797}
11798#[doc = "Vector bitwise exclusive or (vector)"]
11799#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s8)"]
11800#[inline(always)]
11801#[target_feature(enable = "neon")]
11802#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11803#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11804#[cfg_attr(
11805 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11806 assert_instr(eor)
11807)]
11808#[cfg_attr(
11809 not(target_arch = "arm"),
11810 stable(feature = "neon_intrinsics", since = "1.59.0")
11811)]
11812#[cfg_attr(
11813 target_arch = "arm",
11814 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11815)]
11816pub fn veorq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
11817 unsafe { simd_xor(a, b) }
11818}
11819#[doc = "Vector bitwise exclusive or (vector)"]
11820#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s16)"]
11821#[inline(always)]
11822#[target_feature(enable = "neon")]
11823#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11824#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11825#[cfg_attr(
11826 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11827 assert_instr(eor)
11828)]
11829#[cfg_attr(
11830 not(target_arch = "arm"),
11831 stable(feature = "neon_intrinsics", since = "1.59.0")
11832)]
11833#[cfg_attr(
11834 target_arch = "arm",
11835 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11836)]
11837pub fn veor_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
11838 unsafe { simd_xor(a, b) }
11839}
11840#[doc = "Vector bitwise exclusive or (vector)"]
11841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s16)"]
11842#[inline(always)]
11843#[target_feature(enable = "neon")]
11844#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11845#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11846#[cfg_attr(
11847 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11848 assert_instr(eor)
11849)]
11850#[cfg_attr(
11851 not(target_arch = "arm"),
11852 stable(feature = "neon_intrinsics", since = "1.59.0")
11853)]
11854#[cfg_attr(
11855 target_arch = "arm",
11856 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11857)]
11858pub fn veorq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
11859 unsafe { simd_xor(a, b) }
11860}
11861#[doc = "Vector bitwise exclusive or (vector)"]
11862#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s32)"]
11863#[inline(always)]
11864#[target_feature(enable = "neon")]
11865#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11866#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11867#[cfg_attr(
11868 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11869 assert_instr(eor)
11870)]
11871#[cfg_attr(
11872 not(target_arch = "arm"),
11873 stable(feature = "neon_intrinsics", since = "1.59.0")
11874)]
11875#[cfg_attr(
11876 target_arch = "arm",
11877 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11878)]
11879pub fn veor_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
11880 unsafe { simd_xor(a, b) }
11881}
11882#[doc = "Vector bitwise exclusive or (vector)"]
11883#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s32)"]
11884#[inline(always)]
11885#[target_feature(enable = "neon")]
11886#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11887#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11888#[cfg_attr(
11889 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11890 assert_instr(eor)
11891)]
11892#[cfg_attr(
11893 not(target_arch = "arm"),
11894 stable(feature = "neon_intrinsics", since = "1.59.0")
11895)]
11896#[cfg_attr(
11897 target_arch = "arm",
11898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11899)]
11900pub fn veorq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
11901 unsafe { simd_xor(a, b) }
11902}
11903#[doc = "Vector bitwise exclusive or (vector)"]
11904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_s64)"]
11905#[inline(always)]
11906#[target_feature(enable = "neon")]
11907#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11908#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11909#[cfg_attr(
11910 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11911 assert_instr(eor)
11912)]
11913#[cfg_attr(
11914 not(target_arch = "arm"),
11915 stable(feature = "neon_intrinsics", since = "1.59.0")
11916)]
11917#[cfg_attr(
11918 target_arch = "arm",
11919 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11920)]
11921pub fn veor_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
11922 unsafe { simd_xor(a, b) }
11923}
11924#[doc = "Vector bitwise exclusive or (vector)"]
11925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_s64)"]
11926#[inline(always)]
11927#[target_feature(enable = "neon")]
11928#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11929#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11930#[cfg_attr(
11931 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11932 assert_instr(eor)
11933)]
11934#[cfg_attr(
11935 not(target_arch = "arm"),
11936 stable(feature = "neon_intrinsics", since = "1.59.0")
11937)]
11938#[cfg_attr(
11939 target_arch = "arm",
11940 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11941)]
11942pub fn veorq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
11943 unsafe { simd_xor(a, b) }
11944}
11945#[doc = "Vector bitwise exclusive or (vector)"]
11946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u8)"]
11947#[inline(always)]
11948#[target_feature(enable = "neon")]
11949#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11950#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11951#[cfg_attr(
11952 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11953 assert_instr(eor)
11954)]
11955#[cfg_attr(
11956 not(target_arch = "arm"),
11957 stable(feature = "neon_intrinsics", since = "1.59.0")
11958)]
11959#[cfg_attr(
11960 target_arch = "arm",
11961 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11962)]
11963pub fn veor_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
11964 unsafe { simd_xor(a, b) }
11965}
11966#[doc = "Vector bitwise exclusive or (vector)"]
11967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u8)"]
11968#[inline(always)]
11969#[target_feature(enable = "neon")]
11970#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11971#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11972#[cfg_attr(
11973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11974 assert_instr(eor)
11975)]
11976#[cfg_attr(
11977 not(target_arch = "arm"),
11978 stable(feature = "neon_intrinsics", since = "1.59.0")
11979)]
11980#[cfg_attr(
11981 target_arch = "arm",
11982 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
11983)]
11984pub fn veorq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
11985 unsafe { simd_xor(a, b) }
11986}
11987#[doc = "Vector bitwise exclusive or (vector)"]
11988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u16)"]
11989#[inline(always)]
11990#[target_feature(enable = "neon")]
11991#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
11992#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
11993#[cfg_attr(
11994 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
11995 assert_instr(eor)
11996)]
11997#[cfg_attr(
11998 not(target_arch = "arm"),
11999 stable(feature = "neon_intrinsics", since = "1.59.0")
12000)]
12001#[cfg_attr(
12002 target_arch = "arm",
12003 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12004)]
12005pub fn veor_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
12006 unsafe { simd_xor(a, b) }
12007}
12008#[doc = "Vector bitwise exclusive or (vector)"]
12009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u16)"]
12010#[inline(always)]
12011#[target_feature(enable = "neon")]
12012#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12013#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12014#[cfg_attr(
12015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12016 assert_instr(eor)
12017)]
12018#[cfg_attr(
12019 not(target_arch = "arm"),
12020 stable(feature = "neon_intrinsics", since = "1.59.0")
12021)]
12022#[cfg_attr(
12023 target_arch = "arm",
12024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12025)]
12026pub fn veorq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
12027 unsafe { simd_xor(a, b) }
12028}
12029#[doc = "Vector bitwise exclusive or (vector)"]
12030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u32)"]
12031#[inline(always)]
12032#[target_feature(enable = "neon")]
12033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12034#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12035#[cfg_attr(
12036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12037 assert_instr(eor)
12038)]
12039#[cfg_attr(
12040 not(target_arch = "arm"),
12041 stable(feature = "neon_intrinsics", since = "1.59.0")
12042)]
12043#[cfg_attr(
12044 target_arch = "arm",
12045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12046)]
12047pub fn veor_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
12048 unsafe { simd_xor(a, b) }
12049}
12050#[doc = "Vector bitwise exclusive or (vector)"]
12051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u32)"]
12052#[inline(always)]
12053#[target_feature(enable = "neon")]
12054#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12055#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12056#[cfg_attr(
12057 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12058 assert_instr(eor)
12059)]
12060#[cfg_attr(
12061 not(target_arch = "arm"),
12062 stable(feature = "neon_intrinsics", since = "1.59.0")
12063)]
12064#[cfg_attr(
12065 target_arch = "arm",
12066 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12067)]
12068pub fn veorq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
12069 unsafe { simd_xor(a, b) }
12070}
12071#[doc = "Vector bitwise exclusive or (vector)"]
12072#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veor_u64)"]
12073#[inline(always)]
12074#[target_feature(enable = "neon")]
12075#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12076#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12077#[cfg_attr(
12078 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12079 assert_instr(eor)
12080)]
12081#[cfg_attr(
12082 not(target_arch = "arm"),
12083 stable(feature = "neon_intrinsics", since = "1.59.0")
12084)]
12085#[cfg_attr(
12086 target_arch = "arm",
12087 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12088)]
12089pub fn veor_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
12090 unsafe { simd_xor(a, b) }
12091}
12092#[doc = "Vector bitwise exclusive or (vector)"]
12093#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/veorq_u64)"]
12094#[inline(always)]
12095#[target_feature(enable = "neon")]
12096#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12097#[cfg_attr(all(test, target_arch = "arm"), assert_instr(veor))]
12098#[cfg_attr(
12099 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12100 assert_instr(eor)
12101)]
12102#[cfg_attr(
12103 not(target_arch = "arm"),
12104 stable(feature = "neon_intrinsics", since = "1.59.0")
12105)]
12106#[cfg_attr(
12107 target_arch = "arm",
12108 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12109)]
12110pub fn veorq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
12111 unsafe { simd_xor(a, b) }
12112}
12113#[doc = "Extract vector from pair of vectors"]
12114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_f16)"]
12115#[inline(always)]
12116#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12117#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12118#[cfg_attr(
12119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12120 assert_instr(ext, N = 3)
12121)]
12122#[rustc_legacy_const_generics(2)]
12123#[target_feature(enable = "neon,fp16")]
12124#[cfg_attr(
12125 not(target_arch = "arm"),
12126 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
12127)]
12128#[cfg_attr(
12129 target_arch = "arm",
12130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12131)]
12132#[cfg(not(target_arch = "arm64ec"))]
12133pub fn vext_f16<const N: i32>(a: float16x4_t, b: float16x4_t) -> float16x4_t {
12134 static_assert_uimm_bits!(N, 2);
12135 unsafe {
12136 match N & 0b11 {
12137 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12138 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12139 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12140 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12141 _ => unreachable_unchecked(),
12142 }
12143 }
12144}
12145#[doc = "Extract vector from pair of vectors"]
12146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_f32)"]
12147#[inline(always)]
12148#[target_feature(enable = "neon")]
12149#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12150#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
12151#[cfg_attr(
12152 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12153 assert_instr(ext, N = 1)
12154)]
12155#[rustc_legacy_const_generics(2)]
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 vext_f32<const N: i32>(a: float32x2_t, b: float32x2_t) -> float32x2_t {
12165 static_assert_uimm_bits!(N, 1);
12166 unsafe {
12167 match N & 0b1 {
12168 0 => simd_shuffle!(a, b, [0, 1]),
12169 1 => simd_shuffle!(a, b, [1, 2]),
12170 _ => unreachable_unchecked(),
12171 }
12172 }
12173}
12174#[doc = "Extract vector from pair of vectors"]
12175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s32)"]
12176#[inline(always)]
12177#[target_feature(enable = "neon")]
12178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12179#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
12180#[cfg_attr(
12181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12182 assert_instr(ext, N = 1)
12183)]
12184#[rustc_legacy_const_generics(2)]
12185#[cfg_attr(
12186 not(target_arch = "arm"),
12187 stable(feature = "neon_intrinsics", since = "1.59.0")
12188)]
12189#[cfg_attr(
12190 target_arch = "arm",
12191 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12192)]
12193pub fn vext_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
12194 static_assert_uimm_bits!(N, 1);
12195 unsafe {
12196 match N & 0b1 {
12197 0 => simd_shuffle!(a, b, [0, 1]),
12198 1 => simd_shuffle!(a, b, [1, 2]),
12199 _ => unreachable_unchecked(),
12200 }
12201 }
12202}
12203#[doc = "Extract vector from pair of vectors"]
12204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u32)"]
12205#[inline(always)]
12206#[target_feature(enable = "neon")]
12207#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12208#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 1))]
12209#[cfg_attr(
12210 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12211 assert_instr(ext, N = 1)
12212)]
12213#[rustc_legacy_const_generics(2)]
12214#[cfg_attr(
12215 not(target_arch = "arm"),
12216 stable(feature = "neon_intrinsics", since = "1.59.0")
12217)]
12218#[cfg_attr(
12219 target_arch = "arm",
12220 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12221)]
12222pub fn vext_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
12223 static_assert_uimm_bits!(N, 1);
12224 unsafe {
12225 match N & 0b1 {
12226 0 => simd_shuffle!(a, b, [0, 1]),
12227 1 => simd_shuffle!(a, b, [1, 2]),
12228 _ => unreachable_unchecked(),
12229 }
12230 }
12231}
12232#[doc = "Extract vector from pair of vectors"]
12233#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s64)"]
12234#[doc = "## Safety"]
12235#[doc = " * Neon intrinsic unsafe"]
12236#[inline(always)]
12237#[target_feature(enable = "neon")]
12238#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12239#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
12240#[cfg_attr(
12241 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12242 assert_instr(nop, N = 0)
12243)]
12244#[rustc_legacy_const_generics(2)]
12245#[cfg_attr(
12246 not(target_arch = "arm"),
12247 stable(feature = "neon_intrinsics", since = "1.59.0")
12248)]
12249#[cfg_attr(
12250 target_arch = "arm",
12251 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12252)]
12253pub unsafe fn vext_s64<const N: i32>(a: int64x1_t, _b: int64x1_t) -> int64x1_t {
12254 static_assert!(N == 0);
12255 a
12256}
12257#[doc = "Extract vector from pair of vectors"]
12258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u64)"]
12259#[doc = "## Safety"]
12260#[doc = " * Neon intrinsic unsafe"]
12261#[inline(always)]
12262#[target_feature(enable = "neon")]
12263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12264#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, N = 0))]
12265#[cfg_attr(
12266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12267 assert_instr(nop, N = 0)
12268)]
12269#[rustc_legacy_const_generics(2)]
12270#[cfg_attr(
12271 not(target_arch = "arm"),
12272 stable(feature = "neon_intrinsics", since = "1.59.0")
12273)]
12274#[cfg_attr(
12275 target_arch = "arm",
12276 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12277)]
12278pub unsafe fn vext_u64<const N: i32>(a: uint64x1_t, _b: uint64x1_t) -> uint64x1_t {
12279 static_assert!(N == 0);
12280 a
12281}
12282#[doc = "Extract vector from pair of vectors"]
12283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s8)"]
12284#[inline(always)]
12285#[target_feature(enable = "neon")]
12286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12287#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12288#[cfg_attr(
12289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12290 assert_instr(ext, N = 7)
12291)]
12292#[rustc_legacy_const_generics(2)]
12293#[cfg_attr(
12294 not(target_arch = "arm"),
12295 stable(feature = "neon_intrinsics", since = "1.59.0")
12296)]
12297#[cfg_attr(
12298 target_arch = "arm",
12299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12300)]
12301pub fn vext_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
12302 static_assert_uimm_bits!(N, 3);
12303 unsafe {
12304 match N & 0b111 {
12305 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12306 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12307 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12308 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12309 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12310 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12311 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12312 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12313 _ => unreachable_unchecked(),
12314 }
12315 }
12316}
12317#[doc = "Extract vector from pair of vectors"]
12318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s16)"]
12319#[inline(always)]
12320#[target_feature(enable = "neon")]
12321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12322#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12323#[cfg_attr(
12324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12325 assert_instr(ext, N = 7)
12326)]
12327#[rustc_legacy_const_generics(2)]
12328#[cfg_attr(
12329 not(target_arch = "arm"),
12330 stable(feature = "neon_intrinsics", since = "1.59.0")
12331)]
12332#[cfg_attr(
12333 target_arch = "arm",
12334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12335)]
12336pub fn vextq_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
12337 static_assert_uimm_bits!(N, 3);
12338 unsafe {
12339 match N & 0b111 {
12340 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12341 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12342 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12343 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12344 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12345 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12346 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12347 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12348 _ => unreachable_unchecked(),
12349 }
12350 }
12351}
12352#[doc = "Extract vector from pair of vectors"]
12353#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u8)"]
12354#[inline(always)]
12355#[target_feature(enable = "neon")]
12356#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12357#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12358#[cfg_attr(
12359 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12360 assert_instr(ext, N = 7)
12361)]
12362#[rustc_legacy_const_generics(2)]
12363#[cfg_attr(
12364 not(target_arch = "arm"),
12365 stable(feature = "neon_intrinsics", since = "1.59.0")
12366)]
12367#[cfg_attr(
12368 target_arch = "arm",
12369 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12370)]
12371pub fn vext_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
12372 static_assert_uimm_bits!(N, 3);
12373 unsafe {
12374 match N & 0b111 {
12375 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12376 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12377 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12378 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12379 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12380 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12381 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12382 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12383 _ => unreachable_unchecked(),
12384 }
12385 }
12386}
12387#[doc = "Extract vector from pair of vectors"]
12388#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u16)"]
12389#[inline(always)]
12390#[target_feature(enable = "neon")]
12391#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12392#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12393#[cfg_attr(
12394 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12395 assert_instr(ext, N = 7)
12396)]
12397#[rustc_legacy_const_generics(2)]
12398#[cfg_attr(
12399 not(target_arch = "arm"),
12400 stable(feature = "neon_intrinsics", since = "1.59.0")
12401)]
12402#[cfg_attr(
12403 target_arch = "arm",
12404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12405)]
12406pub fn vextq_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
12407 static_assert_uimm_bits!(N, 3);
12408 unsafe {
12409 match N & 0b111 {
12410 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12411 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12412 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12413 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12414 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12415 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12416 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12417 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12418 _ => unreachable_unchecked(),
12419 }
12420 }
12421}
12422#[doc = "Extract vector from pair of vectors"]
12423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_p8)"]
12424#[inline(always)]
12425#[target_feature(enable = "neon")]
12426#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12427#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12428#[cfg_attr(
12429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12430 assert_instr(ext, N = 7)
12431)]
12432#[rustc_legacy_const_generics(2)]
12433#[cfg_attr(
12434 not(target_arch = "arm"),
12435 stable(feature = "neon_intrinsics", since = "1.59.0")
12436)]
12437#[cfg_attr(
12438 target_arch = "arm",
12439 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12440)]
12441pub fn vext_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
12442 static_assert_uimm_bits!(N, 3);
12443 unsafe {
12444 match N & 0b111 {
12445 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12446 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12447 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12448 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12449 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12450 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12451 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12452 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12453 _ => unreachable_unchecked(),
12454 }
12455 }
12456}
12457#[doc = "Extract vector from pair of vectors"]
12458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_p16)"]
12459#[inline(always)]
12460#[target_feature(enable = "neon")]
12461#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12462#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12463#[cfg_attr(
12464 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12465 assert_instr(ext, N = 7)
12466)]
12467#[rustc_legacy_const_generics(2)]
12468#[cfg_attr(
12469 not(target_arch = "arm"),
12470 stable(feature = "neon_intrinsics", since = "1.59.0")
12471)]
12472#[cfg_attr(
12473 target_arch = "arm",
12474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12475)]
12476pub fn vextq_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
12477 static_assert_uimm_bits!(N, 3);
12478 unsafe {
12479 match N & 0b111 {
12480 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12481 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12482 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12483 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12484 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12485 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12486 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12487 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12488 _ => unreachable_unchecked(),
12489 }
12490 }
12491}
12492#[doc = "Extract vector from pair of vectors"]
12493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_f16)"]
12494#[inline(always)]
12495#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12496#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 7))]
12497#[cfg_attr(
12498 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12499 assert_instr(ext, N = 7)
12500)]
12501#[rustc_legacy_const_generics(2)]
12502#[target_feature(enable = "neon,fp16")]
12503#[cfg_attr(
12504 not(target_arch = "arm"),
12505 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
12506)]
12507#[cfg_attr(
12508 target_arch = "arm",
12509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12510)]
12511#[cfg(not(target_arch = "arm64ec"))]
12512pub fn vextq_f16<const N: i32>(a: float16x8_t, b: float16x8_t) -> float16x8_t {
12513 static_assert_uimm_bits!(N, 3);
12514 unsafe {
12515 match N & 0b111 {
12516 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7]),
12517 1 => simd_shuffle!(a, b, [1, 2, 3, 4, 5, 6, 7, 8]),
12518 2 => simd_shuffle!(a, b, [2, 3, 4, 5, 6, 7, 8, 9]),
12519 3 => simd_shuffle!(a, b, [3, 4, 5, 6, 7, 8, 9, 10]),
12520 4 => simd_shuffle!(a, b, [4, 5, 6, 7, 8, 9, 10, 11]),
12521 5 => simd_shuffle!(a, b, [5, 6, 7, 8, 9, 10, 11, 12]),
12522 6 => simd_shuffle!(a, b, [6, 7, 8, 9, 10, 11, 12, 13]),
12523 7 => simd_shuffle!(a, b, [7, 8, 9, 10, 11, 12, 13, 14]),
12524 _ => unreachable_unchecked(),
12525 }
12526 }
12527}
12528#[doc = "Extract vector from pair of vectors"]
12529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_f32)"]
12530#[inline(always)]
12531#[target_feature(enable = "neon")]
12532#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12533#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12534#[cfg_attr(
12535 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12536 assert_instr(ext, N = 3)
12537)]
12538#[rustc_legacy_const_generics(2)]
12539#[cfg_attr(
12540 not(target_arch = "arm"),
12541 stable(feature = "neon_intrinsics", since = "1.59.0")
12542)]
12543#[cfg_attr(
12544 target_arch = "arm",
12545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12546)]
12547pub fn vextq_f32<const N: i32>(a: float32x4_t, b: float32x4_t) -> float32x4_t {
12548 static_assert_uimm_bits!(N, 2);
12549 unsafe {
12550 match N & 0b11 {
12551 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12552 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12553 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12554 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12555 _ => unreachable_unchecked(),
12556 }
12557 }
12558}
12559#[doc = "Extract vector from pair of vectors"]
12560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_s16)"]
12561#[inline(always)]
12562#[target_feature(enable = "neon")]
12563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12564#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12565#[cfg_attr(
12566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12567 assert_instr(ext, N = 3)
12568)]
12569#[rustc_legacy_const_generics(2)]
12570#[cfg_attr(
12571 not(target_arch = "arm"),
12572 stable(feature = "neon_intrinsics", since = "1.59.0")
12573)]
12574#[cfg_attr(
12575 target_arch = "arm",
12576 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12577)]
12578pub fn vext_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
12579 static_assert_uimm_bits!(N, 2);
12580 unsafe {
12581 match N & 0b11 {
12582 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12583 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12584 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12585 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12586 _ => unreachable_unchecked(),
12587 }
12588 }
12589}
12590#[doc = "Extract vector from pair of vectors"]
12591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s32)"]
12592#[inline(always)]
12593#[target_feature(enable = "neon")]
12594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12595#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12596#[cfg_attr(
12597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12598 assert_instr(ext, N = 3)
12599)]
12600#[rustc_legacy_const_generics(2)]
12601#[cfg_attr(
12602 not(target_arch = "arm"),
12603 stable(feature = "neon_intrinsics", since = "1.59.0")
12604)]
12605#[cfg_attr(
12606 target_arch = "arm",
12607 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12608)]
12609pub fn vextq_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
12610 static_assert_uimm_bits!(N, 2);
12611 unsafe {
12612 match N & 0b11 {
12613 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12614 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12615 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12616 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12617 _ => unreachable_unchecked(),
12618 }
12619 }
12620}
12621#[doc = "Extract vector from pair of vectors"]
12622#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_u16)"]
12623#[inline(always)]
12624#[target_feature(enable = "neon")]
12625#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12626#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12627#[cfg_attr(
12628 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12629 assert_instr(ext, N = 3)
12630)]
12631#[rustc_legacy_const_generics(2)]
12632#[cfg_attr(
12633 not(target_arch = "arm"),
12634 stable(feature = "neon_intrinsics", since = "1.59.0")
12635)]
12636#[cfg_attr(
12637 target_arch = "arm",
12638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12639)]
12640pub fn vext_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
12641 static_assert_uimm_bits!(N, 2);
12642 unsafe {
12643 match N & 0b11 {
12644 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12645 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12646 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12647 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12648 _ => unreachable_unchecked(),
12649 }
12650 }
12651}
12652#[doc = "Extract vector from pair of vectors"]
12653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u32)"]
12654#[inline(always)]
12655#[target_feature(enable = "neon")]
12656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12657#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12658#[cfg_attr(
12659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12660 assert_instr(ext, N = 3)
12661)]
12662#[rustc_legacy_const_generics(2)]
12663#[cfg_attr(
12664 not(target_arch = "arm"),
12665 stable(feature = "neon_intrinsics", since = "1.59.0")
12666)]
12667#[cfg_attr(
12668 target_arch = "arm",
12669 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12670)]
12671pub fn vextq_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
12672 static_assert_uimm_bits!(N, 2);
12673 unsafe {
12674 match N & 0b11 {
12675 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12676 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12677 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12678 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12679 _ => unreachable_unchecked(),
12680 }
12681 }
12682}
12683#[doc = "Extract vector from pair of vectors"]
12684#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vext_p16)"]
12685#[inline(always)]
12686#[target_feature(enable = "neon")]
12687#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12688#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 3))]
12689#[cfg_attr(
12690 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12691 assert_instr(ext, N = 3)
12692)]
12693#[rustc_legacy_const_generics(2)]
12694#[cfg_attr(
12695 not(target_arch = "arm"),
12696 stable(feature = "neon_intrinsics", since = "1.59.0")
12697)]
12698#[cfg_attr(
12699 target_arch = "arm",
12700 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12701)]
12702pub fn vext_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
12703 static_assert_uimm_bits!(N, 2);
12704 unsafe {
12705 match N & 0b11 {
12706 0 => simd_shuffle!(a, b, [0, 1, 2, 3]),
12707 1 => simd_shuffle!(a, b, [1, 2, 3, 4]),
12708 2 => simd_shuffle!(a, b, [2, 3, 4, 5]),
12709 3 => simd_shuffle!(a, b, [3, 4, 5, 6]),
12710 _ => unreachable_unchecked(),
12711 }
12712 }
12713}
12714#[doc = "Extract vector from pair of vectors"]
12715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s64)"]
12716#[inline(always)]
12717#[target_feature(enable = "neon")]
12718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
12720#[cfg_attr(
12721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12722 assert_instr(ext, N = 1)
12723)]
12724#[rustc_legacy_const_generics(2)]
12725#[cfg_attr(
12726 not(target_arch = "arm"),
12727 stable(feature = "neon_intrinsics", since = "1.59.0")
12728)]
12729#[cfg_attr(
12730 target_arch = "arm",
12731 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12732)]
12733pub fn vextq_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
12734 static_assert_uimm_bits!(N, 1);
12735 unsafe {
12736 match N & 0b1 {
12737 0 => simd_shuffle!(a, b, [0, 1]),
12738 1 => simd_shuffle!(a, b, [1, 2]),
12739 _ => unreachable_unchecked(),
12740 }
12741 }
12742}
12743#[doc = "Extract vector from pair of vectors"]
12744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u64)"]
12745#[inline(always)]
12746#[target_feature(enable = "neon")]
12747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12748#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmov, N = 1))]
12749#[cfg_attr(
12750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12751 assert_instr(ext, N = 1)
12752)]
12753#[rustc_legacy_const_generics(2)]
12754#[cfg_attr(
12755 not(target_arch = "arm"),
12756 stable(feature = "neon_intrinsics", since = "1.59.0")
12757)]
12758#[cfg_attr(
12759 target_arch = "arm",
12760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12761)]
12762pub fn vextq_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
12763 static_assert_uimm_bits!(N, 1);
12764 unsafe {
12765 match N & 0b1 {
12766 0 => simd_shuffle!(a, b, [0, 1]),
12767 1 => simd_shuffle!(a, b, [1, 2]),
12768 _ => unreachable_unchecked(),
12769 }
12770 }
12771}
12772#[doc = "Extract vector from pair of vectors"]
12773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_s8)"]
12774#[inline(always)]
12775#[target_feature(enable = "neon")]
12776#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12777#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
12778#[cfg_attr(
12779 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12780 assert_instr(ext, N = 15)
12781)]
12782#[rustc_legacy_const_generics(2)]
12783#[cfg_attr(
12784 not(target_arch = "arm"),
12785 stable(feature = "neon_intrinsics", since = "1.59.0")
12786)]
12787#[cfg_attr(
12788 target_arch = "arm",
12789 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12790)]
12791pub fn vextq_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
12792 static_assert_uimm_bits!(N, 4);
12793 unsafe {
12794 match N & 0b1111 {
12795 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
12796 1 => simd_shuffle!(
12797 a,
12798 b,
12799 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
12800 ),
12801 2 => simd_shuffle!(
12802 a,
12803 b,
12804 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
12805 ),
12806 3 => simd_shuffle!(
12807 a,
12808 b,
12809 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
12810 ),
12811 4 => simd_shuffle!(
12812 a,
12813 b,
12814 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
12815 ),
12816 5 => simd_shuffle!(
12817 a,
12818 b,
12819 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
12820 ),
12821 6 => simd_shuffle!(
12822 a,
12823 b,
12824 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
12825 ),
12826 7 => simd_shuffle!(
12827 a,
12828 b,
12829 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
12830 ),
12831 8 => simd_shuffle!(
12832 a,
12833 b,
12834 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
12835 ),
12836 9 => simd_shuffle!(
12837 a,
12838 b,
12839 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
12840 ),
12841 10 => simd_shuffle!(
12842 a,
12843 b,
12844 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
12845 ),
12846 11 => simd_shuffle!(
12847 a,
12848 b,
12849 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
12850 ),
12851 12 => simd_shuffle!(
12852 a,
12853 b,
12854 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
12855 ),
12856 13 => simd_shuffle!(
12857 a,
12858 b,
12859 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
12860 ),
12861 14 => simd_shuffle!(
12862 a,
12863 b,
12864 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
12865 ),
12866 15 => simd_shuffle!(
12867 a,
12868 b,
12869 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
12870 ),
12871 _ => unreachable_unchecked(),
12872 }
12873 }
12874}
12875#[doc = "Extract vector from pair of vectors"]
12876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_u8)"]
12877#[inline(always)]
12878#[target_feature(enable = "neon")]
12879#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12880#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
12881#[cfg_attr(
12882 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12883 assert_instr(ext, N = 15)
12884)]
12885#[rustc_legacy_const_generics(2)]
12886#[cfg_attr(
12887 not(target_arch = "arm"),
12888 stable(feature = "neon_intrinsics", since = "1.59.0")
12889)]
12890#[cfg_attr(
12891 target_arch = "arm",
12892 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12893)]
12894pub fn vextq_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
12895 static_assert_uimm_bits!(N, 4);
12896 unsafe {
12897 match N & 0b1111 {
12898 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
12899 1 => simd_shuffle!(
12900 a,
12901 b,
12902 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
12903 ),
12904 2 => simd_shuffle!(
12905 a,
12906 b,
12907 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
12908 ),
12909 3 => simd_shuffle!(
12910 a,
12911 b,
12912 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
12913 ),
12914 4 => simd_shuffle!(
12915 a,
12916 b,
12917 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
12918 ),
12919 5 => simd_shuffle!(
12920 a,
12921 b,
12922 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
12923 ),
12924 6 => simd_shuffle!(
12925 a,
12926 b,
12927 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
12928 ),
12929 7 => simd_shuffle!(
12930 a,
12931 b,
12932 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
12933 ),
12934 8 => simd_shuffle!(
12935 a,
12936 b,
12937 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
12938 ),
12939 9 => simd_shuffle!(
12940 a,
12941 b,
12942 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
12943 ),
12944 10 => simd_shuffle!(
12945 a,
12946 b,
12947 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
12948 ),
12949 11 => simd_shuffle!(
12950 a,
12951 b,
12952 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
12953 ),
12954 12 => simd_shuffle!(
12955 a,
12956 b,
12957 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
12958 ),
12959 13 => simd_shuffle!(
12960 a,
12961 b,
12962 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
12963 ),
12964 14 => simd_shuffle!(
12965 a,
12966 b,
12967 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
12968 ),
12969 15 => simd_shuffle!(
12970 a,
12971 b,
12972 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
12973 ),
12974 _ => unreachable_unchecked(),
12975 }
12976 }
12977}
12978#[doc = "Extract vector from pair of vectors"]
12979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vextq_p8)"]
12980#[inline(always)]
12981#[target_feature(enable = "neon")]
12982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
12983#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vext.8", N = 15))]
12984#[cfg_attr(
12985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
12986 assert_instr(ext, N = 15)
12987)]
12988#[rustc_legacy_const_generics(2)]
12989#[cfg_attr(
12990 not(target_arch = "arm"),
12991 stable(feature = "neon_intrinsics", since = "1.59.0")
12992)]
12993#[cfg_attr(
12994 target_arch = "arm",
12995 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
12996)]
12997pub fn vextq_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
12998 static_assert_uimm_bits!(N, 4);
12999 unsafe {
13000 match N & 0b1111 {
13001 0 => simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
13002 1 => simd_shuffle!(
13003 a,
13004 b,
13005 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
13006 ),
13007 2 => simd_shuffle!(
13008 a,
13009 b,
13010 [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
13011 ),
13012 3 => simd_shuffle!(
13013 a,
13014 b,
13015 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
13016 ),
13017 4 => simd_shuffle!(
13018 a,
13019 b,
13020 [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
13021 ),
13022 5 => simd_shuffle!(
13023 a,
13024 b,
13025 [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
13026 ),
13027 6 => simd_shuffle!(
13028 a,
13029 b,
13030 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
13031 ),
13032 7 => simd_shuffle!(
13033 a,
13034 b,
13035 [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
13036 ),
13037 8 => simd_shuffle!(
13038 a,
13039 b,
13040 [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
13041 ),
13042 9 => simd_shuffle!(
13043 a,
13044 b,
13045 [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
13046 ),
13047 10 => simd_shuffle!(
13048 a,
13049 b,
13050 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
13051 ),
13052 11 => simd_shuffle!(
13053 a,
13054 b,
13055 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
13056 ),
13057 12 => simd_shuffle!(
13058 a,
13059 b,
13060 [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
13061 ),
13062 13 => simd_shuffle!(
13063 a,
13064 b,
13065 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]
13066 ),
13067 14 => simd_shuffle!(
13068 a,
13069 b,
13070 [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
13071 ),
13072 15 => simd_shuffle!(
13073 a,
13074 b,
13075 [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
13076 ),
13077 _ => unreachable_unchecked(),
13078 }
13079 }
13080}
13081#[doc = "Floating-point fused Multiply-Add to accumulator (vector)"]
13082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_f16)"]
13083#[inline(always)]
13084#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13085#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13086#[cfg_attr(
13087 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13088 assert_instr(fmla)
13089)]
13090#[target_feature(enable = "neon,fp16")]
13091#[cfg_attr(
13092 not(target_arch = "arm"),
13093 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13094)]
13095#[cfg_attr(
13096 target_arch = "arm",
13097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13098)]
13099#[cfg(not(target_arch = "arm64ec"))]
13100pub fn vfma_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t {
13101 unsafe { simd_fma(b, c, a) }
13102}
13103#[doc = "Floating-point fused Multiply-Add to accumulator (vector)"]
13104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_f16)"]
13105#[inline(always)]
13106#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13107#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13108#[cfg_attr(
13109 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13110 assert_instr(fmla)
13111)]
13112#[target_feature(enable = "neon,fp16")]
13113#[cfg_attr(
13114 not(target_arch = "arm"),
13115 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13116)]
13117#[cfg_attr(
13118 target_arch = "arm",
13119 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13120)]
13121#[cfg(not(target_arch = "arm64ec"))]
13122pub fn vfmaq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t {
13123 unsafe { simd_fma(b, c, a) }
13124}
13125#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_f32)"]
13127#[inline(always)]
13128#[target_feature(enable = "neon")]
13129#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13130#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13131#[cfg_attr(
13132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13133 assert_instr(fmla)
13134)]
13135#[cfg_attr(
13136 not(target_arch = "arm"),
13137 stable(feature = "neon_intrinsics", since = "1.59.0")
13138)]
13139#[cfg_attr(
13140 target_arch = "arm",
13141 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13142)]
13143pub fn vfma_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
13144 unsafe { simd_fma(b, c, a) }
13145}
13146#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13147#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_f32)"]
13148#[inline(always)]
13149#[target_feature(enable = "neon")]
13150#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13151#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13152#[cfg_attr(
13153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13154 assert_instr(fmla)
13155)]
13156#[cfg_attr(
13157 not(target_arch = "arm"),
13158 stable(feature = "neon_intrinsics", since = "1.59.0")
13159)]
13160#[cfg_attr(
13161 target_arch = "arm",
13162 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13163)]
13164pub fn vfmaq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
13165 unsafe { simd_fma(b, c, a) }
13166}
13167#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13168#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfma_n_f32)"]
13169#[inline(always)]
13170#[target_feature(enable = "neon")]
13171#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13172#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13173#[cfg_attr(
13174 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13175 assert_instr(fmla)
13176)]
13177#[cfg_attr(
13178 not(target_arch = "arm"),
13179 stable(feature = "neon_intrinsics", since = "1.59.0")
13180)]
13181#[cfg_attr(
13182 target_arch = "arm",
13183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13184)]
13185pub fn vfma_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
13186 vfma_f32(a, b, vdup_n_f32_vfp4(c))
13187}
13188#[doc = "Floating-point fused Multiply-Add to accumulator(vector)"]
13189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmaq_n_f32)"]
13190#[inline(always)]
13191#[target_feature(enable = "neon")]
13192#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13193#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfma))]
13194#[cfg_attr(
13195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13196 assert_instr(fmla)
13197)]
13198#[cfg_attr(
13199 not(target_arch = "arm"),
13200 stable(feature = "neon_intrinsics", since = "1.59.0")
13201)]
13202#[cfg_attr(
13203 target_arch = "arm",
13204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13205)]
13206pub fn vfmaq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
13207 vfmaq_f32(a, b, vdupq_n_f32_vfp4(c))
13208}
13209#[doc = "Floating-point fused multiply-subtract from accumulator"]
13210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_f16)"]
13211#[inline(always)]
13212#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
13213#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13214#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
13215#[cfg_attr(
13216 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13217 assert_instr(fmls)
13218)]
13219#[target_feature(enable = "neon,fp16")]
13220#[cfg_attr(
13221 not(target_arch = "arm"),
13222 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13223)]
13224#[cfg_attr(
13225 target_arch = "arm",
13226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13227)]
13228#[cfg(not(target_arch = "arm64ec"))]
13229pub fn vfms_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t {
13230 unsafe {
13231 let b: float16x4_t = simd_neg(b);
13232 vfma_f16(a, b, c)
13233 }
13234}
13235#[doc = "Floating-point fused multiply-subtract from accumulator"]
13236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_f16)"]
13237#[inline(always)]
13238#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
13239#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13240#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
13241#[cfg_attr(
13242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13243 assert_instr(fmls)
13244)]
13245#[target_feature(enable = "neon,fp16")]
13246#[cfg_attr(
13247 not(target_arch = "arm"),
13248 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13249)]
13250#[cfg_attr(
13251 target_arch = "arm",
13252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13253)]
13254#[cfg(not(target_arch = "arm64ec"))]
13255pub fn vfmsq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t {
13256 unsafe {
13257 let b: float16x8_t = simd_neg(b);
13258 vfmaq_f16(a, b, c)
13259 }
13260}
13261#[doc = "Floating-point fused multiply-subtract from accumulator"]
13262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_f32)"]
13263#[inline(always)]
13264#[target_feature(enable = "neon")]
13265#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13266#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13267#[cfg_attr(
13268 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13269 assert_instr(fmls)
13270)]
13271#[cfg_attr(
13272 not(target_arch = "arm"),
13273 stable(feature = "neon_intrinsics", since = "1.59.0")
13274)]
13275#[cfg_attr(
13276 target_arch = "arm",
13277 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13278)]
13279pub fn vfms_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
13280 unsafe {
13281 let b: float32x2_t = simd_neg(b);
13282 vfma_f32(a, b, c)
13283 }
13284}
13285#[doc = "Floating-point fused multiply-subtract from accumulator"]
13286#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_f32)"]
13287#[inline(always)]
13288#[target_feature(enable = "neon")]
13289#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13290#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13291#[cfg_attr(
13292 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13293 assert_instr(fmls)
13294)]
13295#[cfg_attr(
13296 not(target_arch = "arm"),
13297 stable(feature = "neon_intrinsics", since = "1.59.0")
13298)]
13299#[cfg_attr(
13300 target_arch = "arm",
13301 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13302)]
13303pub fn vfmsq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
13304 unsafe {
13305 let b: float32x4_t = simd_neg(b);
13306 vfmaq_f32(a, b, c)
13307 }
13308}
13309#[doc = "Floating-point fused Multiply-subtract to accumulator(vector)"]
13310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfms_n_f32)"]
13311#[inline(always)]
13312#[target_feature(enable = "neon")]
13313#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13314#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13315#[cfg_attr(
13316 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13317 assert_instr(fmls)
13318)]
13319#[cfg_attr(
13320 not(target_arch = "arm"),
13321 stable(feature = "neon_intrinsics", since = "1.59.0")
13322)]
13323#[cfg_attr(
13324 target_arch = "arm",
13325 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13326)]
13327pub fn vfms_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
13328 vfms_f32(a, b, vdup_n_f32_vfp4(c))
13329}
13330#[doc = "Floating-point fused Multiply-subtract to accumulator(vector)"]
13331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vfmsq_n_f32)"]
13332#[inline(always)]
13333#[target_feature(enable = "neon")]
13334#[cfg_attr(target_arch = "arm", target_feature(enable = "vfp4"))]
13335#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vfms))]
13336#[cfg_attr(
13337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13338 assert_instr(fmls)
13339)]
13340#[cfg_attr(
13341 not(target_arch = "arm"),
13342 stable(feature = "neon_intrinsics", since = "1.59.0")
13343)]
13344#[cfg_attr(
13345 target_arch = "arm",
13346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13347)]
13348pub fn vfmsq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
13349 vfmsq_f32(a, b, vdupq_n_f32_vfp4(c))
13350}
13351#[doc = "Duplicate vector element to vector"]
13352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_f16)"]
13353#[inline(always)]
13354#[target_feature(enable = "neon")]
13355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13356#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13357#[cfg_attr(
13358 not(target_arch = "arm"),
13359 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13360)]
13361#[cfg_attr(
13362 target_arch = "arm",
13363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13364)]
13365#[cfg(not(target_arch = "arm64ec"))]
13366#[cfg_attr(test, assert_instr(nop))]
13367pub fn vget_high_f16(a: float16x8_t) -> float16x4_t {
13368 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13369}
13370#[doc = "Duplicate vector element to vector"]
13371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_f16)"]
13372#[inline(always)]
13373#[target_feature(enable = "neon")]
13374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13375#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13376#[cfg_attr(
13377 not(target_arch = "arm"),
13378 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
13379)]
13380#[cfg_attr(
13381 target_arch = "arm",
13382 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13383)]
13384#[cfg(not(target_arch = "arm64ec"))]
13385#[cfg_attr(test, assert_instr(nop))]
13386pub fn vget_low_f16(a: float16x8_t) -> float16x4_t {
13387 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
13388}
13389#[doc = "Duplicate vector element to vector or scalar"]
13390#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_f32)"]
13391#[inline(always)]
13392#[target_feature(enable = "neon")]
13393#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13394#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13395#[cfg_attr(
13396 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13397 assert_instr(ext)
13398)]
13399#[cfg_attr(
13400 not(target_arch = "arm"),
13401 stable(feature = "neon_intrinsics", since = "1.59.0")
13402)]
13403#[cfg_attr(
13404 target_arch = "arm",
13405 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13406)]
13407pub fn vget_high_f32(a: float32x4_t) -> float32x2_t {
13408 unsafe { simd_shuffle!(a, a, [2, 3]) }
13409}
13410#[doc = "Duplicate vector element to vector or scalar"]
13411#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_p16)"]
13412#[inline(always)]
13413#[target_feature(enable = "neon")]
13414#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13415#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13416#[cfg_attr(
13417 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13418 assert_instr(ext)
13419)]
13420#[cfg_attr(
13421 not(target_arch = "arm"),
13422 stable(feature = "neon_intrinsics", since = "1.59.0")
13423)]
13424#[cfg_attr(
13425 target_arch = "arm",
13426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13427)]
13428pub fn vget_high_p16(a: poly16x8_t) -> poly16x4_t {
13429 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13430}
13431#[doc = "Duplicate vector element to vector or scalar"]
13432#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_p8)"]
13433#[inline(always)]
13434#[target_feature(enable = "neon")]
13435#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13436#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13437#[cfg_attr(
13438 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13439 assert_instr(ext)
13440)]
13441#[cfg_attr(
13442 not(target_arch = "arm"),
13443 stable(feature = "neon_intrinsics", since = "1.59.0")
13444)]
13445#[cfg_attr(
13446 target_arch = "arm",
13447 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13448)]
13449pub fn vget_high_p8(a: poly8x16_t) -> poly8x8_t {
13450 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
13451}
13452#[doc = "Duplicate vector element to vector or scalar"]
13453#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s16)"]
13454#[inline(always)]
13455#[target_feature(enable = "neon")]
13456#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13457#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13458#[cfg_attr(
13459 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13460 assert_instr(ext)
13461)]
13462#[cfg_attr(
13463 not(target_arch = "arm"),
13464 stable(feature = "neon_intrinsics", since = "1.59.0")
13465)]
13466#[cfg_attr(
13467 target_arch = "arm",
13468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13469)]
13470pub fn vget_high_s16(a: int16x8_t) -> int16x4_t {
13471 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13472}
13473#[doc = "Duplicate vector element to vector or scalar"]
13474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s32)"]
13475#[inline(always)]
13476#[target_feature(enable = "neon")]
13477#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13478#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13479#[cfg_attr(
13480 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13481 assert_instr(ext)
13482)]
13483#[cfg_attr(
13484 not(target_arch = "arm"),
13485 stable(feature = "neon_intrinsics", since = "1.59.0")
13486)]
13487#[cfg_attr(
13488 target_arch = "arm",
13489 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13490)]
13491pub fn vget_high_s32(a: int32x4_t) -> int32x2_t {
13492 unsafe { simd_shuffle!(a, a, [2, 3]) }
13493}
13494#[doc = "Duplicate vector element to vector or scalar"]
13495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s8)"]
13496#[inline(always)]
13497#[target_feature(enable = "neon")]
13498#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13499#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13500#[cfg_attr(
13501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13502 assert_instr(ext)
13503)]
13504#[cfg_attr(
13505 not(target_arch = "arm"),
13506 stable(feature = "neon_intrinsics", since = "1.59.0")
13507)]
13508#[cfg_attr(
13509 target_arch = "arm",
13510 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13511)]
13512pub fn vget_high_s8(a: int8x16_t) -> int8x8_t {
13513 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
13514}
13515#[doc = "Duplicate vector element to vector or scalar"]
13516#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u16)"]
13517#[inline(always)]
13518#[target_feature(enable = "neon")]
13519#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13520#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13521#[cfg_attr(
13522 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13523 assert_instr(ext)
13524)]
13525#[cfg_attr(
13526 not(target_arch = "arm"),
13527 stable(feature = "neon_intrinsics", since = "1.59.0")
13528)]
13529#[cfg_attr(
13530 target_arch = "arm",
13531 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13532)]
13533pub fn vget_high_u16(a: uint16x8_t) -> uint16x4_t {
13534 unsafe { simd_shuffle!(a, a, [4, 5, 6, 7]) }
13535}
13536#[doc = "Duplicate vector element to vector or scalar"]
13537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u32)"]
13538#[inline(always)]
13539#[target_feature(enable = "neon")]
13540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13541#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13542#[cfg_attr(
13543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13544 assert_instr(ext)
13545)]
13546#[cfg_attr(
13547 not(target_arch = "arm"),
13548 stable(feature = "neon_intrinsics", since = "1.59.0")
13549)]
13550#[cfg_attr(
13551 target_arch = "arm",
13552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13553)]
13554pub fn vget_high_u32(a: uint32x4_t) -> uint32x2_t {
13555 unsafe { simd_shuffle!(a, a, [2, 3]) }
13556}
13557#[doc = "Duplicate vector element to vector or scalar"]
13558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u8)"]
13559#[inline(always)]
13560#[target_feature(enable = "neon")]
13561#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13562#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13563#[cfg_attr(
13564 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13565 assert_instr(ext)
13566)]
13567#[cfg_attr(
13568 not(target_arch = "arm"),
13569 stable(feature = "neon_intrinsics", since = "1.59.0")
13570)]
13571#[cfg_attr(
13572 target_arch = "arm",
13573 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13574)]
13575pub fn vget_high_u8(a: uint8x16_t) -> uint8x8_t {
13576 unsafe { simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]) }
13577}
13578#[doc = "Duplicate vector element to vector or scalar"]
13579#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_s64)"]
13580#[inline(always)]
13581#[target_feature(enable = "neon")]
13582#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13583#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13584#[cfg_attr(
13585 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13586 assert_instr(ext)
13587)]
13588#[cfg_attr(
13589 not(target_arch = "arm"),
13590 stable(feature = "neon_intrinsics", since = "1.59.0")
13591)]
13592#[cfg_attr(
13593 target_arch = "arm",
13594 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13595)]
13596pub fn vget_high_s64(a: int64x2_t) -> int64x1_t {
13597 unsafe { int64x1_t([simd_extract!(a, 1)]) }
13598}
13599#[doc = "Duplicate vector element to vector or scalar"]
13600#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_high_u64)"]
13601#[inline(always)]
13602#[target_feature(enable = "neon")]
13603#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13604#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
13605#[cfg_attr(
13606 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13607 assert_instr(ext)
13608)]
13609#[cfg_attr(
13610 not(target_arch = "arm"),
13611 stable(feature = "neon_intrinsics", since = "1.59.0")
13612)]
13613#[cfg_attr(
13614 target_arch = "arm",
13615 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13616)]
13617pub fn vget_high_u64(a: uint64x2_t) -> uint64x1_t {
13618 unsafe { uint64x1_t([simd_extract!(a, 1)]) }
13619}
13620#[doc = "Duplicate vector element to scalar"]
13621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_f16)"]
13622#[inline(always)]
13623#[target_feature(enable = "neon")]
13624#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13625#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
13626#[cfg_attr(
13627 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13628 assert_instr(nop, LANE = 0)
13629)]
13630#[rustc_legacy_const_generics(1)]
13631#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13632#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13633#[cfg(not(target_arch = "arm64ec"))]
13634pub fn vget_lane_f16<const LANE: i32>(a: float16x4_t) -> f16 {
13635 static_assert_uimm_bits!(LANE, 2);
13636 unsafe { simd_extract!(a, LANE as u32) }
13637}
13638#[doc = "Duplicate vector element to scalar"]
13639#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_f16)"]
13640#[inline(always)]
13641#[target_feature(enable = "neon")]
13642#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13643#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
13644#[cfg_attr(
13645 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
13646 assert_instr(nop, LANE = 0)
13647)]
13648#[rustc_legacy_const_generics(1)]
13649#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
13650#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
13651#[cfg(not(target_arch = "arm64ec"))]
13652pub fn vgetq_lane_f16<const LANE: i32>(a: float16x8_t) -> f16 {
13653 static_assert_uimm_bits!(LANE, 3);
13654 unsafe { simd_extract!(a, LANE as u32) }
13655}
13656#[doc = "Move vector element to general-purpose register"]
13657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_f32)"]
13658#[inline(always)]
13659#[target_feature(enable = "neon")]
13660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13661#[rustc_legacy_const_generics(1)]
13662#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
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_lane_f32<const IMM5: i32>(v: float32x2_t) -> f32 {
13672 static_assert_uimm_bits!(IMM5, 1);
13673 unsafe { simd_extract!(v, IMM5 as u32) }
13674}
13675#[doc = "Move vector element to general-purpose register"]
13676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p16)"]
13677#[inline(always)]
13678#[target_feature(enable = "neon")]
13679#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13680#[rustc_legacy_const_generics(1)]
13681#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13682#[cfg_attr(
13683 not(target_arch = "arm"),
13684 stable(feature = "neon_intrinsics", since = "1.59.0")
13685)]
13686#[cfg_attr(
13687 target_arch = "arm",
13688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13689)]
13690pub fn vget_lane_p16<const IMM5: i32>(v: poly16x4_t) -> p16 {
13691 static_assert_uimm_bits!(IMM5, 2);
13692 unsafe { simd_extract!(v, IMM5 as u32) }
13693}
13694#[doc = "Move vector element to general-purpose register"]
13695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p8)"]
13696#[inline(always)]
13697#[target_feature(enable = "neon")]
13698#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13699#[rustc_legacy_const_generics(1)]
13700#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13701#[cfg_attr(
13702 not(target_arch = "arm"),
13703 stable(feature = "neon_intrinsics", since = "1.59.0")
13704)]
13705#[cfg_attr(
13706 target_arch = "arm",
13707 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13708)]
13709pub fn vget_lane_p8<const IMM5: i32>(v: poly8x8_t) -> p8 {
13710 static_assert_uimm_bits!(IMM5, 3);
13711 unsafe { simd_extract!(v, IMM5 as u32) }
13712}
13713#[doc = "Move vector element to general-purpose register"]
13714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s16)"]
13715#[inline(always)]
13716#[target_feature(enable = "neon")]
13717#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13718#[rustc_legacy_const_generics(1)]
13719#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13720#[cfg_attr(
13721 not(target_arch = "arm"),
13722 stable(feature = "neon_intrinsics", since = "1.59.0")
13723)]
13724#[cfg_attr(
13725 target_arch = "arm",
13726 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13727)]
13728pub fn vget_lane_s16<const IMM5: i32>(v: int16x4_t) -> i16 {
13729 static_assert_uimm_bits!(IMM5, 2);
13730 unsafe { simd_extract!(v, IMM5 as u32) }
13731}
13732#[doc = "Move vector element to general-purpose register"]
13733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s32)"]
13734#[inline(always)]
13735#[target_feature(enable = "neon")]
13736#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13737#[rustc_legacy_const_generics(1)]
13738#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13739#[cfg_attr(
13740 not(target_arch = "arm"),
13741 stable(feature = "neon_intrinsics", since = "1.59.0")
13742)]
13743#[cfg_attr(
13744 target_arch = "arm",
13745 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13746)]
13747pub fn vget_lane_s32<const IMM5: i32>(v: int32x2_t) -> i32 {
13748 static_assert_uimm_bits!(IMM5, 1);
13749 unsafe { simd_extract!(v, IMM5 as u32) }
13750}
13751#[doc = "Move vector element to general-purpose register"]
13752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s8)"]
13753#[inline(always)]
13754#[target_feature(enable = "neon")]
13755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13756#[rustc_legacy_const_generics(1)]
13757#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13758#[cfg_attr(
13759 not(target_arch = "arm"),
13760 stable(feature = "neon_intrinsics", since = "1.59.0")
13761)]
13762#[cfg_attr(
13763 target_arch = "arm",
13764 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13765)]
13766pub fn vget_lane_s8<const IMM5: i32>(v: int8x8_t) -> i8 {
13767 static_assert_uimm_bits!(IMM5, 3);
13768 unsafe { simd_extract!(v, IMM5 as u32) }
13769}
13770#[doc = "Move vector element to general-purpose register"]
13771#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u16)"]
13772#[inline(always)]
13773#[target_feature(enable = "neon")]
13774#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13775#[rustc_legacy_const_generics(1)]
13776#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13777#[cfg_attr(
13778 not(target_arch = "arm"),
13779 stable(feature = "neon_intrinsics", since = "1.59.0")
13780)]
13781#[cfg_attr(
13782 target_arch = "arm",
13783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13784)]
13785pub fn vget_lane_u16<const IMM5: i32>(v: uint16x4_t) -> u16 {
13786 static_assert_uimm_bits!(IMM5, 2);
13787 unsafe { simd_extract!(v, IMM5 as u32) }
13788}
13789#[doc = "Move vector element to general-purpose register"]
13790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u32)"]
13791#[inline(always)]
13792#[target_feature(enable = "neon")]
13793#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13794#[rustc_legacy_const_generics(1)]
13795#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13796#[cfg_attr(
13797 not(target_arch = "arm"),
13798 stable(feature = "neon_intrinsics", since = "1.59.0")
13799)]
13800#[cfg_attr(
13801 target_arch = "arm",
13802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13803)]
13804pub fn vget_lane_u32<const IMM5: i32>(v: uint32x2_t) -> u32 {
13805 static_assert_uimm_bits!(IMM5, 1);
13806 unsafe { simd_extract!(v, IMM5 as u32) }
13807}
13808#[doc = "Move vector element to general-purpose register"]
13809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u8)"]
13810#[inline(always)]
13811#[target_feature(enable = "neon")]
13812#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13813#[rustc_legacy_const_generics(1)]
13814#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13815#[cfg_attr(
13816 not(target_arch = "arm"),
13817 stable(feature = "neon_intrinsics", since = "1.59.0")
13818)]
13819#[cfg_attr(
13820 target_arch = "arm",
13821 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13822)]
13823pub fn vget_lane_u8<const IMM5: i32>(v: uint8x8_t) -> u8 {
13824 static_assert_uimm_bits!(IMM5, 3);
13825 unsafe { simd_extract!(v, IMM5 as u32) }
13826}
13827#[doc = "Move vector element to general-purpose register"]
13828#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_f32)"]
13829#[inline(always)]
13830#[target_feature(enable = "neon")]
13831#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13832#[rustc_legacy_const_generics(1)]
13833#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13834#[cfg_attr(
13835 not(target_arch = "arm"),
13836 stable(feature = "neon_intrinsics", since = "1.59.0")
13837)]
13838#[cfg_attr(
13839 target_arch = "arm",
13840 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13841)]
13842pub fn vgetq_lane_f32<const IMM5: i32>(v: float32x4_t) -> f32 {
13843 static_assert_uimm_bits!(IMM5, 2);
13844 unsafe { simd_extract!(v, IMM5 as u32) }
13845}
13846#[doc = "Move vector element to general-purpose register"]
13847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p16)"]
13848#[inline(always)]
13849#[target_feature(enable = "neon")]
13850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13851#[rustc_legacy_const_generics(1)]
13852#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13853#[cfg_attr(
13854 not(target_arch = "arm"),
13855 stable(feature = "neon_intrinsics", since = "1.59.0")
13856)]
13857#[cfg_attr(
13858 target_arch = "arm",
13859 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13860)]
13861pub fn vgetq_lane_p16<const IMM5: i32>(v: poly16x8_t) -> p16 {
13862 static_assert_uimm_bits!(IMM5, 3);
13863 unsafe { simd_extract!(v, IMM5 as u32) }
13864}
13865#[doc = "Move vector element to general-purpose register"]
13866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p64)"]
13867#[inline(always)]
13868#[target_feature(enable = "neon")]
13869#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13870#[rustc_legacy_const_generics(1)]
13871#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13872#[cfg_attr(
13873 not(target_arch = "arm"),
13874 stable(feature = "neon_intrinsics", since = "1.59.0")
13875)]
13876#[cfg_attr(
13877 target_arch = "arm",
13878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13879)]
13880pub fn vgetq_lane_p64<const IMM5: i32>(v: poly64x2_t) -> p64 {
13881 static_assert_uimm_bits!(IMM5, 1);
13882 unsafe { simd_extract!(v, IMM5 as u32) }
13883}
13884#[doc = "Move vector element to general-purpose register"]
13885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_p8)"]
13886#[inline(always)]
13887#[target_feature(enable = "neon")]
13888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13889#[rustc_legacy_const_generics(1)]
13890#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13891#[cfg_attr(
13892 not(target_arch = "arm"),
13893 stable(feature = "neon_intrinsics", since = "1.59.0")
13894)]
13895#[cfg_attr(
13896 target_arch = "arm",
13897 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13898)]
13899pub fn vgetq_lane_p8<const IMM5: i32>(v: poly8x16_t) -> p8 {
13900 static_assert_uimm_bits!(IMM5, 4);
13901 unsafe { simd_extract!(v, IMM5 as u32) }
13902}
13903#[doc = "Move vector element to general-purpose register"]
13904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s16)"]
13905#[inline(always)]
13906#[target_feature(enable = "neon")]
13907#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13908#[rustc_legacy_const_generics(1)]
13909#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13910#[cfg_attr(
13911 not(target_arch = "arm"),
13912 stable(feature = "neon_intrinsics", since = "1.59.0")
13913)]
13914#[cfg_attr(
13915 target_arch = "arm",
13916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13917)]
13918pub fn vgetq_lane_s16<const IMM5: i32>(v: int16x8_t) -> i16 {
13919 static_assert_uimm_bits!(IMM5, 3);
13920 unsafe { simd_extract!(v, IMM5 as u32) }
13921}
13922#[doc = "Move vector element to general-purpose register"]
13923#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s32)"]
13924#[inline(always)]
13925#[target_feature(enable = "neon")]
13926#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13927#[rustc_legacy_const_generics(1)]
13928#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13929#[cfg_attr(
13930 not(target_arch = "arm"),
13931 stable(feature = "neon_intrinsics", since = "1.59.0")
13932)]
13933#[cfg_attr(
13934 target_arch = "arm",
13935 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13936)]
13937pub fn vgetq_lane_s32<const IMM5: i32>(v: int32x4_t) -> i32 {
13938 static_assert_uimm_bits!(IMM5, 2);
13939 unsafe { simd_extract!(v, IMM5 as u32) }
13940}
13941#[doc = "Move vector element to general-purpose register"]
13942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s64)"]
13943#[inline(always)]
13944#[target_feature(enable = "neon")]
13945#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13946#[rustc_legacy_const_generics(1)]
13947#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
13948#[cfg_attr(
13949 not(target_arch = "arm"),
13950 stable(feature = "neon_intrinsics", since = "1.59.0")
13951)]
13952#[cfg_attr(
13953 target_arch = "arm",
13954 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13955)]
13956pub fn vgetq_lane_s64<const IMM5: i32>(v: int64x2_t) -> i64 {
13957 static_assert_uimm_bits!(IMM5, 1);
13958 unsafe { simd_extract!(v, IMM5 as u32) }
13959}
13960#[doc = "Move vector element to general-purpose register"]
13961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_s8)"]
13962#[inline(always)]
13963#[target_feature(enable = "neon")]
13964#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13965#[rustc_legacy_const_generics(1)]
13966#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13967#[cfg_attr(
13968 not(target_arch = "arm"),
13969 stable(feature = "neon_intrinsics", since = "1.59.0")
13970)]
13971#[cfg_attr(
13972 target_arch = "arm",
13973 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13974)]
13975pub fn vgetq_lane_s8<const IMM5: i32>(v: int8x16_t) -> i8 {
13976 static_assert_uimm_bits!(IMM5, 4);
13977 unsafe { simd_extract!(v, IMM5 as u32) }
13978}
13979#[doc = "Move vector element to general-purpose register"]
13980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u16)"]
13981#[inline(always)]
13982#[target_feature(enable = "neon")]
13983#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
13984#[rustc_legacy_const_generics(1)]
13985#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
13986#[cfg_attr(
13987 not(target_arch = "arm"),
13988 stable(feature = "neon_intrinsics", since = "1.59.0")
13989)]
13990#[cfg_attr(
13991 target_arch = "arm",
13992 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
13993)]
13994pub fn vgetq_lane_u16<const IMM5: i32>(v: uint16x8_t) -> u16 {
13995 static_assert_uimm_bits!(IMM5, 3);
13996 unsafe { simd_extract!(v, IMM5 as u32) }
13997}
13998#[doc = "Move vector element to general-purpose register"]
13999#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u32)"]
14000#[inline(always)]
14001#[target_feature(enable = "neon")]
14002#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14003#[rustc_legacy_const_generics(1)]
14004#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
14005#[cfg_attr(
14006 not(target_arch = "arm"),
14007 stable(feature = "neon_intrinsics", since = "1.59.0")
14008)]
14009#[cfg_attr(
14010 target_arch = "arm",
14011 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14012)]
14013pub fn vgetq_lane_u32<const IMM5: i32>(v: uint32x4_t) -> u32 {
14014 static_assert_uimm_bits!(IMM5, 2);
14015 unsafe { simd_extract!(v, IMM5 as u32) }
14016}
14017#[doc = "Move vector element to general-purpose register"]
14018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u64)"]
14019#[inline(always)]
14020#[target_feature(enable = "neon")]
14021#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14022#[rustc_legacy_const_generics(1)]
14023#[cfg_attr(test, assert_instr(nop, IMM5 = 1))]
14024#[cfg_attr(
14025 not(target_arch = "arm"),
14026 stable(feature = "neon_intrinsics", since = "1.59.0")
14027)]
14028#[cfg_attr(
14029 target_arch = "arm",
14030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14031)]
14032pub fn vgetq_lane_u64<const IMM5: i32>(v: uint64x2_t) -> u64 {
14033 static_assert_uimm_bits!(IMM5, 2);
14034 unsafe { simd_extract!(v, IMM5 as u32) }
14035}
14036#[doc = "Move vector element to general-purpose register"]
14037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vgetq_lane_u8)"]
14038#[inline(always)]
14039#[target_feature(enable = "neon")]
14040#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14041#[rustc_legacy_const_generics(1)]
14042#[cfg_attr(test, assert_instr(nop, IMM5 = 2))]
14043#[cfg_attr(
14044 not(target_arch = "arm"),
14045 stable(feature = "neon_intrinsics", since = "1.59.0")
14046)]
14047#[cfg_attr(
14048 target_arch = "arm",
14049 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14050)]
14051pub fn vgetq_lane_u8<const IMM5: i32>(v: uint8x16_t) -> u8 {
14052 static_assert_uimm_bits!(IMM5, 4);
14053 unsafe { simd_extract!(v, IMM5 as u32) }
14054}
14055#[doc = "Move vector element to general-purpose register"]
14056#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_p64)"]
14057#[inline(always)]
14058#[target_feature(enable = "neon")]
14059#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14060#[rustc_legacy_const_generics(1)]
14061#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
14062#[cfg_attr(
14063 not(target_arch = "arm"),
14064 stable(feature = "neon_intrinsics", since = "1.59.0")
14065)]
14066#[cfg_attr(
14067 target_arch = "arm",
14068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14069)]
14070pub fn vget_lane_p64<const IMM5: i32>(v: poly64x1_t) -> p64 {
14071 static_assert!(IMM5 == 0);
14072 unsafe { simd_extract!(v, IMM5 as u32) }
14073}
14074#[doc = "Move vector element to general-purpose register"]
14075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_s64)"]
14076#[inline(always)]
14077#[target_feature(enable = "neon")]
14078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14079#[rustc_legacy_const_generics(1)]
14080#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
14081#[cfg_attr(
14082 not(target_arch = "arm"),
14083 stable(feature = "neon_intrinsics", since = "1.59.0")
14084)]
14085#[cfg_attr(
14086 target_arch = "arm",
14087 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14088)]
14089pub fn vget_lane_s64<const IMM5: i32>(v: int64x1_t) -> i64 {
14090 static_assert!(IMM5 == 0);
14091 unsafe { simd_extract!(v, IMM5 as u32) }
14092}
14093#[doc = "Move vector element to general-purpose register"]
14094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_lane_u64)"]
14095#[inline(always)]
14096#[target_feature(enable = "neon")]
14097#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14098#[rustc_legacy_const_generics(1)]
14099#[cfg_attr(test, assert_instr(nop, IMM5 = 0))]
14100#[cfg_attr(
14101 not(target_arch = "arm"),
14102 stable(feature = "neon_intrinsics", since = "1.59.0")
14103)]
14104#[cfg_attr(
14105 target_arch = "arm",
14106 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14107)]
14108pub fn vget_lane_u64<const IMM5: i32>(v: uint64x1_t) -> u64 {
14109 static_assert!(IMM5 == 0);
14110 unsafe { simd_extract!(v, 0) }
14111}
14112#[doc = "Duplicate vector element to vector or scalar"]
14113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_f32)"]
14114#[inline(always)]
14115#[target_feature(enable = "neon")]
14116#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14117#[cfg_attr(test, assert_instr(nop))]
14118#[cfg_attr(
14119 not(target_arch = "arm"),
14120 stable(feature = "neon_intrinsics", since = "1.59.0")
14121)]
14122#[cfg_attr(
14123 target_arch = "arm",
14124 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14125)]
14126pub fn vget_low_f32(a: float32x4_t) -> float32x2_t {
14127 unsafe { simd_shuffle!(a, a, [0, 1]) }
14128}
14129#[doc = "Duplicate vector element to vector or scalar"]
14130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_p16)"]
14131#[inline(always)]
14132#[target_feature(enable = "neon")]
14133#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14134#[cfg_attr(test, assert_instr(nop))]
14135#[cfg_attr(
14136 not(target_arch = "arm"),
14137 stable(feature = "neon_intrinsics", since = "1.59.0")
14138)]
14139#[cfg_attr(
14140 target_arch = "arm",
14141 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14142)]
14143pub fn vget_low_p16(a: poly16x8_t) -> poly16x4_t {
14144 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
14145}
14146#[doc = "Duplicate vector element to vector or scalar"]
14147#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_p8)"]
14148#[inline(always)]
14149#[target_feature(enable = "neon")]
14150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14151#[cfg_attr(test, assert_instr(nop))]
14152#[cfg_attr(
14153 not(target_arch = "arm"),
14154 stable(feature = "neon_intrinsics", since = "1.59.0")
14155)]
14156#[cfg_attr(
14157 target_arch = "arm",
14158 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14159)]
14160pub fn vget_low_p8(a: poly8x16_t) -> poly8x8_t {
14161 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
14162}
14163#[doc = "Duplicate vector element to vector or scalar"]
14164#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s16)"]
14165#[inline(always)]
14166#[target_feature(enable = "neon")]
14167#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14168#[cfg_attr(test, assert_instr(nop))]
14169#[cfg_attr(
14170 not(target_arch = "arm"),
14171 stable(feature = "neon_intrinsics", since = "1.59.0")
14172)]
14173#[cfg_attr(
14174 target_arch = "arm",
14175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14176)]
14177pub fn vget_low_s16(a: int16x8_t) -> int16x4_t {
14178 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
14179}
14180#[doc = "Duplicate vector element to vector or scalar"]
14181#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s32)"]
14182#[inline(always)]
14183#[target_feature(enable = "neon")]
14184#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14185#[cfg_attr(test, assert_instr(nop))]
14186#[cfg_attr(
14187 not(target_arch = "arm"),
14188 stable(feature = "neon_intrinsics", since = "1.59.0")
14189)]
14190#[cfg_attr(
14191 target_arch = "arm",
14192 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14193)]
14194pub fn vget_low_s32(a: int32x4_t) -> int32x2_t {
14195 unsafe { simd_shuffle!(a, a, [0, 1]) }
14196}
14197#[doc = "Duplicate vector element to vector or scalar"]
14198#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s8)"]
14199#[inline(always)]
14200#[target_feature(enable = "neon")]
14201#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14202#[cfg_attr(test, assert_instr(nop))]
14203#[cfg_attr(
14204 not(target_arch = "arm"),
14205 stable(feature = "neon_intrinsics", since = "1.59.0")
14206)]
14207#[cfg_attr(
14208 target_arch = "arm",
14209 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14210)]
14211pub fn vget_low_s8(a: int8x16_t) -> int8x8_t {
14212 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
14213}
14214#[doc = "Duplicate vector element to vector or scalar"]
14215#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u16)"]
14216#[inline(always)]
14217#[target_feature(enable = "neon")]
14218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14219#[cfg_attr(test, assert_instr(nop))]
14220#[cfg_attr(
14221 not(target_arch = "arm"),
14222 stable(feature = "neon_intrinsics", since = "1.59.0")
14223)]
14224#[cfg_attr(
14225 target_arch = "arm",
14226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14227)]
14228pub fn vget_low_u16(a: uint16x8_t) -> uint16x4_t {
14229 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
14230}
14231#[doc = "Duplicate vector element to vector or scalar"]
14232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u32)"]
14233#[inline(always)]
14234#[target_feature(enable = "neon")]
14235#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14236#[cfg_attr(test, assert_instr(nop))]
14237#[cfg_attr(
14238 not(target_arch = "arm"),
14239 stable(feature = "neon_intrinsics", since = "1.59.0")
14240)]
14241#[cfg_attr(
14242 target_arch = "arm",
14243 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14244)]
14245pub fn vget_low_u32(a: uint32x4_t) -> uint32x2_t {
14246 unsafe { simd_shuffle!(a, a, [0, 1]) }
14247}
14248#[doc = "Duplicate vector element to vector or scalar"]
14249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u8)"]
14250#[inline(always)]
14251#[target_feature(enable = "neon")]
14252#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14253#[cfg_attr(test, assert_instr(nop))]
14254#[cfg_attr(
14255 not(target_arch = "arm"),
14256 stable(feature = "neon_intrinsics", since = "1.59.0")
14257)]
14258#[cfg_attr(
14259 target_arch = "arm",
14260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14261)]
14262pub fn vget_low_u8(a: uint8x16_t) -> uint8x8_t {
14263 unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
14264}
14265#[doc = "Duplicate vector element to vector or scalar"]
14266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_s64)"]
14267#[inline(always)]
14268#[target_feature(enable = "neon")]
14269#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14270#[cfg_attr(test, assert_instr(nop))]
14271#[cfg_attr(
14272 not(target_arch = "arm"),
14273 stable(feature = "neon_intrinsics", since = "1.59.0")
14274)]
14275#[cfg_attr(
14276 target_arch = "arm",
14277 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14278)]
14279pub fn vget_low_s64(a: int64x2_t) -> int64x1_t {
14280 unsafe { int64x1_t([simd_extract!(a, 0)]) }
14281}
14282#[doc = "Duplicate vector element to vector or scalar"]
14283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vget_low_u64)"]
14284#[inline(always)]
14285#[target_feature(enable = "neon")]
14286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14287#[cfg_attr(test, assert_instr(nop))]
14288#[cfg_attr(
14289 not(target_arch = "arm"),
14290 stable(feature = "neon_intrinsics", since = "1.59.0")
14291)]
14292#[cfg_attr(
14293 target_arch = "arm",
14294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14295)]
14296pub fn vget_low_u64(a: uint64x2_t) -> uint64x1_t {
14297 unsafe { uint64x1_t([simd_extract!(a, 0)]) }
14298}
14299#[doc = "Halving add"]
14300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s8)"]
14301#[inline(always)]
14302#[target_feature(enable = "neon")]
14303#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14304#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s8"))]
14305#[cfg_attr(
14306 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14307 assert_instr(shadd)
14308)]
14309#[cfg_attr(
14310 not(target_arch = "arm"),
14311 stable(feature = "neon_intrinsics", since = "1.59.0")
14312)]
14313#[cfg_attr(
14314 target_arch = "arm",
14315 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14316)]
14317pub fn vhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
14318 unsafe extern "unadjusted" {
14319 #[cfg_attr(
14320 any(target_arch = "aarch64", target_arch = "arm64ec"),
14321 link_name = "llvm.aarch64.neon.shadd.v8i8"
14322 )]
14323 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v8i8")]
14324 fn _vhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
14325 }
14326 unsafe { _vhadd_s8(a, b) }
14327}
14328#[doc = "Halving add"]
14329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s8)"]
14330#[inline(always)]
14331#[target_feature(enable = "neon")]
14332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14333#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s8"))]
14334#[cfg_attr(
14335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14336 assert_instr(shadd)
14337)]
14338#[cfg_attr(
14339 not(target_arch = "arm"),
14340 stable(feature = "neon_intrinsics", since = "1.59.0")
14341)]
14342#[cfg_attr(
14343 target_arch = "arm",
14344 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14345)]
14346pub fn vhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
14347 unsafe extern "unadjusted" {
14348 #[cfg_attr(
14349 any(target_arch = "aarch64", target_arch = "arm64ec"),
14350 link_name = "llvm.aarch64.neon.shadd.v16i8"
14351 )]
14352 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v16i8")]
14353 fn _vhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
14354 }
14355 unsafe { _vhaddq_s8(a, b) }
14356}
14357#[doc = "Halving add"]
14358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s16)"]
14359#[inline(always)]
14360#[target_feature(enable = "neon")]
14361#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14362#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s16"))]
14363#[cfg_attr(
14364 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14365 assert_instr(shadd)
14366)]
14367#[cfg_attr(
14368 not(target_arch = "arm"),
14369 stable(feature = "neon_intrinsics", since = "1.59.0")
14370)]
14371#[cfg_attr(
14372 target_arch = "arm",
14373 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14374)]
14375pub fn vhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
14376 unsafe extern "unadjusted" {
14377 #[cfg_attr(
14378 any(target_arch = "aarch64", target_arch = "arm64ec"),
14379 link_name = "llvm.aarch64.neon.shadd.v4i16"
14380 )]
14381 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v4i16")]
14382 fn _vhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
14383 }
14384 unsafe { _vhadd_s16(a, b) }
14385}
14386#[doc = "Halving add"]
14387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s16)"]
14388#[inline(always)]
14389#[target_feature(enable = "neon")]
14390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14391#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s16"))]
14392#[cfg_attr(
14393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14394 assert_instr(shadd)
14395)]
14396#[cfg_attr(
14397 not(target_arch = "arm"),
14398 stable(feature = "neon_intrinsics", since = "1.59.0")
14399)]
14400#[cfg_attr(
14401 target_arch = "arm",
14402 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14403)]
14404pub fn vhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
14405 unsafe extern "unadjusted" {
14406 #[cfg_attr(
14407 any(target_arch = "aarch64", target_arch = "arm64ec"),
14408 link_name = "llvm.aarch64.neon.shadd.v8i16"
14409 )]
14410 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v8i16")]
14411 fn _vhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
14412 }
14413 unsafe { _vhaddq_s16(a, b) }
14414}
14415#[doc = "Halving add"]
14416#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_s32)"]
14417#[inline(always)]
14418#[target_feature(enable = "neon")]
14419#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14420#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s32"))]
14421#[cfg_attr(
14422 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14423 assert_instr(shadd)
14424)]
14425#[cfg_attr(
14426 not(target_arch = "arm"),
14427 stable(feature = "neon_intrinsics", since = "1.59.0")
14428)]
14429#[cfg_attr(
14430 target_arch = "arm",
14431 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14432)]
14433pub fn vhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
14434 unsafe extern "unadjusted" {
14435 #[cfg_attr(
14436 any(target_arch = "aarch64", target_arch = "arm64ec"),
14437 link_name = "llvm.aarch64.neon.shadd.v2i32"
14438 )]
14439 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v2i32")]
14440 fn _vhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
14441 }
14442 unsafe { _vhadd_s32(a, b) }
14443}
14444#[doc = "Halving add"]
14445#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_s32)"]
14446#[inline(always)]
14447#[target_feature(enable = "neon")]
14448#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14449#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.s32"))]
14450#[cfg_attr(
14451 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14452 assert_instr(shadd)
14453)]
14454#[cfg_attr(
14455 not(target_arch = "arm"),
14456 stable(feature = "neon_intrinsics", since = "1.59.0")
14457)]
14458#[cfg_attr(
14459 target_arch = "arm",
14460 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14461)]
14462pub fn vhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
14463 unsafe extern "unadjusted" {
14464 #[cfg_attr(
14465 any(target_arch = "aarch64", target_arch = "arm64ec"),
14466 link_name = "llvm.aarch64.neon.shadd.v4i32"
14467 )]
14468 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhadds.v4i32")]
14469 fn _vhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
14470 }
14471 unsafe { _vhaddq_s32(a, b) }
14472}
14473#[doc = "Halving add"]
14474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u8)"]
14475#[inline(always)]
14476#[target_feature(enable = "neon")]
14477#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14478#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u8"))]
14479#[cfg_attr(
14480 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14481 assert_instr(uhadd)
14482)]
14483#[cfg_attr(
14484 not(target_arch = "arm"),
14485 stable(feature = "neon_intrinsics", since = "1.59.0")
14486)]
14487#[cfg_attr(
14488 target_arch = "arm",
14489 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14490)]
14491pub fn vhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
14492 unsafe extern "unadjusted" {
14493 #[cfg_attr(
14494 any(target_arch = "aarch64", target_arch = "arm64ec"),
14495 link_name = "llvm.aarch64.neon.uhadd.v8i8"
14496 )]
14497 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v8i8")]
14498 fn _vhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
14499 }
14500 unsafe { _vhadd_u8(a, b) }
14501}
14502#[doc = "Halving add"]
14503#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u8)"]
14504#[inline(always)]
14505#[target_feature(enable = "neon")]
14506#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14507#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u8"))]
14508#[cfg_attr(
14509 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14510 assert_instr(uhadd)
14511)]
14512#[cfg_attr(
14513 not(target_arch = "arm"),
14514 stable(feature = "neon_intrinsics", since = "1.59.0")
14515)]
14516#[cfg_attr(
14517 target_arch = "arm",
14518 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14519)]
14520pub fn vhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
14521 unsafe extern "unadjusted" {
14522 #[cfg_attr(
14523 any(target_arch = "aarch64", target_arch = "arm64ec"),
14524 link_name = "llvm.aarch64.neon.uhadd.v16i8"
14525 )]
14526 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v16i8")]
14527 fn _vhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
14528 }
14529 unsafe { _vhaddq_u8(a, b) }
14530}
14531#[doc = "Halving add"]
14532#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u16)"]
14533#[inline(always)]
14534#[target_feature(enable = "neon")]
14535#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14536#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u16"))]
14537#[cfg_attr(
14538 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14539 assert_instr(uhadd)
14540)]
14541#[cfg_attr(
14542 not(target_arch = "arm"),
14543 stable(feature = "neon_intrinsics", since = "1.59.0")
14544)]
14545#[cfg_attr(
14546 target_arch = "arm",
14547 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14548)]
14549pub fn vhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
14550 unsafe extern "unadjusted" {
14551 #[cfg_attr(
14552 any(target_arch = "aarch64", target_arch = "arm64ec"),
14553 link_name = "llvm.aarch64.neon.uhadd.v4i16"
14554 )]
14555 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v4i16")]
14556 fn _vhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
14557 }
14558 unsafe { _vhadd_u16(a, b) }
14559}
14560#[doc = "Halving add"]
14561#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u16)"]
14562#[inline(always)]
14563#[target_feature(enable = "neon")]
14564#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14565#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u16"))]
14566#[cfg_attr(
14567 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14568 assert_instr(uhadd)
14569)]
14570#[cfg_attr(
14571 not(target_arch = "arm"),
14572 stable(feature = "neon_intrinsics", since = "1.59.0")
14573)]
14574#[cfg_attr(
14575 target_arch = "arm",
14576 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14577)]
14578pub fn vhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
14579 unsafe extern "unadjusted" {
14580 #[cfg_attr(
14581 any(target_arch = "aarch64", target_arch = "arm64ec"),
14582 link_name = "llvm.aarch64.neon.uhadd.v8i16"
14583 )]
14584 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v8i16")]
14585 fn _vhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
14586 }
14587 unsafe { _vhaddq_u16(a, b) }
14588}
14589#[doc = "Halving add"]
14590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhadd_u32)"]
14591#[inline(always)]
14592#[target_feature(enable = "neon")]
14593#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14594#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u32"))]
14595#[cfg_attr(
14596 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14597 assert_instr(uhadd)
14598)]
14599#[cfg_attr(
14600 not(target_arch = "arm"),
14601 stable(feature = "neon_intrinsics", since = "1.59.0")
14602)]
14603#[cfg_attr(
14604 target_arch = "arm",
14605 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14606)]
14607pub fn vhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
14608 unsafe extern "unadjusted" {
14609 #[cfg_attr(
14610 any(target_arch = "aarch64", target_arch = "arm64ec"),
14611 link_name = "llvm.aarch64.neon.uhadd.v2i32"
14612 )]
14613 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v2i32")]
14614 fn _vhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
14615 }
14616 unsafe { _vhadd_u32(a, b) }
14617}
14618#[doc = "Halving add"]
14619#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhaddq_u32)"]
14620#[inline(always)]
14621#[target_feature(enable = "neon")]
14622#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14623#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhadd.u32"))]
14624#[cfg_attr(
14625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14626 assert_instr(uhadd)
14627)]
14628#[cfg_attr(
14629 not(target_arch = "arm"),
14630 stable(feature = "neon_intrinsics", since = "1.59.0")
14631)]
14632#[cfg_attr(
14633 target_arch = "arm",
14634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14635)]
14636pub fn vhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
14637 unsafe extern "unadjusted" {
14638 #[cfg_attr(
14639 any(target_arch = "aarch64", target_arch = "arm64ec"),
14640 link_name = "llvm.aarch64.neon.uhadd.v4i32"
14641 )]
14642 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhaddu.v4i32")]
14643 fn _vhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
14644 }
14645 unsafe { _vhaddq_u32(a, b) }
14646}
14647#[doc = "Signed halving subtract"]
14648#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s16)"]
14649#[inline(always)]
14650#[target_feature(enable = "neon")]
14651#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14652#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s16"))]
14653#[cfg_attr(
14654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14655 assert_instr(shsub)
14656)]
14657#[cfg_attr(
14658 not(target_arch = "arm"),
14659 stable(feature = "neon_intrinsics", since = "1.59.0")
14660)]
14661#[cfg_attr(
14662 target_arch = "arm",
14663 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14664)]
14665pub fn vhsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
14666 unsafe extern "unadjusted" {
14667 #[cfg_attr(
14668 any(target_arch = "aarch64", target_arch = "arm64ec"),
14669 link_name = "llvm.aarch64.neon.shsub.v4i16"
14670 )]
14671 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v4i16")]
14672 fn _vhsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
14673 }
14674 unsafe { _vhsub_s16(a, b) }
14675}
14676#[doc = "Signed halving subtract"]
14677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s16)"]
14678#[inline(always)]
14679#[target_feature(enable = "neon")]
14680#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14681#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s16"))]
14682#[cfg_attr(
14683 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14684 assert_instr(shsub)
14685)]
14686#[cfg_attr(
14687 not(target_arch = "arm"),
14688 stable(feature = "neon_intrinsics", since = "1.59.0")
14689)]
14690#[cfg_attr(
14691 target_arch = "arm",
14692 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14693)]
14694pub fn vhsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
14695 unsafe extern "unadjusted" {
14696 #[cfg_attr(
14697 any(target_arch = "aarch64", target_arch = "arm64ec"),
14698 link_name = "llvm.aarch64.neon.shsub.v8i16"
14699 )]
14700 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v8i16")]
14701 fn _vhsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
14702 }
14703 unsafe { _vhsubq_s16(a, b) }
14704}
14705#[doc = "Signed halving subtract"]
14706#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s32)"]
14707#[inline(always)]
14708#[target_feature(enable = "neon")]
14709#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14710#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s32"))]
14711#[cfg_attr(
14712 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14713 assert_instr(shsub)
14714)]
14715#[cfg_attr(
14716 not(target_arch = "arm"),
14717 stable(feature = "neon_intrinsics", since = "1.59.0")
14718)]
14719#[cfg_attr(
14720 target_arch = "arm",
14721 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14722)]
14723pub fn vhsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
14724 unsafe extern "unadjusted" {
14725 #[cfg_attr(
14726 any(target_arch = "aarch64", target_arch = "arm64ec"),
14727 link_name = "llvm.aarch64.neon.shsub.v2i32"
14728 )]
14729 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v2i32")]
14730 fn _vhsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
14731 }
14732 unsafe { _vhsub_s32(a, b) }
14733}
14734#[doc = "Signed halving subtract"]
14735#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s32)"]
14736#[inline(always)]
14737#[target_feature(enable = "neon")]
14738#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14739#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s32"))]
14740#[cfg_attr(
14741 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14742 assert_instr(shsub)
14743)]
14744#[cfg_attr(
14745 not(target_arch = "arm"),
14746 stable(feature = "neon_intrinsics", since = "1.59.0")
14747)]
14748#[cfg_attr(
14749 target_arch = "arm",
14750 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14751)]
14752pub fn vhsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
14753 unsafe extern "unadjusted" {
14754 #[cfg_attr(
14755 any(target_arch = "aarch64", target_arch = "arm64ec"),
14756 link_name = "llvm.aarch64.neon.shsub.v4i32"
14757 )]
14758 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v4i32")]
14759 fn _vhsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
14760 }
14761 unsafe { _vhsubq_s32(a, b) }
14762}
14763#[doc = "Signed halving subtract"]
14764#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_s8)"]
14765#[inline(always)]
14766#[target_feature(enable = "neon")]
14767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14768#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s8"))]
14769#[cfg_attr(
14770 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14771 assert_instr(shsub)
14772)]
14773#[cfg_attr(
14774 not(target_arch = "arm"),
14775 stable(feature = "neon_intrinsics", since = "1.59.0")
14776)]
14777#[cfg_attr(
14778 target_arch = "arm",
14779 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14780)]
14781pub fn vhsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
14782 unsafe extern "unadjusted" {
14783 #[cfg_attr(
14784 any(target_arch = "aarch64", target_arch = "arm64ec"),
14785 link_name = "llvm.aarch64.neon.shsub.v8i8"
14786 )]
14787 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v8i8")]
14788 fn _vhsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
14789 }
14790 unsafe { _vhsub_s8(a, b) }
14791}
14792#[doc = "Signed halving subtract"]
14793#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_s8)"]
14794#[inline(always)]
14795#[target_feature(enable = "neon")]
14796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14797#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.s8"))]
14798#[cfg_attr(
14799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14800 assert_instr(shsub)
14801)]
14802#[cfg_attr(
14803 not(target_arch = "arm"),
14804 stable(feature = "neon_intrinsics", since = "1.59.0")
14805)]
14806#[cfg_attr(
14807 target_arch = "arm",
14808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14809)]
14810pub fn vhsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
14811 unsafe extern "unadjusted" {
14812 #[cfg_attr(
14813 any(target_arch = "aarch64", target_arch = "arm64ec"),
14814 link_name = "llvm.aarch64.neon.shsub.v16i8"
14815 )]
14816 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubs.v16i8")]
14817 fn _vhsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
14818 }
14819 unsafe { _vhsubq_s8(a, b) }
14820}
14821#[doc = "Signed halving subtract"]
14822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u8)"]
14823#[inline(always)]
14824#[target_feature(enable = "neon")]
14825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14826#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u8"))]
14827#[cfg_attr(
14828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14829 assert_instr(uhsub)
14830)]
14831#[cfg_attr(
14832 not(target_arch = "arm"),
14833 stable(feature = "neon_intrinsics", since = "1.59.0")
14834)]
14835#[cfg_attr(
14836 target_arch = "arm",
14837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14838)]
14839pub fn vhsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
14840 unsafe extern "unadjusted" {
14841 #[cfg_attr(
14842 any(target_arch = "aarch64", target_arch = "arm64ec"),
14843 link_name = "llvm.aarch64.neon.uhsub.v8i8"
14844 )]
14845 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v8i8")]
14846 fn _vhsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
14847 }
14848 unsafe { _vhsub_u8(a, b) }
14849}
14850#[doc = "Signed halving subtract"]
14851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u8)"]
14852#[inline(always)]
14853#[target_feature(enable = "neon")]
14854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14855#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u8"))]
14856#[cfg_attr(
14857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14858 assert_instr(uhsub)
14859)]
14860#[cfg_attr(
14861 not(target_arch = "arm"),
14862 stable(feature = "neon_intrinsics", since = "1.59.0")
14863)]
14864#[cfg_attr(
14865 target_arch = "arm",
14866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14867)]
14868pub fn vhsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
14869 unsafe extern "unadjusted" {
14870 #[cfg_attr(
14871 any(target_arch = "aarch64", target_arch = "arm64ec"),
14872 link_name = "llvm.aarch64.neon.uhsub.v16i8"
14873 )]
14874 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v16i8")]
14875 fn _vhsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
14876 }
14877 unsafe { _vhsubq_u8(a, b) }
14878}
14879#[doc = "Signed halving subtract"]
14880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u16)"]
14881#[inline(always)]
14882#[target_feature(enable = "neon")]
14883#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14884#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u16"))]
14885#[cfg_attr(
14886 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14887 assert_instr(uhsub)
14888)]
14889#[cfg_attr(
14890 not(target_arch = "arm"),
14891 stable(feature = "neon_intrinsics", since = "1.59.0")
14892)]
14893#[cfg_attr(
14894 target_arch = "arm",
14895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14896)]
14897pub fn vhsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
14898 unsafe extern "unadjusted" {
14899 #[cfg_attr(
14900 any(target_arch = "aarch64", target_arch = "arm64ec"),
14901 link_name = "llvm.aarch64.neon.uhsub.v4i16"
14902 )]
14903 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v4i16")]
14904 fn _vhsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
14905 }
14906 unsafe { _vhsub_u16(a, b) }
14907}
14908#[doc = "Signed halving subtract"]
14909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u16)"]
14910#[inline(always)]
14911#[target_feature(enable = "neon")]
14912#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14913#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u16"))]
14914#[cfg_attr(
14915 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14916 assert_instr(uhsub)
14917)]
14918#[cfg_attr(
14919 not(target_arch = "arm"),
14920 stable(feature = "neon_intrinsics", since = "1.59.0")
14921)]
14922#[cfg_attr(
14923 target_arch = "arm",
14924 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14925)]
14926pub fn vhsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
14927 unsafe extern "unadjusted" {
14928 #[cfg_attr(
14929 any(target_arch = "aarch64", target_arch = "arm64ec"),
14930 link_name = "llvm.aarch64.neon.uhsub.v8i16"
14931 )]
14932 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v8i16")]
14933 fn _vhsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
14934 }
14935 unsafe { _vhsubq_u16(a, b) }
14936}
14937#[doc = "Signed halving subtract"]
14938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsub_u32)"]
14939#[inline(always)]
14940#[target_feature(enable = "neon")]
14941#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14942#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u32"))]
14943#[cfg_attr(
14944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14945 assert_instr(uhsub)
14946)]
14947#[cfg_attr(
14948 not(target_arch = "arm"),
14949 stable(feature = "neon_intrinsics", since = "1.59.0")
14950)]
14951#[cfg_attr(
14952 target_arch = "arm",
14953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14954)]
14955pub fn vhsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
14956 unsafe extern "unadjusted" {
14957 #[cfg_attr(
14958 any(target_arch = "aarch64", target_arch = "arm64ec"),
14959 link_name = "llvm.aarch64.neon.uhsub.v2i32"
14960 )]
14961 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v2i32")]
14962 fn _vhsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
14963 }
14964 unsafe { _vhsub_u32(a, b) }
14965}
14966#[doc = "Signed halving subtract"]
14967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vhsubq_u32)"]
14968#[inline(always)]
14969#[target_feature(enable = "neon")]
14970#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
14971#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vhsub.u32"))]
14972#[cfg_attr(
14973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
14974 assert_instr(uhsub)
14975)]
14976#[cfg_attr(
14977 not(target_arch = "arm"),
14978 stable(feature = "neon_intrinsics", since = "1.59.0")
14979)]
14980#[cfg_attr(
14981 target_arch = "arm",
14982 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
14983)]
14984pub fn vhsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
14985 unsafe extern "unadjusted" {
14986 #[cfg_attr(
14987 any(target_arch = "aarch64", target_arch = "arm64ec"),
14988 link_name = "llvm.aarch64.neon.uhsub.v4i32"
14989 )]
14990 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vhsubu.v4i32")]
14991 fn _vhsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
14992 }
14993 unsafe { _vhsubq_u32(a, b) }
14994}
14995#[doc = "Load one single-element structure and replicate to all lanes of one register"]
14996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_f16)"]
14997#[doc = "## Safety"]
14998#[doc = " * Neon intrinsic unsafe"]
14999#[inline(always)]
15000#[target_feature(enable = "neon")]
15001#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15002#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15003#[cfg_attr(
15004 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15005 assert_instr(ld1r)
15006)]
15007#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15008#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15009#[cfg(not(target_arch = "arm64ec"))]
15010pub unsafe fn vld1_dup_f16(ptr: *const f16) -> float16x4_t {
15011 let x: float16x4_t = vld1_lane_f16::<0>(ptr, transmute(f16x4::splat(0.0)));
15012 simd_shuffle!(x, x, [0, 0, 0, 0])
15013}
15014#[doc = "Load one single-element structure and replicate to all lanes of one register"]
15015#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_f16)"]
15016#[doc = "## Safety"]
15017#[doc = " * Neon intrinsic unsafe"]
15018#[inline(always)]
15019#[target_feature(enable = "neon")]
15020#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15021#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15022#[cfg_attr(
15023 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15024 assert_instr(ld1r)
15025)]
15026#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15027#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15028#[cfg(not(target_arch = "arm64ec"))]
15029pub unsafe fn vld1q_dup_f16(ptr: *const f16) -> float16x8_t {
15030 let x: float16x8_t = vld1q_lane_f16::<0>(ptr, transmute(f16x8::splat(0.0)));
15031 simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
15032}
15033#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15034#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_f32)"]
15035#[doc = "## Safety"]
15036#[doc = " * Neon intrinsic unsafe"]
15037#[inline(always)]
15038#[target_feature(enable = "neon")]
15039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15040#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15041#[cfg_attr(
15042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15043 assert_instr(ld1r)
15044)]
15045#[cfg_attr(
15046 not(target_arch = "arm"),
15047 stable(feature = "neon_intrinsics", since = "1.59.0")
15048)]
15049#[cfg_attr(
15050 target_arch = "arm",
15051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15052)]
15053pub unsafe fn vld1_dup_f32(ptr: *const f32) -> float32x2_t {
15054 transmute(f32x2::splat(*ptr))
15055}
15056#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p16)"]
15058#[doc = "## Safety"]
15059#[doc = " * Neon intrinsic unsafe"]
15060#[inline(always)]
15061#[target_feature(enable = "neon")]
15062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15063#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15064#[cfg_attr(
15065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15066 assert_instr(ld1r)
15067)]
15068#[cfg_attr(
15069 not(target_arch = "arm"),
15070 stable(feature = "neon_intrinsics", since = "1.59.0")
15071)]
15072#[cfg_attr(
15073 target_arch = "arm",
15074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15075)]
15076pub unsafe fn vld1_dup_p16(ptr: *const p16) -> poly16x4_t {
15077 transmute(u16x4::splat(*ptr))
15078}
15079#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p8)"]
15081#[doc = "## Safety"]
15082#[doc = " * Neon intrinsic unsafe"]
15083#[inline(always)]
15084#[target_feature(enable = "neon")]
15085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15086#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15087#[cfg_attr(
15088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15089 assert_instr(ld1r)
15090)]
15091#[cfg_attr(
15092 not(target_arch = "arm"),
15093 stable(feature = "neon_intrinsics", since = "1.59.0")
15094)]
15095#[cfg_attr(
15096 target_arch = "arm",
15097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15098)]
15099pub unsafe fn vld1_dup_p8(ptr: *const p8) -> poly8x8_t {
15100 transmute(u8x8::splat(*ptr))
15101}
15102#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s16)"]
15104#[doc = "## Safety"]
15105#[doc = " * Neon intrinsic unsafe"]
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("vld1.16"))]
15110#[cfg_attr(
15111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15112 assert_instr(ld1r)
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 unsafe fn vld1_dup_s16(ptr: *const i16) -> int16x4_t {
15123 transmute(i16x4::splat(*ptr))
15124}
15125#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s32)"]
15127#[doc = "## Safety"]
15128#[doc = " * Neon intrinsic unsafe"]
15129#[inline(always)]
15130#[target_feature(enable = "neon")]
15131#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15132#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15133#[cfg_attr(
15134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15135 assert_instr(ld1r)
15136)]
15137#[cfg_attr(
15138 not(target_arch = "arm"),
15139 stable(feature = "neon_intrinsics", since = "1.59.0")
15140)]
15141#[cfg_attr(
15142 target_arch = "arm",
15143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15144)]
15145pub unsafe fn vld1_dup_s32(ptr: *const i32) -> int32x2_t {
15146 transmute(i32x2::splat(*ptr))
15147}
15148#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s8)"]
15150#[doc = "## Safety"]
15151#[doc = " * Neon intrinsic unsafe"]
15152#[inline(always)]
15153#[target_feature(enable = "neon")]
15154#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15155#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15156#[cfg_attr(
15157 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15158 assert_instr(ld1r)
15159)]
15160#[cfg_attr(
15161 not(target_arch = "arm"),
15162 stable(feature = "neon_intrinsics", since = "1.59.0")
15163)]
15164#[cfg_attr(
15165 target_arch = "arm",
15166 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15167)]
15168pub unsafe fn vld1_dup_s8(ptr: *const i8) -> int8x8_t {
15169 transmute(i8x8::splat(*ptr))
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_u16)"]
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.16"))]
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_u16(ptr: *const u16) -> uint16x4_t {
15192 transmute(u16x4::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_u32)"]
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.32"))]
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_u32(ptr: *const u32) -> uint32x2_t {
15215 transmute(u32x2::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_u8)"]
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_u8(ptr: *const u8) -> uint8x8_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/vld1q_dup_f32)"]
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.32"))]
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 vld1q_dup_f32(ptr: *const f32) -> float32x4_t {
15261 transmute(f32x4::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/vld1q_dup_p16)"]
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.16"))]
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 vld1q_dup_p16(ptr: *const p16) -> poly16x8_t {
15284 transmute(u16x8::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/vld1q_dup_p8)"]
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 vld1q_dup_p8(ptr: *const p8) -> poly8x16_t {
15307 transmute(u8x16::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/vld1q_dup_s16)"]
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 vld1q_dup_s16(ptr: *const i16) -> int16x8_t {
15330 transmute(i16x8::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/vld1q_dup_s32)"]
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 vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
15353 transmute(i32x4::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/vld1q_dup_s64)"]
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("vldr"))]
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 vld1q_dup_s64(ptr: *const i64) -> int64x2_t {
15376 transmute(i64x2::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_s8)"]
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.8"))]
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_s8(ptr: *const i8) -> int8x16_t {
15399 transmute(i8x16::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_u16)"]
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_u16(ptr: *const u16) -> uint16x8_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_u32)"]
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.32"))]
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_u32(ptr: *const u32) -> uint32x4_t {
15445 transmute(u32x4::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_u64)"]
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("vldr"))]
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_u64(ptr: *const u64) -> uint64x2_t {
15468 transmute(u64x2::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_u8)"]
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.8"))]
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_u8(ptr: *const u8) -> uint8x16_t {
15491 transmute(u8x16::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/vld1_dup_p64)"]
15495#[doc = "## Safety"]
15496#[doc = " * Neon intrinsic unsafe"]
15497#[inline(always)]
15498#[target_feature(enable = "neon,aes")]
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(ldr)
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 vld1_dup_p64(ptr: *const p64) -> poly64x1_t {
15514 let x: poly64x1_t;
15515 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
15516 {
15517 x = crate::core_arch::aarch64::vld1_p64(ptr);
15518 }
15519 #[cfg(target_arch = "arm")]
15520 {
15521 x = crate::core_arch::arm::vld1_p64(ptr);
15522 };
15523 x
15524}
15525#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15526#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s64)"]
15527#[doc = "## Safety"]
15528#[doc = " * Neon intrinsic unsafe"]
15529#[inline(always)]
15530#[target_feature(enable = "neon")]
15531#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15532#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15533#[cfg_attr(
15534 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15535 assert_instr(ldr)
15536)]
15537#[cfg_attr(
15538 not(target_arch = "arm"),
15539 stable(feature = "neon_intrinsics", since = "1.59.0")
15540)]
15541#[cfg_attr(
15542 target_arch = "arm",
15543 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15544)]
15545pub unsafe fn vld1_dup_s64(ptr: *const i64) -> int64x1_t {
15546 let x: int64x1_t;
15547 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
15548 {
15549 x = crate::core_arch::aarch64::vld1_s64(ptr);
15550 }
15551 #[cfg(target_arch = "arm")]
15552 {
15553 x = crate::core_arch::arm::vld1_s64(ptr);
15554 };
15555 x
15556}
15557#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
15558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u64)"]
15559#[doc = "## Safety"]
15560#[doc = " * Neon intrinsic unsafe"]
15561#[inline(always)]
15562#[target_feature(enable = "neon")]
15563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15564#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15565#[cfg_attr(
15566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15567 assert_instr(ldr)
15568)]
15569#[cfg_attr(
15570 not(target_arch = "arm"),
15571 stable(feature = "neon_intrinsics", since = "1.59.0")
15572)]
15573#[cfg_attr(
15574 target_arch = "arm",
15575 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15576)]
15577pub unsafe fn vld1_dup_u64(ptr: *const u64) -> uint64x1_t {
15578 let x: uint64x1_t;
15579 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
15580 {
15581 x = crate::core_arch::aarch64::vld1_u64(ptr);
15582 }
15583 #[cfg(target_arch = "arm")]
15584 {
15585 x = crate::core_arch::arm::vld1_u64(ptr);
15586 };
15587 x
15588}
15589#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16)"]
15591#[doc = "## Safety"]
15592#[doc = " * Neon intrinsic unsafe"]
15593#[inline(always)]
15594#[cfg(target_endian = "little")]
15595#[cfg(target_arch = "arm")]
15596#[target_feature(enable = "neon,v7")]
15597#[target_feature(enable = "neon,fp16")]
15598#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15599#[cfg(not(target_arch = "arm64ec"))]
15600#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15601pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t {
15602 transmute(vld1_v4f16(
15603 ptr as *const i8,
15604 crate::mem::align_of::<f16>() as i32,
15605 ))
15606}
15607#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16)"]
15609#[doc = "## Safety"]
15610#[doc = " * Neon intrinsic unsafe"]
15611#[inline(always)]
15612#[cfg(target_endian = "big")]
15613#[cfg(target_arch = "arm")]
15614#[target_feature(enable = "neon,v7")]
15615#[target_feature(enable = "neon,fp16")]
15616#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15617#[cfg(not(target_arch = "arm64ec"))]
15618#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15619pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t {
15620 let ret_val: float16x4_t = transmute(vld1_v4f16(
15621 ptr as *const i8,
15622 crate::mem::align_of::<f16>() as i32,
15623 ));
15624 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
15625}
15626#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15627#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16)"]
15628#[doc = "## Safety"]
15629#[doc = " * Neon intrinsic unsafe"]
15630#[inline(always)]
15631#[cfg(target_endian = "little")]
15632#[cfg(target_arch = "arm")]
15633#[target_feature(enable = "neon,v7")]
15634#[target_feature(enable = "neon,fp16")]
15635#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15636#[cfg(not(target_arch = "arm64ec"))]
15637#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15638pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t {
15639 transmute(vld1q_v8f16(
15640 ptr as *const i8,
15641 crate::mem::align_of::<f16>() as i32,
15642 ))
15643}
15644#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16)"]
15646#[doc = "## Safety"]
15647#[doc = " * Neon intrinsic unsafe"]
15648#[inline(always)]
15649#[cfg(target_endian = "big")]
15650#[cfg(target_arch = "arm")]
15651#[target_feature(enable = "neon,v7")]
15652#[target_feature(enable = "neon,fp16")]
15653#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15654#[cfg(not(target_arch = "arm64ec"))]
15655#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15656pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t {
15657 let ret_val: float16x8_t = transmute(vld1q_v8f16(
15658 ptr as *const i8,
15659 crate::mem::align_of::<f16>() as i32,
15660 ));
15661 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
15662}
15663#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15664#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x2)"]
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(vld1))]
15671#[cfg_attr(
15672 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15673 assert_instr(ld)
15674)]
15675#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15676#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15677#[cfg(not(target_arch = "arm64ec"))]
15678pub unsafe fn vld1_f16_x2(a: *const f16) -> float16x4x2_t {
15679 crate::ptr::read_unaligned(a.cast())
15680}
15681#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x3)"]
15683#[doc = "## Safety"]
15684#[doc = " * Neon intrinsic unsafe"]
15685#[inline(always)]
15686#[target_feature(enable = "neon")]
15687#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15688#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15689#[cfg_attr(
15690 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15691 assert_instr(ld)
15692)]
15693#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15694#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15695#[cfg(not(target_arch = "arm64ec"))]
15696pub unsafe fn vld1_f16_x3(a: *const f16) -> float16x4x3_t {
15697 crate::ptr::read_unaligned(a.cast())
15698}
15699#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15700#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f16_x4)"]
15701#[doc = "## Safety"]
15702#[doc = " * Neon intrinsic unsafe"]
15703#[inline(always)]
15704#[target_feature(enable = "neon")]
15705#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15706#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15707#[cfg_attr(
15708 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15709 assert_instr(ld)
15710)]
15711#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15712#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15713#[cfg(not(target_arch = "arm64ec"))]
15714pub unsafe fn vld1_f16_x4(a: *const f16) -> float16x4x4_t {
15715 crate::ptr::read_unaligned(a.cast())
15716}
15717#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x2)"]
15719#[doc = "## Safety"]
15720#[doc = " * Neon intrinsic unsafe"]
15721#[inline(always)]
15722#[target_feature(enable = "neon")]
15723#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15724#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15725#[cfg_attr(
15726 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15727 assert_instr(ld)
15728)]
15729#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15730#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15731#[cfg(not(target_arch = "arm64ec"))]
15732pub unsafe fn vld1q_f16_x2(a: *const f16) -> float16x8x2_t {
15733 crate::ptr::read_unaligned(a.cast())
15734}
15735#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x3)"]
15737#[doc = "## Safety"]
15738#[doc = " * Neon intrinsic unsafe"]
15739#[inline(always)]
15740#[target_feature(enable = "neon")]
15741#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15742#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15743#[cfg_attr(
15744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15745 assert_instr(ld)
15746)]
15747#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15748#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15749#[cfg(not(target_arch = "arm64ec"))]
15750pub unsafe fn vld1q_f16_x3(a: *const f16) -> float16x8x3_t {
15751 crate::ptr::read_unaligned(a.cast())
15752}
15753#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f16_x4)"]
15755#[doc = "## Safety"]
15756#[doc = " * Neon intrinsic unsafe"]
15757#[inline(always)]
15758#[target_feature(enable = "neon")]
15759#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15760#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1))]
15761#[cfg_attr(
15762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15763 assert_instr(ld)
15764)]
15765#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
15766#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
15767#[cfg(not(target_arch = "arm64ec"))]
15768pub unsafe fn vld1q_f16_x4(a: *const f16) -> float16x8x4_t {
15769 crate::ptr::read_unaligned(a.cast())
15770}
15771#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15772#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32)"]
15773#[doc = "## Safety"]
15774#[doc = " * Neon intrinsic unsafe"]
15775#[inline(always)]
15776#[cfg(target_arch = "arm")]
15777#[target_feature(enable = "neon,v7")]
15778#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15779#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15780pub unsafe fn vld1_f32(ptr: *const f32) -> float32x2_t {
15781 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
15782 transmute(vld1_v2f32::<ALIGN>(ptr as *const i8))
15783}
15784#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32)"]
15786#[doc = "## Safety"]
15787#[doc = " * Neon intrinsic unsafe"]
15788#[inline(always)]
15789#[cfg(target_arch = "arm")]
15790#[target_feature(enable = "neon,v7")]
15791#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15792#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15793pub unsafe fn vld1q_f32(ptr: *const f32) -> float32x4_t {
15794 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
15795 transmute(vld1q_v4f32::<ALIGN>(ptr as *const i8))
15796}
15797#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15798#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u8)"]
15799#[doc = "## Safety"]
15800#[doc = " * Neon intrinsic unsafe"]
15801#[inline(always)]
15802#[cfg(target_arch = "arm")]
15803#[target_feature(enable = "neon,v7")]
15804#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15805#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15806pub unsafe fn vld1_u8(ptr: *const u8) -> uint8x8_t {
15807 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
15808 transmute(vld1_v8i8::<ALIGN>(ptr as *const i8))
15809}
15810#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u8)"]
15812#[doc = "## Safety"]
15813#[doc = " * Neon intrinsic unsafe"]
15814#[inline(always)]
15815#[cfg(target_arch = "arm")]
15816#[target_feature(enable = "neon,v7")]
15817#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15818#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15819pub unsafe fn vld1q_u8(ptr: *const u8) -> uint8x16_t {
15820 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
15821 transmute(vld1q_v16i8::<ALIGN>(ptr as *const i8))
15822}
15823#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15824#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u16)"]
15825#[doc = "## Safety"]
15826#[doc = " * Neon intrinsic unsafe"]
15827#[inline(always)]
15828#[cfg(target_arch = "arm")]
15829#[target_feature(enable = "neon,v7")]
15830#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15831#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15832pub unsafe fn vld1_u16(ptr: *const u16) -> uint16x4_t {
15833 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
15834 transmute(vld1_v4i16::<ALIGN>(ptr as *const i8))
15835}
15836#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u16)"]
15838#[doc = "## Safety"]
15839#[doc = " * Neon intrinsic unsafe"]
15840#[inline(always)]
15841#[cfg(target_arch = "arm")]
15842#[target_feature(enable = "neon,v7")]
15843#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15844#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15845pub unsafe fn vld1q_u16(ptr: *const u16) -> uint16x8_t {
15846 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
15847 transmute(vld1q_v8i16::<ALIGN>(ptr as *const i8))
15848}
15849#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15850#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u32)"]
15851#[doc = "## Safety"]
15852#[doc = " * Neon intrinsic unsafe"]
15853#[inline(always)]
15854#[cfg(target_arch = "arm")]
15855#[target_feature(enable = "neon,v7")]
15856#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15858pub unsafe fn vld1_u32(ptr: *const u32) -> uint32x2_t {
15859 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
15860 transmute(vld1_v2i32::<ALIGN>(ptr as *const i8))
15861}
15862#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u32)"]
15864#[doc = "## Safety"]
15865#[doc = " * Neon intrinsic unsafe"]
15866#[inline(always)]
15867#[cfg(target_arch = "arm")]
15868#[target_feature(enable = "neon,v7")]
15869#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15870#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
15871pub unsafe fn vld1q_u32(ptr: *const u32) -> uint32x4_t {
15872 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
15873 transmute(vld1q_v4i32::<ALIGN>(ptr as *const i8))
15874}
15875#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_u64)"]
15877#[doc = "## Safety"]
15878#[doc = " * Neon intrinsic unsafe"]
15879#[inline(always)]
15880#[cfg(target_arch = "arm")]
15881#[target_feature(enable = "neon,v7")]
15882#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15883#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
15884pub unsafe fn vld1_u64(ptr: *const u64) -> uint64x1_t {
15885 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
15886 transmute(vld1_v1i64::<ALIGN>(ptr as *const i8))
15887}
15888#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15889#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_u64)"]
15890#[doc = "## Safety"]
15891#[doc = " * Neon intrinsic unsafe"]
15892#[inline(always)]
15893#[cfg(target_arch = "arm")]
15894#[target_feature(enable = "neon,v7")]
15895#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15896#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
15897pub unsafe fn vld1q_u64(ptr: *const u64) -> uint64x2_t {
15898 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
15899 transmute(vld1q_v2i64::<ALIGN>(ptr as *const i8))
15900}
15901#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p8)"]
15903#[doc = "## Safety"]
15904#[doc = " * Neon intrinsic unsafe"]
15905#[inline(always)]
15906#[cfg(target_arch = "arm")]
15907#[target_feature(enable = "neon,v7")]
15908#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15909#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15910pub unsafe fn vld1_p8(ptr: *const p8) -> poly8x8_t {
15911 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
15912 transmute(vld1_v8i8::<ALIGN>(ptr as *const i8))
15913}
15914#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p8)"]
15916#[doc = "## Safety"]
15917#[doc = " * Neon intrinsic unsafe"]
15918#[inline(always)]
15919#[cfg(target_arch = "arm")]
15920#[target_feature(enable = "neon,v7")]
15921#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15922#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
15923pub unsafe fn vld1q_p8(ptr: *const p8) -> poly8x16_t {
15924 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
15925 transmute(vld1q_v16i8::<ALIGN>(ptr as *const i8))
15926}
15927#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p16)"]
15929#[doc = "## Safety"]
15930#[doc = " * Neon intrinsic unsafe"]
15931#[inline(always)]
15932#[cfg(target_arch = "arm")]
15933#[target_feature(enable = "neon,v7")]
15934#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15935#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15936pub unsafe fn vld1_p16(ptr: *const p16) -> poly16x4_t {
15937 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
15938 transmute(vld1_v4i16::<ALIGN>(ptr as *const i8))
15939}
15940#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15941#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p16)"]
15942#[doc = "## Safety"]
15943#[doc = " * Neon intrinsic unsafe"]
15944#[inline(always)]
15945#[cfg(target_arch = "arm")]
15946#[target_feature(enable = "neon,v7")]
15947#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15948#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
15949pub unsafe fn vld1q_p16(ptr: *const p16) -> poly16x8_t {
15950 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
15951 transmute(vld1q_v8i16::<ALIGN>(ptr as *const i8))
15952}
15953#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
15954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64)"]
15955#[doc = "## Safety"]
15956#[doc = " * Neon intrinsic unsafe"]
15957#[inline(always)]
15958#[cfg(target_arch = "arm")]
15959#[target_feature(enable = "neon,aes")]
15960#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
15961#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
15962pub unsafe fn vld1q_p64(ptr: *const p64) -> poly64x2_t {
15963 const ALIGN: i32 = crate::mem::align_of::<p64>() as i32;
15964 transmute(vld1q_v2i64::<ALIGN>(ptr as *const i8))
15965}
15966#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x2)"]
15968#[doc = "## Safety"]
15969#[doc = " * Neon intrinsic unsafe"]
15970#[inline(always)]
15971#[target_feature(enable = "neon")]
15972#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15973#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
15974#[cfg_attr(
15975 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15976 assert_instr(ld)
15977)]
15978#[cfg_attr(
15979 not(target_arch = "arm"),
15980 stable(feature = "neon_intrinsics", since = "1.59.0")
15981)]
15982#[cfg_attr(
15983 target_arch = "arm",
15984 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
15985)]
15986pub unsafe fn vld1_f32_x2(a: *const f32) -> float32x2x2_t {
15987 crate::ptr::read_unaligned(a.cast())
15988}
15989#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
15990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x3)"]
15991#[doc = "## Safety"]
15992#[doc = " * Neon intrinsic unsafe"]
15993#[inline(always)]
15994#[target_feature(enable = "neon")]
15995#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
15996#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
15997#[cfg_attr(
15998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
15999 assert_instr(ld)
16000)]
16001#[cfg_attr(
16002 not(target_arch = "arm"),
16003 stable(feature = "neon_intrinsics", since = "1.59.0")
16004)]
16005#[cfg_attr(
16006 target_arch = "arm",
16007 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16008)]
16009pub unsafe fn vld1_f32_x3(a: *const f32) -> float32x2x3_t {
16010 crate::ptr::read_unaligned(a.cast())
16011}
16012#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16013#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_f32_x4)"]
16014#[doc = "## Safety"]
16015#[doc = " * Neon intrinsic unsafe"]
16016#[inline(always)]
16017#[target_feature(enable = "neon")]
16018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16019#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16020#[cfg_attr(
16021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16022 assert_instr(ld)
16023)]
16024#[cfg_attr(
16025 not(target_arch = "arm"),
16026 stable(feature = "neon_intrinsics", since = "1.59.0")
16027)]
16028#[cfg_attr(
16029 target_arch = "arm",
16030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16031)]
16032pub unsafe fn vld1_f32_x4(a: *const f32) -> float32x2x4_t {
16033 crate::ptr::read_unaligned(a.cast())
16034}
16035#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x2)"]
16037#[doc = "## Safety"]
16038#[doc = " * Neon intrinsic unsafe"]
16039#[inline(always)]
16040#[target_feature(enable = "neon")]
16041#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16042#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16043#[cfg_attr(
16044 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16045 assert_instr(ld)
16046)]
16047#[cfg_attr(
16048 not(target_arch = "arm"),
16049 stable(feature = "neon_intrinsics", since = "1.59.0")
16050)]
16051#[cfg_attr(
16052 target_arch = "arm",
16053 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16054)]
16055pub unsafe fn vld1q_f32_x2(a: *const f32) -> float32x4x2_t {
16056 crate::ptr::read_unaligned(a.cast())
16057}
16058#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x3)"]
16060#[doc = "## Safety"]
16061#[doc = " * Neon intrinsic unsafe"]
16062#[inline(always)]
16063#[target_feature(enable = "neon")]
16064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16066#[cfg_attr(
16067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16068 assert_instr(ld)
16069)]
16070#[cfg_attr(
16071 not(target_arch = "arm"),
16072 stable(feature = "neon_intrinsics", since = "1.59.0")
16073)]
16074#[cfg_attr(
16075 target_arch = "arm",
16076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16077)]
16078pub unsafe fn vld1q_f32_x3(a: *const f32) -> float32x4x3_t {
16079 crate::ptr::read_unaligned(a.cast())
16080}
16081#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_f32_x4)"]
16083#[doc = "## Safety"]
16084#[doc = " * Neon intrinsic unsafe"]
16085#[inline(always)]
16086#[target_feature(enable = "neon")]
16087#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16088#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16089#[cfg_attr(
16090 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16091 assert_instr(ld)
16092)]
16093#[cfg_attr(
16094 not(target_arch = "arm"),
16095 stable(feature = "neon_intrinsics", since = "1.59.0")
16096)]
16097#[cfg_attr(
16098 target_arch = "arm",
16099 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16100)]
16101pub unsafe fn vld1q_f32_x4(a: *const f32) -> float32x4x4_t {
16102 crate::ptr::read_unaligned(a.cast())
16103}
16104#[doc = "Load one single-element structure to one lane of one register"]
16105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_f16)"]
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(vld1, LANE = 0))]
16112#[cfg_attr(
16113 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16114 assert_instr(ld1, LANE = 0)
16115)]
16116#[rustc_legacy_const_generics(2)]
16117#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
16118#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
16119#[cfg(not(target_arch = "arm64ec"))]
16120pub unsafe fn vld1_lane_f16<const LANE: i32>(ptr: *const f16, src: float16x4_t) -> float16x4_t {
16121 static_assert_uimm_bits!(LANE, 2);
16122 simd_insert!(src, LANE as u32, *ptr)
16123}
16124#[doc = "Load one single-element structure to one lane of one register"]
16125#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_f16)"]
16126#[doc = "## Safety"]
16127#[doc = " * Neon intrinsic unsafe"]
16128#[inline(always)]
16129#[target_feature(enable = "neon")]
16130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld1, LANE = 0))]
16132#[cfg_attr(
16133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16134 assert_instr(ld1, LANE = 0)
16135)]
16136#[rustc_legacy_const_generics(2)]
16137#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
16138#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
16139#[cfg(not(target_arch = "arm64ec"))]
16140pub unsafe fn vld1q_lane_f16<const LANE: i32>(ptr: *const f16, src: float16x8_t) -> float16x8_t {
16141 static_assert_uimm_bits!(LANE, 3);
16142 simd_insert!(src, LANE as u32, *ptr)
16143}
16144#[doc = "Load one single-element structure to one lane of one register."]
16145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_f32)"]
16146#[doc = "## Safety"]
16147#[doc = " * Neon intrinsic unsafe"]
16148#[inline(always)]
16149#[target_feature(enable = "neon")]
16150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16151#[rustc_legacy_const_generics(2)]
16152#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
16153#[cfg_attr(
16154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16155 assert_instr(ld1, LANE = 1)
16156)]
16157#[cfg_attr(
16158 not(target_arch = "arm"),
16159 stable(feature = "neon_intrinsics", since = "1.59.0")
16160)]
16161#[cfg_attr(
16162 target_arch = "arm",
16163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16164)]
16165pub unsafe fn vld1_lane_f32<const LANE: i32>(ptr: *const f32, src: float32x2_t) -> float32x2_t {
16166 static_assert_uimm_bits!(LANE, 1);
16167 simd_insert!(src, LANE as u32, *ptr)
16168}
16169#[doc = "Load one single-element structure to one lane of one register."]
16170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p16)"]
16171#[doc = "## Safety"]
16172#[doc = " * Neon intrinsic unsafe"]
16173#[inline(always)]
16174#[target_feature(enable = "neon")]
16175#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16176#[rustc_legacy_const_generics(2)]
16177#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
16178#[cfg_attr(
16179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16180 assert_instr(ld1, LANE = 3)
16181)]
16182#[cfg_attr(
16183 not(target_arch = "arm"),
16184 stable(feature = "neon_intrinsics", since = "1.59.0")
16185)]
16186#[cfg_attr(
16187 target_arch = "arm",
16188 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16189)]
16190pub unsafe fn vld1_lane_p16<const LANE: i32>(ptr: *const p16, src: poly16x4_t) -> poly16x4_t {
16191 static_assert_uimm_bits!(LANE, 2);
16192 simd_insert!(src, LANE as u32, *ptr)
16193}
16194#[doc = "Load one single-element structure to one lane of one register."]
16195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p8)"]
16196#[doc = "## Safety"]
16197#[doc = " * Neon intrinsic unsafe"]
16198#[inline(always)]
16199#[target_feature(enable = "neon")]
16200#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16201#[rustc_legacy_const_generics(2)]
16202#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16203#[cfg_attr(
16204 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16205 assert_instr(ld1, LANE = 7)
16206)]
16207#[cfg_attr(
16208 not(target_arch = "arm"),
16209 stable(feature = "neon_intrinsics", since = "1.59.0")
16210)]
16211#[cfg_attr(
16212 target_arch = "arm",
16213 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16214)]
16215pub unsafe fn vld1_lane_p8<const LANE: i32>(ptr: *const p8, src: poly8x8_t) -> poly8x8_t {
16216 static_assert_uimm_bits!(LANE, 3);
16217 simd_insert!(src, LANE as u32, *ptr)
16218}
16219#[doc = "Load one single-element structure to one lane of one register."]
16220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s16)"]
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#[rustc_legacy_const_generics(2)]
16227#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
16228#[cfg_attr(
16229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16230 assert_instr(ld1, LANE = 3)
16231)]
16232#[cfg_attr(
16233 not(target_arch = "arm"),
16234 stable(feature = "neon_intrinsics", since = "1.59.0")
16235)]
16236#[cfg_attr(
16237 target_arch = "arm",
16238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16239)]
16240pub unsafe fn vld1_lane_s16<const LANE: i32>(ptr: *const i16, src: int16x4_t) -> int16x4_t {
16241 static_assert_uimm_bits!(LANE, 2);
16242 simd_insert!(src, LANE as u32, *ptr)
16243}
16244#[doc = "Load one single-element structure to one lane of one register."]
16245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s32)"]
16246#[doc = "## Safety"]
16247#[doc = " * Neon intrinsic unsafe"]
16248#[inline(always)]
16249#[target_feature(enable = "neon")]
16250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16251#[rustc_legacy_const_generics(2)]
16252#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
16253#[cfg_attr(
16254 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16255 assert_instr(ld1, LANE = 1)
16256)]
16257#[cfg_attr(
16258 not(target_arch = "arm"),
16259 stable(feature = "neon_intrinsics", since = "1.59.0")
16260)]
16261#[cfg_attr(
16262 target_arch = "arm",
16263 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16264)]
16265pub unsafe fn vld1_lane_s32<const LANE: i32>(ptr: *const i32, src: int32x2_t) -> int32x2_t {
16266 static_assert_uimm_bits!(LANE, 1);
16267 simd_insert!(src, LANE as u32, *ptr)
16268}
16269#[doc = "Load one single-element structure to one lane of one register."]
16270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s64)"]
16271#[doc = "## Safety"]
16272#[doc = " * Neon intrinsic unsafe"]
16273#[inline(always)]
16274#[target_feature(enable = "neon")]
16275#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16276#[rustc_legacy_const_generics(2)]
16277#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16278#[cfg_attr(
16279 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16280 assert_instr(ldr, LANE = 0)
16281)]
16282#[cfg_attr(
16283 not(target_arch = "arm"),
16284 stable(feature = "neon_intrinsics", since = "1.59.0")
16285)]
16286#[cfg_attr(
16287 target_arch = "arm",
16288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16289)]
16290pub unsafe fn vld1_lane_s64<const LANE: i32>(ptr: *const i64, src: int64x1_t) -> int64x1_t {
16291 static_assert!(LANE == 0);
16292 simd_insert!(src, LANE as u32, *ptr)
16293}
16294#[doc = "Load one single-element structure to one lane of one register."]
16295#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_s8)"]
16296#[doc = "## Safety"]
16297#[doc = " * Neon intrinsic unsafe"]
16298#[inline(always)]
16299#[target_feature(enable = "neon")]
16300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16301#[rustc_legacy_const_generics(2)]
16302#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16303#[cfg_attr(
16304 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16305 assert_instr(ld1, LANE = 7)
16306)]
16307#[cfg_attr(
16308 not(target_arch = "arm"),
16309 stable(feature = "neon_intrinsics", since = "1.59.0")
16310)]
16311#[cfg_attr(
16312 target_arch = "arm",
16313 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16314)]
16315pub unsafe fn vld1_lane_s8<const LANE: i32>(ptr: *const i8, src: int8x8_t) -> int8x8_t {
16316 static_assert_uimm_bits!(LANE, 3);
16317 simd_insert!(src, LANE as u32, *ptr)
16318}
16319#[doc = "Load one single-element structure to one lane of one register."]
16320#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u16)"]
16321#[doc = "## Safety"]
16322#[doc = " * Neon intrinsic unsafe"]
16323#[inline(always)]
16324#[target_feature(enable = "neon")]
16325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16326#[rustc_legacy_const_generics(2)]
16327#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 3))]
16328#[cfg_attr(
16329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16330 assert_instr(ld1, LANE = 3)
16331)]
16332#[cfg_attr(
16333 not(target_arch = "arm"),
16334 stable(feature = "neon_intrinsics", since = "1.59.0")
16335)]
16336#[cfg_attr(
16337 target_arch = "arm",
16338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16339)]
16340pub unsafe fn vld1_lane_u16<const LANE: i32>(ptr: *const u16, src: uint16x4_t) -> uint16x4_t {
16341 static_assert_uimm_bits!(LANE, 2);
16342 simd_insert!(src, LANE as u32, *ptr)
16343}
16344#[doc = "Load one single-element structure to one lane of one register."]
16345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u32)"]
16346#[doc = "## Safety"]
16347#[doc = " * Neon intrinsic unsafe"]
16348#[inline(always)]
16349#[target_feature(enable = "neon")]
16350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16351#[rustc_legacy_const_generics(2)]
16352#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 1))]
16353#[cfg_attr(
16354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16355 assert_instr(ld1, LANE = 1)
16356)]
16357#[cfg_attr(
16358 not(target_arch = "arm"),
16359 stable(feature = "neon_intrinsics", since = "1.59.0")
16360)]
16361#[cfg_attr(
16362 target_arch = "arm",
16363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16364)]
16365pub unsafe fn vld1_lane_u32<const LANE: i32>(ptr: *const u32, src: uint32x2_t) -> uint32x2_t {
16366 static_assert_uimm_bits!(LANE, 1);
16367 simd_insert!(src, LANE as u32, *ptr)
16368}
16369#[doc = "Load one single-element structure to one lane of one register."]
16370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u64)"]
16371#[doc = "## Safety"]
16372#[doc = " * Neon intrinsic unsafe"]
16373#[inline(always)]
16374#[target_feature(enable = "neon")]
16375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16376#[rustc_legacy_const_generics(2)]
16377#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16378#[cfg_attr(
16379 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16380 assert_instr(ldr, LANE = 0)
16381)]
16382#[cfg_attr(
16383 not(target_arch = "arm"),
16384 stable(feature = "neon_intrinsics", since = "1.59.0")
16385)]
16386#[cfg_attr(
16387 target_arch = "arm",
16388 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16389)]
16390pub unsafe fn vld1_lane_u64<const LANE: i32>(ptr: *const u64, src: uint64x1_t) -> uint64x1_t {
16391 static_assert!(LANE == 0);
16392 simd_insert!(src, LANE as u32, *ptr)
16393}
16394#[doc = "Load one single-element structure to one lane of one register."]
16395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_u8)"]
16396#[doc = "## Safety"]
16397#[doc = " * Neon intrinsic unsafe"]
16398#[inline(always)]
16399#[target_feature(enable = "neon")]
16400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16401#[rustc_legacy_const_generics(2)]
16402#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 7))]
16403#[cfg_attr(
16404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16405 assert_instr(ld1, LANE = 7)
16406)]
16407#[cfg_attr(
16408 not(target_arch = "arm"),
16409 stable(feature = "neon_intrinsics", since = "1.59.0")
16410)]
16411#[cfg_attr(
16412 target_arch = "arm",
16413 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16414)]
16415pub unsafe fn vld1_lane_u8<const LANE: i32>(ptr: *const u8, src: uint8x8_t) -> uint8x8_t {
16416 static_assert_uimm_bits!(LANE, 3);
16417 simd_insert!(src, LANE as u32, *ptr)
16418}
16419#[doc = "Load one single-element structure to one lane of one register."]
16420#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_f32)"]
16421#[doc = "## Safety"]
16422#[doc = " * Neon intrinsic unsafe"]
16423#[inline(always)]
16424#[target_feature(enable = "neon")]
16425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16426#[rustc_legacy_const_generics(2)]
16427#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16428#[cfg_attr(
16429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16430 assert_instr(ld1, LANE = 3)
16431)]
16432#[cfg_attr(
16433 not(target_arch = "arm"),
16434 stable(feature = "neon_intrinsics", since = "1.59.0")
16435)]
16436#[cfg_attr(
16437 target_arch = "arm",
16438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16439)]
16440pub unsafe fn vld1q_lane_f32<const LANE: i32>(ptr: *const f32, src: float32x4_t) -> float32x4_t {
16441 static_assert_uimm_bits!(LANE, 2);
16442 simd_insert!(src, LANE as u32, *ptr)
16443}
16444#[doc = "Load one single-element structure to one lane of one register."]
16445#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p16)"]
16446#[doc = "## Safety"]
16447#[doc = " * Neon intrinsic unsafe"]
16448#[inline(always)]
16449#[target_feature(enable = "neon")]
16450#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16451#[rustc_legacy_const_generics(2)]
16452#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16453#[cfg_attr(
16454 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16455 assert_instr(ld1, LANE = 7)
16456)]
16457#[cfg_attr(
16458 not(target_arch = "arm"),
16459 stable(feature = "neon_intrinsics", since = "1.59.0")
16460)]
16461#[cfg_attr(
16462 target_arch = "arm",
16463 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16464)]
16465pub unsafe fn vld1q_lane_p16<const LANE: i32>(ptr: *const p16, src: poly16x8_t) -> poly16x8_t {
16466 static_assert_uimm_bits!(LANE, 3);
16467 simd_insert!(src, LANE as u32, *ptr)
16468}
16469#[doc = "Load one single-element structure to one lane of one register."]
16470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p8)"]
16471#[doc = "## Safety"]
16472#[doc = " * Neon intrinsic unsafe"]
16473#[inline(always)]
16474#[target_feature(enable = "neon")]
16475#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16476#[rustc_legacy_const_generics(2)]
16477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16478#[cfg_attr(
16479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16480 assert_instr(ld1, LANE = 15)
16481)]
16482#[cfg_attr(
16483 not(target_arch = "arm"),
16484 stable(feature = "neon_intrinsics", since = "1.59.0")
16485)]
16486#[cfg_attr(
16487 target_arch = "arm",
16488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16489)]
16490pub unsafe fn vld1q_lane_p8<const LANE: i32>(ptr: *const p8, src: poly8x16_t) -> poly8x16_t {
16491 static_assert_uimm_bits!(LANE, 4);
16492 simd_insert!(src, LANE as u32, *ptr)
16493}
16494#[doc = "Load one single-element structure to one lane of one register."]
16495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s16)"]
16496#[doc = "## Safety"]
16497#[doc = " * Neon intrinsic unsafe"]
16498#[inline(always)]
16499#[target_feature(enable = "neon")]
16500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16501#[rustc_legacy_const_generics(2)]
16502#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16503#[cfg_attr(
16504 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16505 assert_instr(ld1, LANE = 7)
16506)]
16507#[cfg_attr(
16508 not(target_arch = "arm"),
16509 stable(feature = "neon_intrinsics", since = "1.59.0")
16510)]
16511#[cfg_attr(
16512 target_arch = "arm",
16513 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16514)]
16515pub unsafe fn vld1q_lane_s16<const LANE: i32>(ptr: *const i16, src: int16x8_t) -> int16x8_t {
16516 static_assert_uimm_bits!(LANE, 3);
16517 simd_insert!(src, LANE as u32, *ptr)
16518}
16519#[doc = "Load one single-element structure to one lane of one register."]
16520#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s32)"]
16521#[doc = "## Safety"]
16522#[doc = " * Neon intrinsic unsafe"]
16523#[inline(always)]
16524#[target_feature(enable = "neon")]
16525#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16526#[rustc_legacy_const_generics(2)]
16527#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16528#[cfg_attr(
16529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16530 assert_instr(ld1, LANE = 3)
16531)]
16532#[cfg_attr(
16533 not(target_arch = "arm"),
16534 stable(feature = "neon_intrinsics", since = "1.59.0")
16535)]
16536#[cfg_attr(
16537 target_arch = "arm",
16538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16539)]
16540pub unsafe fn vld1q_lane_s32<const LANE: i32>(ptr: *const i32, src: int32x4_t) -> int32x4_t {
16541 static_assert_uimm_bits!(LANE, 2);
16542 simd_insert!(src, LANE as u32, *ptr)
16543}
16544#[doc = "Load one single-element structure to one lane of one register."]
16545#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s64)"]
16546#[doc = "## Safety"]
16547#[doc = " * Neon intrinsic unsafe"]
16548#[inline(always)]
16549#[target_feature(enable = "neon")]
16550#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16551#[rustc_legacy_const_generics(2)]
16552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16553#[cfg_attr(
16554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16555 assert_instr(ld1, LANE = 1)
16556)]
16557#[cfg_attr(
16558 not(target_arch = "arm"),
16559 stable(feature = "neon_intrinsics", since = "1.59.0")
16560)]
16561#[cfg_attr(
16562 target_arch = "arm",
16563 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16564)]
16565pub unsafe fn vld1q_lane_s64<const LANE: i32>(ptr: *const i64, src: int64x2_t) -> int64x2_t {
16566 static_assert_uimm_bits!(LANE, 1);
16567 simd_insert!(src, LANE as u32, *ptr)
16568}
16569#[doc = "Load one single-element structure to one lane of one register."]
16570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_s8)"]
16571#[doc = "## Safety"]
16572#[doc = " * Neon intrinsic unsafe"]
16573#[inline(always)]
16574#[target_feature(enable = "neon")]
16575#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16576#[rustc_legacy_const_generics(2)]
16577#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16578#[cfg_attr(
16579 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16580 assert_instr(ld1, LANE = 15)
16581)]
16582#[cfg_attr(
16583 not(target_arch = "arm"),
16584 stable(feature = "neon_intrinsics", since = "1.59.0")
16585)]
16586#[cfg_attr(
16587 target_arch = "arm",
16588 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16589)]
16590pub unsafe fn vld1q_lane_s8<const LANE: i32>(ptr: *const i8, src: int8x16_t) -> int8x16_t {
16591 static_assert_uimm_bits!(LANE, 4);
16592 simd_insert!(src, LANE as u32, *ptr)
16593}
16594#[doc = "Load one single-element structure to one lane of one register."]
16595#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u16)"]
16596#[doc = "## Safety"]
16597#[doc = " * Neon intrinsic unsafe"]
16598#[inline(always)]
16599#[target_feature(enable = "neon")]
16600#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16601#[rustc_legacy_const_generics(2)]
16602#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16", LANE = 7))]
16603#[cfg_attr(
16604 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16605 assert_instr(ld1, LANE = 7)
16606)]
16607#[cfg_attr(
16608 not(target_arch = "arm"),
16609 stable(feature = "neon_intrinsics", since = "1.59.0")
16610)]
16611#[cfg_attr(
16612 target_arch = "arm",
16613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16614)]
16615pub unsafe fn vld1q_lane_u16<const LANE: i32>(ptr: *const u16, src: uint16x8_t) -> uint16x8_t {
16616 static_assert_uimm_bits!(LANE, 3);
16617 simd_insert!(src, LANE as u32, *ptr)
16618}
16619#[doc = "Load one single-element structure to one lane of one register."]
16620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u32)"]
16621#[doc = "## Safety"]
16622#[doc = " * Neon intrinsic unsafe"]
16623#[inline(always)]
16624#[target_feature(enable = "neon")]
16625#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16626#[rustc_legacy_const_generics(2)]
16627#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32", LANE = 3))]
16628#[cfg_attr(
16629 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16630 assert_instr(ld1, LANE = 3)
16631)]
16632#[cfg_attr(
16633 not(target_arch = "arm"),
16634 stable(feature = "neon_intrinsics", since = "1.59.0")
16635)]
16636#[cfg_attr(
16637 target_arch = "arm",
16638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16639)]
16640pub unsafe fn vld1q_lane_u32<const LANE: i32>(ptr: *const u32, src: uint32x4_t) -> uint32x4_t {
16641 static_assert_uimm_bits!(LANE, 2);
16642 simd_insert!(src, LANE as u32, *ptr)
16643}
16644#[doc = "Load one single-element structure to one lane of one register."]
16645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u64)"]
16646#[doc = "## Safety"]
16647#[doc = " * Neon intrinsic unsafe"]
16648#[inline(always)]
16649#[target_feature(enable = "neon")]
16650#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16651#[rustc_legacy_const_generics(2)]
16652#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16653#[cfg_attr(
16654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16655 assert_instr(ld1, LANE = 1)
16656)]
16657#[cfg_attr(
16658 not(target_arch = "arm"),
16659 stable(feature = "neon_intrinsics", since = "1.59.0")
16660)]
16661#[cfg_attr(
16662 target_arch = "arm",
16663 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16664)]
16665pub unsafe fn vld1q_lane_u64<const LANE: i32>(ptr: *const u64, src: uint64x2_t) -> uint64x2_t {
16666 static_assert_uimm_bits!(LANE, 1);
16667 simd_insert!(src, LANE as u32, *ptr)
16668}
16669#[doc = "Load one single-element structure to one lane of one register."]
16670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_u8)"]
16671#[doc = "## Safety"]
16672#[doc = " * Neon intrinsic unsafe"]
16673#[inline(always)]
16674#[target_feature(enable = "neon")]
16675#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16676#[rustc_legacy_const_generics(2)]
16677#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", LANE = 15))]
16678#[cfg_attr(
16679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16680 assert_instr(ld1, LANE = 15)
16681)]
16682#[cfg_attr(
16683 not(target_arch = "arm"),
16684 stable(feature = "neon_intrinsics", since = "1.59.0")
16685)]
16686#[cfg_attr(
16687 target_arch = "arm",
16688 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16689)]
16690pub unsafe fn vld1q_lane_u8<const LANE: i32>(ptr: *const u8, src: uint8x16_t) -> uint8x16_t {
16691 static_assert_uimm_bits!(LANE, 4);
16692 simd_insert!(src, LANE as u32, *ptr)
16693}
16694#[doc = "Load one single-element structure to one lane of one register."]
16695#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_lane_p64)"]
16696#[doc = "## Safety"]
16697#[doc = " * Neon intrinsic unsafe"]
16698#[inline(always)]
16699#[target_feature(enable = "neon,aes")]
16700#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16701#[rustc_legacy_const_generics(2)]
16702#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 0))]
16703#[cfg_attr(
16704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16705 assert_instr(ldr, LANE = 0)
16706)]
16707#[cfg_attr(
16708 not(target_arch = "arm"),
16709 stable(feature = "neon_intrinsics", since = "1.59.0")
16710)]
16711#[cfg_attr(
16712 target_arch = "arm",
16713 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16714)]
16715pub unsafe fn vld1_lane_p64<const LANE: i32>(ptr: *const p64, src: poly64x1_t) -> poly64x1_t {
16716 static_assert!(LANE == 0);
16717 simd_insert!(src, LANE as u32, *ptr)
16718}
16719#[doc = "Load one single-element structure to one lane of one register."]
16720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_lane_p64)"]
16721#[doc = "## Safety"]
16722#[doc = " * Neon intrinsic unsafe"]
16723#[inline(always)]
16724#[target_feature(enable = "neon,aes")]
16725#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
16726#[rustc_legacy_const_generics(2)]
16727#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr, LANE = 1))]
16728#[cfg_attr(
16729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16730 assert_instr(ld1, LANE = 1)
16731)]
16732#[cfg_attr(
16733 not(target_arch = "arm"),
16734 stable(feature = "neon_intrinsics", since = "1.59.0")
16735)]
16736#[cfg_attr(
16737 target_arch = "arm",
16738 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16739)]
16740pub unsafe fn vld1q_lane_p64<const LANE: i32>(ptr: *const p64, src: poly64x2_t) -> poly64x2_t {
16741 static_assert_uimm_bits!(LANE, 1);
16742 simd_insert!(src, LANE as u32, *ptr)
16743}
16744#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64)"]
16746#[doc = "## Safety"]
16747#[doc = " * Neon intrinsic unsafe"]
16748#[inline(always)]
16749#[cfg(target_arch = "arm")]
16750#[target_feature(enable = "neon,aes")]
16751#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
16753pub unsafe fn vld1_p64(ptr: *const p64) -> poly64x1_t {
16754 let a: *const i8 = ptr as *const i8;
16755 let b: i32 = crate::mem::align_of::<p64>() as i32;
16756 unsafe extern "unadjusted" {
16757 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v1i64")]
16758 fn _vld1_v1i64(a: *const i8, b: i32) -> int64x1_t;
16759 }
16760 transmute(_vld1_v1i64(a, b))
16761}
16762#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x2)"]
16764#[doc = "## Safety"]
16765#[doc = " * Neon intrinsic unsafe"]
16766#[inline(always)]
16767#[target_feature(enable = "neon,aes")]
16768#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16769#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
16770#[cfg_attr(
16771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16772 assert_instr(ld)
16773)]
16774#[cfg_attr(
16775 not(target_arch = "arm"),
16776 stable(feature = "neon_intrinsics", since = "1.59.0")
16777)]
16778#[cfg_attr(
16779 target_arch = "arm",
16780 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16781)]
16782pub unsafe fn vld1_p64_x2(a: *const p64) -> poly64x1x2_t {
16783 crate::ptr::read_unaligned(a.cast())
16784}
16785#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x3)"]
16787#[doc = "## Safety"]
16788#[doc = " * Neon intrinsic unsafe"]
16789#[inline(always)]
16790#[target_feature(enable = "neon,aes")]
16791#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16793#[cfg_attr(
16794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16795 assert_instr(ld)
16796)]
16797#[cfg_attr(
16798 not(target_arch = "arm"),
16799 stable(feature = "neon_intrinsics", since = "1.59.0")
16800)]
16801#[cfg_attr(
16802 target_arch = "arm",
16803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16804)]
16805pub unsafe fn vld1_p64_x3(a: *const p64) -> poly64x1x3_t {
16806 crate::ptr::read_unaligned(a.cast())
16807}
16808#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16809#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_p64_x4)"]
16810#[doc = "## Safety"]
16811#[doc = " * Neon intrinsic unsafe"]
16812#[inline(always)]
16813#[target_feature(enable = "neon,aes")]
16814#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16815#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16816#[cfg_attr(
16817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16818 assert_instr(ld)
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 vld1_p64_x4(a: *const p64) -> poly64x1x4_t {
16829 crate::ptr::read_unaligned(a.cast())
16830}
16831#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16832#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x2)"]
16833#[doc = "## Safety"]
16834#[doc = " * Neon intrinsic unsafe"]
16835#[inline(always)]
16836#[target_feature(enable = "neon,aes")]
16837#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16838#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16839#[cfg_attr(
16840 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16841 assert_instr(ld)
16842)]
16843#[cfg_attr(
16844 not(target_arch = "arm"),
16845 stable(feature = "neon_intrinsics", since = "1.59.0")
16846)]
16847#[cfg_attr(
16848 target_arch = "arm",
16849 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16850)]
16851pub unsafe fn vld1q_p64_x2(a: *const p64) -> poly64x2x2_t {
16852 crate::ptr::read_unaligned(a.cast())
16853}
16854#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x3)"]
16856#[doc = "## Safety"]
16857#[doc = " * Neon intrinsic unsafe"]
16858#[inline(always)]
16859#[target_feature(enable = "neon,aes")]
16860#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16861#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16862#[cfg_attr(
16863 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16864 assert_instr(ld)
16865)]
16866#[cfg_attr(
16867 not(target_arch = "arm"),
16868 stable(feature = "neon_intrinsics", since = "1.59.0")
16869)]
16870#[cfg_attr(
16871 target_arch = "arm",
16872 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16873)]
16874pub unsafe fn vld1q_p64_x3(a: *const p64) -> poly64x2x3_t {
16875 crate::ptr::read_unaligned(a.cast())
16876}
16877#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
16878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_p64_x4)"]
16879#[doc = "## Safety"]
16880#[doc = " * Neon intrinsic unsafe"]
16881#[inline(always)]
16882#[target_feature(enable = "neon,aes")]
16883#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
16884#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
16885#[cfg_attr(
16886 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
16887 assert_instr(ld)
16888)]
16889#[cfg_attr(
16890 not(target_arch = "arm"),
16891 stable(feature = "neon_intrinsics", since = "1.59.0")
16892)]
16893#[cfg_attr(
16894 target_arch = "arm",
16895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
16896)]
16897pub unsafe fn vld1q_p64_x4(a: *const p64) -> poly64x2x4_t {
16898 crate::ptr::read_unaligned(a.cast())
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_s8)"]
16902#[doc = "## Safety"]
16903#[doc = " * Neon intrinsic unsafe"]
16904#[inline(always)]
16905#[cfg(target_arch = "arm")]
16906#[target_feature(enable = "neon,v7")]
16907#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16908#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
16909pub unsafe fn vld1_s8(ptr: *const i8) -> int8x8_t {
16910 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
16911 vld1_v8i8::<ALIGN>(ptr as *const i8)
16912}
16913#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8)"]
16915#[doc = "## Safety"]
16916#[doc = " * Neon intrinsic unsafe"]
16917#[inline(always)]
16918#[cfg(target_arch = "arm")]
16919#[target_feature(enable = "neon,v7")]
16920#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16921#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8"))]
16922pub unsafe fn vld1q_s8(ptr: *const i8) -> int8x16_t {
16923 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
16924 vld1q_v16i8::<ALIGN>(ptr as *const i8)
16925}
16926#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s16)"]
16928#[doc = "## Safety"]
16929#[doc = " * Neon intrinsic unsafe"]
16930#[inline(always)]
16931#[cfg(target_arch = "arm")]
16932#[target_feature(enable = "neon,v7")]
16933#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16934#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
16935pub unsafe fn vld1_s16(ptr: *const i16) -> int16x4_t {
16936 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
16937 vld1_v4i16::<ALIGN>(ptr as *const i8)
16938}
16939#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s16)"]
16941#[doc = "## Safety"]
16942#[doc = " * Neon intrinsic unsafe"]
16943#[inline(always)]
16944#[cfg(target_arch = "arm")]
16945#[target_feature(enable = "neon,v7")]
16946#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16947#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.16"))]
16948pub unsafe fn vld1q_s16(ptr: *const i16) -> int16x8_t {
16949 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
16950 vld1q_v8i16::<ALIGN>(ptr as *const i8)
16951}
16952#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s32)"]
16954#[doc = "## Safety"]
16955#[doc = " * Neon intrinsic unsafe"]
16956#[inline(always)]
16957#[cfg(target_arch = "arm")]
16958#[target_feature(enable = "neon,v7")]
16959#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16960#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
16961pub unsafe fn vld1_s32(ptr: *const i32) -> int32x2_t {
16962 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
16963 vld1_v2i32::<ALIGN>(ptr as *const i8)
16964}
16965#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s32)"]
16967#[doc = "## Safety"]
16968#[doc = " * Neon intrinsic unsafe"]
16969#[inline(always)]
16970#[cfg(target_arch = "arm")]
16971#[target_feature(enable = "neon,v7")]
16972#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16973#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.32"))]
16974pub unsafe fn vld1q_s32(ptr: *const i32) -> int32x4_t {
16975 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
16976 vld1q_v4i32::<ALIGN>(ptr as *const i8)
16977}
16978#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16979#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s64)"]
16980#[doc = "## Safety"]
16981#[doc = " * Neon intrinsic unsafe"]
16982#[inline(always)]
16983#[cfg(target_arch = "arm")]
16984#[target_feature(enable = "neon,v7")]
16985#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16986#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
16987pub unsafe fn vld1_s64(ptr: *const i64) -> int64x1_t {
16988 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
16989 vld1_v1i64::<ALIGN>(ptr as *const i8)
16990}
16991#[doc = "Load multiple single-element structures to one, two, three, or four registers."]
16992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s64)"]
16993#[doc = "## Safety"]
16994#[doc = " * Neon intrinsic unsafe"]
16995#[inline(always)]
16996#[cfg(target_arch = "arm")]
16997#[target_feature(enable = "neon,v7")]
16998#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
16999#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.64"))]
17000pub unsafe fn vld1q_s64(ptr: *const i64) -> int64x2_t {
17001 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
17002 vld1q_v2i64::<ALIGN>(ptr as *const i8)
17003}
17004#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17005#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x2)"]
17006#[doc = "## Safety"]
17007#[doc = " * Neon intrinsic unsafe"]
17008#[inline(always)]
17009#[target_feature(enable = "neon")]
17010#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17011#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17012#[cfg_attr(
17013 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17014 assert_instr(ld)
17015)]
17016#[cfg_attr(
17017 not(target_arch = "arm"),
17018 stable(feature = "neon_intrinsics", since = "1.59.0")
17019)]
17020#[cfg_attr(
17021 target_arch = "arm",
17022 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17023)]
17024pub unsafe fn vld1_s8_x2(a: *const i8) -> int8x8x2_t {
17025 crate::ptr::read_unaligned(a.cast())
17026}
17027#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17028#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x3)"]
17029#[doc = "## Safety"]
17030#[doc = " * Neon intrinsic unsafe"]
17031#[inline(always)]
17032#[target_feature(enable = "neon")]
17033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17034#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17035#[cfg_attr(
17036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17037 assert_instr(ld)
17038)]
17039#[cfg_attr(
17040 not(target_arch = "arm"),
17041 stable(feature = "neon_intrinsics", since = "1.59.0")
17042)]
17043#[cfg_attr(
17044 target_arch = "arm",
17045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17046)]
17047pub unsafe fn vld1_s8_x3(a: *const i8) -> int8x8x3_t {
17048 crate::ptr::read_unaligned(a.cast())
17049}
17050#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_s8_x4)"]
17052#[doc = "## Safety"]
17053#[doc = " * Neon intrinsic unsafe"]
17054#[inline(always)]
17055#[target_feature(enable = "neon")]
17056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17058#[cfg_attr(
17059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17060 assert_instr(ld)
17061)]
17062#[cfg_attr(
17063 not(target_arch = "arm"),
17064 stable(feature = "neon_intrinsics", since = "1.59.0")
17065)]
17066#[cfg_attr(
17067 target_arch = "arm",
17068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17069)]
17070pub unsafe fn vld1_s8_x4(a: *const i8) -> int8x8x4_t {
17071 crate::ptr::read_unaligned(a.cast())
17072}
17073#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x2)"]
17075#[doc = "## Safety"]
17076#[doc = " * Neon intrinsic unsafe"]
17077#[inline(always)]
17078#[target_feature(enable = "neon")]
17079#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17080#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17081#[cfg_attr(
17082 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17083 assert_instr(ld)
17084)]
17085#[cfg_attr(
17086 not(target_arch = "arm"),
17087 stable(feature = "neon_intrinsics", since = "1.59.0")
17088)]
17089#[cfg_attr(
17090 target_arch = "arm",
17091 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17092)]
17093pub unsafe fn vld1q_s8_x2(a: *const i8) -> int8x16x2_t {
17094 crate::ptr::read_unaligned(a.cast())
17095}
17096#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17097#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x3)"]
17098#[doc = "## Safety"]
17099#[doc = " * Neon intrinsic unsafe"]
17100#[inline(always)]
17101#[target_feature(enable = "neon")]
17102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17103#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17104#[cfg_attr(
17105 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17106 assert_instr(ld)
17107)]
17108#[cfg_attr(
17109 not(target_arch = "arm"),
17110 stable(feature = "neon_intrinsics", since = "1.59.0")
17111)]
17112#[cfg_attr(
17113 target_arch = "arm",
17114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17115)]
17116pub unsafe fn vld1q_s8_x3(a: *const i8) -> int8x16x3_t {
17117 crate::ptr::read_unaligned(a.cast())
17118}
17119#[doc = "Load multiple single-element structures to one, two, three, or four registers"]
17120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_s8_x4)"]
17121#[doc = "## Safety"]
17122#[doc = " * Neon intrinsic unsafe"]
17123#[inline(always)]
17124#[target_feature(enable = "neon")]
17125#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
17126#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld))]
17127#[cfg_attr(
17128 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
17129 assert_instr(ld)
17130)]
17131#[cfg_attr(
17132 not(target_arch = "arm"),
17133 stable(feature = "neon_intrinsics", since = "1.59.0")
17134)]
17135#[cfg_attr(
17136 target_arch = "arm",
17137 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
17138)]
17139pub unsafe fn vld1q_s8_x4(a: *const i8) -> int8x16x4_t {
17140 crate::ptr::read_unaligned(a.cast())
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_s16_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_s16_x2(a: *const i16) -> int16x4x2_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_s16_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_s16_x3(a: *const i16) -> int16x4x3_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_s16_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_s16_x4(a: *const i16) -> int16x4x4_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_s16_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_s16_x2(a: *const i16) -> int16x8x2_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_s16_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_s16_x3(a: *const i16) -> int16x8x3_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_s16_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_s16_x4(a: *const i16) -> int16x8x4_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_s32_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_s32_x2(a: *const i32) -> int32x2x2_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_s32_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_s32_x3(a: *const i32) -> int32x2x3_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_s32_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_s32_x4(a: *const i32) -> int32x2x4_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_s32_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_s32_x2(a: *const i32) -> int32x4x2_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_s32_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_s32_x3(a: *const i32) -> int32x4x3_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_s32_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_s32_x4(a: *const i32) -> int32x4x4_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_s64_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_s64_x2(a: *const i64) -> int64x1x2_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_s64_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_s64_x3(a: *const i64) -> int64x1x3_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_s64_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_s64_x4(a: *const i64) -> int64x1x4_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_s64_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_s64_x2(a: *const i64) -> int64x2x2_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_s64_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_s64_x3(a: *const i64) -> int64x2x3_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_s64_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_s64_x4(a: *const i64) -> int64x2x4_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_u8_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_u8_x2(a: *const u8) -> uint8x8x2_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_u8_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_u8_x3(a: *const u8) -> uint8x8x3_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_u8_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_u8_x4(a: *const u8) -> uint8x8x4_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_u8_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_u8_x2(a: *const u8) -> uint8x16x2_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_u8_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_u8_x3(a: *const u8) -> uint8x16x3_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_u8_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_u8_x4(a: *const u8) -> uint8x16x4_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_u16_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_u16_x2(a: *const u16) -> uint16x4x2_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_u16_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_u16_x3(a: *const u16) -> uint16x4x3_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_u16_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_u16_x4(a: *const u16) -> uint16x4x4_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_u16_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_u16_x2(a: *const u16) -> uint16x8x2_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_u16_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_u16_x3(a: *const u16) -> uint16x8x3_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_u16_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_u16_x4(a: *const u16) -> uint16x8x4_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_u32_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_u32_x2(a: *const u32) -> uint32x2x2_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_u32_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_u32_x3(a: *const u32) -> uint32x2x3_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_u32_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_u32_x4(a: *const u32) -> uint32x2x4_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_u32_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_u32_x2(a: *const u32) -> uint32x4x2_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_u32_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_u32_x3(a: *const u32) -> uint32x4x3_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_u32_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_u32_x4(a: *const u32) -> uint32x4x4_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_u64_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_u64_x2(a: *const u64) -> uint64x1x2_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_u64_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_u64_x3(a: *const u64) -> uint64x1x3_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_u64_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_u64_x4(a: *const u64) -> uint64x1x4_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_u64_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_u64_x2(a: *const u64) -> uint64x2x2_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_u64_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_u64_x3(a: *const u64) -> uint64x2x3_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_u64_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_u64_x4(a: *const u64) -> uint64x2x4_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_p8_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_p8_x2(a: *const p8) -> poly8x8x2_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_p8_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_p8_x3(a: *const p8) -> poly8x8x3_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_p8_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_p8_x4(a: *const p8) -> poly8x8x4_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_p8_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_p8_x2(a: *const p8) -> poly8x16x2_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_p8_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_p8_x3(a: *const p8) -> poly8x16x3_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_p8_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_p8_x4(a: *const p8) -> poly8x16x4_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_p16_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_p16_x2(a: *const p16) -> poly16x4x2_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_p16_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_p16_x3(a: *const p16) -> poly16x4x3_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_p16_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_p16_x4(a: *const p16) -> poly16x4x4_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_p16_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_p16_x2(a: *const p16) -> poly16x8x2_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_p16_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_p16_x3(a: *const p16) -> poly16x8x3_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_p16_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_p16_x4(a: *const p16) -> poly16x8x4_t {
18382 crate::ptr::read_unaligned(a.cast())
18383}
18384#[inline(always)]
18385#[rustc_legacy_const_generics(1)]
18386#[cfg(target_arch = "arm")]
18387#[target_feature(enable = "neon,v7")]
18388#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18389#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18390unsafe fn vld1_v1i64<const ALIGN: i32>(a: *const i8) -> int64x1_t {
18391 unsafe extern "unadjusted" {
18392 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v1i64")]
18393 fn _vld1_v1i64(a: *const i8, b: i32) -> int64x1_t;
18394 }
18395 _vld1_v1i64(a, ALIGN)
18396}
18397#[inline(always)]
18398#[rustc_legacy_const_generics(1)]
18399#[cfg(target_arch = "arm")]
18400#[target_feature(enable = "neon,v7")]
18401#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18402#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18403unsafe fn vld1_v2f32<const ALIGN: i32>(a: *const i8) -> float32x2_t {
18404 unsafe extern "unadjusted" {
18405 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2f32")]
18406 fn _vld1_v2f32(a: *const i8, b: i32) -> float32x2_t;
18407 }
18408 _vld1_v2f32(a, ALIGN)
18409}
18410#[inline(always)]
18411#[rustc_legacy_const_generics(1)]
18412#[cfg(target_arch = "arm")]
18413#[target_feature(enable = "neon,v7")]
18414#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18415#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18416unsafe fn vld1_v2i32<const ALIGN: i32>(a: *const i8) -> int32x2_t {
18417 unsafe extern "unadjusted" {
18418 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2i32")]
18419 fn _vld1_v2i32(a: *const i8, b: i32) -> int32x2_t;
18420 }
18421 _vld1_v2i32(a, ALIGN)
18422}
18423#[inline(always)]
18424#[rustc_legacy_const_generics(1)]
18425#[cfg(target_arch = "arm")]
18426#[target_feature(enable = "neon,v7")]
18427#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18428#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18429unsafe fn vld1_v4i16<const ALIGN: i32>(a: *const i8) -> int16x4_t {
18430 unsafe extern "unadjusted" {
18431 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4i16")]
18432 fn _vld1_v4i16(a: *const i8, b: i32) -> int16x4_t;
18433 }
18434 _vld1_v4i16(a, ALIGN)
18435}
18436#[inline(always)]
18437#[rustc_legacy_const_generics(1)]
18438#[cfg(target_arch = "arm")]
18439#[target_feature(enable = "neon,v7")]
18440#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18441#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18442unsafe fn vld1_v8i8<const ALIGN: i32>(a: *const i8) -> int8x8_t {
18443 unsafe extern "unadjusted" {
18444 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8i8")]
18445 fn _vld1_v8i8(a: *const i8, b: i32) -> int8x8_t;
18446 }
18447 _vld1_v8i8(a, ALIGN)
18448}
18449#[inline(always)]
18450#[rustc_legacy_const_generics(1)]
18451#[cfg(target_arch = "arm")]
18452#[target_feature(enable = "neon,v7")]
18453#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18454#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18455unsafe fn vld1q_v16i8<const ALIGN: i32>(a: *const i8) -> int8x16_t {
18456 unsafe extern "unadjusted" {
18457 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v16i8")]
18458 fn _vld1q_v16i8(a: *const i8, b: i32) -> int8x16_t;
18459 }
18460 _vld1q_v16i8(a, ALIGN)
18461}
18462#[inline(always)]
18463#[rustc_legacy_const_generics(1)]
18464#[cfg(target_arch = "arm")]
18465#[target_feature(enable = "neon,v7")]
18466#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18467#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18468unsafe fn vld1q_v2i64<const ALIGN: i32>(a: *const i8) -> int64x2_t {
18469 unsafe extern "unadjusted" {
18470 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v2i64")]
18471 fn _vld1q_v2i64(a: *const i8, b: i32) -> int64x2_t;
18472 }
18473 _vld1q_v2i64(a, ALIGN)
18474}
18475#[inline(always)]
18476#[rustc_legacy_const_generics(1)]
18477#[cfg(target_arch = "arm")]
18478#[target_feature(enable = "neon,v7")]
18479#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18480#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18481unsafe fn vld1q_v4f32<const ALIGN: i32>(a: *const i8) -> float32x4_t {
18482 unsafe extern "unadjusted" {
18483 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4f32")]
18484 fn _vld1q_v4f32(a: *const i8, b: i32) -> float32x4_t;
18485 }
18486 _vld1q_v4f32(a, ALIGN)
18487}
18488#[inline(always)]
18489#[rustc_legacy_const_generics(1)]
18490#[cfg(target_arch = "arm")]
18491#[target_feature(enable = "neon,v7")]
18492#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18493#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18494unsafe fn vld1q_v4i32<const ALIGN: i32>(a: *const i8) -> int32x4_t {
18495 unsafe extern "unadjusted" {
18496 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4i32")]
18497 fn _vld1q_v4i32(a: *const i8, b: i32) -> int32x4_t;
18498 }
18499 _vld1q_v4i32(a, ALIGN)
18500}
18501#[inline(always)]
18502#[rustc_legacy_const_generics(1)]
18503#[cfg(target_arch = "arm")]
18504#[target_feature(enable = "neon,v7")]
18505#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vld1.8", ALIGN = 0))]
18506#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18507unsafe fn vld1q_v8i16<const ALIGN: i32>(a: *const i8) -> int16x8_t {
18508 unsafe extern "unadjusted" {
18509 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8i16")]
18510 fn _vld1q_v8i16(a: *const i8, b: i32) -> int16x8_t;
18511 }
18512 _vld1q_v8i16(a, ALIGN)
18513}
18514#[inline(always)]
18515#[cfg(target_arch = "arm")]
18516#[target_feature(enable = "neon,v7")]
18517#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
18518#[target_feature(enable = "neon,fp16")]
18519#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18520#[cfg(not(target_arch = "arm64ec"))]
18521unsafe fn vld1_v4f16(a: *const i8, b: i32) -> float16x4_t {
18522 unsafe extern "unadjusted" {
18523 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v4f16")]
18524 fn _vld1_v4f16(a: *const i8, b: i32) -> float16x4_t;
18525 }
18526 _vld1_v4f16(a, b)
18527}
18528#[inline(always)]
18529#[cfg(target_arch = "arm")]
18530#[target_feature(enable = "neon,v7")]
18531#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
18532#[target_feature(enable = "neon,fp16")]
18533#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18534#[cfg(not(target_arch = "arm64ec"))]
18535unsafe fn vld1q_v8f16(a: *const i8, b: i32) -> float16x8_t {
18536 unsafe extern "unadjusted" {
18537 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld1.v8f16")]
18538 fn _vld1q_v8f16(a: *const i8, b: i32) -> float16x8_t;
18539 }
18540 _vld1q_v8f16(a, b)
18541}
18542#[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
18543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p64)"]
18544#[doc = "## Safety"]
18545#[doc = " * Neon intrinsic unsafe"]
18546#[inline(always)]
18547#[target_feature(enable = "neon,aes")]
18548#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18549#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vldr))]
18550#[cfg_attr(
18551 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18552 assert_instr(ld1r)
18553)]
18554#[cfg_attr(
18555 not(target_arch = "arm"),
18556 stable(feature = "neon_intrinsics", since = "1.59.0")
18557)]
18558#[cfg_attr(
18559 target_arch = "arm",
18560 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18561)]
18562pub unsafe fn vld1q_dup_p64(ptr: *const p64) -> poly64x2_t {
18563 let x = vld1q_lane_p64::<0>(ptr, transmute(u64x2::splat(0)));
18564 simd_shuffle!(x, x, [0, 0])
18565}
18566#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f16)"]
18568#[doc = "## Safety"]
18569#[doc = " * Neon intrinsic unsafe"]
18570#[inline(always)]
18571#[target_feature(enable = "neon")]
18572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18573#[cfg(target_arch = "arm")]
18574#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
18575#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
18576#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
18577#[cfg(not(target_arch = "arm64ec"))]
18578pub unsafe fn vld2_dup_f16(a: *const f16) -> float16x4x2_t {
18579 unsafe extern "unadjusted" {
18580 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4f16.p0")]
18581 fn _vld2_dup_f16(ptr: *const f16, size: i32) -> float16x4x2_t;
18582 }
18583 _vld2_dup_f16(a as _, 2)
18584}
18585#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f16)"]
18587#[doc = "## Safety"]
18588#[doc = " * Neon intrinsic unsafe"]
18589#[inline(always)]
18590#[target_feature(enable = "neon")]
18591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18592#[cfg(target_arch = "arm")]
18593#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
18594#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
18595#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
18596#[cfg(not(target_arch = "arm64ec"))]
18597pub unsafe fn vld2q_dup_f16(a: *const f16) -> float16x8x2_t {
18598 unsafe extern "unadjusted" {
18599 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8f16.p0")]
18600 fn _vld2q_dup_f16(ptr: *const f16, size: i32) -> float16x8x2_t;
18601 }
18602 _vld2q_dup_f16(a as _, 2)
18603}
18604#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f16)"]
18606#[doc = "## Safety"]
18607#[doc = " * Neon intrinsic unsafe"]
18608#[inline(always)]
18609#[target_feature(enable = "neon")]
18610#[cfg(not(target_arch = "arm"))]
18611#[cfg_attr(
18612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18613 assert_instr(ld2r)
18614)]
18615#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
18616#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
18617#[cfg(not(target_arch = "arm64ec"))]
18618pub unsafe fn vld2_dup_f16(a: *const f16) -> float16x4x2_t {
18619 unsafe extern "unadjusted" {
18620 #[cfg_attr(
18621 any(target_arch = "aarch64", target_arch = "arm64ec"),
18622 link_name = "llvm.aarch64.neon.ld2r.v4f16.p0"
18623 )]
18624 fn _vld2_dup_f16(ptr: *const f16) -> float16x4x2_t;
18625 }
18626 _vld2_dup_f16(a as _)
18627}
18628#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f16)"]
18630#[doc = "## Safety"]
18631#[doc = " * Neon intrinsic unsafe"]
18632#[inline(always)]
18633#[target_feature(enable = "neon")]
18634#[cfg(not(target_arch = "arm"))]
18635#[cfg_attr(
18636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18637 assert_instr(ld2r)
18638)]
18639#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
18640#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
18641#[cfg(not(target_arch = "arm64ec"))]
18642pub unsafe fn vld2q_dup_f16(a: *const f16) -> float16x8x2_t {
18643 unsafe extern "unadjusted" {
18644 #[cfg_attr(
18645 any(target_arch = "aarch64", target_arch = "arm64ec"),
18646 link_name = "llvm.aarch64.neon.ld2r.v8f16.p0"
18647 )]
18648 fn _vld2q_dup_f16(ptr: *const f16) -> float16x8x2_t;
18649 }
18650 _vld2q_dup_f16(a as _)
18651}
18652#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f32)"]
18654#[doc = "## Safety"]
18655#[doc = " * Neon intrinsic unsafe"]
18656#[inline(always)]
18657#[target_feature(enable = "neon,v7")]
18658#[cfg(target_arch = "arm")]
18659#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18660#[cfg_attr(test, assert_instr(vld2))]
18661pub unsafe fn vld2_dup_f32(a: *const f32) -> float32x2x2_t {
18662 unsafe extern "unadjusted" {
18663 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v2f32.p0")]
18664 fn _vld2_dup_f32(ptr: *const i8, size: i32) -> float32x2x2_t;
18665 }
18666 _vld2_dup_f32(a as *const i8, 4)
18667}
18668#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f32)"]
18670#[doc = "## Safety"]
18671#[doc = " * Neon intrinsic unsafe"]
18672#[inline(always)]
18673#[target_feature(enable = "neon,v7")]
18674#[cfg(target_arch = "arm")]
18675#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18676#[cfg_attr(test, assert_instr(vld2))]
18677pub unsafe fn vld2q_dup_f32(a: *const f32) -> float32x4x2_t {
18678 unsafe extern "unadjusted" {
18679 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4f32.p0")]
18680 fn _vld2q_dup_f32(ptr: *const i8, size: i32) -> float32x4x2_t;
18681 }
18682 _vld2q_dup_f32(a as *const i8, 4)
18683}
18684#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s8)"]
18686#[doc = "## Safety"]
18687#[doc = " * Neon intrinsic unsafe"]
18688#[inline(always)]
18689#[target_feature(enable = "neon,v7")]
18690#[cfg(target_arch = "arm")]
18691#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18692#[cfg_attr(test, assert_instr(vld2))]
18693pub unsafe fn vld2_dup_s8(a: *const i8) -> int8x8x2_t {
18694 unsafe extern "unadjusted" {
18695 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8i8.p0")]
18696 fn _vld2_dup_s8(ptr: *const i8, size: i32) -> int8x8x2_t;
18697 }
18698 _vld2_dup_s8(a as *const i8, 1)
18699}
18700#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s8)"]
18702#[doc = "## Safety"]
18703#[doc = " * Neon intrinsic unsafe"]
18704#[inline(always)]
18705#[target_feature(enable = "neon,v7")]
18706#[cfg(target_arch = "arm")]
18707#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18708#[cfg_attr(test, assert_instr(vld2))]
18709pub unsafe fn vld2q_dup_s8(a: *const i8) -> int8x16x2_t {
18710 unsafe extern "unadjusted" {
18711 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v16i8.p0")]
18712 fn _vld2q_dup_s8(ptr: *const i8, size: i32) -> int8x16x2_t;
18713 }
18714 _vld2q_dup_s8(a as *const i8, 1)
18715}
18716#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s16)"]
18718#[doc = "## Safety"]
18719#[doc = " * Neon intrinsic unsafe"]
18720#[inline(always)]
18721#[target_feature(enable = "neon,v7")]
18722#[cfg(target_arch = "arm")]
18723#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18724#[cfg_attr(test, assert_instr(vld2))]
18725pub unsafe fn vld2_dup_s16(a: *const i16) -> int16x4x2_t {
18726 unsafe extern "unadjusted" {
18727 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4i16.p0")]
18728 fn _vld2_dup_s16(ptr: *const i8, size: i32) -> int16x4x2_t;
18729 }
18730 _vld2_dup_s16(a as *const i8, 2)
18731}
18732#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s16)"]
18734#[doc = "## Safety"]
18735#[doc = " * Neon intrinsic unsafe"]
18736#[inline(always)]
18737#[target_feature(enable = "neon,v7")]
18738#[cfg(target_arch = "arm")]
18739#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18740#[cfg_attr(test, assert_instr(vld2))]
18741pub unsafe fn vld2q_dup_s16(a: *const i16) -> int16x8x2_t {
18742 unsafe extern "unadjusted" {
18743 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v8i16.p0")]
18744 fn _vld2q_dup_s16(ptr: *const i8, size: i32) -> int16x8x2_t;
18745 }
18746 _vld2q_dup_s16(a as *const i8, 2)
18747}
18748#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s32)"]
18750#[doc = "## Safety"]
18751#[doc = " * Neon intrinsic unsafe"]
18752#[inline(always)]
18753#[target_feature(enable = "neon,v7")]
18754#[cfg(target_arch = "arm")]
18755#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18756#[cfg_attr(test, assert_instr(vld2))]
18757pub unsafe fn vld2_dup_s32(a: *const i32) -> int32x2x2_t {
18758 unsafe extern "unadjusted" {
18759 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v2i32.p0")]
18760 fn _vld2_dup_s32(ptr: *const i8, size: i32) -> int32x2x2_t;
18761 }
18762 _vld2_dup_s32(a as *const i8, 4)
18763}
18764#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s32)"]
18766#[doc = "## Safety"]
18767#[doc = " * Neon intrinsic unsafe"]
18768#[inline(always)]
18769#[target_feature(enable = "neon,v7")]
18770#[cfg(target_arch = "arm")]
18771#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18772#[cfg_attr(test, assert_instr(vld2))]
18773pub unsafe fn vld2q_dup_s32(a: *const i32) -> int32x4x2_t {
18774 unsafe extern "unadjusted" {
18775 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v4i32.p0")]
18776 fn _vld2q_dup_s32(ptr: *const i8, size: i32) -> int32x4x2_t;
18777 }
18778 _vld2q_dup_s32(a as *const i8, 4)
18779}
18780#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_f32)"]
18782#[doc = "## Safety"]
18783#[doc = " * Neon intrinsic unsafe"]
18784#[inline(always)]
18785#[target_feature(enable = "neon")]
18786#[cfg(not(target_arch = "arm"))]
18787#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18788#[cfg_attr(test, assert_instr(ld2r))]
18789pub unsafe fn vld2_dup_f32(a: *const f32) -> float32x2x2_t {
18790 unsafe extern "unadjusted" {
18791 #[cfg_attr(
18792 any(target_arch = "aarch64", target_arch = "arm64ec"),
18793 link_name = "llvm.aarch64.neon.ld2r.v2f32.p0"
18794 )]
18795 fn _vld2_dup_f32(ptr: *const f32) -> float32x2x2_t;
18796 }
18797 _vld2_dup_f32(a as _)
18798}
18799#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_f32)"]
18801#[doc = "## Safety"]
18802#[doc = " * Neon intrinsic unsafe"]
18803#[inline(always)]
18804#[target_feature(enable = "neon")]
18805#[cfg(not(target_arch = "arm"))]
18806#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18807#[cfg_attr(test, assert_instr(ld2r))]
18808pub unsafe fn vld2q_dup_f32(a: *const f32) -> float32x4x2_t {
18809 unsafe extern "unadjusted" {
18810 #[cfg_attr(
18811 any(target_arch = "aarch64", target_arch = "arm64ec"),
18812 link_name = "llvm.aarch64.neon.ld2r.v4f32.p0"
18813 )]
18814 fn _vld2q_dup_f32(ptr: *const f32) -> float32x4x2_t;
18815 }
18816 _vld2q_dup_f32(a as _)
18817}
18818#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s8)"]
18820#[doc = "## Safety"]
18821#[doc = " * Neon intrinsic unsafe"]
18822#[inline(always)]
18823#[target_feature(enable = "neon")]
18824#[cfg(not(target_arch = "arm"))]
18825#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18826#[cfg_attr(test, assert_instr(ld2r))]
18827pub unsafe fn vld2_dup_s8(a: *const i8) -> int8x8x2_t {
18828 unsafe extern "unadjusted" {
18829 #[cfg_attr(
18830 any(target_arch = "aarch64", target_arch = "arm64ec"),
18831 link_name = "llvm.aarch64.neon.ld2r.v8i8.p0"
18832 )]
18833 fn _vld2_dup_s8(ptr: *const i8) -> int8x8x2_t;
18834 }
18835 _vld2_dup_s8(a as _)
18836}
18837#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s8)"]
18839#[doc = "## Safety"]
18840#[doc = " * Neon intrinsic unsafe"]
18841#[inline(always)]
18842#[target_feature(enable = "neon")]
18843#[cfg(not(target_arch = "arm"))]
18844#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18845#[cfg_attr(test, assert_instr(ld2r))]
18846pub unsafe fn vld2q_dup_s8(a: *const i8) -> int8x16x2_t {
18847 unsafe extern "unadjusted" {
18848 #[cfg_attr(
18849 any(target_arch = "aarch64", target_arch = "arm64ec"),
18850 link_name = "llvm.aarch64.neon.ld2r.v16i8.p0"
18851 )]
18852 fn _vld2q_dup_s8(ptr: *const i8) -> int8x16x2_t;
18853 }
18854 _vld2q_dup_s8(a as _)
18855}
18856#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s16)"]
18858#[doc = "## Safety"]
18859#[doc = " * Neon intrinsic unsafe"]
18860#[inline(always)]
18861#[target_feature(enable = "neon")]
18862#[cfg(not(target_arch = "arm"))]
18863#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18864#[cfg_attr(test, assert_instr(ld2r))]
18865pub unsafe fn vld2_dup_s16(a: *const i16) -> int16x4x2_t {
18866 unsafe extern "unadjusted" {
18867 #[cfg_attr(
18868 any(target_arch = "aarch64", target_arch = "arm64ec"),
18869 link_name = "llvm.aarch64.neon.ld2r.v4i16.p0"
18870 )]
18871 fn _vld2_dup_s16(ptr: *const i16) -> int16x4x2_t;
18872 }
18873 _vld2_dup_s16(a as _)
18874}
18875#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s16)"]
18877#[doc = "## Safety"]
18878#[doc = " * Neon intrinsic unsafe"]
18879#[inline(always)]
18880#[target_feature(enable = "neon")]
18881#[cfg(not(target_arch = "arm"))]
18882#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18883#[cfg_attr(test, assert_instr(ld2r))]
18884pub unsafe fn vld2q_dup_s16(a: *const i16) -> int16x8x2_t {
18885 unsafe extern "unadjusted" {
18886 #[cfg_attr(
18887 any(target_arch = "aarch64", target_arch = "arm64ec"),
18888 link_name = "llvm.aarch64.neon.ld2r.v8i16.p0"
18889 )]
18890 fn _vld2q_dup_s16(ptr: *const i16) -> int16x8x2_t;
18891 }
18892 _vld2q_dup_s16(a as _)
18893}
18894#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s32)"]
18896#[doc = "## Safety"]
18897#[doc = " * Neon intrinsic unsafe"]
18898#[inline(always)]
18899#[target_feature(enable = "neon")]
18900#[cfg(not(target_arch = "arm"))]
18901#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18902#[cfg_attr(test, assert_instr(ld2r))]
18903pub unsafe fn vld2_dup_s32(a: *const i32) -> int32x2x2_t {
18904 unsafe extern "unadjusted" {
18905 #[cfg_attr(
18906 any(target_arch = "aarch64", target_arch = "arm64ec"),
18907 link_name = "llvm.aarch64.neon.ld2r.v2i32.p0"
18908 )]
18909 fn _vld2_dup_s32(ptr: *const i32) -> int32x2x2_t;
18910 }
18911 _vld2_dup_s32(a as _)
18912}
18913#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_s32)"]
18915#[doc = "## Safety"]
18916#[doc = " * Neon intrinsic unsafe"]
18917#[inline(always)]
18918#[target_feature(enable = "neon")]
18919#[cfg(not(target_arch = "arm"))]
18920#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18921#[cfg_attr(test, assert_instr(ld2r))]
18922pub unsafe fn vld2q_dup_s32(a: *const i32) -> int32x4x2_t {
18923 unsafe extern "unadjusted" {
18924 #[cfg_attr(
18925 any(target_arch = "aarch64", target_arch = "arm64ec"),
18926 link_name = "llvm.aarch64.neon.ld2r.v4i32.p0"
18927 )]
18928 fn _vld2q_dup_s32(ptr: *const i32) -> int32x4x2_t;
18929 }
18930 _vld2q_dup_s32(a as _)
18931}
18932#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18933#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p64)"]
18934#[doc = "## Safety"]
18935#[doc = " * Neon intrinsic unsafe"]
18936#[inline(always)]
18937#[target_feature(enable = "neon,aes")]
18938#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
18939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
18940#[cfg_attr(
18941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
18942 assert_instr(ld2r)
18943)]
18944#[cfg_attr(
18945 not(target_arch = "arm"),
18946 stable(feature = "neon_intrinsics", since = "1.59.0")
18947)]
18948#[cfg_attr(
18949 target_arch = "arm",
18950 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
18951)]
18952pub unsafe fn vld2_dup_p64(a: *const p64) -> poly64x1x2_t {
18953 transmute(vld2_dup_s64(transmute(a)))
18954}
18955#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s64)"]
18957#[doc = "## Safety"]
18958#[doc = " * Neon intrinsic unsafe"]
18959#[inline(always)]
18960#[target_feature(enable = "neon,v7")]
18961#[cfg(target_arch = "arm")]
18962#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
18963#[cfg_attr(test, assert_instr(nop))]
18964pub unsafe fn vld2_dup_s64(a: *const i64) -> int64x1x2_t {
18965 unsafe extern "unadjusted" {
18966 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2dup.v1i64.p0")]
18967 fn _vld2_dup_s64(ptr: *const i8, size: i32) -> int64x1x2_t;
18968 }
18969 _vld2_dup_s64(a as *const i8, 8)
18970}
18971#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_s64)"]
18973#[doc = "## Safety"]
18974#[doc = " * Neon intrinsic unsafe"]
18975#[inline(always)]
18976#[target_feature(enable = "neon")]
18977#[cfg(not(target_arch = "arm"))]
18978#[stable(feature = "neon_intrinsics", since = "1.59.0")]
18979#[cfg_attr(test, assert_instr(ld2r))]
18980pub unsafe fn vld2_dup_s64(a: *const i64) -> int64x1x2_t {
18981 unsafe extern "unadjusted" {
18982 #[cfg_attr(
18983 any(target_arch = "aarch64", target_arch = "arm64ec"),
18984 link_name = "llvm.aarch64.neon.ld2r.v1i64.p0"
18985 )]
18986 fn _vld2_dup_s64(ptr: *const i64) -> int64x1x2_t;
18987 }
18988 _vld2_dup_s64(a as _)
18989}
18990#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
18991#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u64)"]
18992#[doc = "## Safety"]
18993#[doc = " * Neon intrinsic unsafe"]
18994#[inline(always)]
18995#[target_feature(enable = "neon")]
18996#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
18997#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
18998#[cfg_attr(
18999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19000 assert_instr(ld2r)
19001)]
19002#[cfg_attr(
19003 not(target_arch = "arm"),
19004 stable(feature = "neon_intrinsics", since = "1.59.0")
19005)]
19006#[cfg_attr(
19007 target_arch = "arm",
19008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19009)]
19010pub unsafe fn vld2_dup_u64(a: *const u64) -> uint64x1x2_t {
19011 transmute(vld2_dup_s64(transmute(a)))
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/vld2_dup_u8)"]
19015#[doc = "## Safety"]
19016#[doc = " * Neon intrinsic unsafe"]
19017#[inline(always)]
19018#[cfg(target_endian = "little")]
19019#[target_feature(enable = "neon")]
19020#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19021#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19022#[cfg_attr(
19023 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19024 assert_instr(ld2r)
19025)]
19026#[cfg_attr(
19027 not(target_arch = "arm"),
19028 stable(feature = "neon_intrinsics", since = "1.59.0")
19029)]
19030#[cfg_attr(
19031 target_arch = "arm",
19032 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19033)]
19034pub unsafe fn vld2_dup_u8(a: *const u8) -> uint8x8x2_t {
19035 transmute(vld2_dup_s8(transmute(a)))
19036}
19037#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u8)"]
19039#[doc = "## Safety"]
19040#[doc = " * Neon intrinsic unsafe"]
19041#[inline(always)]
19042#[cfg(target_endian = "big")]
19043#[target_feature(enable = "neon")]
19044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19045#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19046#[cfg_attr(
19047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19048 assert_instr(ld2r)
19049)]
19050#[cfg_attr(
19051 not(target_arch = "arm"),
19052 stable(feature = "neon_intrinsics", since = "1.59.0")
19053)]
19054#[cfg_attr(
19055 target_arch = "arm",
19056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19057)]
19058pub unsafe fn vld2_dup_u8(a: *const u8) -> uint8x8x2_t {
19059 let mut ret_val: uint8x8x2_t = transmute(vld2_dup_s8(transmute(a)));
19060 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19061 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19062 ret_val
19063}
19064#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u8)"]
19066#[doc = "## Safety"]
19067#[doc = " * Neon intrinsic unsafe"]
19068#[inline(always)]
19069#[cfg(target_endian = "little")]
19070#[target_feature(enable = "neon")]
19071#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19072#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19073#[cfg_attr(
19074 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19075 assert_instr(ld2r)
19076)]
19077#[cfg_attr(
19078 not(target_arch = "arm"),
19079 stable(feature = "neon_intrinsics", since = "1.59.0")
19080)]
19081#[cfg_attr(
19082 target_arch = "arm",
19083 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19084)]
19085pub unsafe fn vld2q_dup_u8(a: *const u8) -> uint8x16x2_t {
19086 transmute(vld2q_dup_s8(transmute(a)))
19087}
19088#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19089#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u8)"]
19090#[doc = "## Safety"]
19091#[doc = " * Neon intrinsic unsafe"]
19092#[inline(always)]
19093#[cfg(target_endian = "big")]
19094#[target_feature(enable = "neon")]
19095#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19096#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19097#[cfg_attr(
19098 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19099 assert_instr(ld2r)
19100)]
19101#[cfg_attr(
19102 not(target_arch = "arm"),
19103 stable(feature = "neon_intrinsics", since = "1.59.0")
19104)]
19105#[cfg_attr(
19106 target_arch = "arm",
19107 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19108)]
19109pub unsafe fn vld2q_dup_u8(a: *const u8) -> uint8x16x2_t {
19110 let mut ret_val: uint8x16x2_t = transmute(vld2q_dup_s8(transmute(a)));
19111 ret_val.0 = unsafe {
19112 simd_shuffle!(
19113 ret_val.0,
19114 ret_val.0,
19115 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19116 )
19117 };
19118 ret_val.1 = unsafe {
19119 simd_shuffle!(
19120 ret_val.1,
19121 ret_val.1,
19122 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19123 )
19124 };
19125 ret_val
19126}
19127#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u16)"]
19129#[doc = "## Safety"]
19130#[doc = " * Neon intrinsic unsafe"]
19131#[inline(always)]
19132#[cfg(target_endian = "little")]
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(vld2))]
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_u16(a: *const u16) -> uint16x4x2_t {
19149 transmute(vld2_dup_s16(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_u16)"]
19153#[doc = "## Safety"]
19154#[doc = " * Neon intrinsic unsafe"]
19155#[inline(always)]
19156#[cfg(target_endian = "big")]
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_u16(a: *const u16) -> uint16x4x2_t {
19173 let mut ret_val: uint16x4x2_t = transmute(vld2_dup_s16(transmute(a)));
19174 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19175 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19176 ret_val
19177}
19178#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u16)"]
19180#[doc = "## Safety"]
19181#[doc = " * Neon intrinsic unsafe"]
19182#[inline(always)]
19183#[cfg(target_endian = "little")]
19184#[target_feature(enable = "neon")]
19185#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19186#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19187#[cfg_attr(
19188 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19189 assert_instr(ld2r)
19190)]
19191#[cfg_attr(
19192 not(target_arch = "arm"),
19193 stable(feature = "neon_intrinsics", since = "1.59.0")
19194)]
19195#[cfg_attr(
19196 target_arch = "arm",
19197 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19198)]
19199pub unsafe fn vld2q_dup_u16(a: *const u16) -> uint16x8x2_t {
19200 transmute(vld2q_dup_s16(transmute(a)))
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_u16)"]
19204#[doc = "## Safety"]
19205#[doc = " * Neon intrinsic unsafe"]
19206#[inline(always)]
19207#[cfg(target_endian = "big")]
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_u16(a: *const u16) -> uint16x8x2_t {
19224 let mut ret_val: uint16x8x2_t = transmute(vld2q_dup_s16(transmute(a)));
19225 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19226 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19227 ret_val
19228}
19229#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u32)"]
19231#[doc = "## Safety"]
19232#[doc = " * Neon intrinsic unsafe"]
19233#[inline(always)]
19234#[cfg(target_endian = "little")]
19235#[target_feature(enable = "neon")]
19236#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19237#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19238#[cfg_attr(
19239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19240 assert_instr(ld2r)
19241)]
19242#[cfg_attr(
19243 not(target_arch = "arm"),
19244 stable(feature = "neon_intrinsics", since = "1.59.0")
19245)]
19246#[cfg_attr(
19247 target_arch = "arm",
19248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19249)]
19250pub unsafe fn vld2_dup_u32(a: *const u32) -> uint32x2x2_t {
19251 transmute(vld2_dup_s32(transmute(a)))
19252}
19253#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19254#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_u32)"]
19255#[doc = "## Safety"]
19256#[doc = " * Neon intrinsic unsafe"]
19257#[inline(always)]
19258#[cfg(target_endian = "big")]
19259#[target_feature(enable = "neon")]
19260#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19261#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19262#[cfg_attr(
19263 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19264 assert_instr(ld2r)
19265)]
19266#[cfg_attr(
19267 not(target_arch = "arm"),
19268 stable(feature = "neon_intrinsics", since = "1.59.0")
19269)]
19270#[cfg_attr(
19271 target_arch = "arm",
19272 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19273)]
19274pub unsafe fn vld2_dup_u32(a: *const u32) -> uint32x2x2_t {
19275 let mut ret_val: uint32x2x2_t = transmute(vld2_dup_s32(transmute(a)));
19276 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
19277 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
19278 ret_val
19279}
19280#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u32)"]
19282#[doc = "## Safety"]
19283#[doc = " * Neon intrinsic unsafe"]
19284#[inline(always)]
19285#[cfg(target_endian = "little")]
19286#[target_feature(enable = "neon")]
19287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19289#[cfg_attr(
19290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19291 assert_instr(ld2r)
19292)]
19293#[cfg_attr(
19294 not(target_arch = "arm"),
19295 stable(feature = "neon_intrinsics", since = "1.59.0")
19296)]
19297#[cfg_attr(
19298 target_arch = "arm",
19299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19300)]
19301pub unsafe fn vld2q_dup_u32(a: *const u32) -> uint32x4x2_t {
19302 transmute(vld2q_dup_s32(transmute(a)))
19303}
19304#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_u32)"]
19306#[doc = "## Safety"]
19307#[doc = " * Neon intrinsic unsafe"]
19308#[inline(always)]
19309#[cfg(target_endian = "big")]
19310#[target_feature(enable = "neon")]
19311#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19312#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19313#[cfg_attr(
19314 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19315 assert_instr(ld2r)
19316)]
19317#[cfg_attr(
19318 not(target_arch = "arm"),
19319 stable(feature = "neon_intrinsics", since = "1.59.0")
19320)]
19321#[cfg_attr(
19322 target_arch = "arm",
19323 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19324)]
19325pub unsafe fn vld2q_dup_u32(a: *const u32) -> uint32x4x2_t {
19326 let mut ret_val: uint32x4x2_t = transmute(vld2q_dup_s32(transmute(a)));
19327 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19328 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19329 ret_val
19330}
19331#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p8)"]
19333#[doc = "## Safety"]
19334#[doc = " * Neon intrinsic unsafe"]
19335#[inline(always)]
19336#[cfg(target_endian = "little")]
19337#[target_feature(enable = "neon")]
19338#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19339#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19340#[cfg_attr(
19341 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19342 assert_instr(ld2r)
19343)]
19344#[cfg_attr(
19345 not(target_arch = "arm"),
19346 stable(feature = "neon_intrinsics", since = "1.59.0")
19347)]
19348#[cfg_attr(
19349 target_arch = "arm",
19350 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19351)]
19352pub unsafe fn vld2_dup_p8(a: *const p8) -> poly8x8x2_t {
19353 transmute(vld2_dup_s8(transmute(a)))
19354}
19355#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p8)"]
19357#[doc = "## Safety"]
19358#[doc = " * Neon intrinsic unsafe"]
19359#[inline(always)]
19360#[cfg(target_endian = "big")]
19361#[target_feature(enable = "neon")]
19362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19363#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19364#[cfg_attr(
19365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19366 assert_instr(ld2r)
19367)]
19368#[cfg_attr(
19369 not(target_arch = "arm"),
19370 stable(feature = "neon_intrinsics", since = "1.59.0")
19371)]
19372#[cfg_attr(
19373 target_arch = "arm",
19374 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19375)]
19376pub unsafe fn vld2_dup_p8(a: *const p8) -> poly8x8x2_t {
19377 let mut ret_val: poly8x8x2_t = transmute(vld2_dup_s8(transmute(a)));
19378 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19379 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19380 ret_val
19381}
19382#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p8)"]
19384#[doc = "## Safety"]
19385#[doc = " * Neon intrinsic unsafe"]
19386#[inline(always)]
19387#[cfg(target_endian = "little")]
19388#[target_feature(enable = "neon")]
19389#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19390#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19391#[cfg_attr(
19392 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19393 assert_instr(ld2r)
19394)]
19395#[cfg_attr(
19396 not(target_arch = "arm"),
19397 stable(feature = "neon_intrinsics", since = "1.59.0")
19398)]
19399#[cfg_attr(
19400 target_arch = "arm",
19401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19402)]
19403pub unsafe fn vld2q_dup_p8(a: *const p8) -> poly8x16x2_t {
19404 transmute(vld2q_dup_s8(transmute(a)))
19405}
19406#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19407#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p8)"]
19408#[doc = "## Safety"]
19409#[doc = " * Neon intrinsic unsafe"]
19410#[inline(always)]
19411#[cfg(target_endian = "big")]
19412#[target_feature(enable = "neon")]
19413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19414#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19415#[cfg_attr(
19416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19417 assert_instr(ld2r)
19418)]
19419#[cfg_attr(
19420 not(target_arch = "arm"),
19421 stable(feature = "neon_intrinsics", since = "1.59.0")
19422)]
19423#[cfg_attr(
19424 target_arch = "arm",
19425 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19426)]
19427pub unsafe fn vld2q_dup_p8(a: *const p8) -> poly8x16x2_t {
19428 let mut ret_val: poly8x16x2_t = transmute(vld2q_dup_s8(transmute(a)));
19429 ret_val.0 = unsafe {
19430 simd_shuffle!(
19431 ret_val.0,
19432 ret_val.0,
19433 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19434 )
19435 };
19436 ret_val.1 = unsafe {
19437 simd_shuffle!(
19438 ret_val.1,
19439 ret_val.1,
19440 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
19441 )
19442 };
19443 ret_val
19444}
19445#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_dup_p16)"]
19447#[doc = "## Safety"]
19448#[doc = " * Neon intrinsic unsafe"]
19449#[inline(always)]
19450#[cfg(target_endian = "little")]
19451#[target_feature(enable = "neon")]
19452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19453#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19454#[cfg_attr(
19455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19456 assert_instr(ld2r)
19457)]
19458#[cfg_attr(
19459 not(target_arch = "arm"),
19460 stable(feature = "neon_intrinsics", since = "1.59.0")
19461)]
19462#[cfg_attr(
19463 target_arch = "arm",
19464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19465)]
19466pub unsafe fn vld2_dup_p16(a: *const p16) -> poly16x4x2_t {
19467 transmute(vld2_dup_s16(transmute(a)))
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_p16)"]
19471#[doc = "## Safety"]
19472#[doc = " * Neon intrinsic unsafe"]
19473#[inline(always)]
19474#[cfg(target_endian = "big")]
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_p16(a: *const p16) -> poly16x4x2_t {
19491 let mut ret_val: poly16x4x2_t = transmute(vld2_dup_s16(transmute(a)));
19492 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
19493 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
19494 ret_val
19495}
19496#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_dup_p16)"]
19498#[doc = "## Safety"]
19499#[doc = " * Neon intrinsic unsafe"]
19500#[inline(always)]
19501#[cfg(target_endian = "little")]
19502#[target_feature(enable = "neon")]
19503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19504#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19505#[cfg_attr(
19506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19507 assert_instr(ld2r)
19508)]
19509#[cfg_attr(
19510 not(target_arch = "arm"),
19511 stable(feature = "neon_intrinsics", since = "1.59.0")
19512)]
19513#[cfg_attr(
19514 target_arch = "arm",
19515 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
19516)]
19517pub unsafe fn vld2q_dup_p16(a: *const p16) -> poly16x8x2_t {
19518 transmute(vld2q_dup_s16(transmute(a)))
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_p16)"]
19522#[doc = "## Safety"]
19523#[doc = " * Neon intrinsic unsafe"]
19524#[inline(always)]
19525#[cfg(target_endian = "big")]
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_p16(a: *const p16) -> poly16x8x2_t {
19542 let mut ret_val: poly16x8x2_t = transmute(vld2q_dup_s16(transmute(a)));
19543 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
19544 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
19545 ret_val
19546}
19547#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f16)"]
19549#[doc = "## Safety"]
19550#[doc = " * Neon intrinsic unsafe"]
19551#[inline(always)]
19552#[target_feature(enable = "neon")]
19553#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19554#[cfg(target_arch = "arm")]
19555#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19556#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19557#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19558#[cfg(not(target_arch = "arm64ec"))]
19559pub unsafe fn vld2_f16(a: *const f16) -> float16x4x2_t {
19560 unsafe extern "unadjusted" {
19561 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4f16.p0")]
19562 fn _vld2_f16(ptr: *const f16, size: i32) -> float16x4x2_t;
19563 }
19564 _vld2_f16(a as _, 2)
19565}
19566#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f16)"]
19568#[doc = "## Safety"]
19569#[doc = " * Neon intrinsic unsafe"]
19570#[inline(always)]
19571#[target_feature(enable = "neon")]
19572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
19573#[cfg(target_arch = "arm")]
19574#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
19575#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19576#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19577#[cfg(not(target_arch = "arm64ec"))]
19578pub unsafe fn vld2q_f16(a: *const f16) -> float16x8x2_t {
19579 unsafe extern "unadjusted" {
19580 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8f16.p0")]
19581 fn _vld2q_f16(ptr: *const f16, size: i32) -> float16x8x2_t;
19582 }
19583 _vld2q_f16(a as _, 2)
19584}
19585#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f16)"]
19587#[doc = "## Safety"]
19588#[doc = " * Neon intrinsic unsafe"]
19589#[inline(always)]
19590#[target_feature(enable = "neon")]
19591#[cfg(not(target_arch = "arm"))]
19592#[cfg_attr(
19593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19594 assert_instr(ld2)
19595)]
19596#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19597#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19598#[cfg(not(target_arch = "arm64ec"))]
19599pub unsafe fn vld2_f16(a: *const f16) -> float16x4x2_t {
19600 unsafe extern "unadjusted" {
19601 #[cfg_attr(
19602 any(target_arch = "aarch64", target_arch = "arm64ec"),
19603 link_name = "llvm.aarch64.neon.ld2.v4f16.p0"
19604 )]
19605 fn _vld2_f16(ptr: *const f16) -> float16x4x2_t;
19606 }
19607 _vld2_f16(a as _)
19608}
19609#[doc = "Load single 2-element structure and replicate to all lanes of two registers"]
19610#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f16)"]
19611#[doc = "## Safety"]
19612#[doc = " * Neon intrinsic unsafe"]
19613#[inline(always)]
19614#[target_feature(enable = "neon")]
19615#[cfg(not(target_arch = "arm"))]
19616#[cfg_attr(
19617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19618 assert_instr(ld2)
19619)]
19620#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19621#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19622#[cfg(not(target_arch = "arm64ec"))]
19623pub unsafe fn vld2q_f16(a: *const f16) -> float16x8x2_t {
19624 unsafe extern "unadjusted" {
19625 #[cfg_attr(
19626 any(target_arch = "aarch64", target_arch = "arm64ec"),
19627 link_name = "llvm.aarch64.neon.ld2.v8f16.p0"
19628 )]
19629 fn _vld2q_f16(ptr: *const f16) -> float16x8x2_t;
19630 }
19631 _vld2q_f16(a as _)
19632}
19633#[doc = "Load multiple 2-element structures to two registers"]
19634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f32)"]
19635#[doc = "## Safety"]
19636#[doc = " * Neon intrinsic unsafe"]
19637#[inline(always)]
19638#[target_feature(enable = "neon,v7")]
19639#[cfg(target_arch = "arm")]
19640#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19641#[cfg_attr(test, assert_instr(vld2))]
19642pub unsafe fn vld2_f32(a: *const f32) -> float32x2x2_t {
19643 unsafe extern "unadjusted" {
19644 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v2f32")]
19645 fn _vld2_f32(ptr: *const i8, size: i32) -> float32x2x2_t;
19646 }
19647 _vld2_f32(a as *const i8, 4)
19648}
19649#[doc = "Load multiple 2-element structures to two registers"]
19650#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f32)"]
19651#[doc = "## Safety"]
19652#[doc = " * Neon intrinsic unsafe"]
19653#[inline(always)]
19654#[target_feature(enable = "neon,v7")]
19655#[cfg(target_arch = "arm")]
19656#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19657#[cfg_attr(test, assert_instr(vld2))]
19658pub unsafe fn vld2q_f32(a: *const f32) -> float32x4x2_t {
19659 unsafe extern "unadjusted" {
19660 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4f32")]
19661 fn _vld2q_f32(ptr: *const i8, size: i32) -> float32x4x2_t;
19662 }
19663 _vld2q_f32(a as *const i8, 4)
19664}
19665#[doc = "Load multiple 2-element structures to two registers"]
19666#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s8)"]
19667#[doc = "## Safety"]
19668#[doc = " * Neon intrinsic unsafe"]
19669#[inline(always)]
19670#[target_feature(enable = "neon,v7")]
19671#[cfg(target_arch = "arm")]
19672#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19673#[cfg_attr(test, assert_instr(vld2))]
19674pub unsafe fn vld2_s8(a: *const i8) -> int8x8x2_t {
19675 unsafe extern "unadjusted" {
19676 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8i8")]
19677 fn _vld2_s8(ptr: *const i8, size: i32) -> int8x8x2_t;
19678 }
19679 _vld2_s8(a as *const i8, 1)
19680}
19681#[doc = "Load multiple 2-element structures to two registers"]
19682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s8)"]
19683#[doc = "## Safety"]
19684#[doc = " * Neon intrinsic unsafe"]
19685#[inline(always)]
19686#[target_feature(enable = "neon,v7")]
19687#[cfg(target_arch = "arm")]
19688#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19689#[cfg_attr(test, assert_instr(vld2))]
19690pub unsafe fn vld2q_s8(a: *const i8) -> int8x16x2_t {
19691 unsafe extern "unadjusted" {
19692 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v16i8")]
19693 fn _vld2q_s8(ptr: *const i8, size: i32) -> int8x16x2_t;
19694 }
19695 _vld2q_s8(a as *const i8, 1)
19696}
19697#[doc = "Load multiple 2-element structures to two registers"]
19698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s16)"]
19699#[doc = "## Safety"]
19700#[doc = " * Neon intrinsic unsafe"]
19701#[inline(always)]
19702#[target_feature(enable = "neon,v7")]
19703#[cfg(target_arch = "arm")]
19704#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19705#[cfg_attr(test, assert_instr(vld2))]
19706pub unsafe fn vld2_s16(a: *const i16) -> int16x4x2_t {
19707 unsafe extern "unadjusted" {
19708 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4i16")]
19709 fn _vld2_s16(ptr: *const i8, size: i32) -> int16x4x2_t;
19710 }
19711 _vld2_s16(a as *const i8, 2)
19712}
19713#[doc = "Load multiple 2-element structures to two registers"]
19714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s16)"]
19715#[doc = "## Safety"]
19716#[doc = " * Neon intrinsic unsafe"]
19717#[inline(always)]
19718#[target_feature(enable = "neon,v7")]
19719#[cfg(target_arch = "arm")]
19720#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19721#[cfg_attr(test, assert_instr(vld2))]
19722pub unsafe fn vld2q_s16(a: *const i16) -> int16x8x2_t {
19723 unsafe extern "unadjusted" {
19724 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v8i16")]
19725 fn _vld2q_s16(ptr: *const i8, size: i32) -> int16x8x2_t;
19726 }
19727 _vld2q_s16(a as *const i8, 2)
19728}
19729#[doc = "Load multiple 2-element structures to two registers"]
19730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s32)"]
19731#[doc = "## Safety"]
19732#[doc = " * Neon intrinsic unsafe"]
19733#[inline(always)]
19734#[target_feature(enable = "neon,v7")]
19735#[cfg(target_arch = "arm")]
19736#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19737#[cfg_attr(test, assert_instr(vld2))]
19738pub unsafe fn vld2_s32(a: *const i32) -> int32x2x2_t {
19739 unsafe extern "unadjusted" {
19740 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v2i32")]
19741 fn _vld2_s32(ptr: *const i8, size: i32) -> int32x2x2_t;
19742 }
19743 _vld2_s32(a as *const i8, 4)
19744}
19745#[doc = "Load multiple 2-element structures to two registers"]
19746#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s32)"]
19747#[doc = "## Safety"]
19748#[doc = " * Neon intrinsic unsafe"]
19749#[inline(always)]
19750#[target_feature(enable = "neon,v7")]
19751#[cfg(target_arch = "arm")]
19752#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
19753#[cfg_attr(test, assert_instr(vld2))]
19754pub unsafe fn vld2q_s32(a: *const i32) -> int32x4x2_t {
19755 unsafe extern "unadjusted" {
19756 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v4i32")]
19757 fn _vld2q_s32(ptr: *const i8, size: i32) -> int32x4x2_t;
19758 }
19759 _vld2q_s32(a as *const i8, 4)
19760}
19761#[doc = "Load multiple 2-element structures to two registers"]
19762#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_f32)"]
19763#[doc = "## Safety"]
19764#[doc = " * Neon intrinsic unsafe"]
19765#[inline(always)]
19766#[target_feature(enable = "neon")]
19767#[cfg(not(target_arch = "arm"))]
19768#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19769#[cfg_attr(test, assert_instr(ld2))]
19770pub unsafe fn vld2_f32(a: *const f32) -> float32x2x2_t {
19771 unsafe extern "unadjusted" {
19772 #[cfg_attr(
19773 any(target_arch = "aarch64", target_arch = "arm64ec"),
19774 link_name = "llvm.aarch64.neon.ld2.v2f32.p0"
19775 )]
19776 fn _vld2_f32(ptr: *const float32x2_t) -> float32x2x2_t;
19777 }
19778 _vld2_f32(a as _)
19779}
19780#[doc = "Load multiple 2-element structures to two registers"]
19781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_f32)"]
19782#[doc = "## Safety"]
19783#[doc = " * Neon intrinsic unsafe"]
19784#[inline(always)]
19785#[target_feature(enable = "neon")]
19786#[cfg(not(target_arch = "arm"))]
19787#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19788#[cfg_attr(test, assert_instr(ld2))]
19789pub unsafe fn vld2q_f32(a: *const f32) -> float32x4x2_t {
19790 unsafe extern "unadjusted" {
19791 #[cfg_attr(
19792 any(target_arch = "aarch64", target_arch = "arm64ec"),
19793 link_name = "llvm.aarch64.neon.ld2.v4f32.p0"
19794 )]
19795 fn _vld2q_f32(ptr: *const float32x4_t) -> float32x4x2_t;
19796 }
19797 _vld2q_f32(a as _)
19798}
19799#[doc = "Load multiple 2-element structures to two registers"]
19800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s8)"]
19801#[doc = "## Safety"]
19802#[doc = " * Neon intrinsic unsafe"]
19803#[inline(always)]
19804#[target_feature(enable = "neon")]
19805#[cfg(not(target_arch = "arm"))]
19806#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19807#[cfg_attr(test, assert_instr(ld2))]
19808pub unsafe fn vld2_s8(a: *const i8) -> int8x8x2_t {
19809 unsafe extern "unadjusted" {
19810 #[cfg_attr(
19811 any(target_arch = "aarch64", target_arch = "arm64ec"),
19812 link_name = "llvm.aarch64.neon.ld2.v8i8.p0"
19813 )]
19814 fn _vld2_s8(ptr: *const int8x8_t) -> int8x8x2_t;
19815 }
19816 _vld2_s8(a as _)
19817}
19818#[doc = "Load multiple 2-element structures to two registers"]
19819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s8)"]
19820#[doc = "## Safety"]
19821#[doc = " * Neon intrinsic unsafe"]
19822#[inline(always)]
19823#[target_feature(enable = "neon")]
19824#[cfg(not(target_arch = "arm"))]
19825#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19826#[cfg_attr(test, assert_instr(ld2))]
19827pub unsafe fn vld2q_s8(a: *const i8) -> int8x16x2_t {
19828 unsafe extern "unadjusted" {
19829 #[cfg_attr(
19830 any(target_arch = "aarch64", target_arch = "arm64ec"),
19831 link_name = "llvm.aarch64.neon.ld2.v16i8.p0"
19832 )]
19833 fn _vld2q_s8(ptr: *const int8x16_t) -> int8x16x2_t;
19834 }
19835 _vld2q_s8(a as _)
19836}
19837#[doc = "Load multiple 2-element structures to two registers"]
19838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s16)"]
19839#[doc = "## Safety"]
19840#[doc = " * Neon intrinsic unsafe"]
19841#[inline(always)]
19842#[target_feature(enable = "neon")]
19843#[cfg(not(target_arch = "arm"))]
19844#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19845#[cfg_attr(test, assert_instr(ld2))]
19846pub unsafe fn vld2_s16(a: *const i16) -> int16x4x2_t {
19847 unsafe extern "unadjusted" {
19848 #[cfg_attr(
19849 any(target_arch = "aarch64", target_arch = "arm64ec"),
19850 link_name = "llvm.aarch64.neon.ld2.v4i16.p0"
19851 )]
19852 fn _vld2_s16(ptr: *const int16x4_t) -> int16x4x2_t;
19853 }
19854 _vld2_s16(a as _)
19855}
19856#[doc = "Load multiple 2-element structures to two registers"]
19857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s16)"]
19858#[doc = "## Safety"]
19859#[doc = " * Neon intrinsic unsafe"]
19860#[inline(always)]
19861#[target_feature(enable = "neon")]
19862#[cfg(not(target_arch = "arm"))]
19863#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19864#[cfg_attr(test, assert_instr(ld2))]
19865pub unsafe fn vld2q_s16(a: *const i16) -> int16x8x2_t {
19866 unsafe extern "unadjusted" {
19867 #[cfg_attr(
19868 any(target_arch = "aarch64", target_arch = "arm64ec"),
19869 link_name = "llvm.aarch64.neon.ld2.v8i16.p0"
19870 )]
19871 fn _vld2q_s16(ptr: *const int16x8_t) -> int16x8x2_t;
19872 }
19873 _vld2q_s16(a as _)
19874}
19875#[doc = "Load multiple 2-element structures to two registers"]
19876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s32)"]
19877#[doc = "## Safety"]
19878#[doc = " * Neon intrinsic unsafe"]
19879#[inline(always)]
19880#[target_feature(enable = "neon")]
19881#[cfg(not(target_arch = "arm"))]
19882#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19883#[cfg_attr(test, assert_instr(ld2))]
19884pub unsafe fn vld2_s32(a: *const i32) -> int32x2x2_t {
19885 unsafe extern "unadjusted" {
19886 #[cfg_attr(
19887 any(target_arch = "aarch64", target_arch = "arm64ec"),
19888 link_name = "llvm.aarch64.neon.ld2.v2i32.p0"
19889 )]
19890 fn _vld2_s32(ptr: *const int32x2_t) -> int32x2x2_t;
19891 }
19892 _vld2_s32(a as _)
19893}
19894#[doc = "Load multiple 2-element structures to two registers"]
19895#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_s32)"]
19896#[doc = "## Safety"]
19897#[doc = " * Neon intrinsic unsafe"]
19898#[inline(always)]
19899#[target_feature(enable = "neon")]
19900#[cfg(not(target_arch = "arm"))]
19901#[stable(feature = "neon_intrinsics", since = "1.59.0")]
19902#[cfg_attr(test, assert_instr(ld2))]
19903pub unsafe fn vld2q_s32(a: *const i32) -> int32x4x2_t {
19904 unsafe extern "unadjusted" {
19905 #[cfg_attr(
19906 any(target_arch = "aarch64", target_arch = "arm64ec"),
19907 link_name = "llvm.aarch64.neon.ld2.v4i32.p0"
19908 )]
19909 fn _vld2q_s32(ptr: *const int32x4_t) -> int32x4x2_t;
19910 }
19911 _vld2q_s32(a as _)
19912}
19913#[doc = "Load multiple 2-element structures to two registers"]
19914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f16)"]
19915#[doc = "## Safety"]
19916#[doc = " * Neon intrinsic unsafe"]
19917#[inline(always)]
19918#[target_feature(enable = "neon,v7")]
19919#[cfg(target_arch = "arm")]
19920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
19921#[rustc_legacy_const_generics(2)]
19922#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19923#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19924#[cfg(not(target_arch = "arm64ec"))]
19925pub unsafe fn vld2_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x2_t) -> float16x4x2_t {
19926 static_assert_uimm_bits!(LANE, 2);
19927 unsafe extern "unadjusted" {
19928 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4f16.p0")]
19929 fn _vld2_lane_f16(
19930 ptr: *const f16,
19931 a: float16x4_t,
19932 b: float16x4_t,
19933 n: i32,
19934 size: i32,
19935 ) -> float16x4x2_t;
19936 }
19937 _vld2_lane_f16(a as _, b.0, b.1, LANE, 2)
19938}
19939#[doc = "Load multiple 2-element structures to two registers"]
19940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f16)"]
19941#[doc = "## Safety"]
19942#[doc = " * Neon intrinsic unsafe"]
19943#[inline(always)]
19944#[target_feature(enable = "neon,v7")]
19945#[cfg(target_arch = "arm")]
19946#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
19947#[rustc_legacy_const_generics(2)]
19948#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19949#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19950#[cfg(not(target_arch = "arm64ec"))]
19951pub unsafe fn vld2q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x2_t) -> float16x8x2_t {
19952 static_assert_uimm_bits!(LANE, 3);
19953 unsafe extern "unadjusted" {
19954 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8f16.p0")]
19955 fn _vld2q_lane_f16(
19956 ptr: *const f16,
19957 a: float16x8_t,
19958 b: float16x8_t,
19959 n: i32,
19960 size: i32,
19961 ) -> float16x8x2_t;
19962 }
19963 _vld2q_lane_f16(a as _, b.0, b.1, LANE, 2)
19964}
19965#[doc = "Load multiple 2-element structures to two registers"]
19966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f16)"]
19967#[doc = "## Safety"]
19968#[doc = " * Neon intrinsic unsafe"]
19969#[inline(always)]
19970#[target_feature(enable = "neon")]
19971#[cfg(not(target_arch = "arm"))]
19972#[cfg_attr(
19973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
19974 assert_instr(ld2, LANE = 0)
19975)]
19976#[rustc_legacy_const_generics(2)]
19977#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
19978#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
19979#[cfg(not(target_arch = "arm64ec"))]
19980pub unsafe fn vld2_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x2_t) -> float16x4x2_t {
19981 static_assert_uimm_bits!(LANE, 2);
19982 unsafe extern "unadjusted" {
19983 #[cfg_attr(
19984 any(target_arch = "aarch64", target_arch = "arm64ec"),
19985 link_name = "llvm.aarch64.neon.ld2lane.v4f16.p0"
19986 )]
19987 fn _vld2_lane_f16(a: float16x4_t, b: float16x4_t, n: i64, ptr: *const f16)
19988 -> float16x4x2_t;
19989 }
19990 _vld2_lane_f16(b.0, b.1, LANE as i64, a as _)
19991}
19992#[doc = "Load multiple 2-element structures to two registers"]
19993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f16)"]
19994#[doc = "## Safety"]
19995#[doc = " * Neon intrinsic unsafe"]
19996#[inline(always)]
19997#[target_feature(enable = "neon")]
19998#[cfg(not(target_arch = "arm"))]
19999#[cfg_attr(
20000 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20001 assert_instr(ld2, LANE = 0)
20002)]
20003#[rustc_legacy_const_generics(2)]
20004#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20005#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20006#[cfg(not(target_arch = "arm64ec"))]
20007pub unsafe fn vld2q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x2_t) -> float16x8x2_t {
20008 static_assert_uimm_bits!(LANE, 3);
20009 unsafe extern "unadjusted" {
20010 #[cfg_attr(
20011 any(target_arch = "aarch64", target_arch = "arm64ec"),
20012 link_name = "llvm.aarch64.neon.ld2lane.v8f16.p0"
20013 )]
20014 fn _vld2q_lane_f16(
20015 a: float16x8_t,
20016 b: float16x8_t,
20017 n: i64,
20018 ptr: *const f16,
20019 ) -> float16x8x2_t;
20020 }
20021 _vld2q_lane_f16(b.0, b.1, LANE as i64, a as _)
20022}
20023#[doc = "Load multiple 2-element structures to two registers"]
20024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f32)"]
20025#[doc = "## Safety"]
20026#[doc = " * Neon intrinsic unsafe"]
20027#[inline(always)]
20028#[target_feature(enable = "neon")]
20029#[cfg(not(target_arch = "arm"))]
20030#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20031#[rustc_legacy_const_generics(2)]
20032#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20033pub unsafe fn vld2_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x2_t) -> float32x2x2_t {
20034 static_assert_uimm_bits!(LANE, 2);
20035 unsafe extern "unadjusted" {
20036 #[cfg_attr(
20037 any(target_arch = "aarch64", target_arch = "arm64ec"),
20038 link_name = "llvm.aarch64.neon.ld2lane.v2f32.p0"
20039 )]
20040 fn _vld2_lane_f32(a: float32x2_t, b: float32x2_t, n: i64, ptr: *const i8) -> float32x2x2_t;
20041 }
20042 _vld2_lane_f32(b.0, b.1, LANE as i64, a as _)
20043}
20044#[doc = "Load multiple 2-element structures to two registers"]
20045#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f32)"]
20046#[doc = "## Safety"]
20047#[doc = " * Neon intrinsic unsafe"]
20048#[inline(always)]
20049#[target_feature(enable = "neon")]
20050#[cfg(not(target_arch = "arm"))]
20051#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20052#[rustc_legacy_const_generics(2)]
20053#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20054pub unsafe fn vld2q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x2_t) -> float32x4x2_t {
20055 static_assert_uimm_bits!(LANE, 2);
20056 unsafe extern "unadjusted" {
20057 #[cfg_attr(
20058 any(target_arch = "aarch64", target_arch = "arm64ec"),
20059 link_name = "llvm.aarch64.neon.ld2lane.v4f32.p0"
20060 )]
20061 fn _vld2q_lane_f32(a: float32x4_t, b: float32x4_t, n: i64, ptr: *const i8)
20062 -> float32x4x2_t;
20063 }
20064 _vld2q_lane_f32(b.0, b.1, LANE as i64, a as _)
20065}
20066#[doc = "Load multiple 2-element structures to two registers"]
20067#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s8)"]
20068#[doc = "## Safety"]
20069#[doc = " * Neon intrinsic unsafe"]
20070#[inline(always)]
20071#[target_feature(enable = "neon")]
20072#[cfg(not(target_arch = "arm"))]
20073#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20074#[rustc_legacy_const_generics(2)]
20075#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20076pub unsafe fn vld2_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x2_t) -> int8x8x2_t {
20077 static_assert_uimm_bits!(LANE, 3);
20078 unsafe extern "unadjusted" {
20079 #[cfg_attr(
20080 any(target_arch = "aarch64", target_arch = "arm64ec"),
20081 link_name = "llvm.aarch64.neon.ld2lane.v8i8.p0"
20082 )]
20083 fn _vld2_lane_s8(a: int8x8_t, b: int8x8_t, n: i64, ptr: *const i8) -> int8x8x2_t;
20084 }
20085 _vld2_lane_s8(b.0, b.1, LANE as i64, a as _)
20086}
20087#[doc = "Load multiple 2-element structures to two registers"]
20088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s16)"]
20089#[doc = "## Safety"]
20090#[doc = " * Neon intrinsic unsafe"]
20091#[inline(always)]
20092#[target_feature(enable = "neon")]
20093#[cfg(not(target_arch = "arm"))]
20094#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20095#[rustc_legacy_const_generics(2)]
20096#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20097pub unsafe fn vld2_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x2_t) -> int16x4x2_t {
20098 static_assert_uimm_bits!(LANE, 2);
20099 unsafe extern "unadjusted" {
20100 #[cfg_attr(
20101 any(target_arch = "aarch64", target_arch = "arm64ec"),
20102 link_name = "llvm.aarch64.neon.ld2lane.v4i16.p0"
20103 )]
20104 fn _vld2_lane_s16(a: int16x4_t, b: int16x4_t, n: i64, ptr: *const i8) -> int16x4x2_t;
20105 }
20106 _vld2_lane_s16(b.0, b.1, LANE as i64, a as _)
20107}
20108#[doc = "Load multiple 2-element structures to two registers"]
20109#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s16)"]
20110#[doc = "## Safety"]
20111#[doc = " * Neon intrinsic unsafe"]
20112#[inline(always)]
20113#[target_feature(enable = "neon")]
20114#[cfg(not(target_arch = "arm"))]
20115#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20116#[rustc_legacy_const_generics(2)]
20117#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20118pub unsafe fn vld2q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x2_t) -> int16x8x2_t {
20119 static_assert_uimm_bits!(LANE, 3);
20120 unsafe extern "unadjusted" {
20121 #[cfg_attr(
20122 any(target_arch = "aarch64", target_arch = "arm64ec"),
20123 link_name = "llvm.aarch64.neon.ld2lane.v8i16.p0"
20124 )]
20125 fn _vld2q_lane_s16(a: int16x8_t, b: int16x8_t, n: i64, ptr: *const i8) -> int16x8x2_t;
20126 }
20127 _vld2q_lane_s16(b.0, b.1, LANE as i64, a as _)
20128}
20129#[doc = "Load multiple 2-element structures to two registers"]
20130#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s32)"]
20131#[doc = "## Safety"]
20132#[doc = " * Neon intrinsic unsafe"]
20133#[inline(always)]
20134#[target_feature(enable = "neon")]
20135#[cfg(not(target_arch = "arm"))]
20136#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20137#[rustc_legacy_const_generics(2)]
20138#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20139pub unsafe fn vld2_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x2_t) -> int32x2x2_t {
20140 static_assert_uimm_bits!(LANE, 1);
20141 unsafe extern "unadjusted" {
20142 #[cfg_attr(
20143 any(target_arch = "aarch64", target_arch = "arm64ec"),
20144 link_name = "llvm.aarch64.neon.ld2lane.v2i32.p0"
20145 )]
20146 fn _vld2_lane_s32(a: int32x2_t, b: int32x2_t, n: i64, ptr: *const i8) -> int32x2x2_t;
20147 }
20148 _vld2_lane_s32(b.0, b.1, LANE as i64, a as _)
20149}
20150#[doc = "Load multiple 2-element structures to two registers"]
20151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s32)"]
20152#[doc = "## Safety"]
20153#[doc = " * Neon intrinsic unsafe"]
20154#[inline(always)]
20155#[target_feature(enable = "neon")]
20156#[cfg(not(target_arch = "arm"))]
20157#[cfg_attr(test, assert_instr(ld2, LANE = 0))]
20158#[rustc_legacy_const_generics(2)]
20159#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20160pub unsafe fn vld2q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x2_t) -> int32x4x2_t {
20161 static_assert_uimm_bits!(LANE, 2);
20162 unsafe extern "unadjusted" {
20163 #[cfg_attr(
20164 any(target_arch = "aarch64", target_arch = "arm64ec"),
20165 link_name = "llvm.aarch64.neon.ld2lane.v4i32.p0"
20166 )]
20167 fn _vld2q_lane_s32(a: int32x4_t, b: int32x4_t, n: i64, ptr: *const i8) -> int32x4x2_t;
20168 }
20169 _vld2q_lane_s32(b.0, b.1, LANE as i64, a as _)
20170}
20171#[doc = "Load multiple 2-element structures to two registers"]
20172#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_f32)"]
20173#[doc = "## Safety"]
20174#[doc = " * Neon intrinsic unsafe"]
20175#[inline(always)]
20176#[target_feature(enable = "neon,v7")]
20177#[cfg(target_arch = "arm")]
20178#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20179#[rustc_legacy_const_generics(2)]
20180#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20181pub unsafe fn vld2_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x2_t) -> float32x2x2_t {
20182 static_assert_uimm_bits!(LANE, 1);
20183 unsafe extern "unadjusted" {
20184 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v2f32.p0")]
20185 fn _vld2_lane_f32(
20186 ptr: *const i8,
20187 a: float32x2_t,
20188 b: float32x2_t,
20189 n: i32,
20190 size: i32,
20191 ) -> float32x2x2_t;
20192 }
20193 _vld2_lane_f32(a as _, b.0, b.1, LANE, 4)
20194}
20195#[doc = "Load multiple 2-element structures to two registers"]
20196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_f32)"]
20197#[doc = "## Safety"]
20198#[doc = " * Neon intrinsic unsafe"]
20199#[inline(always)]
20200#[target_feature(enable = "neon,v7")]
20201#[cfg(target_arch = "arm")]
20202#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20203#[rustc_legacy_const_generics(2)]
20204#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20205pub unsafe fn vld2q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x2_t) -> float32x4x2_t {
20206 static_assert_uimm_bits!(LANE, 2);
20207 unsafe extern "unadjusted" {
20208 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4f32.p0")]
20209 fn _vld2q_lane_f32(
20210 ptr: *const i8,
20211 a: float32x4_t,
20212 b: float32x4_t,
20213 n: i32,
20214 size: i32,
20215 ) -> float32x4x2_t;
20216 }
20217 _vld2q_lane_f32(a as _, b.0, b.1, LANE, 4)
20218}
20219#[doc = "Load multiple 2-element structures to two registers"]
20220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s16)"]
20221#[doc = "## Safety"]
20222#[doc = " * Neon intrinsic unsafe"]
20223#[inline(always)]
20224#[target_feature(enable = "neon,v7")]
20225#[cfg(target_arch = "arm")]
20226#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20227#[rustc_legacy_const_generics(2)]
20228#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20229pub unsafe fn vld2q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x2_t) -> int16x8x2_t {
20230 static_assert_uimm_bits!(LANE, 3);
20231 unsafe extern "unadjusted" {
20232 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8i16.p0")]
20233 fn _vld2q_lane_s16(
20234 ptr: *const i8,
20235 a: int16x8_t,
20236 b: int16x8_t,
20237 n: i32,
20238 size: i32,
20239 ) -> int16x8x2_t;
20240 }
20241 _vld2q_lane_s16(a as _, b.0, b.1, LANE, 2)
20242}
20243#[doc = "Load multiple 2-element structures to two registers"]
20244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_s32)"]
20245#[doc = "## Safety"]
20246#[doc = " * Neon intrinsic unsafe"]
20247#[inline(always)]
20248#[target_feature(enable = "neon,v7")]
20249#[cfg(target_arch = "arm")]
20250#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20251#[rustc_legacy_const_generics(2)]
20252#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20253pub unsafe fn vld2q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x2_t) -> int32x4x2_t {
20254 static_assert_uimm_bits!(LANE, 2);
20255 unsafe extern "unadjusted" {
20256 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4i32.p0")]
20257 fn _vld2q_lane_s32(
20258 ptr: *const i8,
20259 a: int32x4_t,
20260 b: int32x4_t,
20261 n: i32,
20262 size: i32,
20263 ) -> int32x4x2_t;
20264 }
20265 _vld2q_lane_s32(a as _, b.0, b.1, LANE, 4)
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_s8)"]
20269#[doc = "## Safety"]
20270#[doc = " * Neon intrinsic unsafe"]
20271#[inline(always)]
20272#[target_feature(enable = "neon,v7")]
20273#[cfg(target_arch = "arm")]
20274#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20275#[rustc_legacy_const_generics(2)]
20276#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20277pub unsafe fn vld2_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x2_t) -> int8x8x2_t {
20278 static_assert_uimm_bits!(LANE, 3);
20279 unsafe extern "unadjusted" {
20280 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v8i8.p0")]
20281 fn _vld2_lane_s8(ptr: *const i8, a: int8x8_t, b: int8x8_t, n: i32, size: i32)
20282 -> int8x8x2_t;
20283 }
20284 _vld2_lane_s8(a as _, b.0, b.1, LANE, 1)
20285}
20286#[doc = "Load multiple 2-element structures to two registers"]
20287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s16)"]
20288#[doc = "## Safety"]
20289#[doc = " * Neon intrinsic unsafe"]
20290#[inline(always)]
20291#[target_feature(enable = "neon,v7")]
20292#[cfg(target_arch = "arm")]
20293#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20294#[rustc_legacy_const_generics(2)]
20295#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20296pub unsafe fn vld2_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x2_t) -> int16x4x2_t {
20297 static_assert_uimm_bits!(LANE, 2);
20298 unsafe extern "unadjusted" {
20299 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v4i16.p0")]
20300 fn _vld2_lane_s16(
20301 ptr: *const i8,
20302 a: int16x4_t,
20303 b: int16x4_t,
20304 n: i32,
20305 size: i32,
20306 ) -> int16x4x2_t;
20307 }
20308 _vld2_lane_s16(a as _, b.0, b.1, LANE, 2)
20309}
20310#[doc = "Load multiple 2-element structures to two registers"]
20311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_s32)"]
20312#[doc = "## Safety"]
20313#[doc = " * Neon intrinsic unsafe"]
20314#[inline(always)]
20315#[target_feature(enable = "neon,v7")]
20316#[cfg(target_arch = "arm")]
20317#[cfg_attr(test, assert_instr(vld2, LANE = 0))]
20318#[rustc_legacy_const_generics(2)]
20319#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20320pub unsafe fn vld2_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x2_t) -> int32x2x2_t {
20321 static_assert_uimm_bits!(LANE, 1);
20322 unsafe extern "unadjusted" {
20323 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2lane.v2i32.p0")]
20324 fn _vld2_lane_s32(
20325 ptr: *const i8,
20326 a: int32x2_t,
20327 b: int32x2_t,
20328 n: i32,
20329 size: i32,
20330 ) -> int32x2x2_t;
20331 }
20332 _vld2_lane_s32(a as _, b.0, b.1, LANE, 4)
20333}
20334#[doc = "Load multiple 2-element structures to two registers"]
20335#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u8)"]
20336#[doc = "## Safety"]
20337#[doc = " * Neon intrinsic unsafe"]
20338#[inline(always)]
20339#[target_feature(enable = "neon")]
20340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20342#[cfg_attr(
20343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20344 assert_instr(ld2, LANE = 0)
20345)]
20346#[rustc_legacy_const_generics(2)]
20347#[cfg_attr(
20348 not(target_arch = "arm"),
20349 stable(feature = "neon_intrinsics", since = "1.59.0")
20350)]
20351#[cfg_attr(
20352 target_arch = "arm",
20353 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20354)]
20355pub unsafe fn vld2_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x2_t) -> uint8x8x2_t {
20356 static_assert_uimm_bits!(LANE, 3);
20357 transmute(vld2_lane_s8::<LANE>(transmute(a), transmute(b)))
20358}
20359#[doc = "Load multiple 2-element structures to two registers"]
20360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u16)"]
20361#[doc = "## Safety"]
20362#[doc = " * Neon intrinsic unsafe"]
20363#[inline(always)]
20364#[target_feature(enable = "neon")]
20365#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20366#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20367#[cfg_attr(
20368 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20369 assert_instr(ld2, LANE = 0)
20370)]
20371#[rustc_legacy_const_generics(2)]
20372#[cfg_attr(
20373 not(target_arch = "arm"),
20374 stable(feature = "neon_intrinsics", since = "1.59.0")
20375)]
20376#[cfg_attr(
20377 target_arch = "arm",
20378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20379)]
20380pub unsafe fn vld2_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x2_t) -> uint16x4x2_t {
20381 static_assert_uimm_bits!(LANE, 2);
20382 transmute(vld2_lane_s16::<LANE>(transmute(a), transmute(b)))
20383}
20384#[doc = "Load multiple 2-element structures to two registers"]
20385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_u16)"]
20386#[doc = "## Safety"]
20387#[doc = " * Neon intrinsic unsafe"]
20388#[inline(always)]
20389#[target_feature(enable = "neon")]
20390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20391#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20392#[cfg_attr(
20393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20394 assert_instr(ld2, LANE = 0)
20395)]
20396#[rustc_legacy_const_generics(2)]
20397#[cfg_attr(
20398 not(target_arch = "arm"),
20399 stable(feature = "neon_intrinsics", since = "1.59.0")
20400)]
20401#[cfg_attr(
20402 target_arch = "arm",
20403 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20404)]
20405pub unsafe fn vld2q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x2_t) -> uint16x8x2_t {
20406 static_assert_uimm_bits!(LANE, 3);
20407 transmute(vld2q_lane_s16::<LANE>(transmute(a), transmute(b)))
20408}
20409#[doc = "Load multiple 2-element structures to two registers"]
20410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_u32)"]
20411#[doc = "## Safety"]
20412#[doc = " * Neon intrinsic unsafe"]
20413#[inline(always)]
20414#[target_feature(enable = "neon")]
20415#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20416#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20417#[cfg_attr(
20418 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20419 assert_instr(ld2, LANE = 0)
20420)]
20421#[rustc_legacy_const_generics(2)]
20422#[cfg_attr(
20423 not(target_arch = "arm"),
20424 stable(feature = "neon_intrinsics", since = "1.59.0")
20425)]
20426#[cfg_attr(
20427 target_arch = "arm",
20428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20429)]
20430pub unsafe fn vld2_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x2_t) -> uint32x2x2_t {
20431 static_assert_uimm_bits!(LANE, 1);
20432 transmute(vld2_lane_s32::<LANE>(transmute(a), transmute(b)))
20433}
20434#[doc = "Load multiple 2-element structures to two registers"]
20435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_u32)"]
20436#[doc = "## Safety"]
20437#[doc = " * Neon intrinsic unsafe"]
20438#[inline(always)]
20439#[target_feature(enable = "neon")]
20440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20442#[cfg_attr(
20443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20444 assert_instr(ld2, LANE = 0)
20445)]
20446#[rustc_legacy_const_generics(2)]
20447#[cfg_attr(
20448 not(target_arch = "arm"),
20449 stable(feature = "neon_intrinsics", since = "1.59.0")
20450)]
20451#[cfg_attr(
20452 target_arch = "arm",
20453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20454)]
20455pub unsafe fn vld2q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x2_t) -> uint32x4x2_t {
20456 static_assert_uimm_bits!(LANE, 2);
20457 transmute(vld2q_lane_s32::<LANE>(transmute(a), transmute(b)))
20458}
20459#[doc = "Load multiple 2-element structures to two registers"]
20460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_p8)"]
20461#[doc = "## Safety"]
20462#[doc = " * Neon intrinsic unsafe"]
20463#[inline(always)]
20464#[target_feature(enable = "neon")]
20465#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20466#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20467#[cfg_attr(
20468 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20469 assert_instr(ld2, LANE = 0)
20470)]
20471#[rustc_legacy_const_generics(2)]
20472#[cfg_attr(
20473 not(target_arch = "arm"),
20474 stable(feature = "neon_intrinsics", since = "1.59.0")
20475)]
20476#[cfg_attr(
20477 target_arch = "arm",
20478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20479)]
20480pub unsafe fn vld2_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x2_t) -> poly8x8x2_t {
20481 static_assert_uimm_bits!(LANE, 3);
20482 transmute(vld2_lane_s8::<LANE>(transmute(a), transmute(b)))
20483}
20484#[doc = "Load multiple 2-element structures to two registers"]
20485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_lane_p16)"]
20486#[doc = "## Safety"]
20487#[doc = " * Neon intrinsic unsafe"]
20488#[inline(always)]
20489#[target_feature(enable = "neon")]
20490#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20491#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20492#[cfg_attr(
20493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20494 assert_instr(ld2, LANE = 0)
20495)]
20496#[rustc_legacy_const_generics(2)]
20497#[cfg_attr(
20498 not(target_arch = "arm"),
20499 stable(feature = "neon_intrinsics", since = "1.59.0")
20500)]
20501#[cfg_attr(
20502 target_arch = "arm",
20503 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20504)]
20505pub unsafe fn vld2_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x2_t) -> poly16x4x2_t {
20506 static_assert_uimm_bits!(LANE, 2);
20507 transmute(vld2_lane_s16::<LANE>(transmute(a), transmute(b)))
20508}
20509#[doc = "Load multiple 2-element structures to two registers"]
20510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_lane_p16)"]
20511#[doc = "## Safety"]
20512#[doc = " * Neon intrinsic unsafe"]
20513#[inline(always)]
20514#[target_feature(enable = "neon")]
20515#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20516#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2, LANE = 0))]
20517#[cfg_attr(
20518 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20519 assert_instr(ld2, LANE = 0)
20520)]
20521#[rustc_legacy_const_generics(2)]
20522#[cfg_attr(
20523 not(target_arch = "arm"),
20524 stable(feature = "neon_intrinsics", since = "1.59.0")
20525)]
20526#[cfg_attr(
20527 target_arch = "arm",
20528 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20529)]
20530pub unsafe fn vld2q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x2_t) -> poly16x8x2_t {
20531 static_assert_uimm_bits!(LANE, 3);
20532 transmute(vld2q_lane_s16::<LANE>(transmute(a), transmute(b)))
20533}
20534#[doc = "Load multiple 2-element structures to two registers"]
20535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_p64)"]
20536#[doc = "## Safety"]
20537#[doc = " * Neon intrinsic unsafe"]
20538#[inline(always)]
20539#[target_feature(enable = "neon,aes")]
20540#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
20541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
20542#[cfg_attr(
20543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20544 assert_instr(nop)
20545)]
20546#[cfg_attr(
20547 not(target_arch = "arm"),
20548 stable(feature = "neon_intrinsics", since = "1.59.0")
20549)]
20550#[cfg_attr(
20551 target_arch = "arm",
20552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20553)]
20554pub unsafe fn vld2_p64(a: *const p64) -> poly64x1x2_t {
20555 transmute(vld2_s64(transmute(a)))
20556}
20557#[doc = "Load multiple 2-element structures to two registers"]
20558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s64)"]
20559#[doc = "## Safety"]
20560#[doc = " * Neon intrinsic unsafe"]
20561#[inline(always)]
20562#[target_feature(enable = "neon,v7")]
20563#[cfg(target_arch = "arm")]
20564#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
20565#[cfg_attr(test, assert_instr(nop))]
20566pub unsafe fn vld2_s64(a: *const i64) -> int64x1x2_t {
20567 unsafe extern "unadjusted" {
20568 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld2.v1i64")]
20569 fn _vld2_s64(ptr: *const i8, size: i32) -> int64x1x2_t;
20570 }
20571 _vld2_s64(a as *const i8, 8)
20572}
20573#[doc = "Load multiple 2-element structures to two registers"]
20574#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_s64)"]
20575#[doc = "## Safety"]
20576#[doc = " * Neon intrinsic unsafe"]
20577#[inline(always)]
20578#[target_feature(enable = "neon")]
20579#[cfg(not(target_arch = "arm"))]
20580#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20581#[cfg_attr(test, assert_instr(nop))]
20582pub unsafe fn vld2_s64(a: *const i64) -> int64x1x2_t {
20583 unsafe extern "unadjusted" {
20584 #[cfg_attr(
20585 any(target_arch = "aarch64", target_arch = "arm64ec"),
20586 link_name = "llvm.aarch64.neon.ld2.v1i64.p0"
20587 )]
20588 fn _vld2_s64(ptr: *const int64x1_t) -> int64x1x2_t;
20589 }
20590 _vld2_s64(a as _)
20591}
20592#[doc = "Load multiple 2-element structures to two registers"]
20593#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u64)"]
20594#[doc = "## Safety"]
20595#[doc = " * Neon intrinsic unsafe"]
20596#[inline(always)]
20597#[target_feature(enable = "neon")]
20598#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20599#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
20600#[cfg_attr(
20601 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20602 assert_instr(nop)
20603)]
20604#[cfg_attr(
20605 not(target_arch = "arm"),
20606 stable(feature = "neon_intrinsics", since = "1.59.0")
20607)]
20608#[cfg_attr(
20609 target_arch = "arm",
20610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20611)]
20612pub unsafe fn vld2_u64(a: *const u64) -> uint64x1x2_t {
20613 transmute(vld2_s64(transmute(a)))
20614}
20615#[doc = "Load multiple 2-element structures to two registers"]
20616#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u8)"]
20617#[doc = "## Safety"]
20618#[doc = " * Neon intrinsic unsafe"]
20619#[inline(always)]
20620#[target_feature(enable = "neon")]
20621#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20622#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20623#[cfg_attr(
20624 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20625 assert_instr(ld2)
20626)]
20627#[cfg_attr(
20628 not(target_arch = "arm"),
20629 stable(feature = "neon_intrinsics", since = "1.59.0")
20630)]
20631#[cfg_attr(
20632 target_arch = "arm",
20633 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20634)]
20635pub unsafe fn vld2_u8(a: *const u8) -> uint8x8x2_t {
20636 transmute(vld2_s8(transmute(a)))
20637}
20638#[doc = "Load multiple 2-element structures to two registers"]
20639#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u8)"]
20640#[doc = "## Safety"]
20641#[doc = " * Neon intrinsic unsafe"]
20642#[inline(always)]
20643#[target_feature(enable = "neon")]
20644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20646#[cfg_attr(
20647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20648 assert_instr(ld2)
20649)]
20650#[cfg_attr(
20651 not(target_arch = "arm"),
20652 stable(feature = "neon_intrinsics", since = "1.59.0")
20653)]
20654#[cfg_attr(
20655 target_arch = "arm",
20656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20657)]
20658pub unsafe fn vld2q_u8(a: *const u8) -> uint8x16x2_t {
20659 transmute(vld2q_s8(transmute(a)))
20660}
20661#[doc = "Load multiple 2-element structures to two registers"]
20662#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u16)"]
20663#[doc = "## Safety"]
20664#[doc = " * Neon intrinsic unsafe"]
20665#[inline(always)]
20666#[target_feature(enable = "neon")]
20667#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20668#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20669#[cfg_attr(
20670 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20671 assert_instr(ld2)
20672)]
20673#[cfg_attr(
20674 not(target_arch = "arm"),
20675 stable(feature = "neon_intrinsics", since = "1.59.0")
20676)]
20677#[cfg_attr(
20678 target_arch = "arm",
20679 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20680)]
20681pub unsafe fn vld2_u16(a: *const u16) -> uint16x4x2_t {
20682 transmute(vld2_s16(transmute(a)))
20683}
20684#[doc = "Load multiple 2-element structures to two registers"]
20685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u16)"]
20686#[doc = "## Safety"]
20687#[doc = " * Neon intrinsic unsafe"]
20688#[inline(always)]
20689#[target_feature(enable = "neon")]
20690#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20691#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20692#[cfg_attr(
20693 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20694 assert_instr(ld2)
20695)]
20696#[cfg_attr(
20697 not(target_arch = "arm"),
20698 stable(feature = "neon_intrinsics", since = "1.59.0")
20699)]
20700#[cfg_attr(
20701 target_arch = "arm",
20702 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20703)]
20704pub unsafe fn vld2q_u16(a: *const u16) -> uint16x8x2_t {
20705 transmute(vld2q_s16(transmute(a)))
20706}
20707#[doc = "Load multiple 2-element structures to two registers"]
20708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2_u32)"]
20709#[doc = "## Safety"]
20710#[doc = " * Neon intrinsic unsafe"]
20711#[inline(always)]
20712#[target_feature(enable = "neon")]
20713#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20714#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld2))]
20715#[cfg_attr(
20716 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20717 assert_instr(ld2)
20718)]
20719#[cfg_attr(
20720 not(target_arch = "arm"),
20721 stable(feature = "neon_intrinsics", since = "1.59.0")
20722)]
20723#[cfg_attr(
20724 target_arch = "arm",
20725 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
20726)]
20727pub unsafe fn vld2_u32(a: *const u32) -> uint32x2x2_t {
20728 transmute(vld2_s32(transmute(a)))
20729}
20730#[doc = "Load multiple 2-element structures to two registers"]
20731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld2q_u32)"]
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(vld2))]
20738#[cfg_attr(
20739 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20740 assert_instr(ld2)
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 vld2q_u32(a: *const u32) -> uint32x4x2_t {
20751 transmute(vld2q_s32(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_p8)"]
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_p8(a: *const p8) -> poly8x8x2_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_p8)"]
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_p8(a: *const p8) -> poly8x16x2_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_p16)"]
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_p16(a: *const p16) -> poly16x4x2_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_p16)"]
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_p16(a: *const p16) -> poly16x8x2_t {
20843 transmute(vld2q_s16(transmute(a)))
20844}
20845#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
20846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f16)"]
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(target_arch = "arm")]
20853#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
20854#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20855#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20856#[cfg(not(target_arch = "arm64ec"))]
20857pub unsafe fn vld3_dup_f16(a: *const f16) -> float16x4x3_t {
20858 unsafe extern "unadjusted" {
20859 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4f16.p0")]
20860 fn _vld3_dup_f16(ptr: *const f16, size: i32) -> float16x4x3_t;
20861 }
20862 _vld3_dup_f16(a as _, 2)
20863}
20864#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
20865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f16)"]
20866#[doc = "## Safety"]
20867#[doc = " * Neon intrinsic unsafe"]
20868#[inline(always)]
20869#[target_feature(enable = "neon")]
20870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
20871#[cfg(target_arch = "arm")]
20872#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
20873#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20874#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20875#[cfg(not(target_arch = "arm64ec"))]
20876pub unsafe fn vld3q_dup_f16(a: *const f16) -> float16x8x3_t {
20877 unsafe extern "unadjusted" {
20878 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8f16.p0")]
20879 fn _vld3q_dup_f16(ptr: *const f16, size: i32) -> float16x8x3_t;
20880 }
20881 _vld3q_dup_f16(a as _, 2)
20882}
20883#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
20884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f16)"]
20885#[doc = "## Safety"]
20886#[doc = " * Neon intrinsic unsafe"]
20887#[inline(always)]
20888#[target_feature(enable = "neon")]
20889#[cfg(not(target_arch = "arm"))]
20890#[cfg_attr(
20891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20892 assert_instr(ld3r)
20893)]
20894#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20895#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20896#[cfg(not(target_arch = "arm64ec"))]
20897pub unsafe fn vld3_dup_f16(a: *const f16) -> float16x4x3_t {
20898 unsafe extern "unadjusted" {
20899 #[cfg_attr(
20900 any(target_arch = "aarch64", target_arch = "arm64ec"),
20901 link_name = "llvm.aarch64.neon.ld3r.v4f16.p0"
20902 )]
20903 fn _vld3_dup_f16(ptr: *const f16) -> float16x4x3_t;
20904 }
20905 _vld3_dup_f16(a as _)
20906}
20907#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
20908#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f16)"]
20909#[doc = "## Safety"]
20910#[doc = " * Neon intrinsic unsafe"]
20911#[inline(always)]
20912#[target_feature(enable = "neon")]
20913#[cfg(not(target_arch = "arm"))]
20914#[cfg_attr(
20915 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
20916 assert_instr(ld3r)
20917)]
20918#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
20919#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
20920#[cfg(not(target_arch = "arm64ec"))]
20921pub unsafe fn vld3q_dup_f16(a: *const f16) -> float16x8x3_t {
20922 unsafe extern "unadjusted" {
20923 #[cfg_attr(
20924 any(target_arch = "aarch64", target_arch = "arm64ec"),
20925 link_name = "llvm.aarch64.neon.ld3r.v8f16.p0"
20926 )]
20927 fn _vld3q_dup_f16(ptr: *const f16) -> float16x8x3_t;
20928 }
20929 _vld3q_dup_f16(a as _)
20930}
20931#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
20932#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f32)"]
20933#[doc = "## Safety"]
20934#[doc = " * Neon intrinsic unsafe"]
20935#[inline(always)]
20936#[target_feature(enable = "neon")]
20937#[cfg(not(target_arch = "arm"))]
20938#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20939#[cfg_attr(test, assert_instr(ld3r))]
20940pub unsafe fn vld3_dup_f32(a: *const f32) -> float32x2x3_t {
20941 unsafe extern "unadjusted" {
20942 #[cfg_attr(
20943 any(target_arch = "aarch64", target_arch = "arm64ec"),
20944 link_name = "llvm.aarch64.neon.ld3r.v2f32.p0"
20945 )]
20946 fn _vld3_dup_f32(ptr: *const f32) -> float32x2x3_t;
20947 }
20948 _vld3_dup_f32(a as _)
20949}
20950#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
20951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f32)"]
20952#[doc = "## Safety"]
20953#[doc = " * Neon intrinsic unsafe"]
20954#[inline(always)]
20955#[target_feature(enable = "neon")]
20956#[cfg(not(target_arch = "arm"))]
20957#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20958#[cfg_attr(test, assert_instr(ld3r))]
20959pub unsafe fn vld3q_dup_f32(a: *const f32) -> float32x4x3_t {
20960 unsafe extern "unadjusted" {
20961 #[cfg_attr(
20962 any(target_arch = "aarch64", target_arch = "arm64ec"),
20963 link_name = "llvm.aarch64.neon.ld3r.v4f32.p0"
20964 )]
20965 fn _vld3q_dup_f32(ptr: *const f32) -> float32x4x3_t;
20966 }
20967 _vld3q_dup_f32(a as _)
20968}
20969#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
20970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s8)"]
20971#[doc = "## Safety"]
20972#[doc = " * Neon intrinsic unsafe"]
20973#[inline(always)]
20974#[target_feature(enable = "neon")]
20975#[cfg(not(target_arch = "arm"))]
20976#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20977#[cfg_attr(test, assert_instr(ld3r))]
20978pub unsafe fn vld3_dup_s8(a: *const i8) -> int8x8x3_t {
20979 unsafe extern "unadjusted" {
20980 #[cfg_attr(
20981 any(target_arch = "aarch64", target_arch = "arm64ec"),
20982 link_name = "llvm.aarch64.neon.ld3r.v8i8.p0"
20983 )]
20984 fn _vld3_dup_s8(ptr: *const i8) -> int8x8x3_t;
20985 }
20986 _vld3_dup_s8(a as _)
20987}
20988#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
20989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s8)"]
20990#[doc = "## Safety"]
20991#[doc = " * Neon intrinsic unsafe"]
20992#[inline(always)]
20993#[target_feature(enable = "neon")]
20994#[cfg(not(target_arch = "arm"))]
20995#[stable(feature = "neon_intrinsics", since = "1.59.0")]
20996#[cfg_attr(test, assert_instr(ld3r))]
20997pub unsafe fn vld3q_dup_s8(a: *const i8) -> int8x16x3_t {
20998 unsafe extern "unadjusted" {
20999 #[cfg_attr(
21000 any(target_arch = "aarch64", target_arch = "arm64ec"),
21001 link_name = "llvm.aarch64.neon.ld3r.v16i8.p0"
21002 )]
21003 fn _vld3q_dup_s8(ptr: *const i8) -> int8x16x3_t;
21004 }
21005 _vld3q_dup_s8(a as _)
21006}
21007#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s16)"]
21009#[doc = "## Safety"]
21010#[doc = " * Neon intrinsic unsafe"]
21011#[inline(always)]
21012#[target_feature(enable = "neon")]
21013#[cfg(not(target_arch = "arm"))]
21014#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21015#[cfg_attr(test, assert_instr(ld3r))]
21016pub unsafe fn vld3_dup_s16(a: *const i16) -> int16x4x3_t {
21017 unsafe extern "unadjusted" {
21018 #[cfg_attr(
21019 any(target_arch = "aarch64", target_arch = "arm64ec"),
21020 link_name = "llvm.aarch64.neon.ld3r.v4i16.p0"
21021 )]
21022 fn _vld3_dup_s16(ptr: *const i16) -> int16x4x3_t;
21023 }
21024 _vld3_dup_s16(a as _)
21025}
21026#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21027#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s16)"]
21028#[doc = "## Safety"]
21029#[doc = " * Neon intrinsic unsafe"]
21030#[inline(always)]
21031#[target_feature(enable = "neon")]
21032#[cfg(not(target_arch = "arm"))]
21033#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21034#[cfg_attr(test, assert_instr(ld3r))]
21035pub unsafe fn vld3q_dup_s16(a: *const i16) -> int16x8x3_t {
21036 unsafe extern "unadjusted" {
21037 #[cfg_attr(
21038 any(target_arch = "aarch64", target_arch = "arm64ec"),
21039 link_name = "llvm.aarch64.neon.ld3r.v8i16.p0"
21040 )]
21041 fn _vld3q_dup_s16(ptr: *const i16) -> int16x8x3_t;
21042 }
21043 _vld3q_dup_s16(a as _)
21044}
21045#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s32)"]
21047#[doc = "## Safety"]
21048#[doc = " * Neon intrinsic unsafe"]
21049#[inline(always)]
21050#[target_feature(enable = "neon")]
21051#[cfg(not(target_arch = "arm"))]
21052#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21053#[cfg_attr(test, assert_instr(ld3r))]
21054pub unsafe fn vld3_dup_s32(a: *const i32) -> int32x2x3_t {
21055 unsafe extern "unadjusted" {
21056 #[cfg_attr(
21057 any(target_arch = "aarch64", target_arch = "arm64ec"),
21058 link_name = "llvm.aarch64.neon.ld3r.v2i32.p0"
21059 )]
21060 fn _vld3_dup_s32(ptr: *const i32) -> int32x2x3_t;
21061 }
21062 _vld3_dup_s32(a as _)
21063}
21064#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s32)"]
21066#[doc = "## Safety"]
21067#[doc = " * Neon intrinsic unsafe"]
21068#[inline(always)]
21069#[target_feature(enable = "neon")]
21070#[cfg(not(target_arch = "arm"))]
21071#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21072#[cfg_attr(test, assert_instr(ld3r))]
21073pub unsafe fn vld3q_dup_s32(a: *const i32) -> int32x4x3_t {
21074 unsafe extern "unadjusted" {
21075 #[cfg_attr(
21076 any(target_arch = "aarch64", target_arch = "arm64ec"),
21077 link_name = "llvm.aarch64.neon.ld3r.v4i32.p0"
21078 )]
21079 fn _vld3q_dup_s32(ptr: *const i32) -> int32x4x3_t;
21080 }
21081 _vld3q_dup_s32(a as _)
21082}
21083#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s64)"]
21085#[doc = "## Safety"]
21086#[doc = " * Neon intrinsic unsafe"]
21087#[inline(always)]
21088#[target_feature(enable = "neon")]
21089#[cfg(not(target_arch = "arm"))]
21090#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21091#[cfg_attr(test, assert_instr(ld3r))]
21092pub unsafe fn vld3_dup_s64(a: *const i64) -> int64x1x3_t {
21093 unsafe extern "unadjusted" {
21094 #[cfg_attr(
21095 any(target_arch = "aarch64", target_arch = "arm64ec"),
21096 link_name = "llvm.aarch64.neon.ld3r.v1i64.p0"
21097 )]
21098 fn _vld3_dup_s64(ptr: *const i64) -> int64x1x3_t;
21099 }
21100 _vld3_dup_s64(a as _)
21101}
21102#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_f32)"]
21104#[doc = "## Safety"]
21105#[doc = " * Neon intrinsic unsafe"]
21106#[inline(always)]
21107#[target_feature(enable = "neon,v7")]
21108#[cfg(target_arch = "arm")]
21109#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21110#[cfg_attr(test, assert_instr(vld3))]
21111pub unsafe fn vld3_dup_f32(a: *const f32) -> float32x2x3_t {
21112 unsafe extern "unadjusted" {
21113 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v2f32.p0")]
21114 fn _vld3_dup_f32(ptr: *const i8, size: i32) -> float32x2x3_t;
21115 }
21116 _vld3_dup_f32(a as *const i8, 4)
21117}
21118#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_f32)"]
21120#[doc = "## Safety"]
21121#[doc = " * Neon intrinsic unsafe"]
21122#[inline(always)]
21123#[target_feature(enable = "neon,v7")]
21124#[cfg(target_arch = "arm")]
21125#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21126#[cfg_attr(test, assert_instr(vld3))]
21127pub unsafe fn vld3q_dup_f32(a: *const f32) -> float32x4x3_t {
21128 unsafe extern "unadjusted" {
21129 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4f32.p0")]
21130 fn _vld3q_dup_f32(ptr: *const i8, size: i32) -> float32x4x3_t;
21131 }
21132 _vld3q_dup_f32(a as *const i8, 4)
21133}
21134#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21135#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s8)"]
21136#[doc = "## Safety"]
21137#[doc = " * Neon intrinsic unsafe"]
21138#[inline(always)]
21139#[target_feature(enable = "neon,v7")]
21140#[cfg(target_arch = "arm")]
21141#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21142#[cfg_attr(test, assert_instr(vld3))]
21143pub unsafe fn vld3_dup_s8(a: *const i8) -> int8x8x3_t {
21144 unsafe extern "unadjusted" {
21145 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8i8.p0")]
21146 fn _vld3_dup_s8(ptr: *const i8, size: i32) -> int8x8x3_t;
21147 }
21148 _vld3_dup_s8(a as *const i8, 1)
21149}
21150#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s8)"]
21152#[doc = "## Safety"]
21153#[doc = " * Neon intrinsic unsafe"]
21154#[inline(always)]
21155#[target_feature(enable = "neon,v7")]
21156#[cfg(target_arch = "arm")]
21157#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21158#[cfg_attr(test, assert_instr(vld3))]
21159pub unsafe fn vld3q_dup_s8(a: *const i8) -> int8x16x3_t {
21160 unsafe extern "unadjusted" {
21161 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v16i8.p0")]
21162 fn _vld3q_dup_s8(ptr: *const i8, size: i32) -> int8x16x3_t;
21163 }
21164 _vld3q_dup_s8(a as *const i8, 1)
21165}
21166#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21167#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s16)"]
21168#[doc = "## Safety"]
21169#[doc = " * Neon intrinsic unsafe"]
21170#[inline(always)]
21171#[target_feature(enable = "neon,v7")]
21172#[cfg(target_arch = "arm")]
21173#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21174#[cfg_attr(test, assert_instr(vld3))]
21175pub unsafe fn vld3_dup_s16(a: *const i16) -> int16x4x3_t {
21176 unsafe extern "unadjusted" {
21177 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4i16.p0")]
21178 fn _vld3_dup_s16(ptr: *const i8, size: i32) -> int16x4x3_t;
21179 }
21180 _vld3_dup_s16(a as *const i8, 2)
21181}
21182#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s16)"]
21184#[doc = "## Safety"]
21185#[doc = " * Neon intrinsic unsafe"]
21186#[inline(always)]
21187#[target_feature(enable = "neon,v7")]
21188#[cfg(target_arch = "arm")]
21189#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21190#[cfg_attr(test, assert_instr(vld3))]
21191pub unsafe fn vld3q_dup_s16(a: *const i16) -> int16x8x3_t {
21192 unsafe extern "unadjusted" {
21193 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v8i16.p0")]
21194 fn _vld3q_dup_s16(ptr: *const i8, size: i32) -> int16x8x3_t;
21195 }
21196 _vld3q_dup_s16(a as *const i8, 2)
21197}
21198#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s32)"]
21200#[doc = "## Safety"]
21201#[doc = " * Neon intrinsic unsafe"]
21202#[inline(always)]
21203#[target_feature(enable = "neon,v7")]
21204#[cfg(target_arch = "arm")]
21205#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21206#[cfg_attr(test, assert_instr(vld3))]
21207pub unsafe fn vld3_dup_s32(a: *const i32) -> int32x2x3_t {
21208 unsafe extern "unadjusted" {
21209 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v2i32.p0")]
21210 fn _vld3_dup_s32(ptr: *const i8, size: i32) -> int32x2x3_t;
21211 }
21212 _vld3_dup_s32(a as *const i8, 4)
21213}
21214#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21215#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_s32)"]
21216#[doc = "## Safety"]
21217#[doc = " * Neon intrinsic unsafe"]
21218#[inline(always)]
21219#[target_feature(enable = "neon,v7")]
21220#[cfg(target_arch = "arm")]
21221#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21222#[cfg_attr(test, assert_instr(vld3))]
21223pub unsafe fn vld3q_dup_s32(a: *const i32) -> int32x4x3_t {
21224 unsafe extern "unadjusted" {
21225 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v4i32.p0")]
21226 fn _vld3q_dup_s32(ptr: *const i8, size: i32) -> int32x4x3_t;
21227 }
21228 _vld3q_dup_s32(a as *const i8, 4)
21229}
21230#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p64)"]
21232#[doc = "## Safety"]
21233#[doc = " * Neon intrinsic unsafe"]
21234#[inline(always)]
21235#[target_feature(enable = "neon,aes")]
21236#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
21237#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
21238#[cfg_attr(
21239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21240 assert_instr(ld3r)
21241)]
21242#[cfg_attr(
21243 not(target_arch = "arm"),
21244 stable(feature = "neon_intrinsics", since = "1.59.0")
21245)]
21246#[cfg_attr(
21247 target_arch = "arm",
21248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21249)]
21250pub unsafe fn vld3_dup_p64(a: *const p64) -> poly64x1x3_t {
21251 transmute(vld3_dup_s64(transmute(a)))
21252}
21253#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21254#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_s64)"]
21255#[doc = "## Safety"]
21256#[doc = " * Neon intrinsic unsafe"]
21257#[inline(always)]
21258#[cfg(target_arch = "arm")]
21259#[target_feature(enable = "neon,v7")]
21260#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
21261#[cfg_attr(test, assert_instr(nop))]
21262pub unsafe fn vld3_dup_s64(a: *const i64) -> int64x1x3_t {
21263 unsafe extern "unadjusted" {
21264 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3dup.v1i64.p0")]
21265 fn _vld3_dup_s64(ptr: *const i8, size: i32) -> int64x1x3_t;
21266 }
21267 _vld3_dup_s64(a as *const i8, 8)
21268}
21269#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u64)"]
21271#[doc = "## Safety"]
21272#[doc = " * Neon intrinsic unsafe"]
21273#[inline(always)]
21274#[target_feature(enable = "neon")]
21275#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21276#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
21277#[cfg_attr(
21278 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21279 assert_instr(ld3r)
21280)]
21281#[cfg_attr(
21282 not(target_arch = "arm"),
21283 stable(feature = "neon_intrinsics", since = "1.59.0")
21284)]
21285#[cfg_attr(
21286 target_arch = "arm",
21287 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21288)]
21289pub unsafe fn vld3_dup_u64(a: *const u64) -> uint64x1x3_t {
21290 transmute(vld3_dup_s64(transmute(a)))
21291}
21292#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u8)"]
21294#[doc = "## Safety"]
21295#[doc = " * Neon intrinsic unsafe"]
21296#[inline(always)]
21297#[cfg(target_endian = "little")]
21298#[target_feature(enable = "neon")]
21299#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21300#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21301#[cfg_attr(
21302 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21303 assert_instr(ld3r)
21304)]
21305#[cfg_attr(
21306 not(target_arch = "arm"),
21307 stable(feature = "neon_intrinsics", since = "1.59.0")
21308)]
21309#[cfg_attr(
21310 target_arch = "arm",
21311 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21312)]
21313pub unsafe fn vld3_dup_u8(a: *const u8) -> uint8x8x3_t {
21314 transmute(vld3_dup_s8(transmute(a)))
21315}
21316#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u8)"]
21318#[doc = "## Safety"]
21319#[doc = " * Neon intrinsic unsafe"]
21320#[inline(always)]
21321#[cfg(target_endian = "big")]
21322#[target_feature(enable = "neon")]
21323#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21324#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21325#[cfg_attr(
21326 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21327 assert_instr(ld3r)
21328)]
21329#[cfg_attr(
21330 not(target_arch = "arm"),
21331 stable(feature = "neon_intrinsics", since = "1.59.0")
21332)]
21333#[cfg_attr(
21334 target_arch = "arm",
21335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21336)]
21337pub unsafe fn vld3_dup_u8(a: *const u8) -> uint8x8x3_t {
21338 let mut ret_val: uint8x8x3_t = transmute(vld3_dup_s8(transmute(a)));
21339 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
21340 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
21341 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
21342 ret_val
21343}
21344#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u8)"]
21346#[doc = "## Safety"]
21347#[doc = " * Neon intrinsic unsafe"]
21348#[inline(always)]
21349#[cfg(target_endian = "little")]
21350#[target_feature(enable = "neon")]
21351#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21352#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21353#[cfg_attr(
21354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21355 assert_instr(ld3r)
21356)]
21357#[cfg_attr(
21358 not(target_arch = "arm"),
21359 stable(feature = "neon_intrinsics", since = "1.59.0")
21360)]
21361#[cfg_attr(
21362 target_arch = "arm",
21363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21364)]
21365pub unsafe fn vld3q_dup_u8(a: *const u8) -> uint8x16x3_t {
21366 transmute(vld3q_dup_s8(transmute(a)))
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/vld3q_dup_u8)"]
21370#[doc = "## Safety"]
21371#[doc = " * Neon intrinsic unsafe"]
21372#[inline(always)]
21373#[cfg(target_endian = "big")]
21374#[target_feature(enable = "neon")]
21375#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21376#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21377#[cfg_attr(
21378 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21379 assert_instr(ld3r)
21380)]
21381#[cfg_attr(
21382 not(target_arch = "arm"),
21383 stable(feature = "neon_intrinsics", since = "1.59.0")
21384)]
21385#[cfg_attr(
21386 target_arch = "arm",
21387 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21388)]
21389pub unsafe fn vld3q_dup_u8(a: *const u8) -> uint8x16x3_t {
21390 let mut ret_val: uint8x16x3_t = transmute(vld3q_dup_s8(transmute(a)));
21391 ret_val.0 = unsafe {
21392 simd_shuffle!(
21393 ret_val.0,
21394 ret_val.0,
21395 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21396 )
21397 };
21398 ret_val.1 = unsafe {
21399 simd_shuffle!(
21400 ret_val.1,
21401 ret_val.1,
21402 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21403 )
21404 };
21405 ret_val.2 = unsafe {
21406 simd_shuffle!(
21407 ret_val.2,
21408 ret_val.2,
21409 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21410 )
21411 };
21412 ret_val
21413}
21414#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u16)"]
21416#[doc = "## Safety"]
21417#[doc = " * Neon intrinsic unsafe"]
21418#[inline(always)]
21419#[cfg(target_endian = "little")]
21420#[target_feature(enable = "neon")]
21421#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21422#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21423#[cfg_attr(
21424 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21425 assert_instr(ld3r)
21426)]
21427#[cfg_attr(
21428 not(target_arch = "arm"),
21429 stable(feature = "neon_intrinsics", since = "1.59.0")
21430)]
21431#[cfg_attr(
21432 target_arch = "arm",
21433 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21434)]
21435pub unsafe fn vld3_dup_u16(a: *const u16) -> uint16x4x3_t {
21436 transmute(vld3_dup_s16(transmute(a)))
21437}
21438#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21439#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u16)"]
21440#[doc = "## Safety"]
21441#[doc = " * Neon intrinsic unsafe"]
21442#[inline(always)]
21443#[cfg(target_endian = "big")]
21444#[target_feature(enable = "neon")]
21445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21446#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21447#[cfg_attr(
21448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21449 assert_instr(ld3r)
21450)]
21451#[cfg_attr(
21452 not(target_arch = "arm"),
21453 stable(feature = "neon_intrinsics", since = "1.59.0")
21454)]
21455#[cfg_attr(
21456 target_arch = "arm",
21457 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21458)]
21459pub unsafe fn vld3_dup_u16(a: *const u16) -> uint16x4x3_t {
21460 let mut ret_val: uint16x4x3_t = transmute(vld3_dup_s16(transmute(a)));
21461 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
21462 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
21463 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
21464 ret_val
21465}
21466#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u16)"]
21468#[doc = "## Safety"]
21469#[doc = " * Neon intrinsic unsafe"]
21470#[inline(always)]
21471#[cfg(target_endian = "little")]
21472#[target_feature(enable = "neon")]
21473#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21474#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21475#[cfg_attr(
21476 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21477 assert_instr(ld3r)
21478)]
21479#[cfg_attr(
21480 not(target_arch = "arm"),
21481 stable(feature = "neon_intrinsics", since = "1.59.0")
21482)]
21483#[cfg_attr(
21484 target_arch = "arm",
21485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21486)]
21487pub unsafe fn vld3q_dup_u16(a: *const u16) -> uint16x8x3_t {
21488 transmute(vld3q_dup_s16(transmute(a)))
21489}
21490#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u16)"]
21492#[doc = "## Safety"]
21493#[doc = " * Neon intrinsic unsafe"]
21494#[inline(always)]
21495#[cfg(target_endian = "big")]
21496#[target_feature(enable = "neon")]
21497#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21498#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21499#[cfg_attr(
21500 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21501 assert_instr(ld3r)
21502)]
21503#[cfg_attr(
21504 not(target_arch = "arm"),
21505 stable(feature = "neon_intrinsics", since = "1.59.0")
21506)]
21507#[cfg_attr(
21508 target_arch = "arm",
21509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21510)]
21511pub unsafe fn vld3q_dup_u16(a: *const u16) -> uint16x8x3_t {
21512 let mut ret_val: uint16x8x3_t = transmute(vld3q_dup_s16(transmute(a)));
21513 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
21514 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
21515 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
21516 ret_val
21517}
21518#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21519#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u32)"]
21520#[doc = "## Safety"]
21521#[doc = " * Neon intrinsic unsafe"]
21522#[inline(always)]
21523#[cfg(target_endian = "little")]
21524#[target_feature(enable = "neon")]
21525#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21526#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21527#[cfg_attr(
21528 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21529 assert_instr(ld3r)
21530)]
21531#[cfg_attr(
21532 not(target_arch = "arm"),
21533 stable(feature = "neon_intrinsics", since = "1.59.0")
21534)]
21535#[cfg_attr(
21536 target_arch = "arm",
21537 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21538)]
21539pub unsafe fn vld3_dup_u32(a: *const u32) -> uint32x2x3_t {
21540 transmute(vld3_dup_s32(transmute(a)))
21541}
21542#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_u32)"]
21544#[doc = "## Safety"]
21545#[doc = " * Neon intrinsic unsafe"]
21546#[inline(always)]
21547#[cfg(target_endian = "big")]
21548#[target_feature(enable = "neon")]
21549#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21550#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21551#[cfg_attr(
21552 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21553 assert_instr(ld3r)
21554)]
21555#[cfg_attr(
21556 not(target_arch = "arm"),
21557 stable(feature = "neon_intrinsics", since = "1.59.0")
21558)]
21559#[cfg_attr(
21560 target_arch = "arm",
21561 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21562)]
21563pub unsafe fn vld3_dup_u32(a: *const u32) -> uint32x2x3_t {
21564 let mut ret_val: uint32x2x3_t = transmute(vld3_dup_s32(transmute(a)));
21565 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
21566 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
21567 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
21568 ret_val
21569}
21570#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u32)"]
21572#[doc = "## Safety"]
21573#[doc = " * Neon intrinsic unsafe"]
21574#[inline(always)]
21575#[cfg(target_endian = "little")]
21576#[target_feature(enable = "neon")]
21577#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21578#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21579#[cfg_attr(
21580 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21581 assert_instr(ld3r)
21582)]
21583#[cfg_attr(
21584 not(target_arch = "arm"),
21585 stable(feature = "neon_intrinsics", since = "1.59.0")
21586)]
21587#[cfg_attr(
21588 target_arch = "arm",
21589 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21590)]
21591pub unsafe fn vld3q_dup_u32(a: *const u32) -> uint32x4x3_t {
21592 transmute(vld3q_dup_s32(transmute(a)))
21593}
21594#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21595#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_u32)"]
21596#[doc = "## Safety"]
21597#[doc = " * Neon intrinsic unsafe"]
21598#[inline(always)]
21599#[cfg(target_endian = "big")]
21600#[target_feature(enable = "neon")]
21601#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21602#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21603#[cfg_attr(
21604 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21605 assert_instr(ld3r)
21606)]
21607#[cfg_attr(
21608 not(target_arch = "arm"),
21609 stable(feature = "neon_intrinsics", since = "1.59.0")
21610)]
21611#[cfg_attr(
21612 target_arch = "arm",
21613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21614)]
21615pub unsafe fn vld3q_dup_u32(a: *const u32) -> uint32x4x3_t {
21616 let mut ret_val: uint32x4x3_t = transmute(vld3q_dup_s32(transmute(a)));
21617 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
21618 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
21619 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
21620 ret_val
21621}
21622#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21623#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p8)"]
21624#[doc = "## Safety"]
21625#[doc = " * Neon intrinsic unsafe"]
21626#[inline(always)]
21627#[cfg(target_endian = "little")]
21628#[target_feature(enable = "neon")]
21629#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21630#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21631#[cfg_attr(
21632 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21633 assert_instr(ld3r)
21634)]
21635#[cfg_attr(
21636 not(target_arch = "arm"),
21637 stable(feature = "neon_intrinsics", since = "1.59.0")
21638)]
21639#[cfg_attr(
21640 target_arch = "arm",
21641 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21642)]
21643pub unsafe fn vld3_dup_p8(a: *const p8) -> poly8x8x3_t {
21644 transmute(vld3_dup_s8(transmute(a)))
21645}
21646#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p8)"]
21648#[doc = "## Safety"]
21649#[doc = " * Neon intrinsic unsafe"]
21650#[inline(always)]
21651#[cfg(target_endian = "big")]
21652#[target_feature(enable = "neon")]
21653#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21654#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21655#[cfg_attr(
21656 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21657 assert_instr(ld3r)
21658)]
21659#[cfg_attr(
21660 not(target_arch = "arm"),
21661 stable(feature = "neon_intrinsics", since = "1.59.0")
21662)]
21663#[cfg_attr(
21664 target_arch = "arm",
21665 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21666)]
21667pub unsafe fn vld3_dup_p8(a: *const p8) -> poly8x8x3_t {
21668 let mut ret_val: poly8x8x3_t = transmute(vld3_dup_s8(transmute(a)));
21669 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
21670 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
21671 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
21672 ret_val
21673}
21674#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p8)"]
21676#[doc = "## Safety"]
21677#[doc = " * Neon intrinsic unsafe"]
21678#[inline(always)]
21679#[cfg(target_endian = "little")]
21680#[target_feature(enable = "neon")]
21681#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21682#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21683#[cfg_attr(
21684 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21685 assert_instr(ld3r)
21686)]
21687#[cfg_attr(
21688 not(target_arch = "arm"),
21689 stable(feature = "neon_intrinsics", since = "1.59.0")
21690)]
21691#[cfg_attr(
21692 target_arch = "arm",
21693 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21694)]
21695pub unsafe fn vld3q_dup_p8(a: *const p8) -> poly8x16x3_t {
21696 transmute(vld3q_dup_s8(transmute(a)))
21697}
21698#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p8)"]
21700#[doc = "## Safety"]
21701#[doc = " * Neon intrinsic unsafe"]
21702#[inline(always)]
21703#[cfg(target_endian = "big")]
21704#[target_feature(enable = "neon")]
21705#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21706#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21707#[cfg_attr(
21708 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21709 assert_instr(ld3r)
21710)]
21711#[cfg_attr(
21712 not(target_arch = "arm"),
21713 stable(feature = "neon_intrinsics", since = "1.59.0")
21714)]
21715#[cfg_attr(
21716 target_arch = "arm",
21717 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21718)]
21719pub unsafe fn vld3q_dup_p8(a: *const p8) -> poly8x16x3_t {
21720 let mut ret_val: poly8x16x3_t = transmute(vld3q_dup_s8(transmute(a)));
21721 ret_val.0 = unsafe {
21722 simd_shuffle!(
21723 ret_val.0,
21724 ret_val.0,
21725 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21726 )
21727 };
21728 ret_val.1 = unsafe {
21729 simd_shuffle!(
21730 ret_val.1,
21731 ret_val.1,
21732 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21733 )
21734 };
21735 ret_val.2 = unsafe {
21736 simd_shuffle!(
21737 ret_val.2,
21738 ret_val.2,
21739 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
21740 )
21741 };
21742 ret_val
21743}
21744#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21745#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p16)"]
21746#[doc = "## Safety"]
21747#[doc = " * Neon intrinsic unsafe"]
21748#[inline(always)]
21749#[cfg(target_endian = "little")]
21750#[target_feature(enable = "neon")]
21751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21753#[cfg_attr(
21754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21755 assert_instr(ld3r)
21756)]
21757#[cfg_attr(
21758 not(target_arch = "arm"),
21759 stable(feature = "neon_intrinsics", since = "1.59.0")
21760)]
21761#[cfg_attr(
21762 target_arch = "arm",
21763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21764)]
21765pub unsafe fn vld3_dup_p16(a: *const p16) -> poly16x4x3_t {
21766 transmute(vld3_dup_s16(transmute(a)))
21767}
21768#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_dup_p16)"]
21770#[doc = "## Safety"]
21771#[doc = " * Neon intrinsic unsafe"]
21772#[inline(always)]
21773#[cfg(target_endian = "big")]
21774#[target_feature(enable = "neon")]
21775#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21776#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21777#[cfg_attr(
21778 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21779 assert_instr(ld3r)
21780)]
21781#[cfg_attr(
21782 not(target_arch = "arm"),
21783 stable(feature = "neon_intrinsics", since = "1.59.0")
21784)]
21785#[cfg_attr(
21786 target_arch = "arm",
21787 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21788)]
21789pub unsafe fn vld3_dup_p16(a: *const p16) -> poly16x4x3_t {
21790 let mut ret_val: poly16x4x3_t = transmute(vld3_dup_s16(transmute(a)));
21791 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
21792 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
21793 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
21794 ret_val
21795}
21796#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21797#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p16)"]
21798#[doc = "## Safety"]
21799#[doc = " * Neon intrinsic unsafe"]
21800#[inline(always)]
21801#[cfg(target_endian = "little")]
21802#[target_feature(enable = "neon")]
21803#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21804#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21805#[cfg_attr(
21806 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21807 assert_instr(ld3r)
21808)]
21809#[cfg_attr(
21810 not(target_arch = "arm"),
21811 stable(feature = "neon_intrinsics", since = "1.59.0")
21812)]
21813#[cfg_attr(
21814 target_arch = "arm",
21815 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21816)]
21817pub unsafe fn vld3q_dup_p16(a: *const p16) -> poly16x8x3_t {
21818 transmute(vld3q_dup_s16(transmute(a)))
21819}
21820#[doc = "Load single 3-element structure and replicate to all lanes of three registers"]
21821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_dup_p16)"]
21822#[doc = "## Safety"]
21823#[doc = " * Neon intrinsic unsafe"]
21824#[inline(always)]
21825#[cfg(target_endian = "big")]
21826#[target_feature(enable = "neon")]
21827#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21828#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21829#[cfg_attr(
21830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21831 assert_instr(ld3r)
21832)]
21833#[cfg_attr(
21834 not(target_arch = "arm"),
21835 stable(feature = "neon_intrinsics", since = "1.59.0")
21836)]
21837#[cfg_attr(
21838 target_arch = "arm",
21839 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
21840)]
21841pub unsafe fn vld3q_dup_p16(a: *const p16) -> poly16x8x3_t {
21842 let mut ret_val: poly16x8x3_t = transmute(vld3q_dup_s16(transmute(a)));
21843 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
21844 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
21845 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
21846 ret_val
21847}
21848#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
21849#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f16)"]
21850#[doc = "## Safety"]
21851#[doc = " * Neon intrinsic unsafe"]
21852#[inline(always)]
21853#[target_feature(enable = "neon")]
21854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21855#[cfg(target_arch = "arm")]
21856#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21857#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21858#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21859#[cfg(not(target_arch = "arm64ec"))]
21860pub unsafe fn vld3_f16(a: *const f16) -> float16x4x3_t {
21861 unsafe extern "unadjusted" {
21862 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4f16.p0")]
21863 fn _vld3_f16(ptr: *const f16, size: i32) -> float16x4x3_t;
21864 }
21865 _vld3_f16(a as _, 2)
21866}
21867#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
21868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f16)"]
21869#[doc = "## Safety"]
21870#[doc = " * Neon intrinsic unsafe"]
21871#[inline(always)]
21872#[target_feature(enable = "neon")]
21873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
21874#[cfg(target_arch = "arm")]
21875#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
21876#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21877#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21878#[cfg(not(target_arch = "arm64ec"))]
21879pub unsafe fn vld3q_f16(a: *const f16) -> float16x8x3_t {
21880 unsafe extern "unadjusted" {
21881 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8f16.p0")]
21882 fn _vld3q_f16(ptr: *const f16, size: i32) -> float16x8x3_t;
21883 }
21884 _vld3q_f16(a as _, 2)
21885}
21886#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
21887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f16)"]
21888#[doc = "## Safety"]
21889#[doc = " * Neon intrinsic unsafe"]
21890#[inline(always)]
21891#[target_feature(enable = "neon")]
21892#[cfg(not(target_arch = "arm"))]
21893#[cfg_attr(
21894 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21895 assert_instr(ld3)
21896)]
21897#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21898#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21899#[cfg(not(target_arch = "arm64ec"))]
21900pub unsafe fn vld3_f16(a: *const f16) -> float16x4x3_t {
21901 crate::core_arch::macros::deinterleaving_load!(f16, 4, 3, a)
21902}
21903#[doc = "Load single 3-element structure and replicate to all lanes of two registers"]
21904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f16)"]
21905#[doc = "## Safety"]
21906#[doc = " * Neon intrinsic unsafe"]
21907#[inline(always)]
21908#[target_feature(enable = "neon")]
21909#[cfg(not(target_arch = "arm"))]
21910#[cfg_attr(
21911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
21912 assert_instr(ld3)
21913)]
21914#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
21915#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
21916#[cfg(not(target_arch = "arm64ec"))]
21917pub unsafe fn vld3q_f16(a: *const f16) -> float16x8x3_t {
21918 crate::core_arch::macros::deinterleaving_load!(f16, 8, 3, a)
21919}
21920#[doc = "Load multiple 3-element structures to three registers"]
21921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f32)"]
21922#[doc = "## Safety"]
21923#[doc = " * Neon intrinsic unsafe"]
21924#[inline(always)]
21925#[target_feature(enable = "neon")]
21926#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21927#[cfg(not(target_arch = "arm"))]
21928#[cfg_attr(test, assert_instr(ld3))]
21929pub unsafe fn vld3_f32(a: *const f32) -> float32x2x3_t {
21930 crate::core_arch::macros::deinterleaving_load!(f32, 2, 3, a)
21931}
21932#[doc = "Load multiple 3-element structures to three registers"]
21933#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f32)"]
21934#[doc = "## Safety"]
21935#[doc = " * Neon intrinsic unsafe"]
21936#[inline(always)]
21937#[target_feature(enable = "neon")]
21938#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21939#[cfg(not(target_arch = "arm"))]
21940#[cfg_attr(test, assert_instr(ld3))]
21941pub unsafe fn vld3q_f32(a: *const f32) -> float32x4x3_t {
21942 crate::core_arch::macros::deinterleaving_load!(f32, 4, 3, a)
21943}
21944#[doc = "Load multiple 3-element structures to three registers"]
21945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s8)"]
21946#[doc = "## Safety"]
21947#[doc = " * Neon intrinsic unsafe"]
21948#[inline(always)]
21949#[target_feature(enable = "neon")]
21950#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21951#[cfg(not(target_arch = "arm"))]
21952#[cfg_attr(test, assert_instr(ld3))]
21953pub unsafe fn vld3_s8(a: *const i8) -> int8x8x3_t {
21954 crate::core_arch::macros::deinterleaving_load!(i8, 8, 3, a)
21955}
21956#[doc = "Load multiple 3-element structures to three registers"]
21957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s8)"]
21958#[doc = "## Safety"]
21959#[doc = " * Neon intrinsic unsafe"]
21960#[inline(always)]
21961#[target_feature(enable = "neon")]
21962#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21963#[cfg(not(target_arch = "arm"))]
21964#[cfg_attr(test, assert_instr(ld3))]
21965pub unsafe fn vld3q_s8(a: *const i8) -> int8x16x3_t {
21966 crate::core_arch::macros::deinterleaving_load!(i8, 16, 3, a)
21967}
21968#[doc = "Load multiple 3-element structures to three registers"]
21969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s16)"]
21970#[doc = "## Safety"]
21971#[doc = " * Neon intrinsic unsafe"]
21972#[inline(always)]
21973#[target_feature(enable = "neon")]
21974#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21975#[cfg(not(target_arch = "arm"))]
21976#[cfg_attr(test, assert_instr(ld3))]
21977pub unsafe fn vld3_s16(a: *const i16) -> int16x4x3_t {
21978 crate::core_arch::macros::deinterleaving_load!(i16, 4, 3, a)
21979}
21980#[doc = "Load multiple 3-element structures to three registers"]
21981#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s16)"]
21982#[doc = "## Safety"]
21983#[doc = " * Neon intrinsic unsafe"]
21984#[inline(always)]
21985#[target_feature(enable = "neon")]
21986#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21987#[cfg(not(target_arch = "arm"))]
21988#[cfg_attr(test, assert_instr(ld3))]
21989pub unsafe fn vld3q_s16(a: *const i16) -> int16x8x3_t {
21990 crate::core_arch::macros::deinterleaving_load!(i16, 8, 3, a)
21991}
21992#[doc = "Load multiple 3-element structures to three registers"]
21993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s32)"]
21994#[doc = "## Safety"]
21995#[doc = " * Neon intrinsic unsafe"]
21996#[inline(always)]
21997#[target_feature(enable = "neon")]
21998#[stable(feature = "neon_intrinsics", since = "1.59.0")]
21999#[cfg(not(target_arch = "arm"))]
22000#[cfg_attr(test, assert_instr(ld3))]
22001pub unsafe fn vld3_s32(a: *const i32) -> int32x2x3_t {
22002 crate::core_arch::macros::deinterleaving_load!(i32, 2, 3, a)
22003}
22004#[doc = "Load multiple 3-element structures to three registers"]
22005#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s32)"]
22006#[doc = "## Safety"]
22007#[doc = " * Neon intrinsic unsafe"]
22008#[inline(always)]
22009#[target_feature(enable = "neon")]
22010#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22011#[cfg(not(target_arch = "arm"))]
22012#[cfg_attr(test, assert_instr(ld3))]
22013pub unsafe fn vld3q_s32(a: *const i32) -> int32x4x3_t {
22014 crate::core_arch::macros::deinterleaving_load!(i32, 4, 3, a)
22015}
22016#[doc = "Load multiple 3-element structures to three registers"]
22017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_f32)"]
22018#[doc = "## Safety"]
22019#[doc = " * Neon intrinsic unsafe"]
22020#[inline(always)]
22021#[cfg(target_arch = "arm")]
22022#[target_feature(enable = "neon,v7")]
22023#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22024#[cfg_attr(test, assert_instr(vld3))]
22025pub unsafe fn vld3_f32(a: *const f32) -> float32x2x3_t {
22026 unsafe extern "unadjusted" {
22027 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v2f32.p0")]
22028 fn _vld3_f32(ptr: *const i8, size: i32) -> float32x2x3_t;
22029 }
22030 _vld3_f32(a as *const i8, 4)
22031}
22032#[doc = "Load multiple 3-element structures to three registers"]
22033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_f32)"]
22034#[doc = "## Safety"]
22035#[doc = " * Neon intrinsic unsafe"]
22036#[inline(always)]
22037#[cfg(target_arch = "arm")]
22038#[target_feature(enable = "neon,v7")]
22039#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22040#[cfg_attr(test, assert_instr(vld3))]
22041pub unsafe fn vld3q_f32(a: *const f32) -> float32x4x3_t {
22042 unsafe extern "unadjusted" {
22043 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4f32.p0")]
22044 fn _vld3q_f32(ptr: *const i8, size: i32) -> float32x4x3_t;
22045 }
22046 _vld3q_f32(a as *const i8, 4)
22047}
22048#[doc = "Load multiple 3-element structures to three registers"]
22049#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s8)"]
22050#[doc = "## Safety"]
22051#[doc = " * Neon intrinsic unsafe"]
22052#[inline(always)]
22053#[cfg(target_arch = "arm")]
22054#[target_feature(enable = "neon,v7")]
22055#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22056#[cfg_attr(test, assert_instr(vld3))]
22057pub unsafe fn vld3_s8(a: *const i8) -> int8x8x3_t {
22058 unsafe extern "unadjusted" {
22059 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8i8.p0")]
22060 fn _vld3_s8(ptr: *const i8, size: i32) -> int8x8x3_t;
22061 }
22062 _vld3_s8(a as *const i8, 1)
22063}
22064#[doc = "Load multiple 3-element structures to three registers"]
22065#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s8)"]
22066#[doc = "## Safety"]
22067#[doc = " * Neon intrinsic unsafe"]
22068#[inline(always)]
22069#[cfg(target_arch = "arm")]
22070#[target_feature(enable = "neon,v7")]
22071#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22072#[cfg_attr(test, assert_instr(vld3))]
22073pub unsafe fn vld3q_s8(a: *const i8) -> int8x16x3_t {
22074 unsafe extern "unadjusted" {
22075 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v16i8.p0")]
22076 fn _vld3q_s8(ptr: *const i8, size: i32) -> int8x16x3_t;
22077 }
22078 _vld3q_s8(a as *const i8, 1)
22079}
22080#[doc = "Load multiple 3-element structures to three registers"]
22081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s16)"]
22082#[doc = "## Safety"]
22083#[doc = " * Neon intrinsic unsafe"]
22084#[inline(always)]
22085#[cfg(target_arch = "arm")]
22086#[target_feature(enable = "neon,v7")]
22087#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22088#[cfg_attr(test, assert_instr(vld3))]
22089pub unsafe fn vld3_s16(a: *const i16) -> int16x4x3_t {
22090 unsafe extern "unadjusted" {
22091 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4i16.p0")]
22092 fn _vld3_s16(ptr: *const i8, size: i32) -> int16x4x3_t;
22093 }
22094 _vld3_s16(a as *const i8, 2)
22095}
22096#[doc = "Load multiple 3-element structures to three registers"]
22097#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s16)"]
22098#[doc = "## Safety"]
22099#[doc = " * Neon intrinsic unsafe"]
22100#[inline(always)]
22101#[cfg(target_arch = "arm")]
22102#[target_feature(enable = "neon,v7")]
22103#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22104#[cfg_attr(test, assert_instr(vld3))]
22105pub unsafe fn vld3q_s16(a: *const i16) -> int16x8x3_t {
22106 unsafe extern "unadjusted" {
22107 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v8i16.p0")]
22108 fn _vld3q_s16(ptr: *const i8, size: i32) -> int16x8x3_t;
22109 }
22110 _vld3q_s16(a as *const i8, 2)
22111}
22112#[doc = "Load multiple 3-element structures to three registers"]
22113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s32)"]
22114#[doc = "## Safety"]
22115#[doc = " * Neon intrinsic unsafe"]
22116#[inline(always)]
22117#[cfg(target_arch = "arm")]
22118#[target_feature(enable = "neon,v7")]
22119#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22120#[cfg_attr(test, assert_instr(vld3))]
22121pub unsafe fn vld3_s32(a: *const i32) -> int32x2x3_t {
22122 unsafe extern "unadjusted" {
22123 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v2i32.p0")]
22124 fn _vld3_s32(ptr: *const i8, size: i32) -> int32x2x3_t;
22125 }
22126 _vld3_s32(a as *const i8, 4)
22127}
22128#[doc = "Load multiple 3-element structures to three registers"]
22129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_s32)"]
22130#[doc = "## Safety"]
22131#[doc = " * Neon intrinsic unsafe"]
22132#[inline(always)]
22133#[cfg(target_arch = "arm")]
22134#[target_feature(enable = "neon,v7")]
22135#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22136#[cfg_attr(test, assert_instr(vld3))]
22137pub unsafe fn vld3q_s32(a: *const i32) -> int32x4x3_t {
22138 unsafe extern "unadjusted" {
22139 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v4i32.p0")]
22140 fn _vld3q_s32(ptr: *const i8, size: i32) -> int32x4x3_t;
22141 }
22142 _vld3q_s32(a as *const i8, 4)
22143}
22144#[doc = "Load multiple 3-element structures to two registers"]
22145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f16)"]
22146#[doc = "## Safety"]
22147#[doc = " * Neon intrinsic unsafe"]
22148#[inline(always)]
22149#[target_feature(enable = "neon,v7")]
22150#[cfg(target_arch = "arm")]
22151#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22152#[rustc_legacy_const_generics(2)]
22153#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22154#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22155#[cfg(not(target_arch = "arm64ec"))]
22156pub unsafe fn vld3_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x3_t) -> float16x4x3_t {
22157 static_assert_uimm_bits!(LANE, 2);
22158 unsafe extern "unadjusted" {
22159 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4f16.p0")]
22160 fn _vld3_lane_f16(
22161 ptr: *const f16,
22162 a: float16x4_t,
22163 b: float16x4_t,
22164 c: float16x4_t,
22165 n: i32,
22166 size: i32,
22167 ) -> float16x4x3_t;
22168 }
22169 _vld3_lane_f16(a as _, b.0, b.1, b.2, LANE, 2)
22170}
22171#[doc = "Load multiple 3-element structures to two registers"]
22172#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f16)"]
22173#[doc = "## Safety"]
22174#[doc = " * Neon intrinsic unsafe"]
22175#[inline(always)]
22176#[target_feature(enable = "neon,v7")]
22177#[cfg(target_arch = "arm")]
22178#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22179#[rustc_legacy_const_generics(2)]
22180#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22181#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22182#[cfg(not(target_arch = "arm64ec"))]
22183pub unsafe fn vld3q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x3_t) -> float16x8x3_t {
22184 static_assert_uimm_bits!(LANE, 3);
22185 unsafe extern "unadjusted" {
22186 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8f16.p0")]
22187 fn _vld3q_lane_f16(
22188 ptr: *const f16,
22189 a: float16x8_t,
22190 b: float16x8_t,
22191 c: float16x8_t,
22192 n: i32,
22193 size: i32,
22194 ) -> float16x8x3_t;
22195 }
22196 _vld3q_lane_f16(a as _, b.0, b.1, b.2, LANE, 2)
22197}
22198#[doc = "Load multiple 3-element structures to two registers"]
22199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f16)"]
22200#[doc = "## Safety"]
22201#[doc = " * Neon intrinsic unsafe"]
22202#[inline(always)]
22203#[target_feature(enable = "neon")]
22204#[cfg(not(target_arch = "arm"))]
22205#[cfg_attr(
22206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22207 assert_instr(ld3, LANE = 0)
22208)]
22209#[rustc_legacy_const_generics(2)]
22210#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22211#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22212#[cfg(not(target_arch = "arm64ec"))]
22213pub unsafe fn vld3_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x3_t) -> float16x4x3_t {
22214 static_assert_uimm_bits!(LANE, 2);
22215 unsafe extern "unadjusted" {
22216 #[cfg_attr(
22217 any(target_arch = "aarch64", target_arch = "arm64ec"),
22218 link_name = "llvm.aarch64.neon.ld3lane.v4f16.p0"
22219 )]
22220 fn _vld3_lane_f16(
22221 a: float16x4_t,
22222 b: float16x4_t,
22223 c: float16x4_t,
22224 n: i64,
22225 ptr: *const f16,
22226 ) -> float16x4x3_t;
22227 }
22228 _vld3_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
22229}
22230#[doc = "Load multiple 3-element structures to two registers"]
22231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f16)"]
22232#[doc = "## Safety"]
22233#[doc = " * Neon intrinsic unsafe"]
22234#[inline(always)]
22235#[target_feature(enable = "neon")]
22236#[cfg(not(target_arch = "arm"))]
22237#[cfg_attr(
22238 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22239 assert_instr(ld3, LANE = 0)
22240)]
22241#[rustc_legacy_const_generics(2)]
22242#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
22243#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
22244#[cfg(not(target_arch = "arm64ec"))]
22245pub unsafe fn vld3q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x3_t) -> float16x8x3_t {
22246 static_assert_uimm_bits!(LANE, 3);
22247 unsafe extern "unadjusted" {
22248 #[cfg_attr(
22249 any(target_arch = "aarch64", target_arch = "arm64ec"),
22250 link_name = "llvm.aarch64.neon.ld3lane.v8f16.p0"
22251 )]
22252 fn _vld3q_lane_f16(
22253 a: float16x8_t,
22254 b: float16x8_t,
22255 c: float16x8_t,
22256 n: i64,
22257 ptr: *const f16,
22258 ) -> float16x8x3_t;
22259 }
22260 _vld3q_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
22261}
22262#[doc = "Load multiple 3-element structures to three registers"]
22263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f32)"]
22264#[doc = "## Safety"]
22265#[doc = " * Neon intrinsic unsafe"]
22266#[inline(always)]
22267#[target_feature(enable = "neon")]
22268#[cfg(not(target_arch = "arm"))]
22269#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22270#[rustc_legacy_const_generics(2)]
22271#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22272pub unsafe fn vld3_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x3_t) -> float32x2x3_t {
22273 static_assert_uimm_bits!(LANE, 1);
22274 unsafe extern "unadjusted" {
22275 #[cfg_attr(
22276 any(target_arch = "aarch64", target_arch = "arm64ec"),
22277 link_name = "llvm.aarch64.neon.ld3lane.v2f32.p0"
22278 )]
22279 fn _vld3_lane_f32(
22280 a: float32x2_t,
22281 b: float32x2_t,
22282 c: float32x2_t,
22283 n: i64,
22284 ptr: *const i8,
22285 ) -> float32x2x3_t;
22286 }
22287 _vld3_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
22288}
22289#[doc = "Load multiple 3-element structures to three registers"]
22290#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_f32)"]
22291#[doc = "## Safety"]
22292#[doc = " * Neon intrinsic unsafe"]
22293#[inline(always)]
22294#[target_feature(enable = "neon")]
22295#[cfg(not(target_arch = "arm"))]
22296#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22297#[rustc_legacy_const_generics(2)]
22298#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22299pub unsafe fn vld3q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x3_t) -> float32x4x3_t {
22300 static_assert_uimm_bits!(LANE, 2);
22301 unsafe extern "unadjusted" {
22302 #[cfg_attr(
22303 any(target_arch = "aarch64", target_arch = "arm64ec"),
22304 link_name = "llvm.aarch64.neon.ld3lane.v4f32.p0"
22305 )]
22306 fn _vld3q_lane_f32(
22307 a: float32x4_t,
22308 b: float32x4_t,
22309 c: float32x4_t,
22310 n: i64,
22311 ptr: *const i8,
22312 ) -> float32x4x3_t;
22313 }
22314 _vld3q_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
22315}
22316#[doc = "Load multiple 3-element structures to three registers"]
22317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_f32)"]
22318#[doc = "## Safety"]
22319#[doc = " * Neon intrinsic unsafe"]
22320#[inline(always)]
22321#[cfg(target_arch = "arm")]
22322#[target_feature(enable = "neon,v7")]
22323#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22324#[rustc_legacy_const_generics(2)]
22325#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22326pub unsafe fn vld3_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x3_t) -> float32x2x3_t {
22327 static_assert_uimm_bits!(LANE, 1);
22328 unsafe extern "unadjusted" {
22329 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v2f32.p0")]
22330 fn _vld3_lane_f32(
22331 ptr: *const i8,
22332 a: float32x2_t,
22333 b: float32x2_t,
22334 c: float32x2_t,
22335 n: i32,
22336 size: i32,
22337 ) -> float32x2x3_t;
22338 }
22339 _vld3_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
22340}
22341#[doc = "Load multiple 3-element structures to two registers"]
22342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s8)"]
22343#[doc = "## Safety"]
22344#[doc = " * Neon intrinsic unsafe"]
22345#[inline(always)]
22346#[target_feature(enable = "neon")]
22347#[cfg(not(target_arch = "arm"))]
22348#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22349#[rustc_legacy_const_generics(2)]
22350#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22351pub unsafe fn vld3_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x3_t) -> int8x8x3_t {
22352 static_assert_uimm_bits!(LANE, 3);
22353 unsafe extern "unadjusted" {
22354 #[cfg_attr(
22355 any(target_arch = "aarch64", target_arch = "arm64ec"),
22356 link_name = "llvm.aarch64.neon.ld3lane.v8i8.p0"
22357 )]
22358 fn _vld3_lane_s8(
22359 a: int8x8_t,
22360 b: int8x8_t,
22361 c: int8x8_t,
22362 n: i64,
22363 ptr: *const i8,
22364 ) -> int8x8x3_t;
22365 }
22366 _vld3_lane_s8(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/vld3_lane_s16)"]
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(test, assert_instr(ld3, LANE = 0))]
22376#[rustc_legacy_const_generics(2)]
22377#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22378pub unsafe fn vld3_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x3_t) -> int16x4x3_t {
22379 static_assert_uimm_bits!(LANE, 2);
22380 unsafe extern "unadjusted" {
22381 #[cfg_attr(
22382 any(target_arch = "aarch64", target_arch = "arm64ec"),
22383 link_name = "llvm.aarch64.neon.ld3lane.v4i16.p0"
22384 )]
22385 fn _vld3_lane_s16(
22386 a: int16x4_t,
22387 b: int16x4_t,
22388 c: int16x4_t,
22389 n: i64,
22390 ptr: *const i8,
22391 ) -> int16x4x3_t;
22392 }
22393 _vld3_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
22394}
22395#[doc = "Load multiple 3-element structures to two registers"]
22396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s16)"]
22397#[doc = "## Safety"]
22398#[doc = " * Neon intrinsic unsafe"]
22399#[inline(always)]
22400#[target_feature(enable = "neon")]
22401#[cfg(not(target_arch = "arm"))]
22402#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22403#[rustc_legacy_const_generics(2)]
22404#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22405pub unsafe fn vld3q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x3_t) -> int16x8x3_t {
22406 static_assert_uimm_bits!(LANE, 4);
22407 unsafe extern "unadjusted" {
22408 #[cfg_attr(
22409 any(target_arch = "aarch64", target_arch = "arm64ec"),
22410 link_name = "llvm.aarch64.neon.ld3lane.v8i16.p0"
22411 )]
22412 fn _vld3q_lane_s16(
22413 a: int16x8_t,
22414 b: int16x8_t,
22415 c: int16x8_t,
22416 n: i64,
22417 ptr: *const i8,
22418 ) -> int16x8x3_t;
22419 }
22420 _vld3q_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
22421}
22422#[doc = "Load multiple 3-element structures to two registers"]
22423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s32)"]
22424#[doc = "## Safety"]
22425#[doc = " * Neon intrinsic unsafe"]
22426#[inline(always)]
22427#[target_feature(enable = "neon")]
22428#[cfg(not(target_arch = "arm"))]
22429#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22430#[rustc_legacy_const_generics(2)]
22431#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22432pub unsafe fn vld3_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x3_t) -> int32x2x3_t {
22433 static_assert_uimm_bits!(LANE, 1);
22434 unsafe extern "unadjusted" {
22435 #[cfg_attr(
22436 any(target_arch = "aarch64", target_arch = "arm64ec"),
22437 link_name = "llvm.aarch64.neon.ld3lane.v2i32.p0"
22438 )]
22439 fn _vld3_lane_s32(
22440 a: int32x2_t,
22441 b: int32x2_t,
22442 c: int32x2_t,
22443 n: i64,
22444 ptr: *const i8,
22445 ) -> int32x2x3_t;
22446 }
22447 _vld3_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
22448}
22449#[doc = "Load multiple 3-element structures to two registers"]
22450#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s32)"]
22451#[doc = "## Safety"]
22452#[doc = " * Neon intrinsic unsafe"]
22453#[inline(always)]
22454#[target_feature(enable = "neon")]
22455#[cfg(not(target_arch = "arm"))]
22456#[cfg_attr(test, assert_instr(ld3, LANE = 0))]
22457#[rustc_legacy_const_generics(2)]
22458#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22459pub unsafe fn vld3q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x3_t) -> int32x4x3_t {
22460 static_assert_uimm_bits!(LANE, 2);
22461 unsafe extern "unadjusted" {
22462 #[cfg_attr(
22463 any(target_arch = "aarch64", target_arch = "arm64ec"),
22464 link_name = "llvm.aarch64.neon.ld3lane.v4i32.p0"
22465 )]
22466 fn _vld3q_lane_s32(
22467 a: int32x4_t,
22468 b: int32x4_t,
22469 c: int32x4_t,
22470 n: i64,
22471 ptr: *const i8,
22472 ) -> int32x4x3_t;
22473 }
22474 _vld3q_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
22475}
22476#[doc = "Load multiple 3-element structures to two registers"]
22477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s8)"]
22478#[doc = "## Safety"]
22479#[doc = " * Neon intrinsic unsafe"]
22480#[inline(always)]
22481#[cfg(target_arch = "arm")]
22482#[target_feature(enable = "neon,v7")]
22483#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22484#[rustc_legacy_const_generics(2)]
22485#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22486pub unsafe fn vld3_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x3_t) -> int8x8x3_t {
22487 static_assert_uimm_bits!(LANE, 3);
22488 unsafe extern "unadjusted" {
22489 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8i8.p0")]
22490 fn _vld3_lane_s8(
22491 ptr: *const i8,
22492 a: int8x8_t,
22493 b: int8x8_t,
22494 c: int8x8_t,
22495 n: i32,
22496 size: i32,
22497 ) -> int8x8x3_t;
22498 }
22499 _vld3_lane_s8(a as _, b.0, b.1, b.2, LANE, 1)
22500}
22501#[doc = "Load multiple 3-element structures to two registers"]
22502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s16)"]
22503#[doc = "## Safety"]
22504#[doc = " * Neon intrinsic unsafe"]
22505#[inline(always)]
22506#[cfg(target_arch = "arm")]
22507#[target_feature(enable = "neon,v7")]
22508#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22509#[rustc_legacy_const_generics(2)]
22510#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22511pub unsafe fn vld3_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x3_t) -> int16x4x3_t {
22512 static_assert_uimm_bits!(LANE, 2);
22513 unsafe extern "unadjusted" {
22514 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4i16.p0")]
22515 fn _vld3_lane_s16(
22516 ptr: *const i8,
22517 a: int16x4_t,
22518 b: int16x4_t,
22519 c: int16x4_t,
22520 n: i32,
22521 size: i32,
22522 ) -> int16x4x3_t;
22523 }
22524 _vld3_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
22525}
22526#[doc = "Load multiple 3-element structures to two registers"]
22527#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s16)"]
22528#[doc = "## Safety"]
22529#[doc = " * Neon intrinsic unsafe"]
22530#[inline(always)]
22531#[cfg(target_arch = "arm")]
22532#[target_feature(enable = "neon,v7")]
22533#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22534#[rustc_legacy_const_generics(2)]
22535#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22536pub unsafe fn vld3q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x3_t) -> int16x8x3_t {
22537 static_assert_uimm_bits!(LANE, 3);
22538 unsafe extern "unadjusted" {
22539 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v8i16.p0")]
22540 fn _vld3q_lane_s16(
22541 ptr: *const i8,
22542 a: int16x8_t,
22543 b: int16x8_t,
22544 c: int16x8_t,
22545 n: i32,
22546 size: i32,
22547 ) -> int16x8x3_t;
22548 }
22549 _vld3q_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
22550}
22551#[doc = "Load multiple 3-element structures to two registers"]
22552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_s32)"]
22553#[doc = "## Safety"]
22554#[doc = " * Neon intrinsic unsafe"]
22555#[inline(always)]
22556#[cfg(target_arch = "arm")]
22557#[target_feature(enable = "neon,v7")]
22558#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22559#[rustc_legacy_const_generics(2)]
22560#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22561pub unsafe fn vld3_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x3_t) -> int32x2x3_t {
22562 static_assert_uimm_bits!(LANE, 1);
22563 unsafe extern "unadjusted" {
22564 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v2i32.p0")]
22565 fn _vld3_lane_s32(
22566 ptr: *const i8,
22567 a: int32x2_t,
22568 b: int32x2_t,
22569 c: int32x2_t,
22570 n: i32,
22571 size: i32,
22572 ) -> int32x2x3_t;
22573 }
22574 _vld3_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
22575}
22576#[doc = "Load multiple 3-element structures to two registers"]
22577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_s32)"]
22578#[doc = "## Safety"]
22579#[doc = " * Neon intrinsic unsafe"]
22580#[inline(always)]
22581#[cfg(target_arch = "arm")]
22582#[target_feature(enable = "neon,v7")]
22583#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
22584#[rustc_legacy_const_generics(2)]
22585#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22586pub unsafe fn vld3q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x3_t) -> int32x4x3_t {
22587 static_assert_uimm_bits!(LANE, 2);
22588 unsafe extern "unadjusted" {
22589 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4i32.p0")]
22590 fn _vld3q_lane_s32(
22591 ptr: *const i8,
22592 a: int32x4_t,
22593 b: int32x4_t,
22594 c: int32x4_t,
22595 n: i32,
22596 size: i32,
22597 ) -> int32x4x3_t;
22598 }
22599 _vld3q_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
22600}
22601#[doc = "Load multiple 3-element structures to three registers"]
22602#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u8)"]
22603#[doc = "## Safety"]
22604#[doc = " * Neon intrinsic unsafe"]
22605#[inline(always)]
22606#[target_feature(enable = "neon")]
22607#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22608#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22609#[cfg_attr(
22610 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22611 assert_instr(ld3, LANE = 0)
22612)]
22613#[rustc_legacy_const_generics(2)]
22614#[cfg_attr(
22615 not(target_arch = "arm"),
22616 stable(feature = "neon_intrinsics", since = "1.59.0")
22617)]
22618#[cfg_attr(
22619 target_arch = "arm",
22620 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22621)]
22622pub unsafe fn vld3_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x3_t) -> uint8x8x3_t {
22623 static_assert_uimm_bits!(LANE, 3);
22624 transmute(vld3_lane_s8::<LANE>(transmute(a), transmute(b)))
22625}
22626#[doc = "Load multiple 3-element structures to three registers"]
22627#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u16)"]
22628#[doc = "## Safety"]
22629#[doc = " * Neon intrinsic unsafe"]
22630#[inline(always)]
22631#[target_feature(enable = "neon")]
22632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22633#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22634#[cfg_attr(
22635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22636 assert_instr(ld3, LANE = 0)
22637)]
22638#[rustc_legacy_const_generics(2)]
22639#[cfg_attr(
22640 not(target_arch = "arm"),
22641 stable(feature = "neon_intrinsics", since = "1.59.0")
22642)]
22643#[cfg_attr(
22644 target_arch = "arm",
22645 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22646)]
22647pub unsafe fn vld3_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x3_t) -> uint16x4x3_t {
22648 static_assert_uimm_bits!(LANE, 2);
22649 transmute(vld3_lane_s16::<LANE>(transmute(a), transmute(b)))
22650}
22651#[doc = "Load multiple 3-element structures to three registers"]
22652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_u16)"]
22653#[doc = "## Safety"]
22654#[doc = " * Neon intrinsic unsafe"]
22655#[inline(always)]
22656#[target_feature(enable = "neon")]
22657#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22658#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22659#[cfg_attr(
22660 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22661 assert_instr(ld3, LANE = 0)
22662)]
22663#[rustc_legacy_const_generics(2)]
22664#[cfg_attr(
22665 not(target_arch = "arm"),
22666 stable(feature = "neon_intrinsics", since = "1.59.0")
22667)]
22668#[cfg_attr(
22669 target_arch = "arm",
22670 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22671)]
22672pub unsafe fn vld3q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x3_t) -> uint16x8x3_t {
22673 static_assert_uimm_bits!(LANE, 3);
22674 transmute(vld3q_lane_s16::<LANE>(transmute(a), transmute(b)))
22675}
22676#[doc = "Load multiple 3-element structures to three registers"]
22677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_u32)"]
22678#[doc = "## Safety"]
22679#[doc = " * Neon intrinsic unsafe"]
22680#[inline(always)]
22681#[target_feature(enable = "neon")]
22682#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22683#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22684#[cfg_attr(
22685 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22686 assert_instr(ld3, LANE = 0)
22687)]
22688#[rustc_legacy_const_generics(2)]
22689#[cfg_attr(
22690 not(target_arch = "arm"),
22691 stable(feature = "neon_intrinsics", since = "1.59.0")
22692)]
22693#[cfg_attr(
22694 target_arch = "arm",
22695 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22696)]
22697pub unsafe fn vld3_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x3_t) -> uint32x2x3_t {
22698 static_assert_uimm_bits!(LANE, 1);
22699 transmute(vld3_lane_s32::<LANE>(transmute(a), transmute(b)))
22700}
22701#[doc = "Load multiple 3-element structures to three registers"]
22702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_u32)"]
22703#[doc = "## Safety"]
22704#[doc = " * Neon intrinsic unsafe"]
22705#[inline(always)]
22706#[target_feature(enable = "neon")]
22707#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22708#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22709#[cfg_attr(
22710 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22711 assert_instr(ld3, LANE = 0)
22712)]
22713#[rustc_legacy_const_generics(2)]
22714#[cfg_attr(
22715 not(target_arch = "arm"),
22716 stable(feature = "neon_intrinsics", since = "1.59.0")
22717)]
22718#[cfg_attr(
22719 target_arch = "arm",
22720 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22721)]
22722pub unsafe fn vld3q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x3_t) -> uint32x4x3_t {
22723 static_assert_uimm_bits!(LANE, 2);
22724 transmute(vld3q_lane_s32::<LANE>(transmute(a), transmute(b)))
22725}
22726#[doc = "Load multiple 3-element structures to three registers"]
22727#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_p8)"]
22728#[doc = "## Safety"]
22729#[doc = " * Neon intrinsic unsafe"]
22730#[inline(always)]
22731#[target_feature(enable = "neon")]
22732#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22733#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22734#[cfg_attr(
22735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22736 assert_instr(ld3, LANE = 0)
22737)]
22738#[rustc_legacy_const_generics(2)]
22739#[cfg_attr(
22740 not(target_arch = "arm"),
22741 stable(feature = "neon_intrinsics", since = "1.59.0")
22742)]
22743#[cfg_attr(
22744 target_arch = "arm",
22745 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22746)]
22747pub unsafe fn vld3_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x3_t) -> poly8x8x3_t {
22748 static_assert_uimm_bits!(LANE, 3);
22749 transmute(vld3_lane_s8::<LANE>(transmute(a), transmute(b)))
22750}
22751#[doc = "Load multiple 3-element structures to three registers"]
22752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_lane_p16)"]
22753#[doc = "## Safety"]
22754#[doc = " * Neon intrinsic unsafe"]
22755#[inline(always)]
22756#[target_feature(enable = "neon")]
22757#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22758#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22759#[cfg_attr(
22760 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22761 assert_instr(ld3, LANE = 0)
22762)]
22763#[rustc_legacy_const_generics(2)]
22764#[cfg_attr(
22765 not(target_arch = "arm"),
22766 stable(feature = "neon_intrinsics", since = "1.59.0")
22767)]
22768#[cfg_attr(
22769 target_arch = "arm",
22770 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22771)]
22772pub unsafe fn vld3_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x3_t) -> poly16x4x3_t {
22773 static_assert_uimm_bits!(LANE, 2);
22774 transmute(vld3_lane_s16::<LANE>(transmute(a), transmute(b)))
22775}
22776#[doc = "Load multiple 3-element structures to three registers"]
22777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_lane_p16)"]
22778#[doc = "## Safety"]
22779#[doc = " * Neon intrinsic unsafe"]
22780#[inline(always)]
22781#[target_feature(enable = "neon")]
22782#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22783#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3, LANE = 0))]
22784#[cfg_attr(
22785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22786 assert_instr(ld3, LANE = 0)
22787)]
22788#[rustc_legacy_const_generics(2)]
22789#[cfg_attr(
22790 not(target_arch = "arm"),
22791 stable(feature = "neon_intrinsics", since = "1.59.0")
22792)]
22793#[cfg_attr(
22794 target_arch = "arm",
22795 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22796)]
22797pub unsafe fn vld3q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x3_t) -> poly16x8x3_t {
22798 static_assert_uimm_bits!(LANE, 3);
22799 transmute(vld3q_lane_s16::<LANE>(transmute(a), transmute(b)))
22800}
22801#[doc = "Load multiple 3-element structures to three registers"]
22802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_p64)"]
22803#[doc = "## Safety"]
22804#[doc = " * Neon intrinsic unsafe"]
22805#[inline(always)]
22806#[target_feature(enable = "neon,aes")]
22807#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
22808#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
22809#[cfg_attr(
22810 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22811 assert_instr(nop)
22812)]
22813#[cfg_attr(
22814 not(target_arch = "arm"),
22815 stable(feature = "neon_intrinsics", since = "1.59.0")
22816)]
22817#[cfg_attr(
22818 target_arch = "arm",
22819 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22820)]
22821pub unsafe fn vld3_p64(a: *const p64) -> poly64x1x3_t {
22822 transmute(vld3_s64(transmute(a)))
22823}
22824#[doc = "Load multiple 3-element structures to three registers"]
22825#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s64)"]
22826#[doc = "## Safety"]
22827#[doc = " * Neon intrinsic unsafe"]
22828#[inline(always)]
22829#[target_feature(enable = "neon")]
22830#[stable(feature = "neon_intrinsics", since = "1.59.0")]
22831#[cfg(not(target_arch = "arm"))]
22832#[cfg_attr(test, assert_instr(nop))]
22833pub unsafe fn vld3_s64(a: *const i64) -> int64x1x3_t {
22834 crate::ptr::read_unaligned(a.cast())
22835}
22836#[doc = "Load multiple 3-element structures to three registers"]
22837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_s64)"]
22838#[doc = "## Safety"]
22839#[doc = " * Neon intrinsic unsafe"]
22840#[inline(always)]
22841#[cfg(target_arch = "arm")]
22842#[target_feature(enable = "neon,v7")]
22843#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
22844#[cfg_attr(test, assert_instr(nop))]
22845pub unsafe fn vld3_s64(a: *const i64) -> int64x1x3_t {
22846 unsafe extern "unadjusted" {
22847 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3.v1i64.p0")]
22848 fn _vld3_s64(ptr: *const i8, size: i32) -> int64x1x3_t;
22849 }
22850 _vld3_s64(a as *const i8, 8)
22851}
22852#[doc = "Load multiple 3-element structures to three registers"]
22853#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u64)"]
22854#[doc = "## Safety"]
22855#[doc = " * Neon intrinsic unsafe"]
22856#[inline(always)]
22857#[target_feature(enable = "neon")]
22858#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22859#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
22860#[cfg_attr(
22861 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22862 assert_instr(nop)
22863)]
22864#[cfg_attr(
22865 not(target_arch = "arm"),
22866 stable(feature = "neon_intrinsics", since = "1.59.0")
22867)]
22868#[cfg_attr(
22869 target_arch = "arm",
22870 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22871)]
22872pub unsafe fn vld3_u64(a: *const u64) -> uint64x1x3_t {
22873 transmute(vld3_s64(transmute(a)))
22874}
22875#[doc = "Load multiple 3-element structures to three registers"]
22876#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u8)"]
22877#[doc = "## Safety"]
22878#[doc = " * Neon intrinsic unsafe"]
22879#[inline(always)]
22880#[target_feature(enable = "neon")]
22881#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22882#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22883#[cfg_attr(
22884 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22885 assert_instr(ld3)
22886)]
22887#[cfg_attr(
22888 not(target_arch = "arm"),
22889 stable(feature = "neon_intrinsics", since = "1.59.0")
22890)]
22891#[cfg_attr(
22892 target_arch = "arm",
22893 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22894)]
22895pub unsafe fn vld3_u8(a: *const u8) -> uint8x8x3_t {
22896 transmute(vld3_s8(transmute(a)))
22897}
22898#[doc = "Load multiple 3-element structures to three registers"]
22899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u8)"]
22900#[doc = "## Safety"]
22901#[doc = " * Neon intrinsic unsafe"]
22902#[inline(always)]
22903#[target_feature(enable = "neon")]
22904#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22905#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22906#[cfg_attr(
22907 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22908 assert_instr(ld3)
22909)]
22910#[cfg_attr(
22911 not(target_arch = "arm"),
22912 stable(feature = "neon_intrinsics", since = "1.59.0")
22913)]
22914#[cfg_attr(
22915 target_arch = "arm",
22916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22917)]
22918pub unsafe fn vld3q_u8(a: *const u8) -> uint8x16x3_t {
22919 transmute(vld3q_s8(transmute(a)))
22920}
22921#[doc = "Load multiple 3-element structures to three registers"]
22922#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u16)"]
22923#[doc = "## Safety"]
22924#[doc = " * Neon intrinsic unsafe"]
22925#[inline(always)]
22926#[target_feature(enable = "neon")]
22927#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22928#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22929#[cfg_attr(
22930 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22931 assert_instr(ld3)
22932)]
22933#[cfg_attr(
22934 not(target_arch = "arm"),
22935 stable(feature = "neon_intrinsics", since = "1.59.0")
22936)]
22937#[cfg_attr(
22938 target_arch = "arm",
22939 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22940)]
22941pub unsafe fn vld3_u16(a: *const u16) -> uint16x4x3_t {
22942 transmute(vld3_s16(transmute(a)))
22943}
22944#[doc = "Load multiple 3-element structures to three registers"]
22945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u16)"]
22946#[doc = "## Safety"]
22947#[doc = " * Neon intrinsic unsafe"]
22948#[inline(always)]
22949#[target_feature(enable = "neon")]
22950#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22951#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22952#[cfg_attr(
22953 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22954 assert_instr(ld3)
22955)]
22956#[cfg_attr(
22957 not(target_arch = "arm"),
22958 stable(feature = "neon_intrinsics", since = "1.59.0")
22959)]
22960#[cfg_attr(
22961 target_arch = "arm",
22962 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22963)]
22964pub unsafe fn vld3q_u16(a: *const u16) -> uint16x8x3_t {
22965 transmute(vld3q_s16(transmute(a)))
22966}
22967#[doc = "Load multiple 3-element structures to three registers"]
22968#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3_u32)"]
22969#[doc = "## Safety"]
22970#[doc = " * Neon intrinsic unsafe"]
22971#[inline(always)]
22972#[target_feature(enable = "neon")]
22973#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
22974#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld3))]
22975#[cfg_attr(
22976 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
22977 assert_instr(ld3)
22978)]
22979#[cfg_attr(
22980 not(target_arch = "arm"),
22981 stable(feature = "neon_intrinsics", since = "1.59.0")
22982)]
22983#[cfg_attr(
22984 target_arch = "arm",
22985 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
22986)]
22987pub unsafe fn vld3_u32(a: *const u32) -> uint32x2x3_t {
22988 transmute(vld3_s32(transmute(a)))
22989}
22990#[doc = "Load multiple 3-element structures to three registers"]
22991#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld3q_u32)"]
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(vld3))]
22998#[cfg_attr(
22999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23000 assert_instr(ld3)
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 vld3q_u32(a: *const u32) -> uint32x4x3_t {
23011 transmute(vld3q_s32(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_p8)"]
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_p8(a: *const p8) -> poly8x8x3_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_p8)"]
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_p8(a: *const p8) -> poly8x16x3_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_p16)"]
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_p16(a: *const p16) -> poly16x4x3_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_p16)"]
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_p16(a: *const p16) -> poly16x8x3_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/vld3q_lane_f32)"]
23107#[doc = "## Safety"]
23108#[doc = " * Neon intrinsic unsafe"]
23109#[inline(always)]
23110#[cfg(target_arch = "arm")]
23111#[target_feature(enable = "neon,v7")]
23112#[cfg_attr(test, assert_instr(vld3, LANE = 0))]
23113#[rustc_legacy_const_generics(2)]
23114#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23115pub unsafe fn vld3q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x3_t) -> float32x4x3_t {
23116 static_assert_uimm_bits!(LANE, 2);
23117 unsafe extern "unadjusted" {
23118 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld3lane.v4f32.p0")]
23119 fn _vld3q_lane_f32(
23120 ptr: *const i8,
23121 a: float32x4_t,
23122 b: float32x4_t,
23123 c: float32x4_t,
23124 n: i32,
23125 size: i32,
23126 ) -> float32x4x3_t;
23127 }
23128 _vld3q_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
23129}
23130#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
23131#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f16)"]
23132#[doc = "## Safety"]
23133#[doc = " * Neon intrinsic unsafe"]
23134#[inline(always)]
23135#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23136#[cfg(target_arch = "arm")]
23137#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23138#[target_feature(enable = "neon,fp16")]
23139#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23140#[cfg(not(target_arch = "arm64ec"))]
23141pub unsafe fn vld4_dup_f16(a: *const f16) -> float16x4x4_t {
23142 unsafe extern "unadjusted" {
23143 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4f16.p0")]
23144 fn _vld4_dup_f16(ptr: *const f16, size: i32) -> float16x4x4_t;
23145 }
23146 _vld4_dup_f16(a as _, 2)
23147}
23148#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
23149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f16)"]
23150#[doc = "## Safety"]
23151#[doc = " * Neon intrinsic unsafe"]
23152#[inline(always)]
23153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23154#[cfg(target_arch = "arm")]
23155#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23156#[target_feature(enable = "neon,fp16")]
23157#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23158#[cfg(not(target_arch = "arm64ec"))]
23159pub unsafe fn vld4q_dup_f16(a: *const f16) -> float16x8x4_t {
23160 unsafe extern "unadjusted" {
23161 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8f16.p0")]
23162 fn _vld4q_dup_f16(ptr: *const f16, size: i32) -> float16x8x4_t;
23163 }
23164 _vld4q_dup_f16(a as _, 2)
23165}
23166#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
23167#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f16)"]
23168#[doc = "## Safety"]
23169#[doc = " * Neon intrinsic unsafe"]
23170#[inline(always)]
23171#[cfg(not(target_arch = "arm"))]
23172#[cfg_attr(
23173 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23174 assert_instr(ld4r)
23175)]
23176#[target_feature(enable = "neon,fp16")]
23177#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23178#[cfg(not(target_arch = "arm64ec"))]
23179pub unsafe fn vld4_dup_f16(a: *const f16) -> float16x4x4_t {
23180 unsafe extern "unadjusted" {
23181 #[cfg_attr(
23182 any(target_arch = "aarch64", target_arch = "arm64ec"),
23183 link_name = "llvm.aarch64.neon.ld4r.v4f16.p0"
23184 )]
23185 fn _vld4_dup_f16(ptr: *const f16) -> float16x4x4_t;
23186 }
23187 _vld4_dup_f16(a as _)
23188}
23189#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
23190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f16)"]
23191#[doc = "## Safety"]
23192#[doc = " * Neon intrinsic unsafe"]
23193#[inline(always)]
23194#[cfg(not(target_arch = "arm"))]
23195#[cfg_attr(
23196 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23197 assert_instr(ld4r)
23198)]
23199#[target_feature(enable = "neon,fp16")]
23200#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
23201#[cfg(not(target_arch = "arm64ec"))]
23202pub unsafe fn vld4q_dup_f16(a: *const f16) -> float16x8x4_t {
23203 unsafe extern "unadjusted" {
23204 #[cfg_attr(
23205 any(target_arch = "aarch64", target_arch = "arm64ec"),
23206 link_name = "llvm.aarch64.neon.ld4r.v8f16.p0"
23207 )]
23208 fn _vld4q_dup_f16(ptr: *const f16) -> float16x8x4_t;
23209 }
23210 _vld4q_dup_f16(a as _)
23211}
23212#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f32)"]
23214#[doc = "## Safety"]
23215#[doc = " * Neon intrinsic unsafe"]
23216#[inline(always)]
23217#[cfg(target_arch = "arm")]
23218#[target_feature(enable = "neon,v7")]
23219#[cfg_attr(test, assert_instr(vld4))]
23220#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23221pub unsafe fn vld4_dup_f32(a: *const f32) -> float32x2x4_t {
23222 unsafe extern "unadjusted" {
23223 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v2f32.p0")]
23224 fn _vld4_dup_f32(ptr: *const i8, size: i32) -> float32x2x4_t;
23225 }
23226 _vld4_dup_f32(a as *const i8, 4)
23227}
23228#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23229#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f32)"]
23230#[doc = "## Safety"]
23231#[doc = " * Neon intrinsic unsafe"]
23232#[inline(always)]
23233#[cfg(target_arch = "arm")]
23234#[target_feature(enable = "neon,v7")]
23235#[cfg_attr(test, assert_instr(vld4))]
23236#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23237pub unsafe fn vld4q_dup_f32(a: *const f32) -> float32x4x4_t {
23238 unsafe extern "unadjusted" {
23239 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4f32.p0")]
23240 fn _vld4q_dup_f32(ptr: *const i8, size: i32) -> float32x4x4_t;
23241 }
23242 _vld4q_dup_f32(a as *const i8, 4)
23243}
23244#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s8)"]
23246#[doc = "## Safety"]
23247#[doc = " * Neon intrinsic unsafe"]
23248#[inline(always)]
23249#[cfg(target_arch = "arm")]
23250#[target_feature(enable = "neon,v7")]
23251#[cfg_attr(test, assert_instr(vld4))]
23252#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23253pub unsafe fn vld4_dup_s8(a: *const i8) -> int8x8x4_t {
23254 unsafe extern "unadjusted" {
23255 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8i8.p0")]
23256 fn _vld4_dup_s8(ptr: *const i8, size: i32) -> int8x8x4_t;
23257 }
23258 _vld4_dup_s8(a as *const i8, 1)
23259}
23260#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s8)"]
23262#[doc = "## Safety"]
23263#[doc = " * Neon intrinsic unsafe"]
23264#[inline(always)]
23265#[cfg(target_arch = "arm")]
23266#[target_feature(enable = "neon,v7")]
23267#[cfg_attr(test, assert_instr(vld4))]
23268#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23269pub unsafe fn vld4q_dup_s8(a: *const i8) -> int8x16x4_t {
23270 unsafe extern "unadjusted" {
23271 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v16i8.p0")]
23272 fn _vld4q_dup_s8(ptr: *const i8, size: i32) -> int8x16x4_t;
23273 }
23274 _vld4q_dup_s8(a as *const i8, 1)
23275}
23276#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23277#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s16)"]
23278#[doc = "## Safety"]
23279#[doc = " * Neon intrinsic unsafe"]
23280#[inline(always)]
23281#[cfg(target_arch = "arm")]
23282#[target_feature(enable = "neon,v7")]
23283#[cfg_attr(test, assert_instr(vld4))]
23284#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23285pub unsafe fn vld4_dup_s16(a: *const i16) -> int16x4x4_t {
23286 unsafe extern "unadjusted" {
23287 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4i16.p0")]
23288 fn _vld4_dup_s16(ptr: *const i8, size: i32) -> int16x4x4_t;
23289 }
23290 _vld4_dup_s16(a as *const i8, 2)
23291}
23292#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s16)"]
23294#[doc = "## Safety"]
23295#[doc = " * Neon intrinsic unsafe"]
23296#[inline(always)]
23297#[cfg(target_arch = "arm")]
23298#[target_feature(enable = "neon,v7")]
23299#[cfg_attr(test, assert_instr(vld4))]
23300#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23301pub unsafe fn vld4q_dup_s16(a: *const i16) -> int16x8x4_t {
23302 unsafe extern "unadjusted" {
23303 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v8i16.p0")]
23304 fn _vld4q_dup_s16(ptr: *const i8, size: i32) -> int16x8x4_t;
23305 }
23306 _vld4q_dup_s16(a as *const i8, 2)
23307}
23308#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s32)"]
23310#[doc = "## Safety"]
23311#[doc = " * Neon intrinsic unsafe"]
23312#[inline(always)]
23313#[cfg(target_arch = "arm")]
23314#[target_feature(enable = "neon,v7")]
23315#[cfg_attr(test, assert_instr(vld4))]
23316#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23317pub unsafe fn vld4_dup_s32(a: *const i32) -> int32x2x4_t {
23318 unsafe extern "unadjusted" {
23319 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v2i32.p0")]
23320 fn _vld4_dup_s32(ptr: *const i8, size: i32) -> int32x2x4_t;
23321 }
23322 _vld4_dup_s32(a as *const i8, 4)
23323}
23324#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s32)"]
23326#[doc = "## Safety"]
23327#[doc = " * Neon intrinsic unsafe"]
23328#[inline(always)]
23329#[cfg(target_arch = "arm")]
23330#[target_feature(enable = "neon,v7")]
23331#[cfg_attr(test, assert_instr(vld4))]
23332#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23333pub unsafe fn vld4q_dup_s32(a: *const i32) -> int32x4x4_t {
23334 unsafe extern "unadjusted" {
23335 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v4i32.p0")]
23336 fn _vld4q_dup_s32(ptr: *const i8, size: i32) -> int32x4x4_t;
23337 }
23338 _vld4q_dup_s32(a as *const i8, 4)
23339}
23340#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_f32)"]
23342#[doc = "## Safety"]
23343#[doc = " * Neon intrinsic unsafe"]
23344#[inline(always)]
23345#[target_feature(enable = "neon")]
23346#[cfg(not(target_arch = "arm"))]
23347#[cfg_attr(test, assert_instr(ld4r))]
23348#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23349pub unsafe fn vld4_dup_f32(a: *const f32) -> float32x2x4_t {
23350 unsafe extern "unadjusted" {
23351 #[cfg_attr(
23352 any(target_arch = "aarch64", target_arch = "arm64ec"),
23353 link_name = "llvm.aarch64.neon.ld4r.v2f32.p0.p0"
23354 )]
23355 fn _vld4_dup_f32(ptr: *const f32) -> float32x2x4_t;
23356 }
23357 _vld4_dup_f32(a as _)
23358}
23359#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_f32)"]
23361#[doc = "## Safety"]
23362#[doc = " * Neon intrinsic unsafe"]
23363#[inline(always)]
23364#[target_feature(enable = "neon")]
23365#[cfg(not(target_arch = "arm"))]
23366#[cfg_attr(test, assert_instr(ld4r))]
23367#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23368pub unsafe fn vld4q_dup_f32(a: *const f32) -> float32x4x4_t {
23369 unsafe extern "unadjusted" {
23370 #[cfg_attr(
23371 any(target_arch = "aarch64", target_arch = "arm64ec"),
23372 link_name = "llvm.aarch64.neon.ld4r.v4f32.p0.p0"
23373 )]
23374 fn _vld4q_dup_f32(ptr: *const f32) -> float32x4x4_t;
23375 }
23376 _vld4q_dup_f32(a as _)
23377}
23378#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s8)"]
23380#[doc = "## Safety"]
23381#[doc = " * Neon intrinsic unsafe"]
23382#[inline(always)]
23383#[target_feature(enable = "neon")]
23384#[cfg(not(target_arch = "arm"))]
23385#[cfg_attr(test, assert_instr(ld4r))]
23386#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23387pub unsafe fn vld4_dup_s8(a: *const i8) -> int8x8x4_t {
23388 unsafe extern "unadjusted" {
23389 #[cfg_attr(
23390 any(target_arch = "aarch64", target_arch = "arm64ec"),
23391 link_name = "llvm.aarch64.neon.ld4r.v8i8.p0.p0"
23392 )]
23393 fn _vld4_dup_s8(ptr: *const i8) -> int8x8x4_t;
23394 }
23395 _vld4_dup_s8(a as _)
23396}
23397#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s8)"]
23399#[doc = "## Safety"]
23400#[doc = " * Neon intrinsic unsafe"]
23401#[inline(always)]
23402#[target_feature(enable = "neon")]
23403#[cfg(not(target_arch = "arm"))]
23404#[cfg_attr(test, assert_instr(ld4r))]
23405#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23406pub unsafe fn vld4q_dup_s8(a: *const i8) -> int8x16x4_t {
23407 unsafe extern "unadjusted" {
23408 #[cfg_attr(
23409 any(target_arch = "aarch64", target_arch = "arm64ec"),
23410 link_name = "llvm.aarch64.neon.ld4r.v16i8.p0.p0"
23411 )]
23412 fn _vld4q_dup_s8(ptr: *const i8) -> int8x16x4_t;
23413 }
23414 _vld4q_dup_s8(a as _)
23415}
23416#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23417#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s16)"]
23418#[doc = "## Safety"]
23419#[doc = " * Neon intrinsic unsafe"]
23420#[inline(always)]
23421#[target_feature(enable = "neon")]
23422#[cfg(not(target_arch = "arm"))]
23423#[cfg_attr(test, assert_instr(ld4r))]
23424#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23425pub unsafe fn vld4_dup_s16(a: *const i16) -> int16x4x4_t {
23426 unsafe extern "unadjusted" {
23427 #[cfg_attr(
23428 any(target_arch = "aarch64", target_arch = "arm64ec"),
23429 link_name = "llvm.aarch64.neon.ld4r.v4i16.p0.p0"
23430 )]
23431 fn _vld4_dup_s16(ptr: *const i16) -> int16x4x4_t;
23432 }
23433 _vld4_dup_s16(a as _)
23434}
23435#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23436#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s16)"]
23437#[doc = "## Safety"]
23438#[doc = " * Neon intrinsic unsafe"]
23439#[inline(always)]
23440#[target_feature(enable = "neon")]
23441#[cfg(not(target_arch = "arm"))]
23442#[cfg_attr(test, assert_instr(ld4r))]
23443#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23444pub unsafe fn vld4q_dup_s16(a: *const i16) -> int16x8x4_t {
23445 unsafe extern "unadjusted" {
23446 #[cfg_attr(
23447 any(target_arch = "aarch64", target_arch = "arm64ec"),
23448 link_name = "llvm.aarch64.neon.ld4r.v8i16.p0.p0"
23449 )]
23450 fn _vld4q_dup_s16(ptr: *const i16) -> int16x8x4_t;
23451 }
23452 _vld4q_dup_s16(a as _)
23453}
23454#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s32)"]
23456#[doc = "## Safety"]
23457#[doc = " * Neon intrinsic unsafe"]
23458#[inline(always)]
23459#[target_feature(enable = "neon")]
23460#[cfg(not(target_arch = "arm"))]
23461#[cfg_attr(test, assert_instr(ld4r))]
23462#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23463pub unsafe fn vld4_dup_s32(a: *const i32) -> int32x2x4_t {
23464 unsafe extern "unadjusted" {
23465 #[cfg_attr(
23466 any(target_arch = "aarch64", target_arch = "arm64ec"),
23467 link_name = "llvm.aarch64.neon.ld4r.v2i32.p0.p0"
23468 )]
23469 fn _vld4_dup_s32(ptr: *const i32) -> int32x2x4_t;
23470 }
23471 _vld4_dup_s32(a as _)
23472}
23473#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_s32)"]
23475#[doc = "## Safety"]
23476#[doc = " * Neon intrinsic unsafe"]
23477#[inline(always)]
23478#[target_feature(enable = "neon")]
23479#[cfg(not(target_arch = "arm"))]
23480#[cfg_attr(test, assert_instr(ld4r))]
23481#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23482pub unsafe fn vld4q_dup_s32(a: *const i32) -> int32x4x4_t {
23483 unsafe extern "unadjusted" {
23484 #[cfg_attr(
23485 any(target_arch = "aarch64", target_arch = "arm64ec"),
23486 link_name = "llvm.aarch64.neon.ld4r.v4i32.p0.p0"
23487 )]
23488 fn _vld4q_dup_s32(ptr: *const i32) -> int32x4x4_t;
23489 }
23490 _vld4q_dup_s32(a as _)
23491}
23492#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s64)"]
23494#[doc = "## Safety"]
23495#[doc = " * Neon intrinsic unsafe"]
23496#[inline(always)]
23497#[target_feature(enable = "neon")]
23498#[cfg(not(target_arch = "arm"))]
23499#[cfg_attr(test, assert_instr(ld4r))]
23500#[stable(feature = "neon_intrinsics", since = "1.59.0")]
23501pub unsafe fn vld4_dup_s64(a: *const i64) -> int64x1x4_t {
23502 unsafe extern "unadjusted" {
23503 #[cfg_attr(
23504 any(target_arch = "aarch64", target_arch = "arm64ec"),
23505 link_name = "llvm.aarch64.neon.ld4r.v1i64.p0.p0"
23506 )]
23507 fn _vld4_dup_s64(ptr: *const i64) -> int64x1x4_t;
23508 }
23509 _vld4_dup_s64(a as _)
23510}
23511#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23512#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p64)"]
23513#[doc = "## Safety"]
23514#[doc = " * Neon intrinsic unsafe"]
23515#[inline(always)]
23516#[target_feature(enable = "neon,aes")]
23517#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
23518#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
23519#[cfg_attr(
23520 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23521 assert_instr(ld4r)
23522)]
23523#[cfg_attr(
23524 not(target_arch = "arm"),
23525 stable(feature = "neon_intrinsics", since = "1.59.0")
23526)]
23527#[cfg_attr(
23528 target_arch = "arm",
23529 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23530)]
23531pub unsafe fn vld4_dup_p64(a: *const p64) -> poly64x1x4_t {
23532 transmute(vld4_dup_s64(transmute(a)))
23533}
23534#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23535#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_s64)"]
23536#[doc = "## Safety"]
23537#[doc = " * Neon intrinsic unsafe"]
23538#[inline(always)]
23539#[cfg(target_arch = "arm")]
23540#[target_feature(enable = "neon,v7")]
23541#[cfg_attr(test, assert_instr(nop))]
23542#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
23543pub unsafe fn vld4_dup_s64(a: *const i64) -> int64x1x4_t {
23544 unsafe extern "unadjusted" {
23545 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4dup.v1i64.p0")]
23546 fn _vld4_dup_s64(ptr: *const i8, size: i32) -> int64x1x4_t;
23547 }
23548 _vld4_dup_s64(a as *const i8, 8)
23549}
23550#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23551#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u64)"]
23552#[doc = "## Safety"]
23553#[doc = " * Neon intrinsic unsafe"]
23554#[inline(always)]
23555#[target_feature(enable = "neon")]
23556#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23557#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
23558#[cfg_attr(
23559 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23560 assert_instr(ld4r)
23561)]
23562#[cfg_attr(
23563 not(target_arch = "arm"),
23564 stable(feature = "neon_intrinsics", since = "1.59.0")
23565)]
23566#[cfg_attr(
23567 target_arch = "arm",
23568 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23569)]
23570pub unsafe fn vld4_dup_u64(a: *const u64) -> uint64x1x4_t {
23571 transmute(vld4_dup_s64(transmute(a)))
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/vld4_dup_u8)"]
23575#[doc = "## Safety"]
23576#[doc = " * Neon intrinsic unsafe"]
23577#[inline(always)]
23578#[cfg(target_endian = "little")]
23579#[target_feature(enable = "neon")]
23580#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23581#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23582#[cfg_attr(
23583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23584 assert_instr(ld4r)
23585)]
23586#[cfg_attr(
23587 not(target_arch = "arm"),
23588 stable(feature = "neon_intrinsics", since = "1.59.0")
23589)]
23590#[cfg_attr(
23591 target_arch = "arm",
23592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23593)]
23594pub unsafe fn vld4_dup_u8(a: *const u8) -> uint8x8x4_t {
23595 transmute(vld4_dup_s8(transmute(a)))
23596}
23597#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23598#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u8)"]
23599#[doc = "## Safety"]
23600#[doc = " * Neon intrinsic unsafe"]
23601#[inline(always)]
23602#[cfg(target_endian = "big")]
23603#[target_feature(enable = "neon")]
23604#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23605#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23606#[cfg_attr(
23607 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23608 assert_instr(ld4r)
23609)]
23610#[cfg_attr(
23611 not(target_arch = "arm"),
23612 stable(feature = "neon_intrinsics", since = "1.59.0")
23613)]
23614#[cfg_attr(
23615 target_arch = "arm",
23616 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23617)]
23618pub unsafe fn vld4_dup_u8(a: *const u8) -> uint8x8x4_t {
23619 let mut ret_val: uint8x8x4_t = transmute(vld4_dup_s8(transmute(a)));
23620 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23621 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23622 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23623 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
23624 ret_val
23625}
23626#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23627#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u8)"]
23628#[doc = "## Safety"]
23629#[doc = " * Neon intrinsic unsafe"]
23630#[inline(always)]
23631#[cfg(target_endian = "little")]
23632#[target_feature(enable = "neon")]
23633#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23634#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23635#[cfg_attr(
23636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23637 assert_instr(ld4r)
23638)]
23639#[cfg_attr(
23640 not(target_arch = "arm"),
23641 stable(feature = "neon_intrinsics", since = "1.59.0")
23642)]
23643#[cfg_attr(
23644 target_arch = "arm",
23645 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23646)]
23647pub unsafe fn vld4q_dup_u8(a: *const u8) -> uint8x16x4_t {
23648 transmute(vld4q_dup_s8(transmute(a)))
23649}
23650#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u8)"]
23652#[doc = "## Safety"]
23653#[doc = " * Neon intrinsic unsafe"]
23654#[inline(always)]
23655#[cfg(target_endian = "big")]
23656#[target_feature(enable = "neon")]
23657#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23658#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23659#[cfg_attr(
23660 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23661 assert_instr(ld4r)
23662)]
23663#[cfg_attr(
23664 not(target_arch = "arm"),
23665 stable(feature = "neon_intrinsics", since = "1.59.0")
23666)]
23667#[cfg_attr(
23668 target_arch = "arm",
23669 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23670)]
23671pub unsafe fn vld4q_dup_u8(a: *const u8) -> uint8x16x4_t {
23672 let mut ret_val: uint8x16x4_t = transmute(vld4q_dup_s8(transmute(a)));
23673 ret_val.0 = unsafe {
23674 simd_shuffle!(
23675 ret_val.0,
23676 ret_val.0,
23677 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23678 )
23679 };
23680 ret_val.1 = unsafe {
23681 simd_shuffle!(
23682 ret_val.1,
23683 ret_val.1,
23684 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23685 )
23686 };
23687 ret_val.2 = unsafe {
23688 simd_shuffle!(
23689 ret_val.2,
23690 ret_val.2,
23691 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23692 )
23693 };
23694 ret_val.3 = unsafe {
23695 simd_shuffle!(
23696 ret_val.3,
23697 ret_val.3,
23698 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
23699 )
23700 };
23701 ret_val
23702}
23703#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u16)"]
23705#[doc = "## Safety"]
23706#[doc = " * Neon intrinsic unsafe"]
23707#[inline(always)]
23708#[cfg(target_endian = "little")]
23709#[target_feature(enable = "neon")]
23710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23711#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23712#[cfg_attr(
23713 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23714 assert_instr(ld4r)
23715)]
23716#[cfg_attr(
23717 not(target_arch = "arm"),
23718 stable(feature = "neon_intrinsics", since = "1.59.0")
23719)]
23720#[cfg_attr(
23721 target_arch = "arm",
23722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23723)]
23724pub unsafe fn vld4_dup_u16(a: *const u16) -> uint16x4x4_t {
23725 transmute(vld4_dup_s16(transmute(a)))
23726}
23727#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23728#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u16)"]
23729#[doc = "## Safety"]
23730#[doc = " * Neon intrinsic unsafe"]
23731#[inline(always)]
23732#[cfg(target_endian = "big")]
23733#[target_feature(enable = "neon")]
23734#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23735#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23736#[cfg_attr(
23737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23738 assert_instr(ld4r)
23739)]
23740#[cfg_attr(
23741 not(target_arch = "arm"),
23742 stable(feature = "neon_intrinsics", since = "1.59.0")
23743)]
23744#[cfg_attr(
23745 target_arch = "arm",
23746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23747)]
23748pub unsafe fn vld4_dup_u16(a: *const u16) -> uint16x4x4_t {
23749 let mut ret_val: uint16x4x4_t = transmute(vld4_dup_s16(transmute(a)));
23750 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
23751 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
23752 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
23753 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
23754 ret_val
23755}
23756#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23757#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u16)"]
23758#[doc = "## Safety"]
23759#[doc = " * Neon intrinsic unsafe"]
23760#[inline(always)]
23761#[cfg(target_endian = "little")]
23762#[target_feature(enable = "neon")]
23763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23764#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23765#[cfg_attr(
23766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23767 assert_instr(ld4r)
23768)]
23769#[cfg_attr(
23770 not(target_arch = "arm"),
23771 stable(feature = "neon_intrinsics", since = "1.59.0")
23772)]
23773#[cfg_attr(
23774 target_arch = "arm",
23775 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23776)]
23777pub unsafe fn vld4q_dup_u16(a: *const u16) -> uint16x8x4_t {
23778 transmute(vld4q_dup_s16(transmute(a)))
23779}
23780#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u16)"]
23782#[doc = "## Safety"]
23783#[doc = " * Neon intrinsic unsafe"]
23784#[inline(always)]
23785#[cfg(target_endian = "big")]
23786#[target_feature(enable = "neon")]
23787#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23788#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23789#[cfg_attr(
23790 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23791 assert_instr(ld4r)
23792)]
23793#[cfg_attr(
23794 not(target_arch = "arm"),
23795 stable(feature = "neon_intrinsics", since = "1.59.0")
23796)]
23797#[cfg_attr(
23798 target_arch = "arm",
23799 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23800)]
23801pub unsafe fn vld4q_dup_u16(a: *const u16) -> uint16x8x4_t {
23802 let mut ret_val: uint16x8x4_t = transmute(vld4q_dup_s16(transmute(a)));
23803 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23804 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23805 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23806 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
23807 ret_val
23808}
23809#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u32)"]
23811#[doc = "## Safety"]
23812#[doc = " * Neon intrinsic unsafe"]
23813#[inline(always)]
23814#[cfg(target_endian = "little")]
23815#[target_feature(enable = "neon")]
23816#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23817#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23818#[cfg_attr(
23819 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23820 assert_instr(ld4r)
23821)]
23822#[cfg_attr(
23823 not(target_arch = "arm"),
23824 stable(feature = "neon_intrinsics", since = "1.59.0")
23825)]
23826#[cfg_attr(
23827 target_arch = "arm",
23828 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23829)]
23830pub unsafe fn vld4_dup_u32(a: *const u32) -> uint32x2x4_t {
23831 transmute(vld4_dup_s32(transmute(a)))
23832}
23833#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23834#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_u32)"]
23835#[doc = "## Safety"]
23836#[doc = " * Neon intrinsic unsafe"]
23837#[inline(always)]
23838#[cfg(target_endian = "big")]
23839#[target_feature(enable = "neon")]
23840#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23841#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23842#[cfg_attr(
23843 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23844 assert_instr(ld4r)
23845)]
23846#[cfg_attr(
23847 not(target_arch = "arm"),
23848 stable(feature = "neon_intrinsics", since = "1.59.0")
23849)]
23850#[cfg_attr(
23851 target_arch = "arm",
23852 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23853)]
23854pub unsafe fn vld4_dup_u32(a: *const u32) -> uint32x2x4_t {
23855 let mut ret_val: uint32x2x4_t = transmute(vld4_dup_s32(transmute(a)));
23856 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [1, 0]) };
23857 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [1, 0]) };
23858 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [1, 0]) };
23859 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [1, 0]) };
23860 ret_val
23861}
23862#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u32)"]
23864#[doc = "## Safety"]
23865#[doc = " * Neon intrinsic unsafe"]
23866#[inline(always)]
23867#[cfg(target_endian = "little")]
23868#[target_feature(enable = "neon")]
23869#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23870#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23871#[cfg_attr(
23872 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23873 assert_instr(ld4r)
23874)]
23875#[cfg_attr(
23876 not(target_arch = "arm"),
23877 stable(feature = "neon_intrinsics", since = "1.59.0")
23878)]
23879#[cfg_attr(
23880 target_arch = "arm",
23881 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23882)]
23883pub unsafe fn vld4q_dup_u32(a: *const u32) -> uint32x4x4_t {
23884 transmute(vld4q_dup_s32(transmute(a)))
23885}
23886#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_u32)"]
23888#[doc = "## Safety"]
23889#[doc = " * Neon intrinsic unsafe"]
23890#[inline(always)]
23891#[cfg(target_endian = "big")]
23892#[target_feature(enable = "neon")]
23893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23894#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23895#[cfg_attr(
23896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23897 assert_instr(ld4r)
23898)]
23899#[cfg_attr(
23900 not(target_arch = "arm"),
23901 stable(feature = "neon_intrinsics", since = "1.59.0")
23902)]
23903#[cfg_attr(
23904 target_arch = "arm",
23905 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23906)]
23907pub unsafe fn vld4q_dup_u32(a: *const u32) -> uint32x4x4_t {
23908 let mut ret_val: uint32x4x4_t = transmute(vld4q_dup_s32(transmute(a)));
23909 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
23910 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
23911 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
23912 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
23913 ret_val
23914}
23915#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p8)"]
23917#[doc = "## Safety"]
23918#[doc = " * Neon intrinsic unsafe"]
23919#[inline(always)]
23920#[cfg(target_endian = "little")]
23921#[target_feature(enable = "neon")]
23922#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23923#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23924#[cfg_attr(
23925 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23926 assert_instr(ld4r)
23927)]
23928#[cfg_attr(
23929 not(target_arch = "arm"),
23930 stable(feature = "neon_intrinsics", since = "1.59.0")
23931)]
23932#[cfg_attr(
23933 target_arch = "arm",
23934 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23935)]
23936pub unsafe fn vld4_dup_p8(a: *const p8) -> poly8x8x4_t {
23937 transmute(vld4_dup_s8(transmute(a)))
23938}
23939#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p8)"]
23941#[doc = "## Safety"]
23942#[doc = " * Neon intrinsic unsafe"]
23943#[inline(always)]
23944#[cfg(target_endian = "big")]
23945#[target_feature(enable = "neon")]
23946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23947#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23948#[cfg_attr(
23949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23950 assert_instr(ld4r)
23951)]
23952#[cfg_attr(
23953 not(target_arch = "arm"),
23954 stable(feature = "neon_intrinsics", since = "1.59.0")
23955)]
23956#[cfg_attr(
23957 target_arch = "arm",
23958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23959)]
23960pub unsafe fn vld4_dup_p8(a: *const p8) -> poly8x8x4_t {
23961 let mut ret_val: poly8x8x4_t = transmute(vld4_dup_s8(transmute(a)));
23962 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
23963 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
23964 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
23965 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
23966 ret_val
23967}
23968#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p8)"]
23970#[doc = "## Safety"]
23971#[doc = " * Neon intrinsic unsafe"]
23972#[inline(always)]
23973#[cfg(target_endian = "little")]
23974#[target_feature(enable = "neon")]
23975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
23976#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
23977#[cfg_attr(
23978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
23979 assert_instr(ld4r)
23980)]
23981#[cfg_attr(
23982 not(target_arch = "arm"),
23983 stable(feature = "neon_intrinsics", since = "1.59.0")
23984)]
23985#[cfg_attr(
23986 target_arch = "arm",
23987 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
23988)]
23989pub unsafe fn vld4q_dup_p8(a: *const p8) -> poly8x16x4_t {
23990 transmute(vld4q_dup_s8(transmute(a)))
23991}
23992#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
23993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p8)"]
23994#[doc = "## Safety"]
23995#[doc = " * Neon intrinsic unsafe"]
23996#[inline(always)]
23997#[cfg(target_endian = "big")]
23998#[target_feature(enable = "neon")]
23999#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24000#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24001#[cfg_attr(
24002 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24003 assert_instr(ld4r)
24004)]
24005#[cfg_attr(
24006 not(target_arch = "arm"),
24007 stable(feature = "neon_intrinsics", since = "1.59.0")
24008)]
24009#[cfg_attr(
24010 target_arch = "arm",
24011 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24012)]
24013pub unsafe fn vld4q_dup_p8(a: *const p8) -> poly8x16x4_t {
24014 let mut ret_val: poly8x16x4_t = transmute(vld4q_dup_s8(transmute(a)));
24015 ret_val.0 = unsafe {
24016 simd_shuffle!(
24017 ret_val.0,
24018 ret_val.0,
24019 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24020 )
24021 };
24022 ret_val.1 = unsafe {
24023 simd_shuffle!(
24024 ret_val.1,
24025 ret_val.1,
24026 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24027 )
24028 };
24029 ret_val.2 = unsafe {
24030 simd_shuffle!(
24031 ret_val.2,
24032 ret_val.2,
24033 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24034 )
24035 };
24036 ret_val.3 = unsafe {
24037 simd_shuffle!(
24038 ret_val.3,
24039 ret_val.3,
24040 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
24041 )
24042 };
24043 ret_val
24044}
24045#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p16)"]
24047#[doc = "## Safety"]
24048#[doc = " * Neon intrinsic unsafe"]
24049#[inline(always)]
24050#[cfg(target_endian = "little")]
24051#[target_feature(enable = "neon")]
24052#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24053#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24054#[cfg_attr(
24055 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24056 assert_instr(ld4r)
24057)]
24058#[cfg_attr(
24059 not(target_arch = "arm"),
24060 stable(feature = "neon_intrinsics", since = "1.59.0")
24061)]
24062#[cfg_attr(
24063 target_arch = "arm",
24064 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24065)]
24066pub unsafe fn vld4_dup_p16(a: *const p16) -> poly16x4x4_t {
24067 transmute(vld4_dup_s16(transmute(a)))
24068}
24069#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_dup_p16)"]
24071#[doc = "## Safety"]
24072#[doc = " * Neon intrinsic unsafe"]
24073#[inline(always)]
24074#[cfg(target_endian = "big")]
24075#[target_feature(enable = "neon")]
24076#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24077#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24078#[cfg_attr(
24079 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24080 assert_instr(ld4r)
24081)]
24082#[cfg_attr(
24083 not(target_arch = "arm"),
24084 stable(feature = "neon_intrinsics", since = "1.59.0")
24085)]
24086#[cfg_attr(
24087 target_arch = "arm",
24088 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24089)]
24090pub unsafe fn vld4_dup_p16(a: *const p16) -> poly16x4x4_t {
24091 let mut ret_val: poly16x4x4_t = transmute(vld4_dup_s16(transmute(a)));
24092 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [3, 2, 1, 0]) };
24093 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [3, 2, 1, 0]) };
24094 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [3, 2, 1, 0]) };
24095 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [3, 2, 1, 0]) };
24096 ret_val
24097}
24098#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p16)"]
24100#[doc = "## Safety"]
24101#[doc = " * Neon intrinsic unsafe"]
24102#[inline(always)]
24103#[cfg(target_endian = "little")]
24104#[target_feature(enable = "neon")]
24105#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24106#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24107#[cfg_attr(
24108 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24109 assert_instr(ld4r)
24110)]
24111#[cfg_attr(
24112 not(target_arch = "arm"),
24113 stable(feature = "neon_intrinsics", since = "1.59.0")
24114)]
24115#[cfg_attr(
24116 target_arch = "arm",
24117 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24118)]
24119pub unsafe fn vld4q_dup_p16(a: *const p16) -> poly16x8x4_t {
24120 transmute(vld4q_dup_s16(transmute(a)))
24121}
24122#[doc = "Load single 4-element structure and replicate to all lanes of four registers"]
24123#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_dup_p16)"]
24124#[doc = "## Safety"]
24125#[doc = " * Neon intrinsic unsafe"]
24126#[inline(always)]
24127#[cfg(target_endian = "big")]
24128#[target_feature(enable = "neon")]
24129#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24130#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24131#[cfg_attr(
24132 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24133 assert_instr(ld4r)
24134)]
24135#[cfg_attr(
24136 not(target_arch = "arm"),
24137 stable(feature = "neon_intrinsics", since = "1.59.0")
24138)]
24139#[cfg_attr(
24140 target_arch = "arm",
24141 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24142)]
24143pub unsafe fn vld4q_dup_p16(a: *const p16) -> poly16x8x4_t {
24144 let mut ret_val: poly16x8x4_t = transmute(vld4q_dup_s16(transmute(a)));
24145 ret_val.0 = unsafe { simd_shuffle!(ret_val.0, ret_val.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
24146 ret_val.1 = unsafe { simd_shuffle!(ret_val.1, ret_val.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
24147 ret_val.2 = unsafe { simd_shuffle!(ret_val.2, ret_val.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
24148 ret_val.3 = unsafe { simd_shuffle!(ret_val.3, ret_val.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
24149 ret_val
24150}
24151#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f16)"]
24153#[doc = "## Safety"]
24154#[doc = " * Neon intrinsic unsafe"]
24155#[inline(always)]
24156#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24157#[cfg(target_arch = "arm")]
24158#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24159#[target_feature(enable = "neon,fp16")]
24160#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24161#[cfg(not(target_arch = "arm64ec"))]
24162pub unsafe fn vld4_f16(a: *const f16) -> float16x4x4_t {
24163 unsafe extern "unadjusted" {
24164 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4f16.p0")]
24165 fn _vld4_f16(ptr: *const f16, size: i32) -> float16x4x4_t;
24166 }
24167 _vld4_f16(a as _, 2)
24168}
24169#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f16)"]
24171#[doc = "## Safety"]
24172#[doc = " * Neon intrinsic unsafe"]
24173#[inline(always)]
24174#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24175#[cfg(target_arch = "arm")]
24176#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
24177#[target_feature(enable = "neon,fp16")]
24178#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24179#[cfg(not(target_arch = "arm64ec"))]
24180pub unsafe fn vld4q_f16(a: *const f16) -> float16x8x4_t {
24181 unsafe extern "unadjusted" {
24182 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8f16.p0")]
24183 fn _vld4q_f16(ptr: *const f16, size: i32) -> float16x8x4_t;
24184 }
24185 _vld4q_f16(a as _, 2)
24186}
24187#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24188#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f16)"]
24189#[doc = "## Safety"]
24190#[doc = " * Neon intrinsic unsafe"]
24191#[inline(always)]
24192#[cfg(not(target_arch = "arm"))]
24193#[cfg_attr(
24194 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24195 assert_instr(ld4)
24196)]
24197#[target_feature(enable = "neon,fp16")]
24198#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24199#[cfg(not(target_arch = "arm64ec"))]
24200pub unsafe fn vld4_f16(a: *const f16) -> float16x4x4_t {
24201 crate::core_arch::macros::deinterleaving_load!(f16, 4, 4, a)
24202}
24203#[doc = "Load single 4-element structure and replicate to all lanes of two registers"]
24204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f16)"]
24205#[doc = "## Safety"]
24206#[doc = " * Neon intrinsic unsafe"]
24207#[inline(always)]
24208#[cfg(not(target_arch = "arm"))]
24209#[cfg_attr(
24210 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24211 assert_instr(ld4)
24212)]
24213#[target_feature(enable = "neon,fp16")]
24214#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24215#[cfg(not(target_arch = "arm64ec"))]
24216pub unsafe fn vld4q_f16(a: *const f16) -> float16x8x4_t {
24217 crate::core_arch::macros::deinterleaving_load!(f16, 8, 4, a)
24218}
24219#[doc = "Load multiple 4-element structures to four registers"]
24220#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f32)"]
24221#[doc = "## Safety"]
24222#[doc = " * Neon intrinsic unsafe"]
24223#[inline(always)]
24224#[target_feature(enable = "neon")]
24225#[cfg(not(target_arch = "arm"))]
24226#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24227#[cfg_attr(test, assert_instr(ld4))]
24228pub unsafe fn vld4_f32(a: *const f32) -> float32x2x4_t {
24229 crate::core_arch::macros::deinterleaving_load!(f32, 2, 4, a)
24230}
24231#[doc = "Load multiple 4-element structures to four registers"]
24232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f32)"]
24233#[doc = "## Safety"]
24234#[doc = " * Neon intrinsic unsafe"]
24235#[inline(always)]
24236#[target_feature(enable = "neon")]
24237#[cfg(not(target_arch = "arm"))]
24238#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24239#[cfg_attr(test, assert_instr(ld4))]
24240pub unsafe fn vld4q_f32(a: *const f32) -> float32x4x4_t {
24241 crate::core_arch::macros::deinterleaving_load!(f32, 4, 4, a)
24242}
24243#[doc = "Load multiple 4-element structures to four registers"]
24244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s8)"]
24245#[doc = "## Safety"]
24246#[doc = " * Neon intrinsic unsafe"]
24247#[inline(always)]
24248#[target_feature(enable = "neon")]
24249#[cfg(not(target_arch = "arm"))]
24250#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24251#[cfg_attr(test, assert_instr(ld4))]
24252pub unsafe fn vld4_s8(a: *const i8) -> int8x8x4_t {
24253 crate::core_arch::macros::deinterleaving_load!(i8, 8, 4, a)
24254}
24255#[doc = "Load multiple 4-element structures to four registers"]
24256#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s8)"]
24257#[doc = "## Safety"]
24258#[doc = " * Neon intrinsic unsafe"]
24259#[inline(always)]
24260#[target_feature(enable = "neon")]
24261#[cfg(not(target_arch = "arm"))]
24262#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24263#[cfg_attr(test, assert_instr(ld4))]
24264pub unsafe fn vld4q_s8(a: *const i8) -> int8x16x4_t {
24265 crate::core_arch::macros::deinterleaving_load!(i8, 16, 4, a)
24266}
24267#[doc = "Load multiple 4-element structures to four registers"]
24268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s16)"]
24269#[doc = "## Safety"]
24270#[doc = " * Neon intrinsic unsafe"]
24271#[inline(always)]
24272#[target_feature(enable = "neon")]
24273#[cfg(not(target_arch = "arm"))]
24274#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24275#[cfg_attr(test, assert_instr(ld4))]
24276pub unsafe fn vld4_s16(a: *const i16) -> int16x4x4_t {
24277 crate::core_arch::macros::deinterleaving_load!(i16, 4, 4, a)
24278}
24279#[doc = "Load multiple 4-element structures to four registers"]
24280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s16)"]
24281#[doc = "## Safety"]
24282#[doc = " * Neon intrinsic unsafe"]
24283#[inline(always)]
24284#[target_feature(enable = "neon")]
24285#[cfg(not(target_arch = "arm"))]
24286#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24287#[cfg_attr(test, assert_instr(ld4))]
24288pub unsafe fn vld4q_s16(a: *const i16) -> int16x8x4_t {
24289 crate::core_arch::macros::deinterleaving_load!(i16, 8, 4, a)
24290}
24291#[doc = "Load multiple 4-element structures to four registers"]
24292#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s32)"]
24293#[doc = "## Safety"]
24294#[doc = " * Neon intrinsic unsafe"]
24295#[inline(always)]
24296#[target_feature(enable = "neon")]
24297#[cfg(not(target_arch = "arm"))]
24298#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24299#[cfg_attr(test, assert_instr(ld4))]
24300pub unsafe fn vld4_s32(a: *const i32) -> int32x2x4_t {
24301 crate::core_arch::macros::deinterleaving_load!(i32, 2, 4, a)
24302}
24303#[doc = "Load multiple 4-element structures to four registers"]
24304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s32)"]
24305#[doc = "## Safety"]
24306#[doc = " * Neon intrinsic unsafe"]
24307#[inline(always)]
24308#[target_feature(enable = "neon")]
24309#[cfg(not(target_arch = "arm"))]
24310#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24311#[cfg_attr(test, assert_instr(ld4))]
24312pub unsafe fn vld4q_s32(a: *const i32) -> int32x4x4_t {
24313 crate::core_arch::macros::deinterleaving_load!(i32, 4, 4, a)
24314}
24315#[doc = "Load multiple 4-element structures to four registers"]
24316#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_f32)"]
24317#[doc = "## Safety"]
24318#[doc = " * Neon intrinsic unsafe"]
24319#[inline(always)]
24320#[target_feature(enable = "neon,v7")]
24321#[cfg(target_arch = "arm")]
24322#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24323#[cfg_attr(test, assert_instr(vld4))]
24324pub unsafe fn vld4_f32(a: *const f32) -> float32x2x4_t {
24325 unsafe extern "unadjusted" {
24326 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v2f32.p0")]
24327 fn _vld4_f32(ptr: *const i8, size: i32) -> float32x2x4_t;
24328 }
24329 _vld4_f32(a as *const i8, 4)
24330}
24331#[doc = "Load multiple 4-element structures to four registers"]
24332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_f32)"]
24333#[doc = "## Safety"]
24334#[doc = " * Neon intrinsic unsafe"]
24335#[inline(always)]
24336#[target_feature(enable = "neon,v7")]
24337#[cfg(target_arch = "arm")]
24338#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24339#[cfg_attr(test, assert_instr(vld4))]
24340pub unsafe fn vld4q_f32(a: *const f32) -> float32x4x4_t {
24341 unsafe extern "unadjusted" {
24342 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4f32.p0")]
24343 fn _vld4q_f32(ptr: *const i8, size: i32) -> float32x4x4_t;
24344 }
24345 _vld4q_f32(a as *const i8, 4)
24346}
24347#[doc = "Load multiple 4-element structures to four registers"]
24348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s8)"]
24349#[doc = "## Safety"]
24350#[doc = " * Neon intrinsic unsafe"]
24351#[inline(always)]
24352#[target_feature(enable = "neon,v7")]
24353#[cfg(target_arch = "arm")]
24354#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24355#[cfg_attr(test, assert_instr(vld4))]
24356pub unsafe fn vld4_s8(a: *const i8) -> int8x8x4_t {
24357 unsafe extern "unadjusted" {
24358 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8i8.p0")]
24359 fn _vld4_s8(ptr: *const i8, size: i32) -> int8x8x4_t;
24360 }
24361 _vld4_s8(a as *const i8, 1)
24362}
24363#[doc = "Load multiple 4-element structures to four registers"]
24364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s8)"]
24365#[doc = "## Safety"]
24366#[doc = " * Neon intrinsic unsafe"]
24367#[inline(always)]
24368#[target_feature(enable = "neon,v7")]
24369#[cfg(target_arch = "arm")]
24370#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24371#[cfg_attr(test, assert_instr(vld4))]
24372pub unsafe fn vld4q_s8(a: *const i8) -> int8x16x4_t {
24373 unsafe extern "unadjusted" {
24374 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v16i8.p0")]
24375 fn _vld4q_s8(ptr: *const i8, size: i32) -> int8x16x4_t;
24376 }
24377 _vld4q_s8(a as *const i8, 1)
24378}
24379#[doc = "Load multiple 4-element structures to four registers"]
24380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s16)"]
24381#[doc = "## Safety"]
24382#[doc = " * Neon intrinsic unsafe"]
24383#[inline(always)]
24384#[target_feature(enable = "neon,v7")]
24385#[cfg(target_arch = "arm")]
24386#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24387#[cfg_attr(test, assert_instr(vld4))]
24388pub unsafe fn vld4_s16(a: *const i16) -> int16x4x4_t {
24389 unsafe extern "unadjusted" {
24390 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4i16.p0")]
24391 fn _vld4_s16(ptr: *const i8, size: i32) -> int16x4x4_t;
24392 }
24393 _vld4_s16(a as *const i8, 2)
24394}
24395#[doc = "Load multiple 4-element structures to four registers"]
24396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s16)"]
24397#[doc = "## Safety"]
24398#[doc = " * Neon intrinsic unsafe"]
24399#[inline(always)]
24400#[target_feature(enable = "neon,v7")]
24401#[cfg(target_arch = "arm")]
24402#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24403#[cfg_attr(test, assert_instr(vld4))]
24404pub unsafe fn vld4q_s16(a: *const i16) -> int16x8x4_t {
24405 unsafe extern "unadjusted" {
24406 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v8i16.p0")]
24407 fn _vld4q_s16(ptr: *const i8, size: i32) -> int16x8x4_t;
24408 }
24409 _vld4q_s16(a as *const i8, 2)
24410}
24411#[doc = "Load multiple 4-element structures to four registers"]
24412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s32)"]
24413#[doc = "## Safety"]
24414#[doc = " * Neon intrinsic unsafe"]
24415#[inline(always)]
24416#[target_feature(enable = "neon,v7")]
24417#[cfg(target_arch = "arm")]
24418#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24419#[cfg_attr(test, assert_instr(vld4))]
24420pub unsafe fn vld4_s32(a: *const i32) -> int32x2x4_t {
24421 unsafe extern "unadjusted" {
24422 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v2i32.p0")]
24423 fn _vld4_s32(ptr: *const i8, size: i32) -> int32x2x4_t;
24424 }
24425 _vld4_s32(a as *const i8, 4)
24426}
24427#[doc = "Load multiple 4-element structures to four registers"]
24428#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_s32)"]
24429#[doc = "## Safety"]
24430#[doc = " * Neon intrinsic unsafe"]
24431#[inline(always)]
24432#[target_feature(enable = "neon,v7")]
24433#[cfg(target_arch = "arm")]
24434#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24435#[cfg_attr(test, assert_instr(vld4))]
24436pub unsafe fn vld4q_s32(a: *const i32) -> int32x4x4_t {
24437 unsafe extern "unadjusted" {
24438 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v4i32.p0")]
24439 fn _vld4q_s32(ptr: *const i8, size: i32) -> int32x4x4_t;
24440 }
24441 _vld4q_s32(a as *const i8, 4)
24442}
24443#[doc = "Load multiple 4-element structures to two registers"]
24444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f16)"]
24445#[doc = "## Safety"]
24446#[doc = " * Neon intrinsic unsafe"]
24447#[inline(always)]
24448#[target_feature(enable = "neon,v7")]
24449#[cfg(target_arch = "arm")]
24450#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
24451#[rustc_legacy_const_generics(2)]
24452#[target_feature(enable = "neon,fp16")]
24453#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24454#[cfg(not(target_arch = "arm64ec"))]
24455pub unsafe fn vld4_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x4_t) -> float16x4x4_t {
24456 static_assert_uimm_bits!(LANE, 2);
24457 unsafe extern "unadjusted" {
24458 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4f16.p0")]
24459 fn _vld4_lane_f16(
24460 ptr: *const f16,
24461 a: float16x4_t,
24462 b: float16x4_t,
24463 c: float16x4_t,
24464 d: float16x4_t,
24465 n: i32,
24466 size: i32,
24467 ) -> float16x4x4_t;
24468 }
24469 _vld4_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
24470}
24471#[doc = "Load multiple 4-element structures to two registers"]
24472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f16)"]
24473#[doc = "## Safety"]
24474#[doc = " * Neon intrinsic unsafe"]
24475#[inline(always)]
24476#[target_feature(enable = "neon,v7")]
24477#[cfg(target_arch = "arm")]
24478#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
24479#[rustc_legacy_const_generics(2)]
24480#[target_feature(enable = "neon,fp16")]
24481#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24482#[cfg(not(target_arch = "arm64ec"))]
24483pub unsafe fn vld4q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x4_t) -> float16x8x4_t {
24484 static_assert_uimm_bits!(LANE, 3);
24485 unsafe extern "unadjusted" {
24486 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8f16.p0")]
24487 fn _vld4q_lane_f16(
24488 ptr: *const f16,
24489 a: float16x8_t,
24490 b: float16x8_t,
24491 c: float16x8_t,
24492 d: float16x8_t,
24493 n: i32,
24494 size: i32,
24495 ) -> float16x8x4_t;
24496 }
24497 _vld4q_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
24498}
24499#[doc = "Load multiple 4-element structures to two registers"]
24500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f16)"]
24501#[doc = "## Safety"]
24502#[doc = " * Neon intrinsic unsafe"]
24503#[inline(always)]
24504#[cfg(not(target_arch = "arm"))]
24505#[cfg_attr(
24506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24507 assert_instr(ld4, LANE = 0)
24508)]
24509#[rustc_legacy_const_generics(2)]
24510#[target_feature(enable = "neon,fp16")]
24511#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24512#[cfg(not(target_arch = "arm64ec"))]
24513pub unsafe fn vld4_lane_f16<const LANE: i32>(a: *const f16, b: float16x4x4_t) -> float16x4x4_t {
24514 static_assert_uimm_bits!(LANE, 2);
24515 unsafe extern "unadjusted" {
24516 #[cfg_attr(
24517 any(target_arch = "aarch64", target_arch = "arm64ec"),
24518 link_name = "llvm.aarch64.neon.ld4lane.v4f16.p0"
24519 )]
24520 fn _vld4_lane_f16(
24521 a: float16x4_t,
24522 b: float16x4_t,
24523 c: float16x4_t,
24524 d: float16x4_t,
24525 n: i64,
24526 ptr: *const f16,
24527 ) -> float16x4x4_t;
24528 }
24529 _vld4_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24530}
24531#[doc = "Load multiple 4-element structures to two registers"]
24532#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f16)"]
24533#[doc = "## Safety"]
24534#[doc = " * Neon intrinsic unsafe"]
24535#[inline(always)]
24536#[cfg(not(target_arch = "arm"))]
24537#[cfg_attr(
24538 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24539 assert_instr(ld4, LANE = 0)
24540)]
24541#[rustc_legacy_const_generics(2)]
24542#[target_feature(enable = "neon,fp16")]
24543#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
24544#[cfg(not(target_arch = "arm64ec"))]
24545pub unsafe fn vld4q_lane_f16<const LANE: i32>(a: *const f16, b: float16x8x4_t) -> float16x8x4_t {
24546 static_assert_uimm_bits!(LANE, 3);
24547 unsafe extern "unadjusted" {
24548 #[cfg_attr(
24549 any(target_arch = "aarch64", target_arch = "arm64ec"),
24550 link_name = "llvm.aarch64.neon.ld4lane.v8f16.p0"
24551 )]
24552 fn _vld4q_lane_f16(
24553 a: float16x8_t,
24554 b: float16x8_t,
24555 c: float16x8_t,
24556 d: float16x8_t,
24557 n: i64,
24558 ptr: *const f16,
24559 ) -> float16x8x4_t;
24560 }
24561 _vld4q_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24562}
24563#[doc = "Load multiple 4-element structures to four registers"]
24564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f32)"]
24565#[doc = "## Safety"]
24566#[doc = " * Neon intrinsic unsafe"]
24567#[inline(always)]
24568#[target_feature(enable = "neon")]
24569#[cfg(not(target_arch = "arm"))]
24570#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24571#[rustc_legacy_const_generics(2)]
24572#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24573pub unsafe fn vld4_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x4_t) -> float32x2x4_t {
24574 static_assert_uimm_bits!(LANE, 1);
24575 unsafe extern "unadjusted" {
24576 #[cfg_attr(
24577 any(target_arch = "aarch64", target_arch = "arm64ec"),
24578 link_name = "llvm.aarch64.neon.ld4lane.v2f32.p0"
24579 )]
24580 fn _vld4_lane_f32(
24581 a: float32x2_t,
24582 b: float32x2_t,
24583 c: float32x2_t,
24584 d: float32x2_t,
24585 n: i64,
24586 ptr: *const i8,
24587 ) -> float32x2x4_t;
24588 }
24589 _vld4_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24590}
24591#[doc = "Load multiple 4-element structures to four registers"]
24592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f32)"]
24593#[doc = "## Safety"]
24594#[doc = " * Neon intrinsic unsafe"]
24595#[inline(always)]
24596#[target_feature(enable = "neon")]
24597#[cfg(not(target_arch = "arm"))]
24598#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24599#[rustc_legacy_const_generics(2)]
24600#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24601pub unsafe fn vld4q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x4_t) -> float32x4x4_t {
24602 static_assert_uimm_bits!(LANE, 2);
24603 unsafe extern "unadjusted" {
24604 #[cfg_attr(
24605 any(target_arch = "aarch64", target_arch = "arm64ec"),
24606 link_name = "llvm.aarch64.neon.ld4lane.v4f32.p0"
24607 )]
24608 fn _vld4q_lane_f32(
24609 a: float32x4_t,
24610 b: float32x4_t,
24611 c: float32x4_t,
24612 d: float32x4_t,
24613 n: i64,
24614 ptr: *const i8,
24615 ) -> float32x4x4_t;
24616 }
24617 _vld4q_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24618}
24619#[doc = "Load multiple 4-element structures to four registers"]
24620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s8)"]
24621#[doc = "## Safety"]
24622#[doc = " * Neon intrinsic unsafe"]
24623#[inline(always)]
24624#[target_feature(enable = "neon")]
24625#[cfg(not(target_arch = "arm"))]
24626#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24627#[rustc_legacy_const_generics(2)]
24628#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24629pub unsafe fn vld4_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x4_t) -> int8x8x4_t {
24630 static_assert_uimm_bits!(LANE, 3);
24631 unsafe extern "unadjusted" {
24632 #[cfg_attr(
24633 any(target_arch = "aarch64", target_arch = "arm64ec"),
24634 link_name = "llvm.aarch64.neon.ld4lane.v8i8.p0"
24635 )]
24636 fn _vld4_lane_s8(
24637 a: int8x8_t,
24638 b: int8x8_t,
24639 c: int8x8_t,
24640 d: int8x8_t,
24641 n: i64,
24642 ptr: *const i8,
24643 ) -> int8x8x4_t;
24644 }
24645 _vld4_lane_s8(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24646}
24647#[doc = "Load multiple 4-element structures to four registers"]
24648#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s16)"]
24649#[doc = "## Safety"]
24650#[doc = " * Neon intrinsic unsafe"]
24651#[inline(always)]
24652#[target_feature(enable = "neon")]
24653#[cfg(not(target_arch = "arm"))]
24654#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24655#[rustc_legacy_const_generics(2)]
24656#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24657pub unsafe fn vld4_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x4_t) -> int16x4x4_t {
24658 static_assert_uimm_bits!(LANE, 2);
24659 unsafe extern "unadjusted" {
24660 #[cfg_attr(
24661 any(target_arch = "aarch64", target_arch = "arm64ec"),
24662 link_name = "llvm.aarch64.neon.ld4lane.v4i16.p0"
24663 )]
24664 fn _vld4_lane_s16(
24665 a: int16x4_t,
24666 b: int16x4_t,
24667 c: int16x4_t,
24668 d: int16x4_t,
24669 n: i64,
24670 ptr: *const i8,
24671 ) -> int16x4x4_t;
24672 }
24673 _vld4_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24674}
24675#[doc = "Load multiple 4-element structures to four registers"]
24676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s16)"]
24677#[doc = "## Safety"]
24678#[doc = " * Neon intrinsic unsafe"]
24679#[inline(always)]
24680#[target_feature(enable = "neon")]
24681#[cfg(not(target_arch = "arm"))]
24682#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24683#[rustc_legacy_const_generics(2)]
24684#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24685pub unsafe fn vld4q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x4_t) -> int16x8x4_t {
24686 static_assert_uimm_bits!(LANE, 3);
24687 unsafe extern "unadjusted" {
24688 #[cfg_attr(
24689 any(target_arch = "aarch64", target_arch = "arm64ec"),
24690 link_name = "llvm.aarch64.neon.ld4lane.v8i16.p0"
24691 )]
24692 fn _vld4q_lane_s16(
24693 a: int16x8_t,
24694 b: int16x8_t,
24695 c: int16x8_t,
24696 d: int16x8_t,
24697 n: i64,
24698 ptr: *const i8,
24699 ) -> int16x8x4_t;
24700 }
24701 _vld4q_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24702}
24703#[doc = "Load multiple 4-element structures to four registers"]
24704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s32)"]
24705#[doc = "## Safety"]
24706#[doc = " * Neon intrinsic unsafe"]
24707#[inline(always)]
24708#[target_feature(enable = "neon")]
24709#[cfg(not(target_arch = "arm"))]
24710#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24711#[rustc_legacy_const_generics(2)]
24712#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24713pub unsafe fn vld4_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x4_t) -> int32x2x4_t {
24714 static_assert_uimm_bits!(LANE, 1);
24715 unsafe extern "unadjusted" {
24716 #[cfg_attr(
24717 any(target_arch = "aarch64", target_arch = "arm64ec"),
24718 link_name = "llvm.aarch64.neon.ld4lane.v2i32.p0"
24719 )]
24720 fn _vld4_lane_s32(
24721 a: int32x2_t,
24722 b: int32x2_t,
24723 c: int32x2_t,
24724 d: int32x2_t,
24725 n: i64,
24726 ptr: *const i8,
24727 ) -> int32x2x4_t;
24728 }
24729 _vld4_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24730}
24731#[doc = "Load multiple 4-element structures to four registers"]
24732#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s32)"]
24733#[doc = "## Safety"]
24734#[doc = " * Neon intrinsic unsafe"]
24735#[inline(always)]
24736#[target_feature(enable = "neon")]
24737#[cfg(not(target_arch = "arm"))]
24738#[cfg_attr(test, assert_instr(ld4, LANE = 0))]
24739#[rustc_legacy_const_generics(2)]
24740#[stable(feature = "neon_intrinsics", since = "1.59.0")]
24741pub unsafe fn vld4q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x4_t) -> int32x4x4_t {
24742 static_assert_uimm_bits!(LANE, 2);
24743 unsafe extern "unadjusted" {
24744 #[cfg_attr(
24745 any(target_arch = "aarch64", target_arch = "arm64ec"),
24746 link_name = "llvm.aarch64.neon.ld4lane.v4i32.p0"
24747 )]
24748 fn _vld4q_lane_s32(
24749 a: int32x4_t,
24750 b: int32x4_t,
24751 c: int32x4_t,
24752 d: int32x4_t,
24753 n: i64,
24754 ptr: *const i8,
24755 ) -> int32x4x4_t;
24756 }
24757 _vld4q_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
24758}
24759#[doc = "Load multiple 4-element structures to four registers"]
24760#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_f32)"]
24761#[doc = "## Safety"]
24762#[doc = " * Neon intrinsic unsafe"]
24763#[inline(always)]
24764#[target_feature(enable = "neon,v7")]
24765#[cfg(target_arch = "arm")]
24766#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24767#[rustc_legacy_const_generics(2)]
24768#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24769pub unsafe fn vld4_lane_f32<const LANE: i32>(a: *const f32, b: float32x2x4_t) -> float32x2x4_t {
24770 static_assert_uimm_bits!(LANE, 1);
24771 unsafe extern "unadjusted" {
24772 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v2f32.p0")]
24773 fn _vld4_lane_f32(
24774 ptr: *const i8,
24775 a: float32x2_t,
24776 b: float32x2_t,
24777 c: float32x2_t,
24778 d: float32x2_t,
24779 n: i32,
24780 size: i32,
24781 ) -> float32x2x4_t;
24782 }
24783 _vld4_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
24784}
24785#[doc = "Load multiple 4-element structures to four registers"]
24786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_f32)"]
24787#[doc = "## Safety"]
24788#[doc = " * Neon intrinsic unsafe"]
24789#[inline(always)]
24790#[target_feature(enable = "neon,v7")]
24791#[cfg(target_arch = "arm")]
24792#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24793#[rustc_legacy_const_generics(2)]
24794#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24795pub unsafe fn vld4q_lane_f32<const LANE: i32>(a: *const f32, b: float32x4x4_t) -> float32x4x4_t {
24796 static_assert_uimm_bits!(LANE, 2);
24797 unsafe extern "unadjusted" {
24798 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4f32.p0")]
24799 fn _vld4q_lane_f32(
24800 ptr: *const i8,
24801 a: float32x4_t,
24802 b: float32x4_t,
24803 c: float32x4_t,
24804 d: float32x4_t,
24805 n: i32,
24806 size: i32,
24807 ) -> float32x4x4_t;
24808 }
24809 _vld4q_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
24810}
24811#[doc = "Load multiple 4-element structures to four registers"]
24812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s8)"]
24813#[doc = "## Safety"]
24814#[doc = " * Neon intrinsic unsafe"]
24815#[inline(always)]
24816#[target_feature(enable = "neon,v7")]
24817#[cfg(target_arch = "arm")]
24818#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24819#[rustc_legacy_const_generics(2)]
24820#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24821pub unsafe fn vld4_lane_s8<const LANE: i32>(a: *const i8, b: int8x8x4_t) -> int8x8x4_t {
24822 static_assert_uimm_bits!(LANE, 3);
24823 unsafe extern "unadjusted" {
24824 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8i8.p0")]
24825 fn _vld4_lane_s8(
24826 ptr: *const i8,
24827 a: int8x8_t,
24828 b: int8x8_t,
24829 c: int8x8_t,
24830 d: int8x8_t,
24831 n: i32,
24832 size: i32,
24833 ) -> int8x8x4_t;
24834 }
24835 _vld4_lane_s8(a as _, b.0, b.1, b.2, b.3, LANE, 1)
24836}
24837#[doc = "Load multiple 4-element structures to four registers"]
24838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s16)"]
24839#[doc = "## Safety"]
24840#[doc = " * Neon intrinsic unsafe"]
24841#[inline(always)]
24842#[target_feature(enable = "neon,v7")]
24843#[cfg(target_arch = "arm")]
24844#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24845#[rustc_legacy_const_generics(2)]
24846#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24847pub unsafe fn vld4_lane_s16<const LANE: i32>(a: *const i16, b: int16x4x4_t) -> int16x4x4_t {
24848 static_assert_uimm_bits!(LANE, 2);
24849 unsafe extern "unadjusted" {
24850 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4i16.p0")]
24851 fn _vld4_lane_s16(
24852 ptr: *const i8,
24853 a: int16x4_t,
24854 b: int16x4_t,
24855 c: int16x4_t,
24856 d: int16x4_t,
24857 n: i32,
24858 size: i32,
24859 ) -> int16x4x4_t;
24860 }
24861 _vld4_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
24862}
24863#[doc = "Load multiple 4-element structures to four registers"]
24864#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s16)"]
24865#[doc = "## Safety"]
24866#[doc = " * Neon intrinsic unsafe"]
24867#[inline(always)]
24868#[target_feature(enable = "neon,v7")]
24869#[cfg(target_arch = "arm")]
24870#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24871#[rustc_legacy_const_generics(2)]
24872#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24873pub unsafe fn vld4q_lane_s16<const LANE: i32>(a: *const i16, b: int16x8x4_t) -> int16x8x4_t {
24874 static_assert_uimm_bits!(LANE, 3);
24875 unsafe extern "unadjusted" {
24876 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v8i16.p0")]
24877 fn _vld4q_lane_s16(
24878 ptr: *const i8,
24879 a: int16x8_t,
24880 b: int16x8_t,
24881 c: int16x8_t,
24882 d: int16x8_t,
24883 n: i32,
24884 size: i32,
24885 ) -> int16x8x4_t;
24886 }
24887 _vld4q_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
24888}
24889#[doc = "Load multiple 4-element structures to four registers"]
24890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_s32)"]
24891#[doc = "## Safety"]
24892#[doc = " * Neon intrinsic unsafe"]
24893#[inline(always)]
24894#[target_feature(enable = "neon,v7")]
24895#[cfg(target_arch = "arm")]
24896#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24897#[rustc_legacy_const_generics(2)]
24898#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24899pub unsafe fn vld4_lane_s32<const LANE: i32>(a: *const i32, b: int32x2x4_t) -> int32x2x4_t {
24900 static_assert_uimm_bits!(LANE, 1);
24901 unsafe extern "unadjusted" {
24902 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v2i32.p0")]
24903 fn _vld4_lane_s32(
24904 ptr: *const i8,
24905 a: int32x2_t,
24906 b: int32x2_t,
24907 c: int32x2_t,
24908 d: int32x2_t,
24909 n: i32,
24910 size: i32,
24911 ) -> int32x2x4_t;
24912 }
24913 _vld4_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
24914}
24915#[doc = "Load multiple 4-element structures to four registers"]
24916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_s32)"]
24917#[doc = "## Safety"]
24918#[doc = " * Neon intrinsic unsafe"]
24919#[inline(always)]
24920#[target_feature(enable = "neon,v7")]
24921#[cfg(target_arch = "arm")]
24922#[cfg_attr(test, assert_instr(vld4, LANE = 0))]
24923#[rustc_legacy_const_generics(2)]
24924#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
24925pub unsafe fn vld4q_lane_s32<const LANE: i32>(a: *const i32, b: int32x4x4_t) -> int32x4x4_t {
24926 static_assert_uimm_bits!(LANE, 2);
24927 unsafe extern "unadjusted" {
24928 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4lane.v4i32.p0")]
24929 fn _vld4q_lane_s32(
24930 ptr: *const i8,
24931 a: int32x4_t,
24932 b: int32x4_t,
24933 c: int32x4_t,
24934 d: int32x4_t,
24935 n: i32,
24936 size: i32,
24937 ) -> int32x4x4_t;
24938 }
24939 _vld4q_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
24940}
24941#[doc = "Load multiple 4-element structures to four registers"]
24942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u8)"]
24943#[doc = "## Safety"]
24944#[doc = " * Neon intrinsic unsafe"]
24945#[inline(always)]
24946#[target_feature(enable = "neon")]
24947#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24948#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
24949#[cfg_attr(
24950 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24951 assert_instr(ld4, LANE = 0)
24952)]
24953#[rustc_legacy_const_generics(2)]
24954#[cfg_attr(
24955 not(target_arch = "arm"),
24956 stable(feature = "neon_intrinsics", since = "1.59.0")
24957)]
24958#[cfg_attr(
24959 target_arch = "arm",
24960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24961)]
24962pub unsafe fn vld4_lane_u8<const LANE: i32>(a: *const u8, b: uint8x8x4_t) -> uint8x8x4_t {
24963 static_assert_uimm_bits!(LANE, 3);
24964 transmute(vld4_lane_s8::<LANE>(transmute(a), transmute(b)))
24965}
24966#[doc = "Load multiple 4-element structures to four registers"]
24967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u16)"]
24968#[doc = "## Safety"]
24969#[doc = " * Neon intrinsic unsafe"]
24970#[inline(always)]
24971#[target_feature(enable = "neon")]
24972#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24973#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
24974#[cfg_attr(
24975 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
24976 assert_instr(ld4, LANE = 0)
24977)]
24978#[rustc_legacy_const_generics(2)]
24979#[cfg_attr(
24980 not(target_arch = "arm"),
24981 stable(feature = "neon_intrinsics", since = "1.59.0")
24982)]
24983#[cfg_attr(
24984 target_arch = "arm",
24985 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
24986)]
24987pub unsafe fn vld4_lane_u16<const LANE: i32>(a: *const u16, b: uint16x4x4_t) -> uint16x4x4_t {
24988 static_assert_uimm_bits!(LANE, 2);
24989 transmute(vld4_lane_s16::<LANE>(transmute(a), transmute(b)))
24990}
24991#[doc = "Load multiple 4-element structures to four registers"]
24992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_u16)"]
24993#[doc = "## Safety"]
24994#[doc = " * Neon intrinsic unsafe"]
24995#[inline(always)]
24996#[target_feature(enable = "neon")]
24997#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
24998#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
24999#[cfg_attr(
25000 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25001 assert_instr(ld4, LANE = 0)
25002)]
25003#[rustc_legacy_const_generics(2)]
25004#[cfg_attr(
25005 not(target_arch = "arm"),
25006 stable(feature = "neon_intrinsics", since = "1.59.0")
25007)]
25008#[cfg_attr(
25009 target_arch = "arm",
25010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25011)]
25012pub unsafe fn vld4q_lane_u16<const LANE: i32>(a: *const u16, b: uint16x8x4_t) -> uint16x8x4_t {
25013 static_assert_uimm_bits!(LANE, 3);
25014 transmute(vld4q_lane_s16::<LANE>(transmute(a), transmute(b)))
25015}
25016#[doc = "Load multiple 4-element structures to four registers"]
25017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_u32)"]
25018#[doc = "## Safety"]
25019#[doc = " * Neon intrinsic unsafe"]
25020#[inline(always)]
25021#[target_feature(enable = "neon")]
25022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25023#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25024#[cfg_attr(
25025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25026 assert_instr(ld4, LANE = 0)
25027)]
25028#[rustc_legacy_const_generics(2)]
25029#[cfg_attr(
25030 not(target_arch = "arm"),
25031 stable(feature = "neon_intrinsics", since = "1.59.0")
25032)]
25033#[cfg_attr(
25034 target_arch = "arm",
25035 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25036)]
25037pub unsafe fn vld4_lane_u32<const LANE: i32>(a: *const u32, b: uint32x2x4_t) -> uint32x2x4_t {
25038 static_assert_uimm_bits!(LANE, 1);
25039 transmute(vld4_lane_s32::<LANE>(transmute(a), transmute(b)))
25040}
25041#[doc = "Load multiple 4-element structures to four registers"]
25042#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_u32)"]
25043#[doc = "## Safety"]
25044#[doc = " * Neon intrinsic unsafe"]
25045#[inline(always)]
25046#[target_feature(enable = "neon")]
25047#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25048#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25049#[cfg_attr(
25050 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25051 assert_instr(ld4, LANE = 0)
25052)]
25053#[rustc_legacy_const_generics(2)]
25054#[cfg_attr(
25055 not(target_arch = "arm"),
25056 stable(feature = "neon_intrinsics", since = "1.59.0")
25057)]
25058#[cfg_attr(
25059 target_arch = "arm",
25060 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25061)]
25062pub unsafe fn vld4q_lane_u32<const LANE: i32>(a: *const u32, b: uint32x4x4_t) -> uint32x4x4_t {
25063 static_assert_uimm_bits!(LANE, 2);
25064 transmute(vld4q_lane_s32::<LANE>(transmute(a), transmute(b)))
25065}
25066#[doc = "Load multiple 4-element structures to four registers"]
25067#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_p8)"]
25068#[doc = "## Safety"]
25069#[doc = " * Neon intrinsic unsafe"]
25070#[inline(always)]
25071#[target_feature(enable = "neon")]
25072#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25073#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25074#[cfg_attr(
25075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25076 assert_instr(ld4, LANE = 0)
25077)]
25078#[rustc_legacy_const_generics(2)]
25079#[cfg_attr(
25080 not(target_arch = "arm"),
25081 stable(feature = "neon_intrinsics", since = "1.59.0")
25082)]
25083#[cfg_attr(
25084 target_arch = "arm",
25085 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25086)]
25087pub unsafe fn vld4_lane_p8<const LANE: i32>(a: *const p8, b: poly8x8x4_t) -> poly8x8x4_t {
25088 static_assert_uimm_bits!(LANE, 3);
25089 transmute(vld4_lane_s8::<LANE>(transmute(a), transmute(b)))
25090}
25091#[doc = "Load multiple 4-element structures to four registers"]
25092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_lane_p16)"]
25093#[doc = "## Safety"]
25094#[doc = " * Neon intrinsic unsafe"]
25095#[inline(always)]
25096#[target_feature(enable = "neon")]
25097#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25098#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25099#[cfg_attr(
25100 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25101 assert_instr(ld4, LANE = 0)
25102)]
25103#[rustc_legacy_const_generics(2)]
25104#[cfg_attr(
25105 not(target_arch = "arm"),
25106 stable(feature = "neon_intrinsics", since = "1.59.0")
25107)]
25108#[cfg_attr(
25109 target_arch = "arm",
25110 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25111)]
25112pub unsafe fn vld4_lane_p16<const LANE: i32>(a: *const p16, b: poly16x4x4_t) -> poly16x4x4_t {
25113 static_assert_uimm_bits!(LANE, 2);
25114 transmute(vld4_lane_s16::<LANE>(transmute(a), transmute(b)))
25115}
25116#[doc = "Load multiple 4-element structures to four registers"]
25117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_lane_p16)"]
25118#[doc = "## Safety"]
25119#[doc = " * Neon intrinsic unsafe"]
25120#[inline(always)]
25121#[target_feature(enable = "neon")]
25122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25123#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4, LANE = 0))]
25124#[cfg_attr(
25125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25126 assert_instr(ld4, LANE = 0)
25127)]
25128#[rustc_legacy_const_generics(2)]
25129#[cfg_attr(
25130 not(target_arch = "arm"),
25131 stable(feature = "neon_intrinsics", since = "1.59.0")
25132)]
25133#[cfg_attr(
25134 target_arch = "arm",
25135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25136)]
25137pub unsafe fn vld4q_lane_p16<const LANE: i32>(a: *const p16, b: poly16x8x4_t) -> poly16x8x4_t {
25138 static_assert_uimm_bits!(LANE, 3);
25139 transmute(vld4q_lane_s16::<LANE>(transmute(a), transmute(b)))
25140}
25141#[doc = "Load multiple 4-element structures to four registers"]
25142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_p64)"]
25143#[doc = "## Safety"]
25144#[doc = " * Neon intrinsic unsafe"]
25145#[inline(always)]
25146#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
25147#[target_feature(enable = "neon,aes")]
25148#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
25149#[cfg_attr(
25150 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25151 assert_instr(nop)
25152)]
25153#[cfg_attr(
25154 not(target_arch = "arm"),
25155 stable(feature = "neon_intrinsics", since = "1.59.0")
25156)]
25157#[cfg_attr(
25158 target_arch = "arm",
25159 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25160)]
25161pub unsafe fn vld4_p64(a: *const p64) -> poly64x1x4_t {
25162 transmute(vld4_s64(transmute(a)))
25163}
25164#[doc = "Load multiple 4-element structures to four registers"]
25165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s64)"]
25166#[doc = "## Safety"]
25167#[doc = " * Neon intrinsic unsafe"]
25168#[inline(always)]
25169#[target_feature(enable = "neon")]
25170#[cfg(not(target_arch = "arm"))]
25171#[stable(feature = "neon_intrinsics", since = "1.59.0")]
25172#[cfg_attr(test, assert_instr(nop))]
25173pub unsafe fn vld4_s64(a: *const i64) -> int64x1x4_t {
25174 crate::ptr::read_unaligned(a.cast())
25175}
25176#[doc = "Load multiple 4-element structures to four registers"]
25177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_s64)"]
25178#[doc = "## Safety"]
25179#[doc = " * Neon intrinsic unsafe"]
25180#[inline(always)]
25181#[target_feature(enable = "neon,v7")]
25182#[cfg(target_arch = "arm")]
25183#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
25184#[cfg_attr(test, assert_instr(nop))]
25185pub unsafe fn vld4_s64(a: *const i64) -> int64x1x4_t {
25186 unsafe extern "unadjusted" {
25187 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vld4.v1i64.p0")]
25188 fn _vld4_s64(ptr: *const i8, size: i32) -> int64x1x4_t;
25189 }
25190 _vld4_s64(a as *const i8, 8)
25191}
25192#[doc = "Load multiple 4-element structures to four registers"]
25193#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u64)"]
25194#[doc = "## Safety"]
25195#[doc = " * Neon intrinsic unsafe"]
25196#[inline(always)]
25197#[target_feature(enable = "neon")]
25198#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25199#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
25200#[cfg_attr(
25201 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25202 assert_instr(nop)
25203)]
25204#[cfg_attr(
25205 not(target_arch = "arm"),
25206 stable(feature = "neon_intrinsics", since = "1.59.0")
25207)]
25208#[cfg_attr(
25209 target_arch = "arm",
25210 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25211)]
25212pub unsafe fn vld4_u64(a: *const u64) -> uint64x1x4_t {
25213 transmute(vld4_s64(transmute(a)))
25214}
25215#[doc = "Load multiple 4-element structures to four registers"]
25216#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u8)"]
25217#[doc = "## Safety"]
25218#[doc = " * Neon intrinsic unsafe"]
25219#[inline(always)]
25220#[target_feature(enable = "neon")]
25221#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25222#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25223#[cfg_attr(
25224 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25225 assert_instr(ld4)
25226)]
25227#[cfg_attr(
25228 not(target_arch = "arm"),
25229 stable(feature = "neon_intrinsics", since = "1.59.0")
25230)]
25231#[cfg_attr(
25232 target_arch = "arm",
25233 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25234)]
25235pub unsafe fn vld4_u8(a: *const u8) -> uint8x8x4_t {
25236 transmute(vld4_s8(transmute(a)))
25237}
25238#[doc = "Load multiple 4-element structures to four registers"]
25239#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u8)"]
25240#[doc = "## Safety"]
25241#[doc = " * Neon intrinsic unsafe"]
25242#[inline(always)]
25243#[target_feature(enable = "neon")]
25244#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25245#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25246#[cfg_attr(
25247 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25248 assert_instr(ld4)
25249)]
25250#[cfg_attr(
25251 not(target_arch = "arm"),
25252 stable(feature = "neon_intrinsics", since = "1.59.0")
25253)]
25254#[cfg_attr(
25255 target_arch = "arm",
25256 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25257)]
25258pub unsafe fn vld4q_u8(a: *const u8) -> uint8x16x4_t {
25259 transmute(vld4q_s8(transmute(a)))
25260}
25261#[doc = "Load multiple 4-element structures to four registers"]
25262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u16)"]
25263#[doc = "## Safety"]
25264#[doc = " * Neon intrinsic unsafe"]
25265#[inline(always)]
25266#[target_feature(enable = "neon")]
25267#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25268#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25269#[cfg_attr(
25270 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25271 assert_instr(ld4)
25272)]
25273#[cfg_attr(
25274 not(target_arch = "arm"),
25275 stable(feature = "neon_intrinsics", since = "1.59.0")
25276)]
25277#[cfg_attr(
25278 target_arch = "arm",
25279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25280)]
25281pub unsafe fn vld4_u16(a: *const u16) -> uint16x4x4_t {
25282 transmute(vld4_s16(transmute(a)))
25283}
25284#[doc = "Load multiple 4-element structures to four registers"]
25285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u16)"]
25286#[doc = "## Safety"]
25287#[doc = " * Neon intrinsic unsafe"]
25288#[inline(always)]
25289#[target_feature(enable = "neon")]
25290#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25291#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25292#[cfg_attr(
25293 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25294 assert_instr(ld4)
25295)]
25296#[cfg_attr(
25297 not(target_arch = "arm"),
25298 stable(feature = "neon_intrinsics", since = "1.59.0")
25299)]
25300#[cfg_attr(
25301 target_arch = "arm",
25302 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25303)]
25304pub unsafe fn vld4q_u16(a: *const u16) -> uint16x8x4_t {
25305 transmute(vld4q_s16(transmute(a)))
25306}
25307#[doc = "Load multiple 4-element structures to four registers"]
25308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4_u32)"]
25309#[doc = "## Safety"]
25310#[doc = " * Neon intrinsic unsafe"]
25311#[inline(always)]
25312#[target_feature(enable = "neon")]
25313#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25314#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vld4))]
25315#[cfg_attr(
25316 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25317 assert_instr(ld4)
25318)]
25319#[cfg_attr(
25320 not(target_arch = "arm"),
25321 stable(feature = "neon_intrinsics", since = "1.59.0")
25322)]
25323#[cfg_attr(
25324 target_arch = "arm",
25325 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25326)]
25327pub unsafe fn vld4_u32(a: *const u32) -> uint32x2x4_t {
25328 transmute(vld4_s32(transmute(a)))
25329}
25330#[doc = "Load multiple 4-element structures to four registers"]
25331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld4q_u32)"]
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(vld4))]
25338#[cfg_attr(
25339 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25340 assert_instr(ld4)
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 vld4q_u32(a: *const u32) -> uint32x4x4_t {
25351 transmute(vld4q_s32(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_p8)"]
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_p8(a: *const p8) -> poly8x8x4_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_p8)"]
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_p8(a: *const p8) -> poly8x16x4_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_p16)"]
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_p16(a: *const p16) -> poly16x4x4_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_p16)"]
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_p16(a: *const p16) -> poly16x8x4_t {
25443 transmute(vld4q_s16(transmute(a)))
25444}
25445#[doc = "Store SIMD&FP register (immediate offset)"]
25446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vldrq_p128)"]
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(nop))]
25453#[cfg_attr(
25454 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25455 assert_instr(nop)
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 vldrq_p128(a: *const p128) -> p128 {
25466 *a
25467}
25468#[doc = "Maximum (vector)"]
25469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_f16)"]
25470#[inline(always)]
25471#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
25472#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25473#[cfg_attr(
25474 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25475 assert_instr(fmax)
25476)]
25477#[target_feature(enable = "neon,fp16")]
25478#[cfg_attr(
25479 not(target_arch = "arm"),
25480 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
25481)]
25482#[cfg_attr(
25483 target_arch = "arm",
25484 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25485)]
25486#[cfg(not(target_arch = "arm64ec"))]
25487pub fn vmax_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
25488 unsafe extern "unadjusted" {
25489 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4f16")]
25490 #[cfg_attr(
25491 any(target_arch = "aarch64", target_arch = "arm64ec"),
25492 link_name = "llvm.aarch64.neon.fmax.v4f16"
25493 )]
25494 fn _vmax_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
25495 }
25496 unsafe { _vmax_f16(a, b) }
25497}
25498#[doc = "Maximum (vector)"]
25499#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_f16)"]
25500#[inline(always)]
25501#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
25502#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25503#[cfg_attr(
25504 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25505 assert_instr(fmax)
25506)]
25507#[target_feature(enable = "neon,fp16")]
25508#[cfg_attr(
25509 not(target_arch = "arm"),
25510 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
25511)]
25512#[cfg_attr(
25513 target_arch = "arm",
25514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25515)]
25516#[cfg(not(target_arch = "arm64ec"))]
25517pub fn vmaxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
25518 unsafe extern "unadjusted" {
25519 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v8f16")]
25520 #[cfg_attr(
25521 any(target_arch = "aarch64", target_arch = "arm64ec"),
25522 link_name = "llvm.aarch64.neon.fmax.v8f16"
25523 )]
25524 fn _vmaxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
25525 }
25526 unsafe { _vmaxq_f16(a, b) }
25527}
25528#[doc = "Maximum (vector)"]
25529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_f32)"]
25530#[inline(always)]
25531#[target_feature(enable = "neon")]
25532#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25533#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25534#[cfg_attr(
25535 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25536 assert_instr(fmax)
25537)]
25538#[cfg_attr(
25539 not(target_arch = "arm"),
25540 stable(feature = "neon_intrinsics", since = "1.59.0")
25541)]
25542#[cfg_attr(
25543 target_arch = "arm",
25544 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25545)]
25546pub fn vmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
25547 unsafe extern "unadjusted" {
25548 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v2f32")]
25549 #[cfg_attr(
25550 any(target_arch = "aarch64", target_arch = "arm64ec"),
25551 link_name = "llvm.aarch64.neon.fmax.v2f32"
25552 )]
25553 fn _vmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
25554 }
25555 unsafe { _vmax_f32(a, b) }
25556}
25557#[doc = "Maximum (vector)"]
25558#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_f32)"]
25559#[inline(always)]
25560#[target_feature(enable = "neon")]
25561#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25562#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25563#[cfg_attr(
25564 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25565 assert_instr(fmax)
25566)]
25567#[cfg_attr(
25568 not(target_arch = "arm"),
25569 stable(feature = "neon_intrinsics", since = "1.59.0")
25570)]
25571#[cfg_attr(
25572 target_arch = "arm",
25573 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25574)]
25575pub fn vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
25576 unsafe extern "unadjusted" {
25577 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4f32")]
25578 #[cfg_attr(
25579 any(target_arch = "aarch64", target_arch = "arm64ec"),
25580 link_name = "llvm.aarch64.neon.fmax.v4f32"
25581 )]
25582 fn _vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
25583 }
25584 unsafe { _vmaxq_f32(a, b) }
25585}
25586#[doc = "Maximum (vector)"]
25587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s8)"]
25588#[inline(always)]
25589#[target_feature(enable = "neon")]
25590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25591#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25592#[cfg_attr(
25593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25594 assert_instr(smax)
25595)]
25596#[cfg_attr(
25597 not(target_arch = "arm"),
25598 stable(feature = "neon_intrinsics", since = "1.59.0")
25599)]
25600#[cfg_attr(
25601 target_arch = "arm",
25602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25603)]
25604pub fn vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
25605 unsafe {
25606 let mask: int8x8_t = simd_ge(a, b);
25607 simd_select(mask, a, b)
25608 }
25609}
25610#[doc = "Maximum (vector)"]
25611#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s8)"]
25612#[inline(always)]
25613#[target_feature(enable = "neon")]
25614#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25615#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25616#[cfg_attr(
25617 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25618 assert_instr(smax)
25619)]
25620#[cfg_attr(
25621 not(target_arch = "arm"),
25622 stable(feature = "neon_intrinsics", since = "1.59.0")
25623)]
25624#[cfg_attr(
25625 target_arch = "arm",
25626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25627)]
25628pub fn vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
25629 unsafe {
25630 let mask: int8x16_t = simd_ge(a, b);
25631 simd_select(mask, a, b)
25632 }
25633}
25634#[doc = "Maximum (vector)"]
25635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s16)"]
25636#[inline(always)]
25637#[target_feature(enable = "neon")]
25638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25640#[cfg_attr(
25641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25642 assert_instr(smax)
25643)]
25644#[cfg_attr(
25645 not(target_arch = "arm"),
25646 stable(feature = "neon_intrinsics", since = "1.59.0")
25647)]
25648#[cfg_attr(
25649 target_arch = "arm",
25650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25651)]
25652pub fn vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
25653 unsafe {
25654 let mask: int16x4_t = simd_ge(a, b);
25655 simd_select(mask, a, b)
25656 }
25657}
25658#[doc = "Maximum (vector)"]
25659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s16)"]
25660#[inline(always)]
25661#[target_feature(enable = "neon")]
25662#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25663#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25664#[cfg_attr(
25665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25666 assert_instr(smax)
25667)]
25668#[cfg_attr(
25669 not(target_arch = "arm"),
25670 stable(feature = "neon_intrinsics", since = "1.59.0")
25671)]
25672#[cfg_attr(
25673 target_arch = "arm",
25674 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25675)]
25676pub fn vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
25677 unsafe {
25678 let mask: int16x8_t = simd_ge(a, b);
25679 simd_select(mask, a, b)
25680 }
25681}
25682#[doc = "Maximum (vector)"]
25683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s32)"]
25684#[inline(always)]
25685#[target_feature(enable = "neon")]
25686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25687#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25688#[cfg_attr(
25689 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25690 assert_instr(smax)
25691)]
25692#[cfg_attr(
25693 not(target_arch = "arm"),
25694 stable(feature = "neon_intrinsics", since = "1.59.0")
25695)]
25696#[cfg_attr(
25697 target_arch = "arm",
25698 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25699)]
25700pub fn vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
25701 unsafe {
25702 let mask: int32x2_t = simd_ge(a, b);
25703 simd_select(mask, a, b)
25704 }
25705}
25706#[doc = "Maximum (vector)"]
25707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s32)"]
25708#[inline(always)]
25709#[target_feature(enable = "neon")]
25710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25711#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25712#[cfg_attr(
25713 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25714 assert_instr(smax)
25715)]
25716#[cfg_attr(
25717 not(target_arch = "arm"),
25718 stable(feature = "neon_intrinsics", since = "1.59.0")
25719)]
25720#[cfg_attr(
25721 target_arch = "arm",
25722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25723)]
25724pub fn vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
25725 unsafe {
25726 let mask: int32x4_t = simd_ge(a, b);
25727 simd_select(mask, a, b)
25728 }
25729}
25730#[doc = "Maximum (vector)"]
25731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u8)"]
25732#[inline(always)]
25733#[target_feature(enable = "neon")]
25734#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25735#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25736#[cfg_attr(
25737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25738 assert_instr(umax)
25739)]
25740#[cfg_attr(
25741 not(target_arch = "arm"),
25742 stable(feature = "neon_intrinsics", since = "1.59.0")
25743)]
25744#[cfg_attr(
25745 target_arch = "arm",
25746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25747)]
25748pub fn vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
25749 unsafe {
25750 let mask: uint8x8_t = simd_ge(a, b);
25751 simd_select(mask, a, b)
25752 }
25753}
25754#[doc = "Maximum (vector)"]
25755#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u8)"]
25756#[inline(always)]
25757#[target_feature(enable = "neon")]
25758#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25759#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25760#[cfg_attr(
25761 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25762 assert_instr(umax)
25763)]
25764#[cfg_attr(
25765 not(target_arch = "arm"),
25766 stable(feature = "neon_intrinsics", since = "1.59.0")
25767)]
25768#[cfg_attr(
25769 target_arch = "arm",
25770 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25771)]
25772pub fn vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
25773 unsafe {
25774 let mask: uint8x16_t = simd_ge(a, b);
25775 simd_select(mask, a, b)
25776 }
25777}
25778#[doc = "Maximum (vector)"]
25779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u16)"]
25780#[inline(always)]
25781#[target_feature(enable = "neon")]
25782#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25783#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25784#[cfg_attr(
25785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25786 assert_instr(umax)
25787)]
25788#[cfg_attr(
25789 not(target_arch = "arm"),
25790 stable(feature = "neon_intrinsics", since = "1.59.0")
25791)]
25792#[cfg_attr(
25793 target_arch = "arm",
25794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25795)]
25796pub fn vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
25797 unsafe {
25798 let mask: uint16x4_t = simd_ge(a, b);
25799 simd_select(mask, a, b)
25800 }
25801}
25802#[doc = "Maximum (vector)"]
25803#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u16)"]
25804#[inline(always)]
25805#[target_feature(enable = "neon")]
25806#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25807#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25808#[cfg_attr(
25809 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25810 assert_instr(umax)
25811)]
25812#[cfg_attr(
25813 not(target_arch = "arm"),
25814 stable(feature = "neon_intrinsics", since = "1.59.0")
25815)]
25816#[cfg_attr(
25817 target_arch = "arm",
25818 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25819)]
25820pub fn vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
25821 unsafe {
25822 let mask: uint16x8_t = simd_ge(a, b);
25823 simd_select(mask, a, b)
25824 }
25825}
25826#[doc = "Maximum (vector)"]
25827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u32)"]
25828#[inline(always)]
25829#[target_feature(enable = "neon")]
25830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25831#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25832#[cfg_attr(
25833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25834 assert_instr(umax)
25835)]
25836#[cfg_attr(
25837 not(target_arch = "arm"),
25838 stable(feature = "neon_intrinsics", since = "1.59.0")
25839)]
25840#[cfg_attr(
25841 target_arch = "arm",
25842 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25843)]
25844pub fn vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
25845 unsafe {
25846 let mask: uint32x2_t = simd_ge(a, b);
25847 simd_select(mask, a, b)
25848 }
25849}
25850#[doc = "Maximum (vector)"]
25851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u32)"]
25852#[inline(always)]
25853#[target_feature(enable = "neon")]
25854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
25855#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmax))]
25856#[cfg_attr(
25857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25858 assert_instr(umax)
25859)]
25860#[cfg_attr(
25861 not(target_arch = "arm"),
25862 stable(feature = "neon_intrinsics", since = "1.59.0")
25863)]
25864#[cfg_attr(
25865 target_arch = "arm",
25866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25867)]
25868pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
25869 unsafe {
25870 let mask: uint32x4_t = simd_ge(a, b);
25871 simd_select(mask, a, b)
25872 }
25873}
25874#[doc = "Floating-point Maximum Number (vector)"]
25875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f16)"]
25876#[inline(always)]
25877#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
25878#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
25879#[cfg_attr(
25880 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25881 assert_instr(fmaxnm)
25882)]
25883#[target_feature(enable = "neon,fp16")]
25884#[cfg_attr(
25885 not(target_arch = "arm"),
25886 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
25887)]
25888#[cfg_attr(
25889 target_arch = "arm",
25890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25891)]
25892#[cfg(not(target_arch = "arm64ec"))]
25893pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
25894 unsafe extern "unadjusted" {
25895 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v4f16")]
25896 #[cfg_attr(
25897 any(target_arch = "aarch64", target_arch = "arm64ec"),
25898 link_name = "llvm.aarch64.neon.fmaxnm.v4f16"
25899 )]
25900 fn _vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
25901 }
25902 unsafe { _vmaxnm_f16(a, b) }
25903}
25904#[doc = "Floating-point Maximum Number (vector)"]
25905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f16)"]
25906#[inline(always)]
25907#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
25908#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
25909#[cfg_attr(
25910 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25911 assert_instr(fmaxnm)
25912)]
25913#[target_feature(enable = "neon,fp16")]
25914#[cfg_attr(
25915 not(target_arch = "arm"),
25916 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
25917)]
25918#[cfg_attr(
25919 target_arch = "arm",
25920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25921)]
25922#[cfg(not(target_arch = "arm64ec"))]
25923pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
25924 unsafe extern "unadjusted" {
25925 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v8f16")]
25926 #[cfg_attr(
25927 any(target_arch = "aarch64", target_arch = "arm64ec"),
25928 link_name = "llvm.aarch64.neon.fmaxnm.v8f16"
25929 )]
25930 fn _vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
25931 }
25932 unsafe { _vmaxnmq_f16(a, b) }
25933}
25934#[doc = "Floating-point Maximum Number (vector)"]
25935#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f32)"]
25936#[inline(always)]
25937#[target_feature(enable = "neon")]
25938#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
25939#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
25940#[cfg_attr(
25941 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25942 assert_instr(fmaxnm)
25943)]
25944#[cfg_attr(
25945 not(target_arch = "arm"),
25946 stable(feature = "neon_intrinsics", since = "1.59.0")
25947)]
25948#[cfg_attr(
25949 target_arch = "arm",
25950 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25951)]
25952pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
25953 unsafe extern "unadjusted" {
25954 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v2f32")]
25955 #[cfg_attr(
25956 any(target_arch = "aarch64", target_arch = "arm64ec"),
25957 link_name = "llvm.aarch64.neon.fmaxnm.v2f32"
25958 )]
25959 fn _vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
25960 }
25961 unsafe { _vmaxnm_f32(a, b) }
25962}
25963#[doc = "Floating-point Maximum Number (vector)"]
25964#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f32)"]
25965#[inline(always)]
25966#[target_feature(enable = "neon")]
25967#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
25968#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmaxnm))]
25969#[cfg_attr(
25970 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25971 assert_instr(fmaxnm)
25972)]
25973#[cfg_attr(
25974 not(target_arch = "arm"),
25975 stable(feature = "neon_intrinsics", since = "1.59.0")
25976)]
25977#[cfg_attr(
25978 target_arch = "arm",
25979 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
25980)]
25981pub fn vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
25982 unsafe extern "unadjusted" {
25983 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v4f32")]
25984 #[cfg_attr(
25985 any(target_arch = "aarch64", target_arch = "arm64ec"),
25986 link_name = "llvm.aarch64.neon.fmaxnm.v4f32"
25987 )]
25988 fn _vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
25989 }
25990 unsafe { _vmaxnmq_f32(a, b) }
25991}
25992#[doc = "Minimum (vector)"]
25993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f16)"]
25994#[inline(always)]
25995#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
25996#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
25997#[cfg_attr(
25998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
25999 assert_instr(fmin)
26000)]
26001#[target_feature(enable = "neon,fp16")]
26002#[cfg_attr(
26003 not(target_arch = "arm"),
26004 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
26005)]
26006#[cfg_attr(
26007 target_arch = "arm",
26008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26009)]
26010#[cfg(not(target_arch = "arm64ec"))]
26011pub fn vmin_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
26012 unsafe extern "unadjusted" {
26013 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4f16")]
26014 #[cfg_attr(
26015 any(target_arch = "aarch64", target_arch = "arm64ec"),
26016 link_name = "llvm.aarch64.neon.fmin.v4f16"
26017 )]
26018 fn _vmin_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
26019 }
26020 unsafe { _vmin_f16(a, b) }
26021}
26022#[doc = "Minimum (vector)"]
26023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_f16)"]
26024#[inline(always)]
26025#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
26026#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26027#[cfg_attr(
26028 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26029 assert_instr(fmin)
26030)]
26031#[target_feature(enable = "neon,fp16")]
26032#[cfg_attr(
26033 not(target_arch = "arm"),
26034 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
26035)]
26036#[cfg_attr(
26037 target_arch = "arm",
26038 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26039)]
26040#[cfg(not(target_arch = "arm64ec"))]
26041pub fn vminq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
26042 unsafe extern "unadjusted" {
26043 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v8f16")]
26044 #[cfg_attr(
26045 any(target_arch = "aarch64", target_arch = "arm64ec"),
26046 link_name = "llvm.aarch64.neon.fmin.v8f16"
26047 )]
26048 fn _vminq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
26049 }
26050 unsafe { _vminq_f16(a, b) }
26051}
26052#[doc = "Minimum (vector)"]
26053#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f32)"]
26054#[inline(always)]
26055#[target_feature(enable = "neon")]
26056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26058#[cfg_attr(
26059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26060 assert_instr(fmin)
26061)]
26062#[cfg_attr(
26063 not(target_arch = "arm"),
26064 stable(feature = "neon_intrinsics", since = "1.59.0")
26065)]
26066#[cfg_attr(
26067 target_arch = "arm",
26068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26069)]
26070pub fn vmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
26071 unsafe extern "unadjusted" {
26072 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v2f32")]
26073 #[cfg_attr(
26074 any(target_arch = "aarch64", target_arch = "arm64ec"),
26075 link_name = "llvm.aarch64.neon.fmin.v2f32"
26076 )]
26077 fn _vmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
26078 }
26079 unsafe { _vmin_f32(a, b) }
26080}
26081#[doc = "Minimum (vector)"]
26082#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_f32)"]
26083#[inline(always)]
26084#[target_feature(enable = "neon")]
26085#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26086#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26087#[cfg_attr(
26088 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26089 assert_instr(fmin)
26090)]
26091#[cfg_attr(
26092 not(target_arch = "arm"),
26093 stable(feature = "neon_intrinsics", since = "1.59.0")
26094)]
26095#[cfg_attr(
26096 target_arch = "arm",
26097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26098)]
26099pub fn vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
26100 unsafe extern "unadjusted" {
26101 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4f32")]
26102 #[cfg_attr(
26103 any(target_arch = "aarch64", target_arch = "arm64ec"),
26104 link_name = "llvm.aarch64.neon.fmin.v4f32"
26105 )]
26106 fn _vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
26107 }
26108 unsafe { _vminq_f32(a, b) }
26109}
26110#[doc = "Minimum (vector)"]
26111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s8)"]
26112#[inline(always)]
26113#[target_feature(enable = "neon")]
26114#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26115#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26116#[cfg_attr(
26117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26118 assert_instr(smin)
26119)]
26120#[cfg_attr(
26121 not(target_arch = "arm"),
26122 stable(feature = "neon_intrinsics", since = "1.59.0")
26123)]
26124#[cfg_attr(
26125 target_arch = "arm",
26126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26127)]
26128pub fn vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
26129 unsafe {
26130 let mask: int8x8_t = simd_le(a, b);
26131 simd_select(mask, a, b)
26132 }
26133}
26134#[doc = "Minimum (vector)"]
26135#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s8)"]
26136#[inline(always)]
26137#[target_feature(enable = "neon")]
26138#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26139#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26140#[cfg_attr(
26141 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26142 assert_instr(smin)
26143)]
26144#[cfg_attr(
26145 not(target_arch = "arm"),
26146 stable(feature = "neon_intrinsics", since = "1.59.0")
26147)]
26148#[cfg_attr(
26149 target_arch = "arm",
26150 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26151)]
26152pub fn vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
26153 unsafe {
26154 let mask: int8x16_t = simd_le(a, b);
26155 simd_select(mask, a, b)
26156 }
26157}
26158#[doc = "Minimum (vector)"]
26159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s16)"]
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(smin)
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_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
26177 unsafe {
26178 let mask: int16x4_t = simd_le(a, b);
26179 simd_select(mask, a, b)
26180 }
26181}
26182#[doc = "Minimum (vector)"]
26183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s16)"]
26184#[inline(always)]
26185#[target_feature(enable = "neon")]
26186#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26187#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26188#[cfg_attr(
26189 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26190 assert_instr(smin)
26191)]
26192#[cfg_attr(
26193 not(target_arch = "arm"),
26194 stable(feature = "neon_intrinsics", since = "1.59.0")
26195)]
26196#[cfg_attr(
26197 target_arch = "arm",
26198 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26199)]
26200pub fn vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
26201 unsafe {
26202 let mask: int16x8_t = simd_le(a, b);
26203 simd_select(mask, a, b)
26204 }
26205}
26206#[doc = "Minimum (vector)"]
26207#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s32)"]
26208#[inline(always)]
26209#[target_feature(enable = "neon")]
26210#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26211#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26212#[cfg_attr(
26213 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26214 assert_instr(smin)
26215)]
26216#[cfg_attr(
26217 not(target_arch = "arm"),
26218 stable(feature = "neon_intrinsics", since = "1.59.0")
26219)]
26220#[cfg_attr(
26221 target_arch = "arm",
26222 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26223)]
26224pub fn vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
26225 unsafe {
26226 let mask: int32x2_t = simd_le(a, b);
26227 simd_select(mask, a, b)
26228 }
26229}
26230#[doc = "Minimum (vector)"]
26231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s32)"]
26232#[inline(always)]
26233#[target_feature(enable = "neon")]
26234#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26235#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26236#[cfg_attr(
26237 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26238 assert_instr(smin)
26239)]
26240#[cfg_attr(
26241 not(target_arch = "arm"),
26242 stable(feature = "neon_intrinsics", since = "1.59.0")
26243)]
26244#[cfg_attr(
26245 target_arch = "arm",
26246 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26247)]
26248pub fn vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
26249 unsafe {
26250 let mask: int32x4_t = simd_le(a, b);
26251 simd_select(mask, a, b)
26252 }
26253}
26254#[doc = "Minimum (vector)"]
26255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u8)"]
26256#[inline(always)]
26257#[target_feature(enable = "neon")]
26258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26259#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26260#[cfg_attr(
26261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26262 assert_instr(umin)
26263)]
26264#[cfg_attr(
26265 not(target_arch = "arm"),
26266 stable(feature = "neon_intrinsics", since = "1.59.0")
26267)]
26268#[cfg_attr(
26269 target_arch = "arm",
26270 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26271)]
26272pub fn vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
26273 unsafe {
26274 let mask: uint8x8_t = simd_le(a, b);
26275 simd_select(mask, a, b)
26276 }
26277}
26278#[doc = "Minimum (vector)"]
26279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u8)"]
26280#[inline(always)]
26281#[target_feature(enable = "neon")]
26282#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26283#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26284#[cfg_attr(
26285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26286 assert_instr(umin)
26287)]
26288#[cfg_attr(
26289 not(target_arch = "arm"),
26290 stable(feature = "neon_intrinsics", since = "1.59.0")
26291)]
26292#[cfg_attr(
26293 target_arch = "arm",
26294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26295)]
26296pub fn vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
26297 unsafe {
26298 let mask: uint8x16_t = simd_le(a, b);
26299 simd_select(mask, a, b)
26300 }
26301}
26302#[doc = "Minimum (vector)"]
26303#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u16)"]
26304#[inline(always)]
26305#[target_feature(enable = "neon")]
26306#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26307#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26308#[cfg_attr(
26309 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26310 assert_instr(umin)
26311)]
26312#[cfg_attr(
26313 not(target_arch = "arm"),
26314 stable(feature = "neon_intrinsics", since = "1.59.0")
26315)]
26316#[cfg_attr(
26317 target_arch = "arm",
26318 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26319)]
26320pub fn vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
26321 unsafe {
26322 let mask: uint16x4_t = simd_le(a, b);
26323 simd_select(mask, a, b)
26324 }
26325}
26326#[doc = "Minimum (vector)"]
26327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u16)"]
26328#[inline(always)]
26329#[target_feature(enable = "neon")]
26330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26331#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26332#[cfg_attr(
26333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26334 assert_instr(umin)
26335)]
26336#[cfg_attr(
26337 not(target_arch = "arm"),
26338 stable(feature = "neon_intrinsics", since = "1.59.0")
26339)]
26340#[cfg_attr(
26341 target_arch = "arm",
26342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26343)]
26344pub fn vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
26345 unsafe {
26346 let mask: uint16x8_t = simd_le(a, b);
26347 simd_select(mask, a, b)
26348 }
26349}
26350#[doc = "Minimum (vector)"]
26351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u32)"]
26352#[inline(always)]
26353#[target_feature(enable = "neon")]
26354#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26355#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26356#[cfg_attr(
26357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26358 assert_instr(umin)
26359)]
26360#[cfg_attr(
26361 not(target_arch = "arm"),
26362 stable(feature = "neon_intrinsics", since = "1.59.0")
26363)]
26364#[cfg_attr(
26365 target_arch = "arm",
26366 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26367)]
26368pub fn vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
26369 unsafe {
26370 let mask: uint32x2_t = simd_le(a, b);
26371 simd_select(mask, a, b)
26372 }
26373}
26374#[doc = "Minimum (vector)"]
26375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u32)"]
26376#[inline(always)]
26377#[target_feature(enable = "neon")]
26378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26379#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmin))]
26380#[cfg_attr(
26381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26382 assert_instr(umin)
26383)]
26384#[cfg_attr(
26385 not(target_arch = "arm"),
26386 stable(feature = "neon_intrinsics", since = "1.59.0")
26387)]
26388#[cfg_attr(
26389 target_arch = "arm",
26390 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26391)]
26392pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
26393 unsafe {
26394 let mask: uint32x4_t = simd_le(a, b);
26395 simd_select(mask, a, b)
26396 }
26397}
26398#[doc = "Floating-point Minimum Number (vector)"]
26399#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f16)"]
26400#[inline(always)]
26401#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26402#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
26403#[cfg_attr(
26404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26405 assert_instr(fminnm)
26406)]
26407#[target_feature(enable = "neon,fp16")]
26408#[cfg_attr(
26409 not(target_arch = "arm"),
26410 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
26411)]
26412#[cfg_attr(
26413 target_arch = "arm",
26414 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26415)]
26416#[cfg(not(target_arch = "arm64ec"))]
26417pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
26418 unsafe extern "unadjusted" {
26419 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v4f16")]
26420 #[cfg_attr(
26421 any(target_arch = "aarch64", target_arch = "arm64ec"),
26422 link_name = "llvm.aarch64.neon.fminnm.v4f16"
26423 )]
26424 fn _vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
26425 }
26426 unsafe { _vminnm_f16(a, b) }
26427}
26428#[doc = "Floating-point Minimum Number (vector)"]
26429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f16)"]
26430#[inline(always)]
26431#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26432#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
26433#[cfg_attr(
26434 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26435 assert_instr(fminnm)
26436)]
26437#[target_feature(enable = "neon,fp16")]
26438#[cfg_attr(
26439 not(target_arch = "arm"),
26440 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
26441)]
26442#[cfg_attr(
26443 target_arch = "arm",
26444 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26445)]
26446#[cfg(not(target_arch = "arm64ec"))]
26447pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
26448 unsafe extern "unadjusted" {
26449 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v8f16")]
26450 #[cfg_attr(
26451 any(target_arch = "aarch64", target_arch = "arm64ec"),
26452 link_name = "llvm.aarch64.neon.fminnm.v8f16"
26453 )]
26454 fn _vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
26455 }
26456 unsafe { _vminnmq_f16(a, b) }
26457}
26458#[doc = "Floating-point Minimum Number (vector)"]
26459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f32)"]
26460#[inline(always)]
26461#[target_feature(enable = "neon")]
26462#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
26464#[cfg_attr(
26465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26466 assert_instr(fminnm)
26467)]
26468#[cfg_attr(
26469 not(target_arch = "arm"),
26470 stable(feature = "neon_intrinsics", since = "1.59.0")
26471)]
26472#[cfg_attr(
26473 target_arch = "arm",
26474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26475)]
26476pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
26477 unsafe extern "unadjusted" {
26478 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v2f32")]
26479 #[cfg_attr(
26480 any(target_arch = "aarch64", target_arch = "arm64ec"),
26481 link_name = "llvm.aarch64.neon.fminnm.v2f32"
26482 )]
26483 fn _vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
26484 }
26485 unsafe { _vminnm_f32(a, b) }
26486}
26487#[doc = "Floating-point Minimum Number (vector)"]
26488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f32)"]
26489#[inline(always)]
26490#[target_feature(enable = "neon")]
26491#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
26492#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vminnm))]
26493#[cfg_attr(
26494 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26495 assert_instr(fminnm)
26496)]
26497#[cfg_attr(
26498 not(target_arch = "arm"),
26499 stable(feature = "neon_intrinsics", since = "1.59.0")
26500)]
26501#[cfg_attr(
26502 target_arch = "arm",
26503 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26504)]
26505pub fn vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
26506 unsafe extern "unadjusted" {
26507 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v4f32")]
26508 #[cfg_attr(
26509 any(target_arch = "aarch64", target_arch = "arm64ec"),
26510 link_name = "llvm.aarch64.neon.fminnm.v4f32"
26511 )]
26512 fn _vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
26513 }
26514 unsafe { _vminnmq_f32(a, b) }
26515}
26516#[doc = "Floating-point multiply-add to accumulator"]
26517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f32)"]
26518#[inline(always)]
26519#[target_feature(enable = "neon")]
26520#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26521#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
26522#[cfg_attr(
26523 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26524 assert_instr(fmul)
26525)]
26526#[cfg_attr(
26527 not(target_arch = "arm"),
26528 stable(feature = "neon_intrinsics", since = "1.59.0")
26529)]
26530#[cfg_attr(
26531 target_arch = "arm",
26532 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26533)]
26534pub fn vmla_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
26535 unsafe { simd_add(a, simd_mul(b, c)) }
26536}
26537#[doc = "Floating-point multiply-add to accumulator"]
26538#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_f32)"]
26539#[inline(always)]
26540#[target_feature(enable = "neon")]
26541#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26542#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
26543#[cfg_attr(
26544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26545 assert_instr(fmul)
26546)]
26547#[cfg_attr(
26548 not(target_arch = "arm"),
26549 stable(feature = "neon_intrinsics", since = "1.59.0")
26550)]
26551#[cfg_attr(
26552 target_arch = "arm",
26553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26554)]
26555pub fn vmlaq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
26556 unsafe { simd_add(a, simd_mul(b, c)) }
26557}
26558#[doc = "Vector multiply accumulate with scalar"]
26559#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_f32)"]
26560#[inline(always)]
26561#[target_feature(enable = "neon")]
26562#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26563#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
26564#[cfg_attr(
26565 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26566 assert_instr(fmul, LANE = 1)
26567)]
26568#[rustc_legacy_const_generics(3)]
26569#[cfg_attr(
26570 not(target_arch = "arm"),
26571 stable(feature = "neon_intrinsics", since = "1.59.0")
26572)]
26573#[cfg_attr(
26574 target_arch = "arm",
26575 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26576)]
26577pub fn vmla_lane_f32<const LANE: i32>(
26578 a: float32x2_t,
26579 b: float32x2_t,
26580 c: float32x2_t,
26581) -> float32x2_t {
26582 static_assert_uimm_bits!(LANE, 1);
26583 unsafe { vmla_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
26584}
26585#[doc = "Vector multiply accumulate with scalar"]
26586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_f32)"]
26587#[inline(always)]
26588#[target_feature(enable = "neon")]
26589#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26590#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
26591#[cfg_attr(
26592 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26593 assert_instr(fmul, LANE = 1)
26594)]
26595#[rustc_legacy_const_generics(3)]
26596#[cfg_attr(
26597 not(target_arch = "arm"),
26598 stable(feature = "neon_intrinsics", since = "1.59.0")
26599)]
26600#[cfg_attr(
26601 target_arch = "arm",
26602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26603)]
26604pub fn vmla_laneq_f32<const LANE: i32>(
26605 a: float32x2_t,
26606 b: float32x2_t,
26607 c: float32x4_t,
26608) -> float32x2_t {
26609 static_assert_uimm_bits!(LANE, 2);
26610 unsafe { vmla_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
26611}
26612#[doc = "Vector multiply accumulate with scalar"]
26613#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_f32)"]
26614#[inline(always)]
26615#[target_feature(enable = "neon")]
26616#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26617#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
26618#[cfg_attr(
26619 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26620 assert_instr(fmul, LANE = 1)
26621)]
26622#[rustc_legacy_const_generics(3)]
26623#[cfg_attr(
26624 not(target_arch = "arm"),
26625 stable(feature = "neon_intrinsics", since = "1.59.0")
26626)]
26627#[cfg_attr(
26628 target_arch = "arm",
26629 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26630)]
26631pub fn vmlaq_lane_f32<const LANE: i32>(
26632 a: float32x4_t,
26633 b: float32x4_t,
26634 c: float32x2_t,
26635) -> float32x4_t {
26636 static_assert_uimm_bits!(LANE, 1);
26637 unsafe {
26638 vmlaq_f32(
26639 a,
26640 b,
26641 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26642 )
26643 }
26644}
26645#[doc = "Vector multiply accumulate with scalar"]
26646#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_f32)"]
26647#[inline(always)]
26648#[target_feature(enable = "neon")]
26649#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26650#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32", LANE = 1))]
26651#[cfg_attr(
26652 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26653 assert_instr(fmul, LANE = 1)
26654)]
26655#[rustc_legacy_const_generics(3)]
26656#[cfg_attr(
26657 not(target_arch = "arm"),
26658 stable(feature = "neon_intrinsics", since = "1.59.0")
26659)]
26660#[cfg_attr(
26661 target_arch = "arm",
26662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26663)]
26664pub fn vmlaq_laneq_f32<const LANE: i32>(
26665 a: float32x4_t,
26666 b: float32x4_t,
26667 c: float32x4_t,
26668) -> float32x4_t {
26669 static_assert_uimm_bits!(LANE, 2);
26670 unsafe {
26671 vmlaq_f32(
26672 a,
26673 b,
26674 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26675 )
26676 }
26677}
26678#[doc = "Vector multiply accumulate with scalar"]
26679#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_s16)"]
26680#[inline(always)]
26681#[target_feature(enable = "neon")]
26682#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26683#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26684#[cfg_attr(
26685 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26686 assert_instr(mla, LANE = 1)
26687)]
26688#[rustc_legacy_const_generics(3)]
26689#[cfg_attr(
26690 not(target_arch = "arm"),
26691 stable(feature = "neon_intrinsics", since = "1.59.0")
26692)]
26693#[cfg_attr(
26694 target_arch = "arm",
26695 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26696)]
26697pub fn vmla_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
26698 static_assert_uimm_bits!(LANE, 2);
26699 unsafe {
26700 vmla_s16(
26701 a,
26702 b,
26703 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26704 )
26705 }
26706}
26707#[doc = "Vector multiply accumulate with scalar"]
26708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_u16)"]
26709#[inline(always)]
26710#[target_feature(enable = "neon")]
26711#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26712#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26713#[cfg_attr(
26714 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26715 assert_instr(mla, LANE = 1)
26716)]
26717#[rustc_legacy_const_generics(3)]
26718#[cfg_attr(
26719 not(target_arch = "arm"),
26720 stable(feature = "neon_intrinsics", since = "1.59.0")
26721)]
26722#[cfg_attr(
26723 target_arch = "arm",
26724 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26725)]
26726pub fn vmla_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
26727 static_assert_uimm_bits!(LANE, 2);
26728 unsafe {
26729 vmla_u16(
26730 a,
26731 b,
26732 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26733 )
26734 }
26735}
26736#[doc = "Vector multiply accumulate with scalar"]
26737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_s16)"]
26738#[inline(always)]
26739#[target_feature(enable = "neon")]
26740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26741#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26742#[cfg_attr(
26743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26744 assert_instr(mla, LANE = 1)
26745)]
26746#[rustc_legacy_const_generics(3)]
26747#[cfg_attr(
26748 not(target_arch = "arm"),
26749 stable(feature = "neon_intrinsics", since = "1.59.0")
26750)]
26751#[cfg_attr(
26752 target_arch = "arm",
26753 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26754)]
26755pub fn vmla_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x8_t) -> int16x4_t {
26756 static_assert_uimm_bits!(LANE, 3);
26757 unsafe {
26758 vmla_s16(
26759 a,
26760 b,
26761 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26762 )
26763 }
26764}
26765#[doc = "Vector multiply accumulate with scalar"]
26766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_u16)"]
26767#[inline(always)]
26768#[target_feature(enable = "neon")]
26769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26770#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26771#[cfg_attr(
26772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26773 assert_instr(mla, LANE = 1)
26774)]
26775#[rustc_legacy_const_generics(3)]
26776#[cfg_attr(
26777 not(target_arch = "arm"),
26778 stable(feature = "neon_intrinsics", since = "1.59.0")
26779)]
26780#[cfg_attr(
26781 target_arch = "arm",
26782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26783)]
26784pub fn vmla_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x8_t) -> uint16x4_t {
26785 static_assert_uimm_bits!(LANE, 3);
26786 unsafe {
26787 vmla_u16(
26788 a,
26789 b,
26790 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
26791 )
26792 }
26793}
26794#[doc = "Vector multiply accumulate with scalar"]
26795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_s16)"]
26796#[inline(always)]
26797#[target_feature(enable = "neon")]
26798#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26799#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26800#[cfg_attr(
26801 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26802 assert_instr(mla, LANE = 1)
26803)]
26804#[rustc_legacy_const_generics(3)]
26805#[cfg_attr(
26806 not(target_arch = "arm"),
26807 stable(feature = "neon_intrinsics", since = "1.59.0")
26808)]
26809#[cfg_attr(
26810 target_arch = "arm",
26811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26812)]
26813pub fn vmlaq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x4_t) -> int16x8_t {
26814 static_assert_uimm_bits!(LANE, 2);
26815 unsafe {
26816 vmlaq_s16(
26817 a,
26818 b,
26819 simd_shuffle!(
26820 c,
26821 c,
26822 [
26823 LANE as u32,
26824 LANE as u32,
26825 LANE as u32,
26826 LANE as u32,
26827 LANE as u32,
26828 LANE as u32,
26829 LANE as u32,
26830 LANE as u32
26831 ]
26832 ),
26833 )
26834 }
26835}
26836#[doc = "Vector multiply accumulate with scalar"]
26837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_u16)"]
26838#[inline(always)]
26839#[target_feature(enable = "neon")]
26840#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26841#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26842#[cfg_attr(
26843 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26844 assert_instr(mla, LANE = 1)
26845)]
26846#[rustc_legacy_const_generics(3)]
26847#[cfg_attr(
26848 not(target_arch = "arm"),
26849 stable(feature = "neon_intrinsics", since = "1.59.0")
26850)]
26851#[cfg_attr(
26852 target_arch = "arm",
26853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26854)]
26855pub fn vmlaq_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x4_t) -> uint16x8_t {
26856 static_assert_uimm_bits!(LANE, 2);
26857 unsafe {
26858 vmlaq_u16(
26859 a,
26860 b,
26861 simd_shuffle!(
26862 c,
26863 c,
26864 [
26865 LANE as u32,
26866 LANE as u32,
26867 LANE as u32,
26868 LANE as u32,
26869 LANE as u32,
26870 LANE as u32,
26871 LANE as u32,
26872 LANE as u32
26873 ]
26874 ),
26875 )
26876 }
26877}
26878#[doc = "Vector multiply accumulate with scalar"]
26879#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_s16)"]
26880#[inline(always)]
26881#[target_feature(enable = "neon")]
26882#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26883#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26884#[cfg_attr(
26885 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26886 assert_instr(mla, LANE = 1)
26887)]
26888#[rustc_legacy_const_generics(3)]
26889#[cfg_attr(
26890 not(target_arch = "arm"),
26891 stable(feature = "neon_intrinsics", since = "1.59.0")
26892)]
26893#[cfg_attr(
26894 target_arch = "arm",
26895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26896)]
26897pub fn vmlaq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
26898 static_assert_uimm_bits!(LANE, 3);
26899 unsafe {
26900 vmlaq_s16(
26901 a,
26902 b,
26903 simd_shuffle!(
26904 c,
26905 c,
26906 [
26907 LANE as u32,
26908 LANE as u32,
26909 LANE as u32,
26910 LANE as u32,
26911 LANE as u32,
26912 LANE as u32,
26913 LANE as u32,
26914 LANE as u32
26915 ]
26916 ),
26917 )
26918 }
26919}
26920#[doc = "Vector multiply accumulate with scalar"]
26921#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_u16)"]
26922#[inline(always)]
26923#[target_feature(enable = "neon")]
26924#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26925#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16", LANE = 1))]
26926#[cfg_attr(
26927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26928 assert_instr(mla, LANE = 1)
26929)]
26930#[rustc_legacy_const_generics(3)]
26931#[cfg_attr(
26932 not(target_arch = "arm"),
26933 stable(feature = "neon_intrinsics", since = "1.59.0")
26934)]
26935#[cfg_attr(
26936 target_arch = "arm",
26937 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26938)]
26939pub fn vmlaq_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
26940 static_assert_uimm_bits!(LANE, 3);
26941 unsafe {
26942 vmlaq_u16(
26943 a,
26944 b,
26945 simd_shuffle!(
26946 c,
26947 c,
26948 [
26949 LANE as u32,
26950 LANE as u32,
26951 LANE as u32,
26952 LANE as u32,
26953 LANE as u32,
26954 LANE as u32,
26955 LANE as u32,
26956 LANE as u32
26957 ]
26958 ),
26959 )
26960 }
26961}
26962#[doc = "Vector multiply accumulate with scalar"]
26963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_s32)"]
26964#[inline(always)]
26965#[target_feature(enable = "neon")]
26966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26967#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
26968#[cfg_attr(
26969 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26970 assert_instr(mla, LANE = 1)
26971)]
26972#[rustc_legacy_const_generics(3)]
26973#[cfg_attr(
26974 not(target_arch = "arm"),
26975 stable(feature = "neon_intrinsics", since = "1.59.0")
26976)]
26977#[cfg_attr(
26978 target_arch = "arm",
26979 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
26980)]
26981pub fn vmla_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
26982 static_assert_uimm_bits!(LANE, 1);
26983 unsafe { vmla_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
26984}
26985#[doc = "Vector multiply accumulate with scalar"]
26986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_lane_u32)"]
26987#[inline(always)]
26988#[target_feature(enable = "neon")]
26989#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
26990#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
26991#[cfg_attr(
26992 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
26993 assert_instr(mla, LANE = 1)
26994)]
26995#[rustc_legacy_const_generics(3)]
26996#[cfg_attr(
26997 not(target_arch = "arm"),
26998 stable(feature = "neon_intrinsics", since = "1.59.0")
26999)]
27000#[cfg_attr(
27001 target_arch = "arm",
27002 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27003)]
27004pub fn vmla_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
27005 static_assert_uimm_bits!(LANE, 1);
27006 unsafe { vmla_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27007}
27008#[doc = "Vector multiply accumulate with scalar"]
27009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_s32)"]
27010#[inline(always)]
27011#[target_feature(enable = "neon")]
27012#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27013#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27014#[cfg_attr(
27015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27016 assert_instr(mla, LANE = 1)
27017)]
27018#[rustc_legacy_const_generics(3)]
27019#[cfg_attr(
27020 not(target_arch = "arm"),
27021 stable(feature = "neon_intrinsics", since = "1.59.0")
27022)]
27023#[cfg_attr(
27024 target_arch = "arm",
27025 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27026)]
27027pub fn vmla_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x4_t) -> int32x2_t {
27028 static_assert_uimm_bits!(LANE, 2);
27029 unsafe { vmla_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27030}
27031#[doc = "Vector multiply accumulate with scalar"]
27032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_laneq_u32)"]
27033#[inline(always)]
27034#[target_feature(enable = "neon")]
27035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27036#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27037#[cfg_attr(
27038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27039 assert_instr(mla, LANE = 1)
27040)]
27041#[rustc_legacy_const_generics(3)]
27042#[cfg_attr(
27043 not(target_arch = "arm"),
27044 stable(feature = "neon_intrinsics", since = "1.59.0")
27045)]
27046#[cfg_attr(
27047 target_arch = "arm",
27048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27049)]
27050pub fn vmla_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x4_t) -> uint32x2_t {
27051 static_assert_uimm_bits!(LANE, 2);
27052 unsafe { vmla_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27053}
27054#[doc = "Vector multiply accumulate with scalar"]
27055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_s32)"]
27056#[inline(always)]
27057#[target_feature(enable = "neon")]
27058#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27059#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27060#[cfg_attr(
27061 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27062 assert_instr(mla, LANE = 1)
27063)]
27064#[rustc_legacy_const_generics(3)]
27065#[cfg_attr(
27066 not(target_arch = "arm"),
27067 stable(feature = "neon_intrinsics", since = "1.59.0")
27068)]
27069#[cfg_attr(
27070 target_arch = "arm",
27071 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27072)]
27073pub fn vmlaq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x2_t) -> int32x4_t {
27074 static_assert_uimm_bits!(LANE, 1);
27075 unsafe {
27076 vmlaq_s32(
27077 a,
27078 b,
27079 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27080 )
27081 }
27082}
27083#[doc = "Vector multiply accumulate with scalar"]
27084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_lane_u32)"]
27085#[inline(always)]
27086#[target_feature(enable = "neon")]
27087#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27088#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27089#[cfg_attr(
27090 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27091 assert_instr(mla, LANE = 1)
27092)]
27093#[rustc_legacy_const_generics(3)]
27094#[cfg_attr(
27095 not(target_arch = "arm"),
27096 stable(feature = "neon_intrinsics", since = "1.59.0")
27097)]
27098#[cfg_attr(
27099 target_arch = "arm",
27100 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27101)]
27102pub fn vmlaq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x2_t) -> uint32x4_t {
27103 static_assert_uimm_bits!(LANE, 1);
27104 unsafe {
27105 vmlaq_u32(
27106 a,
27107 b,
27108 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27109 )
27110 }
27111}
27112#[doc = "Vector multiply accumulate with scalar"]
27113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_s32)"]
27114#[inline(always)]
27115#[target_feature(enable = "neon")]
27116#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27117#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27118#[cfg_attr(
27119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27120 assert_instr(mla, LANE = 1)
27121)]
27122#[rustc_legacy_const_generics(3)]
27123#[cfg_attr(
27124 not(target_arch = "arm"),
27125 stable(feature = "neon_intrinsics", since = "1.59.0")
27126)]
27127#[cfg_attr(
27128 target_arch = "arm",
27129 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27130)]
27131pub fn vmlaq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
27132 static_assert_uimm_bits!(LANE, 2);
27133 unsafe {
27134 vmlaq_s32(
27135 a,
27136 b,
27137 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27138 )
27139 }
27140}
27141#[doc = "Vector multiply accumulate with scalar"]
27142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_laneq_u32)"]
27143#[inline(always)]
27144#[target_feature(enable = "neon")]
27145#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27146#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32", LANE = 1))]
27147#[cfg_attr(
27148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27149 assert_instr(mla, LANE = 1)
27150)]
27151#[rustc_legacy_const_generics(3)]
27152#[cfg_attr(
27153 not(target_arch = "arm"),
27154 stable(feature = "neon_intrinsics", since = "1.59.0")
27155)]
27156#[cfg_attr(
27157 target_arch = "arm",
27158 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27159)]
27160pub fn vmlaq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
27161 static_assert_uimm_bits!(LANE, 2);
27162 unsafe {
27163 vmlaq_u32(
27164 a,
27165 b,
27166 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27167 )
27168 }
27169}
27170#[doc = "Vector multiply accumulate with scalar"]
27171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_f32)"]
27172#[inline(always)]
27173#[target_feature(enable = "neon")]
27174#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27175#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
27176#[cfg_attr(
27177 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27178 assert_instr(fmul)
27179)]
27180#[cfg_attr(
27181 not(target_arch = "arm"),
27182 stable(feature = "neon_intrinsics", since = "1.59.0")
27183)]
27184#[cfg_attr(
27185 target_arch = "arm",
27186 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27187)]
27188pub fn vmla_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
27189 vmla_f32(a, b, vdup_n_f32(c))
27190}
27191#[doc = "Vector multiply accumulate with scalar"]
27192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_f32)"]
27193#[inline(always)]
27194#[target_feature(enable = "neon")]
27195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27196#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.f32"))]
27197#[cfg_attr(
27198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27199 assert_instr(fmul)
27200)]
27201#[cfg_attr(
27202 not(target_arch = "arm"),
27203 stable(feature = "neon_intrinsics", since = "1.59.0")
27204)]
27205#[cfg_attr(
27206 target_arch = "arm",
27207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27208)]
27209pub fn vmlaq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
27210 vmlaq_f32(a, b, vdupq_n_f32(c))
27211}
27212#[doc = "Vector multiply accumulate with scalar"]
27213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_s16)"]
27214#[inline(always)]
27215#[target_feature(enable = "neon")]
27216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27217#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27218#[cfg_attr(
27219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27220 assert_instr(mla)
27221)]
27222#[cfg_attr(
27223 not(target_arch = "arm"),
27224 stable(feature = "neon_intrinsics", since = "1.59.0")
27225)]
27226#[cfg_attr(
27227 target_arch = "arm",
27228 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27229)]
27230pub fn vmla_n_s16(a: int16x4_t, b: int16x4_t, c: i16) -> int16x4_t {
27231 vmla_s16(a, b, vdup_n_s16(c))
27232}
27233#[doc = "Vector multiply accumulate with scalar"]
27234#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_s16)"]
27235#[inline(always)]
27236#[target_feature(enable = "neon")]
27237#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27238#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27239#[cfg_attr(
27240 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27241 assert_instr(mla)
27242)]
27243#[cfg_attr(
27244 not(target_arch = "arm"),
27245 stable(feature = "neon_intrinsics", since = "1.59.0")
27246)]
27247#[cfg_attr(
27248 target_arch = "arm",
27249 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27250)]
27251pub fn vmlaq_n_s16(a: int16x8_t, b: int16x8_t, c: i16) -> int16x8_t {
27252 vmlaq_s16(a, b, vdupq_n_s16(c))
27253}
27254#[doc = "Vector multiply accumulate with scalar"]
27255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_u16)"]
27256#[inline(always)]
27257#[target_feature(enable = "neon")]
27258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27259#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27260#[cfg_attr(
27261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27262 assert_instr(mla)
27263)]
27264#[cfg_attr(
27265 not(target_arch = "arm"),
27266 stable(feature = "neon_intrinsics", since = "1.59.0")
27267)]
27268#[cfg_attr(
27269 target_arch = "arm",
27270 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27271)]
27272pub fn vmla_n_u16(a: uint16x4_t, b: uint16x4_t, c: u16) -> uint16x4_t {
27273 vmla_u16(a, b, vdup_n_u16(c))
27274}
27275#[doc = "Vector multiply accumulate with scalar"]
27276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_u16)"]
27277#[inline(always)]
27278#[target_feature(enable = "neon")]
27279#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27280#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27281#[cfg_attr(
27282 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27283 assert_instr(mla)
27284)]
27285#[cfg_attr(
27286 not(target_arch = "arm"),
27287 stable(feature = "neon_intrinsics", since = "1.59.0")
27288)]
27289#[cfg_attr(
27290 target_arch = "arm",
27291 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27292)]
27293pub fn vmlaq_n_u16(a: uint16x8_t, b: uint16x8_t, c: u16) -> uint16x8_t {
27294 vmlaq_u16(a, b, vdupq_n_u16(c))
27295}
27296#[doc = "Vector multiply accumulate with scalar"]
27297#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_s32)"]
27298#[inline(always)]
27299#[target_feature(enable = "neon")]
27300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27301#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27302#[cfg_attr(
27303 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27304 assert_instr(mla)
27305)]
27306#[cfg_attr(
27307 not(target_arch = "arm"),
27308 stable(feature = "neon_intrinsics", since = "1.59.0")
27309)]
27310#[cfg_attr(
27311 target_arch = "arm",
27312 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27313)]
27314pub fn vmla_n_s32(a: int32x2_t, b: int32x2_t, c: i32) -> int32x2_t {
27315 vmla_s32(a, b, vdup_n_s32(c))
27316}
27317#[doc = "Vector multiply accumulate with scalar"]
27318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_s32)"]
27319#[inline(always)]
27320#[target_feature(enable = "neon")]
27321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27322#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27323#[cfg_attr(
27324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27325 assert_instr(mla)
27326)]
27327#[cfg_attr(
27328 not(target_arch = "arm"),
27329 stable(feature = "neon_intrinsics", since = "1.59.0")
27330)]
27331#[cfg_attr(
27332 target_arch = "arm",
27333 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27334)]
27335pub fn vmlaq_n_s32(a: int32x4_t, b: int32x4_t, c: i32) -> int32x4_t {
27336 vmlaq_s32(a, b, vdupq_n_s32(c))
27337}
27338#[doc = "Vector multiply accumulate with scalar"]
27339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_n_u32)"]
27340#[inline(always)]
27341#[target_feature(enable = "neon")]
27342#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27343#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27344#[cfg_attr(
27345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27346 assert_instr(mla)
27347)]
27348#[cfg_attr(
27349 not(target_arch = "arm"),
27350 stable(feature = "neon_intrinsics", since = "1.59.0")
27351)]
27352#[cfg_attr(
27353 target_arch = "arm",
27354 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27355)]
27356pub fn vmla_n_u32(a: uint32x2_t, b: uint32x2_t, c: u32) -> uint32x2_t {
27357 vmla_u32(a, b, vdup_n_u32(c))
27358}
27359#[doc = "Vector multiply accumulate with scalar"]
27360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_n_u32)"]
27361#[inline(always)]
27362#[target_feature(enable = "neon")]
27363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27364#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27365#[cfg_attr(
27366 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27367 assert_instr(mla)
27368)]
27369#[cfg_attr(
27370 not(target_arch = "arm"),
27371 stable(feature = "neon_intrinsics", since = "1.59.0")
27372)]
27373#[cfg_attr(
27374 target_arch = "arm",
27375 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27376)]
27377pub fn vmlaq_n_u32(a: uint32x4_t, b: uint32x4_t, c: u32) -> uint32x4_t {
27378 vmlaq_u32(a, b, vdupq_n_u32(c))
27379}
27380#[doc = "Multiply-add to accumulator"]
27381#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s8)"]
27382#[inline(always)]
27383#[target_feature(enable = "neon")]
27384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27385#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
27386#[cfg_attr(
27387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27388 assert_instr(mla)
27389)]
27390#[cfg_attr(
27391 not(target_arch = "arm"),
27392 stable(feature = "neon_intrinsics", since = "1.59.0")
27393)]
27394#[cfg_attr(
27395 target_arch = "arm",
27396 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27397)]
27398pub fn vmla_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
27399 unsafe { simd_add(a, simd_mul(b, c)) }
27400}
27401#[doc = "Multiply-add to accumulator"]
27402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s8)"]
27403#[inline(always)]
27404#[target_feature(enable = "neon")]
27405#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27406#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
27407#[cfg_attr(
27408 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27409 assert_instr(mla)
27410)]
27411#[cfg_attr(
27412 not(target_arch = "arm"),
27413 stable(feature = "neon_intrinsics", since = "1.59.0")
27414)]
27415#[cfg_attr(
27416 target_arch = "arm",
27417 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27418)]
27419pub fn vmlaq_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
27420 unsafe { simd_add(a, simd_mul(b, c)) }
27421}
27422#[doc = "Multiply-add to accumulator"]
27423#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s16)"]
27424#[inline(always)]
27425#[target_feature(enable = "neon")]
27426#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27427#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27428#[cfg_attr(
27429 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27430 assert_instr(mla)
27431)]
27432#[cfg_attr(
27433 not(target_arch = "arm"),
27434 stable(feature = "neon_intrinsics", since = "1.59.0")
27435)]
27436#[cfg_attr(
27437 target_arch = "arm",
27438 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27439)]
27440pub fn vmla_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
27441 unsafe { simd_add(a, simd_mul(b, c)) }
27442}
27443#[doc = "Multiply-add to accumulator"]
27444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s16)"]
27445#[inline(always)]
27446#[target_feature(enable = "neon")]
27447#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27448#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27449#[cfg_attr(
27450 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27451 assert_instr(mla)
27452)]
27453#[cfg_attr(
27454 not(target_arch = "arm"),
27455 stable(feature = "neon_intrinsics", since = "1.59.0")
27456)]
27457#[cfg_attr(
27458 target_arch = "arm",
27459 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27460)]
27461pub fn vmlaq_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
27462 unsafe { simd_add(a, simd_mul(b, c)) }
27463}
27464#[doc = "Multiply-add to accumulator"]
27465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_s32)"]
27466#[inline(always)]
27467#[target_feature(enable = "neon")]
27468#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27469#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27470#[cfg_attr(
27471 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27472 assert_instr(mla)
27473)]
27474#[cfg_attr(
27475 not(target_arch = "arm"),
27476 stable(feature = "neon_intrinsics", since = "1.59.0")
27477)]
27478#[cfg_attr(
27479 target_arch = "arm",
27480 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27481)]
27482pub fn vmla_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
27483 unsafe { simd_add(a, simd_mul(b, c)) }
27484}
27485#[doc = "Multiply-add to accumulator"]
27486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_s32)"]
27487#[inline(always)]
27488#[target_feature(enable = "neon")]
27489#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27490#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27491#[cfg_attr(
27492 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27493 assert_instr(mla)
27494)]
27495#[cfg_attr(
27496 not(target_arch = "arm"),
27497 stable(feature = "neon_intrinsics", since = "1.59.0")
27498)]
27499#[cfg_attr(
27500 target_arch = "arm",
27501 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27502)]
27503pub fn vmlaq_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
27504 unsafe { simd_add(a, simd_mul(b, c)) }
27505}
27506#[doc = "Multiply-add to accumulator"]
27507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u8)"]
27508#[inline(always)]
27509#[target_feature(enable = "neon")]
27510#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27511#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
27512#[cfg_attr(
27513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27514 assert_instr(mla)
27515)]
27516#[cfg_attr(
27517 not(target_arch = "arm"),
27518 stable(feature = "neon_intrinsics", since = "1.59.0")
27519)]
27520#[cfg_attr(
27521 target_arch = "arm",
27522 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27523)]
27524pub fn vmla_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
27525 unsafe { simd_add(a, simd_mul(b, c)) }
27526}
27527#[doc = "Multiply-add to accumulator"]
27528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u8)"]
27529#[inline(always)]
27530#[target_feature(enable = "neon")]
27531#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27532#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i8"))]
27533#[cfg_attr(
27534 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27535 assert_instr(mla)
27536)]
27537#[cfg_attr(
27538 not(target_arch = "arm"),
27539 stable(feature = "neon_intrinsics", since = "1.59.0")
27540)]
27541#[cfg_attr(
27542 target_arch = "arm",
27543 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27544)]
27545pub fn vmlaq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
27546 unsafe { simd_add(a, simd_mul(b, c)) }
27547}
27548#[doc = "Multiply-add to accumulator"]
27549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u16)"]
27550#[inline(always)]
27551#[target_feature(enable = "neon")]
27552#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27553#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27554#[cfg_attr(
27555 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27556 assert_instr(mla)
27557)]
27558#[cfg_attr(
27559 not(target_arch = "arm"),
27560 stable(feature = "neon_intrinsics", since = "1.59.0")
27561)]
27562#[cfg_attr(
27563 target_arch = "arm",
27564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27565)]
27566pub fn vmla_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
27567 unsafe { simd_add(a, simd_mul(b, c)) }
27568}
27569#[doc = "Multiply-add to accumulator"]
27570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u16)"]
27571#[inline(always)]
27572#[target_feature(enable = "neon")]
27573#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27574#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i16"))]
27575#[cfg_attr(
27576 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27577 assert_instr(mla)
27578)]
27579#[cfg_attr(
27580 not(target_arch = "arm"),
27581 stable(feature = "neon_intrinsics", since = "1.59.0")
27582)]
27583#[cfg_attr(
27584 target_arch = "arm",
27585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27586)]
27587pub fn vmlaq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
27588 unsafe { simd_add(a, simd_mul(b, c)) }
27589}
27590#[doc = "Multiply-add to accumulator"]
27591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_u32)"]
27592#[inline(always)]
27593#[target_feature(enable = "neon")]
27594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27595#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27596#[cfg_attr(
27597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27598 assert_instr(mla)
27599)]
27600#[cfg_attr(
27601 not(target_arch = "arm"),
27602 stable(feature = "neon_intrinsics", since = "1.59.0")
27603)]
27604#[cfg_attr(
27605 target_arch = "arm",
27606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27607)]
27608pub fn vmla_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
27609 unsafe { simd_add(a, simd_mul(b, c)) }
27610}
27611#[doc = "Multiply-add to accumulator"]
27612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlaq_u32)"]
27613#[inline(always)]
27614#[target_feature(enable = "neon")]
27615#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27616#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmla.i32"))]
27617#[cfg_attr(
27618 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27619 assert_instr(mla)
27620)]
27621#[cfg_attr(
27622 not(target_arch = "arm"),
27623 stable(feature = "neon_intrinsics", since = "1.59.0")
27624)]
27625#[cfg_attr(
27626 target_arch = "arm",
27627 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27628)]
27629pub fn vmlaq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
27630 unsafe { simd_add(a, simd_mul(b, c)) }
27631}
27632#[doc = "Vector widening multiply accumulate with scalar"]
27633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_s16)"]
27634#[inline(always)]
27635#[target_feature(enable = "neon")]
27636#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27637#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16", LANE = 1))]
27638#[cfg_attr(
27639 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27640 assert_instr(smlal, LANE = 1)
27641)]
27642#[rustc_legacy_const_generics(3)]
27643#[cfg_attr(
27644 not(target_arch = "arm"),
27645 stable(feature = "neon_intrinsics", since = "1.59.0")
27646)]
27647#[cfg_attr(
27648 target_arch = "arm",
27649 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27650)]
27651pub fn vmlal_lane_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
27652 static_assert_uimm_bits!(LANE, 2);
27653 unsafe {
27654 vmlal_s16(
27655 a,
27656 b,
27657 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27658 )
27659 }
27660}
27661#[doc = "Vector widening multiply accumulate with scalar"]
27662#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_s16)"]
27663#[inline(always)]
27664#[target_feature(enable = "neon")]
27665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27666#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16", LANE = 1))]
27667#[cfg_attr(
27668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27669 assert_instr(smlal, LANE = 1)
27670)]
27671#[rustc_legacy_const_generics(3)]
27672#[cfg_attr(
27673 not(target_arch = "arm"),
27674 stable(feature = "neon_intrinsics", since = "1.59.0")
27675)]
27676#[cfg_attr(
27677 target_arch = "arm",
27678 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27679)]
27680pub fn vmlal_laneq_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x8_t) -> int32x4_t {
27681 static_assert_uimm_bits!(LANE, 3);
27682 unsafe {
27683 vmlal_s16(
27684 a,
27685 b,
27686 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27687 )
27688 }
27689}
27690#[doc = "Vector widening multiply accumulate with scalar"]
27691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_s32)"]
27692#[inline(always)]
27693#[target_feature(enable = "neon")]
27694#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27695#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32", LANE = 1))]
27696#[cfg_attr(
27697 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27698 assert_instr(smlal, LANE = 1)
27699)]
27700#[rustc_legacy_const_generics(3)]
27701#[cfg_attr(
27702 not(target_arch = "arm"),
27703 stable(feature = "neon_intrinsics", since = "1.59.0")
27704)]
27705#[cfg_attr(
27706 target_arch = "arm",
27707 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27708)]
27709pub fn vmlal_lane_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
27710 static_assert_uimm_bits!(LANE, 1);
27711 unsafe { vmlal_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27712}
27713#[doc = "Vector widening multiply accumulate with scalar"]
27714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_s32)"]
27715#[inline(always)]
27716#[target_feature(enable = "neon")]
27717#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27718#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32", LANE = 1))]
27719#[cfg_attr(
27720 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27721 assert_instr(smlal, LANE = 1)
27722)]
27723#[rustc_legacy_const_generics(3)]
27724#[cfg_attr(
27725 not(target_arch = "arm"),
27726 stable(feature = "neon_intrinsics", since = "1.59.0")
27727)]
27728#[cfg_attr(
27729 target_arch = "arm",
27730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27731)]
27732pub fn vmlal_laneq_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x4_t) -> int64x2_t {
27733 static_assert_uimm_bits!(LANE, 2);
27734 unsafe { vmlal_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27735}
27736#[doc = "Vector widening multiply accumulate with scalar"]
27737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_u16)"]
27738#[inline(always)]
27739#[target_feature(enable = "neon")]
27740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27741#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16", LANE = 1))]
27742#[cfg_attr(
27743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27744 assert_instr(umlal, LANE = 1)
27745)]
27746#[rustc_legacy_const_generics(3)]
27747#[cfg_attr(
27748 not(target_arch = "arm"),
27749 stable(feature = "neon_intrinsics", since = "1.59.0")
27750)]
27751#[cfg_attr(
27752 target_arch = "arm",
27753 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27754)]
27755pub fn vmlal_lane_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
27756 static_assert_uimm_bits!(LANE, 2);
27757 unsafe {
27758 vmlal_u16(
27759 a,
27760 b,
27761 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27762 )
27763 }
27764}
27765#[doc = "Vector widening multiply accumulate with scalar"]
27766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_u16)"]
27767#[inline(always)]
27768#[target_feature(enable = "neon")]
27769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27770#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16", LANE = 1))]
27771#[cfg_attr(
27772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27773 assert_instr(umlal, LANE = 1)
27774)]
27775#[rustc_legacy_const_generics(3)]
27776#[cfg_attr(
27777 not(target_arch = "arm"),
27778 stable(feature = "neon_intrinsics", since = "1.59.0")
27779)]
27780#[cfg_attr(
27781 target_arch = "arm",
27782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27783)]
27784pub fn vmlal_laneq_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x8_t) -> uint32x4_t {
27785 static_assert_uimm_bits!(LANE, 3);
27786 unsafe {
27787 vmlal_u16(
27788 a,
27789 b,
27790 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
27791 )
27792 }
27793}
27794#[doc = "Vector widening multiply accumulate with scalar"]
27795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_lane_u32)"]
27796#[inline(always)]
27797#[target_feature(enable = "neon")]
27798#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27799#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32", LANE = 1))]
27800#[cfg_attr(
27801 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27802 assert_instr(umlal, LANE = 1)
27803)]
27804#[rustc_legacy_const_generics(3)]
27805#[cfg_attr(
27806 not(target_arch = "arm"),
27807 stable(feature = "neon_intrinsics", since = "1.59.0")
27808)]
27809#[cfg_attr(
27810 target_arch = "arm",
27811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27812)]
27813pub fn vmlal_lane_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
27814 static_assert_uimm_bits!(LANE, 1);
27815 unsafe { vmlal_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27816}
27817#[doc = "Vector widening multiply accumulate with scalar"]
27818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_laneq_u32)"]
27819#[inline(always)]
27820#[target_feature(enable = "neon")]
27821#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27822#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32", LANE = 1))]
27823#[cfg_attr(
27824 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27825 assert_instr(umlal, LANE = 1)
27826)]
27827#[rustc_legacy_const_generics(3)]
27828#[cfg_attr(
27829 not(target_arch = "arm"),
27830 stable(feature = "neon_intrinsics", since = "1.59.0")
27831)]
27832#[cfg_attr(
27833 target_arch = "arm",
27834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27835)]
27836pub fn vmlal_laneq_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x4_t) -> uint64x2_t {
27837 static_assert_uimm_bits!(LANE, 2);
27838 unsafe { vmlal_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
27839}
27840#[doc = "Vector widening multiply accumulate with scalar"]
27841#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_s16)"]
27842#[inline(always)]
27843#[target_feature(enable = "neon")]
27844#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27845#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16"))]
27846#[cfg_attr(
27847 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27848 assert_instr(smlal)
27849)]
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_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
27859 vmlal_s16(a, b, vdup_n_s16(c))
27860}
27861#[doc = "Vector widening multiply accumulate with scalar"]
27862#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_s32)"]
27863#[inline(always)]
27864#[target_feature(enable = "neon")]
27865#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27866#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32"))]
27867#[cfg_attr(
27868 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27869 assert_instr(smlal)
27870)]
27871#[cfg_attr(
27872 not(target_arch = "arm"),
27873 stable(feature = "neon_intrinsics", since = "1.59.0")
27874)]
27875#[cfg_attr(
27876 target_arch = "arm",
27877 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27878)]
27879pub fn vmlal_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
27880 vmlal_s32(a, b, vdup_n_s32(c))
27881}
27882#[doc = "Vector widening multiply accumulate with scalar"]
27883#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_u16)"]
27884#[inline(always)]
27885#[target_feature(enable = "neon")]
27886#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27887#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16"))]
27888#[cfg_attr(
27889 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27890 assert_instr(umlal)
27891)]
27892#[cfg_attr(
27893 not(target_arch = "arm"),
27894 stable(feature = "neon_intrinsics", since = "1.59.0")
27895)]
27896#[cfg_attr(
27897 target_arch = "arm",
27898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27899)]
27900pub fn vmlal_n_u16(a: uint32x4_t, b: uint16x4_t, c: u16) -> uint32x4_t {
27901 vmlal_u16(a, b, vdup_n_u16(c))
27902}
27903#[doc = "Vector widening multiply accumulate with scalar"]
27904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_n_u32)"]
27905#[inline(always)]
27906#[target_feature(enable = "neon")]
27907#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27908#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32"))]
27909#[cfg_attr(
27910 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27911 assert_instr(umlal)
27912)]
27913#[cfg_attr(
27914 not(target_arch = "arm"),
27915 stable(feature = "neon_intrinsics", since = "1.59.0")
27916)]
27917#[cfg_attr(
27918 target_arch = "arm",
27919 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27920)]
27921pub fn vmlal_n_u32(a: uint64x2_t, b: uint32x2_t, c: u32) -> uint64x2_t {
27922 vmlal_u32(a, b, vdup_n_u32(c))
27923}
27924#[doc = "Signed multiply-add long"]
27925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s8)"]
27926#[inline(always)]
27927#[target_feature(enable = "neon")]
27928#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27929#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s8"))]
27930#[cfg_attr(
27931 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27932 assert_instr(smlal)
27933)]
27934#[cfg_attr(
27935 not(target_arch = "arm"),
27936 stable(feature = "neon_intrinsics", since = "1.59.0")
27937)]
27938#[cfg_attr(
27939 target_arch = "arm",
27940 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27941)]
27942pub fn vmlal_s8(a: int16x8_t, b: int8x8_t, c: int8x8_t) -> int16x8_t {
27943 unsafe { simd_add(a, vmull_s8(b, c)) }
27944}
27945#[doc = "Signed multiply-add long"]
27946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s16)"]
27947#[inline(always)]
27948#[target_feature(enable = "neon")]
27949#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27950#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s16"))]
27951#[cfg_attr(
27952 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27953 assert_instr(smlal)
27954)]
27955#[cfg_attr(
27956 not(target_arch = "arm"),
27957 stable(feature = "neon_intrinsics", since = "1.59.0")
27958)]
27959#[cfg_attr(
27960 target_arch = "arm",
27961 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27962)]
27963pub fn vmlal_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
27964 unsafe { simd_add(a, vmull_s16(b, c)) }
27965}
27966#[doc = "Signed multiply-add long"]
27967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_s32)"]
27968#[inline(always)]
27969#[target_feature(enable = "neon")]
27970#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27971#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.s32"))]
27972#[cfg_attr(
27973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27974 assert_instr(smlal)
27975)]
27976#[cfg_attr(
27977 not(target_arch = "arm"),
27978 stable(feature = "neon_intrinsics", since = "1.59.0")
27979)]
27980#[cfg_attr(
27981 target_arch = "arm",
27982 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
27983)]
27984pub fn vmlal_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
27985 unsafe { simd_add(a, vmull_s32(b, c)) }
27986}
27987#[doc = "Unsigned multiply-add long"]
27988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u8)"]
27989#[inline(always)]
27990#[target_feature(enable = "neon")]
27991#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
27992#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u8"))]
27993#[cfg_attr(
27994 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
27995 assert_instr(umlal)
27996)]
27997#[cfg_attr(
27998 not(target_arch = "arm"),
27999 stable(feature = "neon_intrinsics", since = "1.59.0")
28000)]
28001#[cfg_attr(
28002 target_arch = "arm",
28003 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28004)]
28005pub fn vmlal_u8(a: uint16x8_t, b: uint8x8_t, c: uint8x8_t) -> uint16x8_t {
28006 unsafe { simd_add(a, vmull_u8(b, c)) }
28007}
28008#[doc = "Unsigned multiply-add long"]
28009#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u16)"]
28010#[inline(always)]
28011#[target_feature(enable = "neon")]
28012#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28013#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u16"))]
28014#[cfg_attr(
28015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28016 assert_instr(umlal)
28017)]
28018#[cfg_attr(
28019 not(target_arch = "arm"),
28020 stable(feature = "neon_intrinsics", since = "1.59.0")
28021)]
28022#[cfg_attr(
28023 target_arch = "arm",
28024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28025)]
28026pub fn vmlal_u16(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
28027 unsafe { simd_add(a, vmull_u16(b, c)) }
28028}
28029#[doc = "Unsigned multiply-add long"]
28030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlal_u32)"]
28031#[inline(always)]
28032#[target_feature(enable = "neon")]
28033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28034#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlal.u32"))]
28035#[cfg_attr(
28036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28037 assert_instr(umlal)
28038)]
28039#[cfg_attr(
28040 not(target_arch = "arm"),
28041 stable(feature = "neon_intrinsics", since = "1.59.0")
28042)]
28043#[cfg_attr(
28044 target_arch = "arm",
28045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28046)]
28047pub fn vmlal_u32(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
28048 unsafe { simd_add(a, vmull_u32(b, c)) }
28049}
28050#[doc = "Floating-point multiply-subtract from accumulator"]
28051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_f32)"]
28052#[inline(always)]
28053#[target_feature(enable = "neon")]
28054#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28055#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
28056#[cfg_attr(
28057 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28058 assert_instr(fmul)
28059)]
28060#[cfg_attr(
28061 not(target_arch = "arm"),
28062 stable(feature = "neon_intrinsics", since = "1.59.0")
28063)]
28064#[cfg_attr(
28065 target_arch = "arm",
28066 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28067)]
28068pub fn vmls_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t) -> float32x2_t {
28069 unsafe { simd_sub(a, simd_mul(b, c)) }
28070}
28071#[doc = "Floating-point multiply-subtract from accumulator"]
28072#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_f32)"]
28073#[inline(always)]
28074#[target_feature(enable = "neon")]
28075#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28076#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
28077#[cfg_attr(
28078 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28079 assert_instr(fmul)
28080)]
28081#[cfg_attr(
28082 not(target_arch = "arm"),
28083 stable(feature = "neon_intrinsics", since = "1.59.0")
28084)]
28085#[cfg_attr(
28086 target_arch = "arm",
28087 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28088)]
28089pub fn vmlsq_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t) -> float32x4_t {
28090 unsafe { simd_sub(a, simd_mul(b, c)) }
28091}
28092#[doc = "Vector multiply subtract with scalar"]
28093#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_f32)"]
28094#[inline(always)]
28095#[target_feature(enable = "neon")]
28096#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28097#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
28098#[cfg_attr(
28099 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28100 assert_instr(fmul, LANE = 1)
28101)]
28102#[rustc_legacy_const_generics(3)]
28103#[cfg_attr(
28104 not(target_arch = "arm"),
28105 stable(feature = "neon_intrinsics", since = "1.59.0")
28106)]
28107#[cfg_attr(
28108 target_arch = "arm",
28109 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28110)]
28111pub fn vmls_lane_f32<const LANE: i32>(
28112 a: float32x2_t,
28113 b: float32x2_t,
28114 c: float32x2_t,
28115) -> float32x2_t {
28116 static_assert_uimm_bits!(LANE, 1);
28117 unsafe { vmls_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28118}
28119#[doc = "Vector multiply subtract with scalar"]
28120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_f32)"]
28121#[inline(always)]
28122#[target_feature(enable = "neon")]
28123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28124#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
28125#[cfg_attr(
28126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28127 assert_instr(fmul, LANE = 1)
28128)]
28129#[rustc_legacy_const_generics(3)]
28130#[cfg_attr(
28131 not(target_arch = "arm"),
28132 stable(feature = "neon_intrinsics", since = "1.59.0")
28133)]
28134#[cfg_attr(
28135 target_arch = "arm",
28136 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28137)]
28138pub fn vmls_laneq_f32<const LANE: i32>(
28139 a: float32x2_t,
28140 b: float32x2_t,
28141 c: float32x4_t,
28142) -> float32x2_t {
28143 static_assert_uimm_bits!(LANE, 2);
28144 unsafe { vmls_f32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28145}
28146#[doc = "Vector multiply subtract with scalar"]
28147#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_f32)"]
28148#[inline(always)]
28149#[target_feature(enable = "neon")]
28150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28151#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
28152#[cfg_attr(
28153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28154 assert_instr(fmul, LANE = 1)
28155)]
28156#[rustc_legacy_const_generics(3)]
28157#[cfg_attr(
28158 not(target_arch = "arm"),
28159 stable(feature = "neon_intrinsics", since = "1.59.0")
28160)]
28161#[cfg_attr(
28162 target_arch = "arm",
28163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28164)]
28165pub fn vmlsq_lane_f32<const LANE: i32>(
28166 a: float32x4_t,
28167 b: float32x4_t,
28168 c: float32x2_t,
28169) -> float32x4_t {
28170 static_assert_uimm_bits!(LANE, 1);
28171 unsafe {
28172 vmlsq_f32(
28173 a,
28174 b,
28175 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28176 )
28177 }
28178}
28179#[doc = "Vector multiply subtract with scalar"]
28180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_f32)"]
28181#[inline(always)]
28182#[target_feature(enable = "neon")]
28183#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28184#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32", LANE = 1))]
28185#[cfg_attr(
28186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28187 assert_instr(fmul, LANE = 1)
28188)]
28189#[rustc_legacy_const_generics(3)]
28190#[cfg_attr(
28191 not(target_arch = "arm"),
28192 stable(feature = "neon_intrinsics", since = "1.59.0")
28193)]
28194#[cfg_attr(
28195 target_arch = "arm",
28196 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28197)]
28198pub fn vmlsq_laneq_f32<const LANE: i32>(
28199 a: float32x4_t,
28200 b: float32x4_t,
28201 c: float32x4_t,
28202) -> float32x4_t {
28203 static_assert_uimm_bits!(LANE, 2);
28204 unsafe {
28205 vmlsq_f32(
28206 a,
28207 b,
28208 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28209 )
28210 }
28211}
28212#[doc = "Vector multiply subtract with scalar"]
28213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_s16)"]
28214#[inline(always)]
28215#[target_feature(enable = "neon")]
28216#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28217#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28218#[cfg_attr(
28219 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28220 assert_instr(mls, LANE = 1)
28221)]
28222#[rustc_legacy_const_generics(3)]
28223#[cfg_attr(
28224 not(target_arch = "arm"),
28225 stable(feature = "neon_intrinsics", since = "1.59.0")
28226)]
28227#[cfg_attr(
28228 target_arch = "arm",
28229 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28230)]
28231pub fn vmls_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
28232 static_assert_uimm_bits!(LANE, 2);
28233 unsafe {
28234 vmls_s16(
28235 a,
28236 b,
28237 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28238 )
28239 }
28240}
28241#[doc = "Vector multiply subtract with scalar"]
28242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_u16)"]
28243#[inline(always)]
28244#[target_feature(enable = "neon")]
28245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28246#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28247#[cfg_attr(
28248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28249 assert_instr(mls, LANE = 1)
28250)]
28251#[rustc_legacy_const_generics(3)]
28252#[cfg_attr(
28253 not(target_arch = "arm"),
28254 stable(feature = "neon_intrinsics", since = "1.59.0")
28255)]
28256#[cfg_attr(
28257 target_arch = "arm",
28258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28259)]
28260pub fn vmls_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
28261 static_assert_uimm_bits!(LANE, 2);
28262 unsafe {
28263 vmls_u16(
28264 a,
28265 b,
28266 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28267 )
28268 }
28269}
28270#[doc = "Vector multiply subtract with scalar"]
28271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_s16)"]
28272#[inline(always)]
28273#[target_feature(enable = "neon")]
28274#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28275#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28276#[cfg_attr(
28277 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28278 assert_instr(mls, LANE = 1)
28279)]
28280#[rustc_legacy_const_generics(3)]
28281#[cfg_attr(
28282 not(target_arch = "arm"),
28283 stable(feature = "neon_intrinsics", since = "1.59.0")
28284)]
28285#[cfg_attr(
28286 target_arch = "arm",
28287 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28288)]
28289pub fn vmls_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x8_t) -> int16x4_t {
28290 static_assert_uimm_bits!(LANE, 3);
28291 unsafe {
28292 vmls_s16(
28293 a,
28294 b,
28295 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28296 )
28297 }
28298}
28299#[doc = "Vector multiply subtract with scalar"]
28300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_u16)"]
28301#[inline(always)]
28302#[target_feature(enable = "neon")]
28303#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28304#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28305#[cfg_attr(
28306 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28307 assert_instr(mls, LANE = 1)
28308)]
28309#[rustc_legacy_const_generics(3)]
28310#[cfg_attr(
28311 not(target_arch = "arm"),
28312 stable(feature = "neon_intrinsics", since = "1.59.0")
28313)]
28314#[cfg_attr(
28315 target_arch = "arm",
28316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28317)]
28318pub fn vmls_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t, c: uint16x8_t) -> uint16x4_t {
28319 static_assert_uimm_bits!(LANE, 3);
28320 unsafe {
28321 vmls_u16(
28322 a,
28323 b,
28324 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28325 )
28326 }
28327}
28328#[doc = "Vector multiply subtract with scalar"]
28329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_s16)"]
28330#[inline(always)]
28331#[target_feature(enable = "neon")]
28332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28333#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28334#[cfg_attr(
28335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28336 assert_instr(mls, LANE = 1)
28337)]
28338#[rustc_legacy_const_generics(3)]
28339#[cfg_attr(
28340 not(target_arch = "arm"),
28341 stable(feature = "neon_intrinsics", since = "1.59.0")
28342)]
28343#[cfg_attr(
28344 target_arch = "arm",
28345 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28346)]
28347pub fn vmlsq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x4_t) -> int16x8_t {
28348 static_assert_uimm_bits!(LANE, 2);
28349 unsafe {
28350 vmlsq_s16(
28351 a,
28352 b,
28353 simd_shuffle!(
28354 c,
28355 c,
28356 [
28357 LANE as u32,
28358 LANE as u32,
28359 LANE as u32,
28360 LANE as u32,
28361 LANE as u32,
28362 LANE as u32,
28363 LANE as u32,
28364 LANE as u32
28365 ]
28366 ),
28367 )
28368 }
28369}
28370#[doc = "Vector multiply subtract with scalar"]
28371#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_u16)"]
28372#[inline(always)]
28373#[target_feature(enable = "neon")]
28374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28375#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28376#[cfg_attr(
28377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28378 assert_instr(mls, LANE = 1)
28379)]
28380#[rustc_legacy_const_generics(3)]
28381#[cfg_attr(
28382 not(target_arch = "arm"),
28383 stable(feature = "neon_intrinsics", since = "1.59.0")
28384)]
28385#[cfg_attr(
28386 target_arch = "arm",
28387 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28388)]
28389pub fn vmlsq_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x4_t) -> uint16x8_t {
28390 static_assert_uimm_bits!(LANE, 2);
28391 unsafe {
28392 vmlsq_u16(
28393 a,
28394 b,
28395 simd_shuffle!(
28396 c,
28397 c,
28398 [
28399 LANE as u32,
28400 LANE as u32,
28401 LANE as u32,
28402 LANE as u32,
28403 LANE as u32,
28404 LANE as u32,
28405 LANE as u32,
28406 LANE as u32
28407 ]
28408 ),
28409 )
28410 }
28411}
28412#[doc = "Vector multiply subtract with scalar"]
28413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_s16)"]
28414#[inline(always)]
28415#[target_feature(enable = "neon")]
28416#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28417#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28418#[cfg_attr(
28419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28420 assert_instr(mls, LANE = 1)
28421)]
28422#[rustc_legacy_const_generics(3)]
28423#[cfg_attr(
28424 not(target_arch = "arm"),
28425 stable(feature = "neon_intrinsics", since = "1.59.0")
28426)]
28427#[cfg_attr(
28428 target_arch = "arm",
28429 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28430)]
28431pub fn vmlsq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
28432 static_assert_uimm_bits!(LANE, 3);
28433 unsafe {
28434 vmlsq_s16(
28435 a,
28436 b,
28437 simd_shuffle!(
28438 c,
28439 c,
28440 [
28441 LANE as u32,
28442 LANE as u32,
28443 LANE as u32,
28444 LANE as u32,
28445 LANE as u32,
28446 LANE as u32,
28447 LANE as u32,
28448 LANE as u32
28449 ]
28450 ),
28451 )
28452 }
28453}
28454#[doc = "Vector multiply subtract with scalar"]
28455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_u16)"]
28456#[inline(always)]
28457#[target_feature(enable = "neon")]
28458#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28459#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16", LANE = 1))]
28460#[cfg_attr(
28461 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28462 assert_instr(mls, LANE = 1)
28463)]
28464#[rustc_legacy_const_generics(3)]
28465#[cfg_attr(
28466 not(target_arch = "arm"),
28467 stable(feature = "neon_intrinsics", since = "1.59.0")
28468)]
28469#[cfg_attr(
28470 target_arch = "arm",
28471 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28472)]
28473pub fn vmlsq_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
28474 static_assert_uimm_bits!(LANE, 3);
28475 unsafe {
28476 vmlsq_u16(
28477 a,
28478 b,
28479 simd_shuffle!(
28480 c,
28481 c,
28482 [
28483 LANE as u32,
28484 LANE as u32,
28485 LANE as u32,
28486 LANE as u32,
28487 LANE as u32,
28488 LANE as u32,
28489 LANE as u32,
28490 LANE as u32
28491 ]
28492 ),
28493 )
28494 }
28495}
28496#[doc = "Vector multiply subtract with scalar"]
28497#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_s32)"]
28498#[inline(always)]
28499#[target_feature(enable = "neon")]
28500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28501#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28502#[cfg_attr(
28503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28504 assert_instr(mls, LANE = 1)
28505)]
28506#[rustc_legacy_const_generics(3)]
28507#[cfg_attr(
28508 not(target_arch = "arm"),
28509 stable(feature = "neon_intrinsics", since = "1.59.0")
28510)]
28511#[cfg_attr(
28512 target_arch = "arm",
28513 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28514)]
28515pub fn vmls_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
28516 static_assert_uimm_bits!(LANE, 1);
28517 unsafe { vmls_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28518}
28519#[doc = "Vector multiply subtract with scalar"]
28520#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_lane_u32)"]
28521#[inline(always)]
28522#[target_feature(enable = "neon")]
28523#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28524#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28525#[cfg_attr(
28526 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28527 assert_instr(mls, LANE = 1)
28528)]
28529#[rustc_legacy_const_generics(3)]
28530#[cfg_attr(
28531 not(target_arch = "arm"),
28532 stable(feature = "neon_intrinsics", since = "1.59.0")
28533)]
28534#[cfg_attr(
28535 target_arch = "arm",
28536 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28537)]
28538pub fn vmls_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
28539 static_assert_uimm_bits!(LANE, 1);
28540 unsafe { vmls_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28541}
28542#[doc = "Vector multiply subtract with scalar"]
28543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_s32)"]
28544#[inline(always)]
28545#[target_feature(enable = "neon")]
28546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28547#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28548#[cfg_attr(
28549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28550 assert_instr(mls, LANE = 1)
28551)]
28552#[rustc_legacy_const_generics(3)]
28553#[cfg_attr(
28554 not(target_arch = "arm"),
28555 stable(feature = "neon_intrinsics", since = "1.59.0")
28556)]
28557#[cfg_attr(
28558 target_arch = "arm",
28559 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28560)]
28561pub fn vmls_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x4_t) -> int32x2_t {
28562 static_assert_uimm_bits!(LANE, 2);
28563 unsafe { vmls_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28564}
28565#[doc = "Vector multiply subtract with scalar"]
28566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_laneq_u32)"]
28567#[inline(always)]
28568#[target_feature(enable = "neon")]
28569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28570#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28571#[cfg_attr(
28572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28573 assert_instr(mls, LANE = 1)
28574)]
28575#[rustc_legacy_const_generics(3)]
28576#[cfg_attr(
28577 not(target_arch = "arm"),
28578 stable(feature = "neon_intrinsics", since = "1.59.0")
28579)]
28580#[cfg_attr(
28581 target_arch = "arm",
28582 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28583)]
28584pub fn vmls_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t, c: uint32x4_t) -> uint32x2_t {
28585 static_assert_uimm_bits!(LANE, 2);
28586 unsafe { vmls_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
28587}
28588#[doc = "Vector multiply subtract with scalar"]
28589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_s32)"]
28590#[inline(always)]
28591#[target_feature(enable = "neon")]
28592#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28593#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28594#[cfg_attr(
28595 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28596 assert_instr(mls, LANE = 1)
28597)]
28598#[rustc_legacy_const_generics(3)]
28599#[cfg_attr(
28600 not(target_arch = "arm"),
28601 stable(feature = "neon_intrinsics", since = "1.59.0")
28602)]
28603#[cfg_attr(
28604 target_arch = "arm",
28605 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28606)]
28607pub fn vmlsq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x2_t) -> int32x4_t {
28608 static_assert_uimm_bits!(LANE, 1);
28609 unsafe {
28610 vmlsq_s32(
28611 a,
28612 b,
28613 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28614 )
28615 }
28616}
28617#[doc = "Vector multiply subtract with scalar"]
28618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_lane_u32)"]
28619#[inline(always)]
28620#[target_feature(enable = "neon")]
28621#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28622#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28623#[cfg_attr(
28624 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28625 assert_instr(mls, LANE = 1)
28626)]
28627#[rustc_legacy_const_generics(3)]
28628#[cfg_attr(
28629 not(target_arch = "arm"),
28630 stable(feature = "neon_intrinsics", since = "1.59.0")
28631)]
28632#[cfg_attr(
28633 target_arch = "arm",
28634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28635)]
28636pub fn vmlsq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x2_t) -> uint32x4_t {
28637 static_assert_uimm_bits!(LANE, 1);
28638 unsafe {
28639 vmlsq_u32(
28640 a,
28641 b,
28642 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28643 )
28644 }
28645}
28646#[doc = "Vector multiply subtract with scalar"]
28647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_s32)"]
28648#[inline(always)]
28649#[target_feature(enable = "neon")]
28650#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28651#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28652#[cfg_attr(
28653 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28654 assert_instr(mls, LANE = 1)
28655)]
28656#[rustc_legacy_const_generics(3)]
28657#[cfg_attr(
28658 not(target_arch = "arm"),
28659 stable(feature = "neon_intrinsics", since = "1.59.0")
28660)]
28661#[cfg_attr(
28662 target_arch = "arm",
28663 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28664)]
28665pub fn vmlsq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
28666 static_assert_uimm_bits!(LANE, 2);
28667 unsafe {
28668 vmlsq_s32(
28669 a,
28670 b,
28671 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28672 )
28673 }
28674}
28675#[doc = "Vector multiply subtract with scalar"]
28676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_laneq_u32)"]
28677#[inline(always)]
28678#[target_feature(enable = "neon")]
28679#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28680#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32", LANE = 1))]
28681#[cfg_attr(
28682 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28683 assert_instr(mls, LANE = 1)
28684)]
28685#[rustc_legacy_const_generics(3)]
28686#[cfg_attr(
28687 not(target_arch = "arm"),
28688 stable(feature = "neon_intrinsics", since = "1.59.0")
28689)]
28690#[cfg_attr(
28691 target_arch = "arm",
28692 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28693)]
28694pub fn vmlsq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
28695 static_assert_uimm_bits!(LANE, 2);
28696 unsafe {
28697 vmlsq_u32(
28698 a,
28699 b,
28700 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
28701 )
28702 }
28703}
28704#[doc = "Vector multiply subtract with scalar"]
28705#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_f32)"]
28706#[inline(always)]
28707#[target_feature(enable = "neon")]
28708#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28709#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
28710#[cfg_attr(
28711 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28712 assert_instr(fmul)
28713)]
28714#[cfg_attr(
28715 not(target_arch = "arm"),
28716 stable(feature = "neon_intrinsics", since = "1.59.0")
28717)]
28718#[cfg_attr(
28719 target_arch = "arm",
28720 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28721)]
28722pub fn vmls_n_f32(a: float32x2_t, b: float32x2_t, c: f32) -> float32x2_t {
28723 vmls_f32(a, b, vdup_n_f32(c))
28724}
28725#[doc = "Vector multiply subtract with scalar"]
28726#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_f32)"]
28727#[inline(always)]
28728#[target_feature(enable = "neon")]
28729#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28730#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.f32"))]
28731#[cfg_attr(
28732 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28733 assert_instr(fmul)
28734)]
28735#[cfg_attr(
28736 not(target_arch = "arm"),
28737 stable(feature = "neon_intrinsics", since = "1.59.0")
28738)]
28739#[cfg_attr(
28740 target_arch = "arm",
28741 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28742)]
28743pub fn vmlsq_n_f32(a: float32x4_t, b: float32x4_t, c: f32) -> float32x4_t {
28744 vmlsq_f32(a, b, vdupq_n_f32(c))
28745}
28746#[doc = "Vector multiply subtract with scalar"]
28747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_s16)"]
28748#[inline(always)]
28749#[target_feature(enable = "neon")]
28750#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28751#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
28752#[cfg_attr(
28753 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28754 assert_instr(mls)
28755)]
28756#[cfg_attr(
28757 not(target_arch = "arm"),
28758 stable(feature = "neon_intrinsics", since = "1.59.0")
28759)]
28760#[cfg_attr(
28761 target_arch = "arm",
28762 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28763)]
28764pub fn vmls_n_s16(a: int16x4_t, b: int16x4_t, c: i16) -> int16x4_t {
28765 vmls_s16(a, b, vdup_n_s16(c))
28766}
28767#[doc = "Vector multiply subtract with scalar"]
28768#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_s16)"]
28769#[inline(always)]
28770#[target_feature(enable = "neon")]
28771#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28772#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
28773#[cfg_attr(
28774 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28775 assert_instr(mls)
28776)]
28777#[cfg_attr(
28778 not(target_arch = "arm"),
28779 stable(feature = "neon_intrinsics", since = "1.59.0")
28780)]
28781#[cfg_attr(
28782 target_arch = "arm",
28783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28784)]
28785pub fn vmlsq_n_s16(a: int16x8_t, b: int16x8_t, c: i16) -> int16x8_t {
28786 vmlsq_s16(a, b, vdupq_n_s16(c))
28787}
28788#[doc = "Vector multiply subtract with scalar"]
28789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_u16)"]
28790#[inline(always)]
28791#[target_feature(enable = "neon")]
28792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28793#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
28794#[cfg_attr(
28795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28796 assert_instr(mls)
28797)]
28798#[cfg_attr(
28799 not(target_arch = "arm"),
28800 stable(feature = "neon_intrinsics", since = "1.59.0")
28801)]
28802#[cfg_attr(
28803 target_arch = "arm",
28804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28805)]
28806pub fn vmls_n_u16(a: uint16x4_t, b: uint16x4_t, c: u16) -> uint16x4_t {
28807 vmls_u16(a, b, vdup_n_u16(c))
28808}
28809#[doc = "Vector multiply subtract with scalar"]
28810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_u16)"]
28811#[inline(always)]
28812#[target_feature(enable = "neon")]
28813#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28814#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
28815#[cfg_attr(
28816 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28817 assert_instr(mls)
28818)]
28819#[cfg_attr(
28820 not(target_arch = "arm"),
28821 stable(feature = "neon_intrinsics", since = "1.59.0")
28822)]
28823#[cfg_attr(
28824 target_arch = "arm",
28825 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28826)]
28827pub fn vmlsq_n_u16(a: uint16x8_t, b: uint16x8_t, c: u16) -> uint16x8_t {
28828 vmlsq_u16(a, b, vdupq_n_u16(c))
28829}
28830#[doc = "Vector multiply subtract with scalar"]
28831#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_s32)"]
28832#[inline(always)]
28833#[target_feature(enable = "neon")]
28834#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28835#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
28836#[cfg_attr(
28837 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28838 assert_instr(mls)
28839)]
28840#[cfg_attr(
28841 not(target_arch = "arm"),
28842 stable(feature = "neon_intrinsics", since = "1.59.0")
28843)]
28844#[cfg_attr(
28845 target_arch = "arm",
28846 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28847)]
28848pub fn vmls_n_s32(a: int32x2_t, b: int32x2_t, c: i32) -> int32x2_t {
28849 vmls_s32(a, b, vdup_n_s32(c))
28850}
28851#[doc = "Vector multiply subtract with scalar"]
28852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_s32)"]
28853#[inline(always)]
28854#[target_feature(enable = "neon")]
28855#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28856#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
28857#[cfg_attr(
28858 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28859 assert_instr(mls)
28860)]
28861#[cfg_attr(
28862 not(target_arch = "arm"),
28863 stable(feature = "neon_intrinsics", since = "1.59.0")
28864)]
28865#[cfg_attr(
28866 target_arch = "arm",
28867 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28868)]
28869pub fn vmlsq_n_s32(a: int32x4_t, b: int32x4_t, c: i32) -> int32x4_t {
28870 vmlsq_s32(a, b, vdupq_n_s32(c))
28871}
28872#[doc = "Vector multiply subtract with scalar"]
28873#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_n_u32)"]
28874#[inline(always)]
28875#[target_feature(enable = "neon")]
28876#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28877#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
28878#[cfg_attr(
28879 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28880 assert_instr(mls)
28881)]
28882#[cfg_attr(
28883 not(target_arch = "arm"),
28884 stable(feature = "neon_intrinsics", since = "1.59.0")
28885)]
28886#[cfg_attr(
28887 target_arch = "arm",
28888 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28889)]
28890pub fn vmls_n_u32(a: uint32x2_t, b: uint32x2_t, c: u32) -> uint32x2_t {
28891 vmls_u32(a, b, vdup_n_u32(c))
28892}
28893#[doc = "Vector multiply subtract with scalar"]
28894#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_n_u32)"]
28895#[inline(always)]
28896#[target_feature(enable = "neon")]
28897#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28898#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
28899#[cfg_attr(
28900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28901 assert_instr(mls)
28902)]
28903#[cfg_attr(
28904 not(target_arch = "arm"),
28905 stable(feature = "neon_intrinsics", since = "1.59.0")
28906)]
28907#[cfg_attr(
28908 target_arch = "arm",
28909 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28910)]
28911pub fn vmlsq_n_u32(a: uint32x4_t, b: uint32x4_t, c: u32) -> uint32x4_t {
28912 vmlsq_u32(a, b, vdupq_n_u32(c))
28913}
28914#[doc = "Multiply-subtract from accumulator"]
28915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s8)"]
28916#[inline(always)]
28917#[target_feature(enable = "neon")]
28918#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28919#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
28920#[cfg_attr(
28921 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28922 assert_instr(mls)
28923)]
28924#[cfg_attr(
28925 not(target_arch = "arm"),
28926 stable(feature = "neon_intrinsics", since = "1.59.0")
28927)]
28928#[cfg_attr(
28929 target_arch = "arm",
28930 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28931)]
28932pub fn vmls_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
28933 unsafe { simd_sub(a, simd_mul(b, c)) }
28934}
28935#[doc = "Multiply-subtract from accumulator"]
28936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s8)"]
28937#[inline(always)]
28938#[target_feature(enable = "neon")]
28939#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28940#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
28941#[cfg_attr(
28942 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28943 assert_instr(mls)
28944)]
28945#[cfg_attr(
28946 not(target_arch = "arm"),
28947 stable(feature = "neon_intrinsics", since = "1.59.0")
28948)]
28949#[cfg_attr(
28950 target_arch = "arm",
28951 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28952)]
28953pub fn vmlsq_s8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t {
28954 unsafe { simd_sub(a, simd_mul(b, c)) }
28955}
28956#[doc = "Multiply-subtract from accumulator"]
28957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s16)"]
28958#[inline(always)]
28959#[target_feature(enable = "neon")]
28960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28961#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
28962#[cfg_attr(
28963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28964 assert_instr(mls)
28965)]
28966#[cfg_attr(
28967 not(target_arch = "arm"),
28968 stable(feature = "neon_intrinsics", since = "1.59.0")
28969)]
28970#[cfg_attr(
28971 target_arch = "arm",
28972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28973)]
28974pub fn vmls_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
28975 unsafe { simd_sub(a, simd_mul(b, c)) }
28976}
28977#[doc = "Multiply-subtract from accumulator"]
28978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s16)"]
28979#[inline(always)]
28980#[target_feature(enable = "neon")]
28981#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
28982#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
28983#[cfg_attr(
28984 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
28985 assert_instr(mls)
28986)]
28987#[cfg_attr(
28988 not(target_arch = "arm"),
28989 stable(feature = "neon_intrinsics", since = "1.59.0")
28990)]
28991#[cfg_attr(
28992 target_arch = "arm",
28993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
28994)]
28995pub fn vmlsq_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
28996 unsafe { simd_sub(a, simd_mul(b, c)) }
28997}
28998#[doc = "Multiply-subtract from accumulator"]
28999#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_s32)"]
29000#[inline(always)]
29001#[target_feature(enable = "neon")]
29002#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29003#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
29004#[cfg_attr(
29005 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29006 assert_instr(mls)
29007)]
29008#[cfg_attr(
29009 not(target_arch = "arm"),
29010 stable(feature = "neon_intrinsics", since = "1.59.0")
29011)]
29012#[cfg_attr(
29013 target_arch = "arm",
29014 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29015)]
29016pub fn vmls_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
29017 unsafe { simd_sub(a, simd_mul(b, c)) }
29018}
29019#[doc = "Multiply-subtract from accumulator"]
29020#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_s32)"]
29021#[inline(always)]
29022#[target_feature(enable = "neon")]
29023#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29024#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
29025#[cfg_attr(
29026 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29027 assert_instr(mls)
29028)]
29029#[cfg_attr(
29030 not(target_arch = "arm"),
29031 stable(feature = "neon_intrinsics", since = "1.59.0")
29032)]
29033#[cfg_attr(
29034 target_arch = "arm",
29035 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29036)]
29037pub fn vmlsq_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
29038 unsafe { simd_sub(a, simd_mul(b, c)) }
29039}
29040#[doc = "Multiply-subtract from accumulator"]
29041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u8)"]
29042#[inline(always)]
29043#[target_feature(enable = "neon")]
29044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29045#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
29046#[cfg_attr(
29047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29048 assert_instr(mls)
29049)]
29050#[cfg_attr(
29051 not(target_arch = "arm"),
29052 stable(feature = "neon_intrinsics", since = "1.59.0")
29053)]
29054#[cfg_attr(
29055 target_arch = "arm",
29056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29057)]
29058pub fn vmls_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
29059 unsafe { simd_sub(a, simd_mul(b, c)) }
29060}
29061#[doc = "Multiply-subtract from accumulator"]
29062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u8)"]
29063#[inline(always)]
29064#[target_feature(enable = "neon")]
29065#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29066#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i8"))]
29067#[cfg_attr(
29068 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29069 assert_instr(mls)
29070)]
29071#[cfg_attr(
29072 not(target_arch = "arm"),
29073 stable(feature = "neon_intrinsics", since = "1.59.0")
29074)]
29075#[cfg_attr(
29076 target_arch = "arm",
29077 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29078)]
29079pub fn vmlsq_u8(a: uint8x16_t, b: uint8x16_t, c: uint8x16_t) -> uint8x16_t {
29080 unsafe { simd_sub(a, simd_mul(b, c)) }
29081}
29082#[doc = "Multiply-subtract from accumulator"]
29083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u16)"]
29084#[inline(always)]
29085#[target_feature(enable = "neon")]
29086#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29087#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
29088#[cfg_attr(
29089 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29090 assert_instr(mls)
29091)]
29092#[cfg_attr(
29093 not(target_arch = "arm"),
29094 stable(feature = "neon_intrinsics", since = "1.59.0")
29095)]
29096#[cfg_attr(
29097 target_arch = "arm",
29098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29099)]
29100pub fn vmls_u16(a: uint16x4_t, b: uint16x4_t, c: uint16x4_t) -> uint16x4_t {
29101 unsafe { simd_sub(a, simd_mul(b, c)) }
29102}
29103#[doc = "Multiply-subtract from accumulator"]
29104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u16)"]
29105#[inline(always)]
29106#[target_feature(enable = "neon")]
29107#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29108#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i16"))]
29109#[cfg_attr(
29110 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29111 assert_instr(mls)
29112)]
29113#[cfg_attr(
29114 not(target_arch = "arm"),
29115 stable(feature = "neon_intrinsics", since = "1.59.0")
29116)]
29117#[cfg_attr(
29118 target_arch = "arm",
29119 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29120)]
29121pub fn vmlsq_u16(a: uint16x8_t, b: uint16x8_t, c: uint16x8_t) -> uint16x8_t {
29122 unsafe { simd_sub(a, simd_mul(b, c)) }
29123}
29124#[doc = "Multiply-subtract from accumulator"]
29125#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmls_u32)"]
29126#[inline(always)]
29127#[target_feature(enable = "neon")]
29128#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29129#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
29130#[cfg_attr(
29131 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29132 assert_instr(mls)
29133)]
29134#[cfg_attr(
29135 not(target_arch = "arm"),
29136 stable(feature = "neon_intrinsics", since = "1.59.0")
29137)]
29138#[cfg_attr(
29139 target_arch = "arm",
29140 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29141)]
29142pub fn vmls_u32(a: uint32x2_t, b: uint32x2_t, c: uint32x2_t) -> uint32x2_t {
29143 unsafe { simd_sub(a, simd_mul(b, c)) }
29144}
29145#[doc = "Multiply-subtract from accumulator"]
29146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsq_u32)"]
29147#[inline(always)]
29148#[target_feature(enable = "neon")]
29149#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29150#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmls.i32"))]
29151#[cfg_attr(
29152 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29153 assert_instr(mls)
29154)]
29155#[cfg_attr(
29156 not(target_arch = "arm"),
29157 stable(feature = "neon_intrinsics", since = "1.59.0")
29158)]
29159#[cfg_attr(
29160 target_arch = "arm",
29161 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29162)]
29163pub fn vmlsq_u32(a: uint32x4_t, b: uint32x4_t, c: uint32x4_t) -> uint32x4_t {
29164 unsafe { simd_sub(a, simd_mul(b, c)) }
29165}
29166#[doc = "Vector widening multiply subtract with scalar"]
29167#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_s16)"]
29168#[inline(always)]
29169#[target_feature(enable = "neon")]
29170#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29171#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16", LANE = 1))]
29172#[cfg_attr(
29173 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29174 assert_instr(smlsl, LANE = 1)
29175)]
29176#[rustc_legacy_const_generics(3)]
29177#[cfg_attr(
29178 not(target_arch = "arm"),
29179 stable(feature = "neon_intrinsics", since = "1.59.0")
29180)]
29181#[cfg_attr(
29182 target_arch = "arm",
29183 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29184)]
29185pub fn vmlsl_lane_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
29186 static_assert_uimm_bits!(LANE, 2);
29187 unsafe {
29188 vmlsl_s16(
29189 a,
29190 b,
29191 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29192 )
29193 }
29194}
29195#[doc = "Vector widening multiply subtract with scalar"]
29196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_s16)"]
29197#[inline(always)]
29198#[target_feature(enable = "neon")]
29199#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29200#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16", LANE = 1))]
29201#[cfg_attr(
29202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29203 assert_instr(smlsl, LANE = 1)
29204)]
29205#[rustc_legacy_const_generics(3)]
29206#[cfg_attr(
29207 not(target_arch = "arm"),
29208 stable(feature = "neon_intrinsics", since = "1.59.0")
29209)]
29210#[cfg_attr(
29211 target_arch = "arm",
29212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29213)]
29214pub fn vmlsl_laneq_s16<const LANE: i32>(a: int32x4_t, b: int16x4_t, c: int16x8_t) -> int32x4_t {
29215 static_assert_uimm_bits!(LANE, 3);
29216 unsafe {
29217 vmlsl_s16(
29218 a,
29219 b,
29220 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29221 )
29222 }
29223}
29224#[doc = "Vector widening multiply subtract with scalar"]
29225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_s32)"]
29226#[inline(always)]
29227#[target_feature(enable = "neon")]
29228#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29229#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32", LANE = 1))]
29230#[cfg_attr(
29231 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29232 assert_instr(smlsl, LANE = 1)
29233)]
29234#[rustc_legacy_const_generics(3)]
29235#[cfg_attr(
29236 not(target_arch = "arm"),
29237 stable(feature = "neon_intrinsics", since = "1.59.0")
29238)]
29239#[cfg_attr(
29240 target_arch = "arm",
29241 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29242)]
29243pub fn vmlsl_lane_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
29244 static_assert_uimm_bits!(LANE, 1);
29245 unsafe { vmlsl_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29246}
29247#[doc = "Vector widening multiply subtract with scalar"]
29248#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_s32)"]
29249#[inline(always)]
29250#[target_feature(enable = "neon")]
29251#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29252#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32", LANE = 1))]
29253#[cfg_attr(
29254 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29255 assert_instr(smlsl, LANE = 1)
29256)]
29257#[rustc_legacy_const_generics(3)]
29258#[cfg_attr(
29259 not(target_arch = "arm"),
29260 stable(feature = "neon_intrinsics", since = "1.59.0")
29261)]
29262#[cfg_attr(
29263 target_arch = "arm",
29264 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29265)]
29266pub fn vmlsl_laneq_s32<const LANE: i32>(a: int64x2_t, b: int32x2_t, c: int32x4_t) -> int64x2_t {
29267 static_assert_uimm_bits!(LANE, 2);
29268 unsafe { vmlsl_s32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29269}
29270#[doc = "Vector widening multiply subtract with scalar"]
29271#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_u16)"]
29272#[inline(always)]
29273#[target_feature(enable = "neon")]
29274#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29275#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16", LANE = 1))]
29276#[cfg_attr(
29277 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29278 assert_instr(umlsl, LANE = 1)
29279)]
29280#[rustc_legacy_const_generics(3)]
29281#[cfg_attr(
29282 not(target_arch = "arm"),
29283 stable(feature = "neon_intrinsics", since = "1.59.0")
29284)]
29285#[cfg_attr(
29286 target_arch = "arm",
29287 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29288)]
29289pub fn vmlsl_lane_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
29290 static_assert_uimm_bits!(LANE, 2);
29291 unsafe {
29292 vmlsl_u16(
29293 a,
29294 b,
29295 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29296 )
29297 }
29298}
29299#[doc = "Vector widening multiply subtract with scalar"]
29300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_u16)"]
29301#[inline(always)]
29302#[target_feature(enable = "neon")]
29303#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29304#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16", LANE = 1))]
29305#[cfg_attr(
29306 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29307 assert_instr(umlsl, LANE = 1)
29308)]
29309#[rustc_legacy_const_generics(3)]
29310#[cfg_attr(
29311 not(target_arch = "arm"),
29312 stable(feature = "neon_intrinsics", since = "1.59.0")
29313)]
29314#[cfg_attr(
29315 target_arch = "arm",
29316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29317)]
29318pub fn vmlsl_laneq_u16<const LANE: i32>(a: uint32x4_t, b: uint16x4_t, c: uint16x8_t) -> uint32x4_t {
29319 static_assert_uimm_bits!(LANE, 3);
29320 unsafe {
29321 vmlsl_u16(
29322 a,
29323 b,
29324 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
29325 )
29326 }
29327}
29328#[doc = "Vector widening multiply subtract with scalar"]
29329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_lane_u32)"]
29330#[inline(always)]
29331#[target_feature(enable = "neon")]
29332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29333#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32", LANE = 1))]
29334#[cfg_attr(
29335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29336 assert_instr(umlsl, LANE = 1)
29337)]
29338#[rustc_legacy_const_generics(3)]
29339#[cfg_attr(
29340 not(target_arch = "arm"),
29341 stable(feature = "neon_intrinsics", since = "1.59.0")
29342)]
29343#[cfg_attr(
29344 target_arch = "arm",
29345 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29346)]
29347pub fn vmlsl_lane_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
29348 static_assert_uimm_bits!(LANE, 1);
29349 unsafe { vmlsl_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29350}
29351#[doc = "Vector widening multiply subtract with scalar"]
29352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_laneq_u32)"]
29353#[inline(always)]
29354#[target_feature(enable = "neon")]
29355#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29356#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32", LANE = 1))]
29357#[cfg_attr(
29358 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29359 assert_instr(umlsl, LANE = 1)
29360)]
29361#[rustc_legacy_const_generics(3)]
29362#[cfg_attr(
29363 not(target_arch = "arm"),
29364 stable(feature = "neon_intrinsics", since = "1.59.0")
29365)]
29366#[cfg_attr(
29367 target_arch = "arm",
29368 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29369)]
29370pub fn vmlsl_laneq_u32<const LANE: i32>(a: uint64x2_t, b: uint32x2_t, c: uint32x4_t) -> uint64x2_t {
29371 static_assert_uimm_bits!(LANE, 2);
29372 unsafe { vmlsl_u32(a, b, simd_shuffle!(c, c, [LANE as u32, LANE as u32])) }
29373}
29374#[doc = "Vector widening multiply subtract with scalar"]
29375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_s16)"]
29376#[inline(always)]
29377#[target_feature(enable = "neon")]
29378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29379#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16"))]
29380#[cfg_attr(
29381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29382 assert_instr(smlsl)
29383)]
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_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
29393 vmlsl_s16(a, b, vdup_n_s16(c))
29394}
29395#[doc = "Vector widening multiply subtract with scalar"]
29396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_s32)"]
29397#[inline(always)]
29398#[target_feature(enable = "neon")]
29399#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29400#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32"))]
29401#[cfg_attr(
29402 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29403 assert_instr(smlsl)
29404)]
29405#[cfg_attr(
29406 not(target_arch = "arm"),
29407 stable(feature = "neon_intrinsics", since = "1.59.0")
29408)]
29409#[cfg_attr(
29410 target_arch = "arm",
29411 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29412)]
29413pub fn vmlsl_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
29414 vmlsl_s32(a, b, vdup_n_s32(c))
29415}
29416#[doc = "Vector widening multiply subtract with scalar"]
29417#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_u16)"]
29418#[inline(always)]
29419#[target_feature(enable = "neon")]
29420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29421#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16"))]
29422#[cfg_attr(
29423 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29424 assert_instr(umlsl)
29425)]
29426#[cfg_attr(
29427 not(target_arch = "arm"),
29428 stable(feature = "neon_intrinsics", since = "1.59.0")
29429)]
29430#[cfg_attr(
29431 target_arch = "arm",
29432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29433)]
29434pub fn vmlsl_n_u16(a: uint32x4_t, b: uint16x4_t, c: u16) -> uint32x4_t {
29435 vmlsl_u16(a, b, vdup_n_u16(c))
29436}
29437#[doc = "Vector widening multiply subtract with scalar"]
29438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_n_u32)"]
29439#[inline(always)]
29440#[target_feature(enable = "neon")]
29441#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29442#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32"))]
29443#[cfg_attr(
29444 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29445 assert_instr(umlsl)
29446)]
29447#[cfg_attr(
29448 not(target_arch = "arm"),
29449 stable(feature = "neon_intrinsics", since = "1.59.0")
29450)]
29451#[cfg_attr(
29452 target_arch = "arm",
29453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29454)]
29455pub fn vmlsl_n_u32(a: uint64x2_t, b: uint32x2_t, c: u32) -> uint64x2_t {
29456 vmlsl_u32(a, b, vdup_n_u32(c))
29457}
29458#[doc = "Signed multiply-subtract long"]
29459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s8)"]
29460#[inline(always)]
29461#[target_feature(enable = "neon")]
29462#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29463#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s8"))]
29464#[cfg_attr(
29465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29466 assert_instr(smlsl)
29467)]
29468#[cfg_attr(
29469 not(target_arch = "arm"),
29470 stable(feature = "neon_intrinsics", since = "1.59.0")
29471)]
29472#[cfg_attr(
29473 target_arch = "arm",
29474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29475)]
29476pub fn vmlsl_s8(a: int16x8_t, b: int8x8_t, c: int8x8_t) -> int16x8_t {
29477 unsafe { simd_sub(a, vmull_s8(b, c)) }
29478}
29479#[doc = "Signed multiply-subtract long"]
29480#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s16)"]
29481#[inline(always)]
29482#[target_feature(enable = "neon")]
29483#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29484#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s16"))]
29485#[cfg_attr(
29486 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29487 assert_instr(smlsl)
29488)]
29489#[cfg_attr(
29490 not(target_arch = "arm"),
29491 stable(feature = "neon_intrinsics", since = "1.59.0")
29492)]
29493#[cfg_attr(
29494 target_arch = "arm",
29495 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29496)]
29497pub fn vmlsl_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
29498 unsafe { simd_sub(a, vmull_s16(b, c)) }
29499}
29500#[doc = "Signed multiply-subtract long"]
29501#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_s32)"]
29502#[inline(always)]
29503#[target_feature(enable = "neon")]
29504#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29505#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.s32"))]
29506#[cfg_attr(
29507 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29508 assert_instr(smlsl)
29509)]
29510#[cfg_attr(
29511 not(target_arch = "arm"),
29512 stable(feature = "neon_intrinsics", since = "1.59.0")
29513)]
29514#[cfg_attr(
29515 target_arch = "arm",
29516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29517)]
29518pub fn vmlsl_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
29519 unsafe { simd_sub(a, vmull_s32(b, c)) }
29520}
29521#[doc = "Unsigned multiply-subtract long"]
29522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u8)"]
29523#[inline(always)]
29524#[target_feature(enable = "neon")]
29525#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29526#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u8"))]
29527#[cfg_attr(
29528 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29529 assert_instr(umlsl)
29530)]
29531#[cfg_attr(
29532 not(target_arch = "arm"),
29533 stable(feature = "neon_intrinsics", since = "1.59.0")
29534)]
29535#[cfg_attr(
29536 target_arch = "arm",
29537 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29538)]
29539pub fn vmlsl_u8(a: uint16x8_t, b: uint8x8_t, c: uint8x8_t) -> uint16x8_t {
29540 unsafe { simd_sub(a, vmull_u8(b, c)) }
29541}
29542#[doc = "Unsigned multiply-subtract long"]
29543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u16)"]
29544#[inline(always)]
29545#[target_feature(enable = "neon")]
29546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29547#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u16"))]
29548#[cfg_attr(
29549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29550 assert_instr(umlsl)
29551)]
29552#[cfg_attr(
29553 not(target_arch = "arm"),
29554 stable(feature = "neon_intrinsics", since = "1.59.0")
29555)]
29556#[cfg_attr(
29557 target_arch = "arm",
29558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29559)]
29560pub fn vmlsl_u16(a: uint32x4_t, b: uint16x4_t, c: uint16x4_t) -> uint32x4_t {
29561 unsafe { simd_sub(a, vmull_u16(b, c)) }
29562}
29563#[doc = "Unsigned multiply-subtract long"]
29564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmlsl_u32)"]
29565#[inline(always)]
29566#[target_feature(enable = "neon")]
29567#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29568#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmlsl.u32"))]
29569#[cfg_attr(
29570 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29571 assert_instr(umlsl)
29572)]
29573#[cfg_attr(
29574 not(target_arch = "arm"),
29575 stable(feature = "neon_intrinsics", since = "1.59.0")
29576)]
29577#[cfg_attr(
29578 target_arch = "arm",
29579 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29580)]
29581pub fn vmlsl_u32(a: uint64x2_t, b: uint32x2_t, c: uint32x2_t) -> uint64x2_t {
29582 unsafe { simd_sub(a, vmull_u32(b, c)) }
29583}
29584#[doc = "8-bit integer matrix multiply-accumulate"]
29585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmmlaq_s32)"]
29586#[inline(always)]
29587#[target_feature(enable = "neon,i8mm")]
29588#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
29589#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
29590#[cfg_attr(
29591 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29592 assert_instr(smmla)
29593)]
29594#[cfg_attr(
29595 not(target_arch = "arm"),
29596 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
29597)]
29598#[cfg_attr(
29599 target_arch = "arm",
29600 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29601)]
29602pub fn vmmlaq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t {
29603 unsafe extern "unadjusted" {
29604 #[cfg_attr(
29605 any(target_arch = "aarch64", target_arch = "arm64ec"),
29606 link_name = "llvm.aarch64.neon.smmla.v4i32.v16i8"
29607 )]
29608 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.smmla.v4i32.v16i8")]
29609 fn _vmmlaq_s32(a: int32x4_t, b: int8x16_t, c: int8x16_t) -> int32x4_t;
29610 }
29611 unsafe { _vmmlaq_s32(a, b, c) }
29612}
29613#[doc = "8-bit integer matrix multiply-accumulate"]
29614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmmlaq_u32)"]
29615#[inline(always)]
29616#[target_feature(enable = "neon,i8mm")]
29617#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
29618#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
29619#[cfg_attr(
29620 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29621 assert_instr(ummla)
29622)]
29623#[cfg_attr(
29624 not(target_arch = "arm"),
29625 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
29626)]
29627#[cfg_attr(
29628 target_arch = "arm",
29629 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29630)]
29631pub fn vmmlaq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t {
29632 unsafe extern "unadjusted" {
29633 #[cfg_attr(
29634 any(target_arch = "aarch64", target_arch = "arm64ec"),
29635 link_name = "llvm.aarch64.neon.ummla.v4i32.v16i8"
29636 )]
29637 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.ummla.v4i32.v16i8")]
29638 fn _vmmlaq_u32(a: uint32x4_t, b: uint8x16_t, c: uint8x16_t) -> uint32x4_t;
29639 }
29640 unsafe { _vmmlaq_u32(a, b, c) }
29641}
29642#[doc = "Duplicate element to vector"]
29643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_f16)"]
29644#[inline(always)]
29645#[target_feature(enable = "neon")]
29646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29647#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
29648#[cfg_attr(
29649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29650 assert_instr(dup)
29651)]
29652#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
29653#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
29654#[cfg(not(target_arch = "arm64ec"))]
29655pub fn vmov_n_f16(a: f16) -> float16x4_t {
29656 vdup_n_f16(a)
29657}
29658#[doc = "Duplicate element to vector"]
29659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_f16)"]
29660#[inline(always)]
29661#[target_feature(enable = "neon")]
29662#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29663#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
29664#[cfg_attr(
29665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29666 assert_instr(dup)
29667)]
29668#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
29669#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
29670#[cfg(not(target_arch = "arm64ec"))]
29671pub fn vmovq_n_f16(a: f16) -> float16x8_t {
29672 vdupq_n_f16(a)
29673}
29674#[doc = "Duplicate vector element to vector or scalar"]
29675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_f32)"]
29676#[inline(always)]
29677#[target_feature(enable = "neon")]
29678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29679#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
29680#[cfg_attr(
29681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29682 assert_instr(dup)
29683)]
29684#[cfg_attr(
29685 not(target_arch = "arm"),
29686 stable(feature = "neon_intrinsics", since = "1.59.0")
29687)]
29688#[cfg_attr(
29689 target_arch = "arm",
29690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29691)]
29692pub fn vmov_n_f32(value: f32) -> float32x2_t {
29693 vdup_n_f32(value)
29694}
29695#[doc = "Duplicate vector element to vector or scalar"]
29696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_p16)"]
29697#[inline(always)]
29698#[target_feature(enable = "neon")]
29699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29700#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
29701#[cfg_attr(
29702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29703 assert_instr(dup)
29704)]
29705#[cfg_attr(
29706 not(target_arch = "arm"),
29707 stable(feature = "neon_intrinsics", since = "1.59.0")
29708)]
29709#[cfg_attr(
29710 target_arch = "arm",
29711 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29712)]
29713pub fn vmov_n_p16(value: p16) -> poly16x4_t {
29714 vdup_n_p16(value)
29715}
29716#[doc = "Duplicate vector element to vector or scalar"]
29717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_p8)"]
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.8"))]
29722#[cfg_attr(
29723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29724 assert_instr(dup)
29725)]
29726#[cfg_attr(
29727 not(target_arch = "arm"),
29728 stable(feature = "neon_intrinsics", since = "1.59.0")
29729)]
29730#[cfg_attr(
29731 target_arch = "arm",
29732 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29733)]
29734pub fn vmov_n_p8(value: p8) -> poly8x8_t {
29735 vdup_n_p8(value)
29736}
29737#[doc = "Duplicate vector element to vector or scalar"]
29738#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s16)"]
29739#[inline(always)]
29740#[target_feature(enable = "neon")]
29741#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29742#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
29743#[cfg_attr(
29744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29745 assert_instr(dup)
29746)]
29747#[cfg_attr(
29748 not(target_arch = "arm"),
29749 stable(feature = "neon_intrinsics", since = "1.59.0")
29750)]
29751#[cfg_attr(
29752 target_arch = "arm",
29753 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29754)]
29755pub fn vmov_n_s16(value: i16) -> int16x4_t {
29756 vdup_n_s16(value)
29757}
29758#[doc = "Duplicate vector element to vector or scalar"]
29759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s32)"]
29760#[inline(always)]
29761#[target_feature(enable = "neon")]
29762#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29763#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
29764#[cfg_attr(
29765 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29766 assert_instr(dup)
29767)]
29768#[cfg_attr(
29769 not(target_arch = "arm"),
29770 stable(feature = "neon_intrinsics", since = "1.59.0")
29771)]
29772#[cfg_attr(
29773 target_arch = "arm",
29774 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29775)]
29776pub fn vmov_n_s32(value: i32) -> int32x2_t {
29777 vdup_n_s32(value)
29778}
29779#[doc = "Duplicate vector element to vector or scalar"]
29780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s64)"]
29781#[inline(always)]
29782#[target_feature(enable = "neon")]
29783#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29784#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
29785#[cfg_attr(
29786 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29787 assert_instr(fmov)
29788)]
29789#[cfg_attr(
29790 not(target_arch = "arm"),
29791 stable(feature = "neon_intrinsics", since = "1.59.0")
29792)]
29793#[cfg_attr(
29794 target_arch = "arm",
29795 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29796)]
29797pub fn vmov_n_s64(value: i64) -> int64x1_t {
29798 vdup_n_s64(value)
29799}
29800#[doc = "Duplicate vector element to vector or scalar"]
29801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_s8)"]
29802#[inline(always)]
29803#[target_feature(enable = "neon")]
29804#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29805#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
29806#[cfg_attr(
29807 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29808 assert_instr(dup)
29809)]
29810#[cfg_attr(
29811 not(target_arch = "arm"),
29812 stable(feature = "neon_intrinsics", since = "1.59.0")
29813)]
29814#[cfg_attr(
29815 target_arch = "arm",
29816 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29817)]
29818pub fn vmov_n_s8(value: i8) -> int8x8_t {
29819 vdup_n_s8(value)
29820}
29821#[doc = "Duplicate vector element to vector or scalar"]
29822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u16)"]
29823#[inline(always)]
29824#[target_feature(enable = "neon")]
29825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29826#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
29827#[cfg_attr(
29828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29829 assert_instr(dup)
29830)]
29831#[cfg_attr(
29832 not(target_arch = "arm"),
29833 stable(feature = "neon_intrinsics", since = "1.59.0")
29834)]
29835#[cfg_attr(
29836 target_arch = "arm",
29837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29838)]
29839pub fn vmov_n_u16(value: u16) -> uint16x4_t {
29840 vdup_n_u16(value)
29841}
29842#[doc = "Duplicate vector element to vector or scalar"]
29843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u32)"]
29844#[inline(always)]
29845#[target_feature(enable = "neon")]
29846#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29847#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
29848#[cfg_attr(
29849 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29850 assert_instr(dup)
29851)]
29852#[cfg_attr(
29853 not(target_arch = "arm"),
29854 stable(feature = "neon_intrinsics", since = "1.59.0")
29855)]
29856#[cfg_attr(
29857 target_arch = "arm",
29858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29859)]
29860pub fn vmov_n_u32(value: u32) -> uint32x2_t {
29861 vdup_n_u32(value)
29862}
29863#[doc = "Duplicate vector element to vector or scalar"]
29864#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u64)"]
29865#[inline(always)]
29866#[target_feature(enable = "neon")]
29867#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29868#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
29869#[cfg_attr(
29870 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29871 assert_instr(fmov)
29872)]
29873#[cfg_attr(
29874 not(target_arch = "arm"),
29875 stable(feature = "neon_intrinsics", since = "1.59.0")
29876)]
29877#[cfg_attr(
29878 target_arch = "arm",
29879 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29880)]
29881pub fn vmov_n_u64(value: u64) -> uint64x1_t {
29882 vdup_n_u64(value)
29883}
29884#[doc = "Duplicate vector element to vector or scalar"]
29885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmov_n_u8)"]
29886#[inline(always)]
29887#[target_feature(enable = "neon")]
29888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29889#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
29890#[cfg_attr(
29891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29892 assert_instr(dup)
29893)]
29894#[cfg_attr(
29895 not(target_arch = "arm"),
29896 stable(feature = "neon_intrinsics", since = "1.59.0")
29897)]
29898#[cfg_attr(
29899 target_arch = "arm",
29900 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29901)]
29902pub fn vmov_n_u8(value: u8) -> uint8x8_t {
29903 vdup_n_u8(value)
29904}
29905#[doc = "Duplicate vector element to vector or scalar"]
29906#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_f32)"]
29907#[inline(always)]
29908#[target_feature(enable = "neon")]
29909#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29910#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
29911#[cfg_attr(
29912 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29913 assert_instr(dup)
29914)]
29915#[cfg_attr(
29916 not(target_arch = "arm"),
29917 stable(feature = "neon_intrinsics", since = "1.59.0")
29918)]
29919#[cfg_attr(
29920 target_arch = "arm",
29921 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29922)]
29923pub fn vmovq_n_f32(value: f32) -> float32x4_t {
29924 vdupq_n_f32(value)
29925}
29926#[doc = "Duplicate vector element to vector or scalar"]
29927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_p16)"]
29928#[inline(always)]
29929#[target_feature(enable = "neon")]
29930#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29931#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
29932#[cfg_attr(
29933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29934 assert_instr(dup)
29935)]
29936#[cfg_attr(
29937 not(target_arch = "arm"),
29938 stable(feature = "neon_intrinsics", since = "1.59.0")
29939)]
29940#[cfg_attr(
29941 target_arch = "arm",
29942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29943)]
29944pub fn vmovq_n_p16(value: p16) -> poly16x8_t {
29945 vdupq_n_p16(value)
29946}
29947#[doc = "Duplicate vector element to vector or scalar"]
29948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_p8)"]
29949#[inline(always)]
29950#[target_feature(enable = "neon")]
29951#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29952#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
29953#[cfg_attr(
29954 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29955 assert_instr(dup)
29956)]
29957#[cfg_attr(
29958 not(target_arch = "arm"),
29959 stable(feature = "neon_intrinsics", since = "1.59.0")
29960)]
29961#[cfg_attr(
29962 target_arch = "arm",
29963 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29964)]
29965pub fn vmovq_n_p8(value: p8) -> poly8x16_t {
29966 vdupq_n_p8(value)
29967}
29968#[doc = "Duplicate vector element to vector or scalar"]
29969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s16)"]
29970#[inline(always)]
29971#[target_feature(enable = "neon")]
29972#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29973#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
29974#[cfg_attr(
29975 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29976 assert_instr(dup)
29977)]
29978#[cfg_attr(
29979 not(target_arch = "arm"),
29980 stable(feature = "neon_intrinsics", since = "1.59.0")
29981)]
29982#[cfg_attr(
29983 target_arch = "arm",
29984 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
29985)]
29986pub fn vmovq_n_s16(value: i16) -> int16x8_t {
29987 vdupq_n_s16(value)
29988}
29989#[doc = "Duplicate vector element to vector or scalar"]
29990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s32)"]
29991#[inline(always)]
29992#[target_feature(enable = "neon")]
29993#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
29994#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
29995#[cfg_attr(
29996 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
29997 assert_instr(dup)
29998)]
29999#[cfg_attr(
30000 not(target_arch = "arm"),
30001 stable(feature = "neon_intrinsics", since = "1.59.0")
30002)]
30003#[cfg_attr(
30004 target_arch = "arm",
30005 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30006)]
30007pub fn vmovq_n_s32(value: i32) -> int32x4_t {
30008 vdupq_n_s32(value)
30009}
30010#[doc = "Duplicate vector element to vector or scalar"]
30011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s64)"]
30012#[inline(always)]
30013#[target_feature(enable = "neon")]
30014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30015#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
30016#[cfg_attr(
30017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30018 assert_instr(dup)
30019)]
30020#[cfg_attr(
30021 not(target_arch = "arm"),
30022 stable(feature = "neon_intrinsics", since = "1.59.0")
30023)]
30024#[cfg_attr(
30025 target_arch = "arm",
30026 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30027)]
30028pub fn vmovq_n_s64(value: i64) -> int64x2_t {
30029 vdupq_n_s64(value)
30030}
30031#[doc = "Duplicate vector element to vector or scalar"]
30032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_s8)"]
30033#[inline(always)]
30034#[target_feature(enable = "neon")]
30035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30036#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
30037#[cfg_attr(
30038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30039 assert_instr(dup)
30040)]
30041#[cfg_attr(
30042 not(target_arch = "arm"),
30043 stable(feature = "neon_intrinsics", since = "1.59.0")
30044)]
30045#[cfg_attr(
30046 target_arch = "arm",
30047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30048)]
30049pub fn vmovq_n_s8(value: i8) -> int8x16_t {
30050 vdupq_n_s8(value)
30051}
30052#[doc = "Duplicate vector element to vector or scalar"]
30053#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u16)"]
30054#[inline(always)]
30055#[target_feature(enable = "neon")]
30056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30057#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.16"))]
30058#[cfg_attr(
30059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30060 assert_instr(dup)
30061)]
30062#[cfg_attr(
30063 not(target_arch = "arm"),
30064 stable(feature = "neon_intrinsics", since = "1.59.0")
30065)]
30066#[cfg_attr(
30067 target_arch = "arm",
30068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30069)]
30070pub fn vmovq_n_u16(value: u16) -> uint16x8_t {
30071 vdupq_n_u16(value)
30072}
30073#[doc = "Duplicate vector element to vector or scalar"]
30074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u32)"]
30075#[inline(always)]
30076#[target_feature(enable = "neon")]
30077#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30078#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.32"))]
30079#[cfg_attr(
30080 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30081 assert_instr(dup)
30082)]
30083#[cfg_attr(
30084 not(target_arch = "arm"),
30085 stable(feature = "neon_intrinsics", since = "1.59.0")
30086)]
30087#[cfg_attr(
30088 target_arch = "arm",
30089 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30090)]
30091pub fn vmovq_n_u32(value: u32) -> uint32x4_t {
30092 vdupq_n_u32(value)
30093}
30094#[doc = "Duplicate vector element to vector or scalar"]
30095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u64)"]
30096#[inline(always)]
30097#[target_feature(enable = "neon")]
30098#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30099#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmov"))]
30100#[cfg_attr(
30101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30102 assert_instr(dup)
30103)]
30104#[cfg_attr(
30105 not(target_arch = "arm"),
30106 stable(feature = "neon_intrinsics", since = "1.59.0")
30107)]
30108#[cfg_attr(
30109 target_arch = "arm",
30110 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30111)]
30112pub fn vmovq_n_u64(value: u64) -> uint64x2_t {
30113 vdupq_n_u64(value)
30114}
30115#[doc = "Duplicate vector element to vector or scalar"]
30116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovq_n_u8)"]
30117#[inline(always)]
30118#[target_feature(enable = "neon")]
30119#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30120#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vdup.8"))]
30121#[cfg_attr(
30122 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30123 assert_instr(dup)
30124)]
30125#[cfg_attr(
30126 not(target_arch = "arm"),
30127 stable(feature = "neon_intrinsics", since = "1.59.0")
30128)]
30129#[cfg_attr(
30130 target_arch = "arm",
30131 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30132)]
30133pub fn vmovq_n_u8(value: u8) -> uint8x16_t {
30134 vdupq_n_u8(value)
30135}
30136#[doc = "Vector long move."]
30137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s16)"]
30138#[inline(always)]
30139#[target_feature(enable = "neon")]
30140#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30141#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30142#[cfg_attr(
30143 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30144 assert_instr(sxtl)
30145)]
30146#[cfg_attr(
30147 not(target_arch = "arm"),
30148 stable(feature = "neon_intrinsics", since = "1.59.0")
30149)]
30150#[cfg_attr(
30151 target_arch = "arm",
30152 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30153)]
30154pub fn vmovl_s16(a: int16x4_t) -> int32x4_t {
30155 unsafe { simd_cast(a) }
30156}
30157#[doc = "Vector long move."]
30158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s32)"]
30159#[inline(always)]
30160#[target_feature(enable = "neon")]
30161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30163#[cfg_attr(
30164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30165 assert_instr(sxtl)
30166)]
30167#[cfg_attr(
30168 not(target_arch = "arm"),
30169 stable(feature = "neon_intrinsics", since = "1.59.0")
30170)]
30171#[cfg_attr(
30172 target_arch = "arm",
30173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30174)]
30175pub fn vmovl_s32(a: int32x2_t) -> int64x2_t {
30176 unsafe { simd_cast(a) }
30177}
30178#[doc = "Vector long move."]
30179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_s8)"]
30180#[inline(always)]
30181#[target_feature(enable = "neon")]
30182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30184#[cfg_attr(
30185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30186 assert_instr(sxtl)
30187)]
30188#[cfg_attr(
30189 not(target_arch = "arm"),
30190 stable(feature = "neon_intrinsics", since = "1.59.0")
30191)]
30192#[cfg_attr(
30193 target_arch = "arm",
30194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30195)]
30196pub fn vmovl_s8(a: int8x8_t) -> int16x8_t {
30197 unsafe { simd_cast(a) }
30198}
30199#[doc = "Vector long move."]
30200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u16)"]
30201#[inline(always)]
30202#[target_feature(enable = "neon")]
30203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30204#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30205#[cfg_attr(
30206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30207 assert_instr(uxtl)
30208)]
30209#[cfg_attr(
30210 not(target_arch = "arm"),
30211 stable(feature = "neon_intrinsics", since = "1.59.0")
30212)]
30213#[cfg_attr(
30214 target_arch = "arm",
30215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30216)]
30217pub fn vmovl_u16(a: uint16x4_t) -> uint32x4_t {
30218 unsafe { simd_cast(a) }
30219}
30220#[doc = "Vector long move."]
30221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u32)"]
30222#[inline(always)]
30223#[target_feature(enable = "neon")]
30224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30225#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30226#[cfg_attr(
30227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30228 assert_instr(uxtl)
30229)]
30230#[cfg_attr(
30231 not(target_arch = "arm"),
30232 stable(feature = "neon_intrinsics", since = "1.59.0")
30233)]
30234#[cfg_attr(
30235 target_arch = "arm",
30236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30237)]
30238pub fn vmovl_u32(a: uint32x2_t) -> uint64x2_t {
30239 unsafe { simd_cast(a) }
30240}
30241#[doc = "Vector long move."]
30242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovl_u8)"]
30243#[inline(always)]
30244#[target_feature(enable = "neon")]
30245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovl))]
30247#[cfg_attr(
30248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30249 assert_instr(uxtl)
30250)]
30251#[cfg_attr(
30252 not(target_arch = "arm"),
30253 stable(feature = "neon_intrinsics", since = "1.59.0")
30254)]
30255#[cfg_attr(
30256 target_arch = "arm",
30257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30258)]
30259pub fn vmovl_u8(a: uint8x8_t) -> uint16x8_t {
30260 unsafe { simd_cast(a) }
30261}
30262#[doc = "Vector narrow integer."]
30263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s16)"]
30264#[inline(always)]
30265#[target_feature(enable = "neon")]
30266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30267#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30268#[cfg_attr(
30269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30270 assert_instr(xtn)
30271)]
30272#[cfg_attr(
30273 not(target_arch = "arm"),
30274 stable(feature = "neon_intrinsics", since = "1.59.0")
30275)]
30276#[cfg_attr(
30277 target_arch = "arm",
30278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30279)]
30280pub fn vmovn_s16(a: int16x8_t) -> int8x8_t {
30281 unsafe { simd_cast(a) }
30282}
30283#[doc = "Vector narrow integer."]
30284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s32)"]
30285#[inline(always)]
30286#[target_feature(enable = "neon")]
30287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30289#[cfg_attr(
30290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30291 assert_instr(xtn)
30292)]
30293#[cfg_attr(
30294 not(target_arch = "arm"),
30295 stable(feature = "neon_intrinsics", since = "1.59.0")
30296)]
30297#[cfg_attr(
30298 target_arch = "arm",
30299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30300)]
30301pub fn vmovn_s32(a: int32x4_t) -> int16x4_t {
30302 unsafe { simd_cast(a) }
30303}
30304#[doc = "Vector narrow integer."]
30305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_s64)"]
30306#[inline(always)]
30307#[target_feature(enable = "neon")]
30308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30310#[cfg_attr(
30311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30312 assert_instr(xtn)
30313)]
30314#[cfg_attr(
30315 not(target_arch = "arm"),
30316 stable(feature = "neon_intrinsics", since = "1.59.0")
30317)]
30318#[cfg_attr(
30319 target_arch = "arm",
30320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30321)]
30322pub fn vmovn_s64(a: int64x2_t) -> int32x2_t {
30323 unsafe { simd_cast(a) }
30324}
30325#[doc = "Vector narrow integer."]
30326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u16)"]
30327#[inline(always)]
30328#[target_feature(enable = "neon")]
30329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30330#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30331#[cfg_attr(
30332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30333 assert_instr(xtn)
30334)]
30335#[cfg_attr(
30336 not(target_arch = "arm"),
30337 stable(feature = "neon_intrinsics", since = "1.59.0")
30338)]
30339#[cfg_attr(
30340 target_arch = "arm",
30341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30342)]
30343pub fn vmovn_u16(a: uint16x8_t) -> uint8x8_t {
30344 unsafe { simd_cast(a) }
30345}
30346#[doc = "Vector narrow integer."]
30347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u32)"]
30348#[inline(always)]
30349#[target_feature(enable = "neon")]
30350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30351#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30352#[cfg_attr(
30353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30354 assert_instr(xtn)
30355)]
30356#[cfg_attr(
30357 not(target_arch = "arm"),
30358 stable(feature = "neon_intrinsics", since = "1.59.0")
30359)]
30360#[cfg_attr(
30361 target_arch = "arm",
30362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30363)]
30364pub fn vmovn_u32(a: uint32x4_t) -> uint16x4_t {
30365 unsafe { simd_cast(a) }
30366}
30367#[doc = "Vector narrow integer."]
30368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmovn_u64)"]
30369#[inline(always)]
30370#[target_feature(enable = "neon")]
30371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmovn))]
30373#[cfg_attr(
30374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30375 assert_instr(xtn)
30376)]
30377#[cfg_attr(
30378 not(target_arch = "arm"),
30379 stable(feature = "neon_intrinsics", since = "1.59.0")
30380)]
30381#[cfg_attr(
30382 target_arch = "arm",
30383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30384)]
30385pub fn vmovn_u64(a: uint64x2_t) -> uint32x2_t {
30386 unsafe { simd_cast(a) }
30387}
30388#[doc = "Multiply"]
30389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_f16)"]
30390#[inline(always)]
30391#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
30392#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f16"))]
30393#[cfg_attr(
30394 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30395 assert_instr(fmul)
30396)]
30397#[target_feature(enable = "neon,fp16")]
30398#[cfg_attr(
30399 not(target_arch = "arm"),
30400 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
30401)]
30402#[cfg_attr(
30403 target_arch = "arm",
30404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30405)]
30406#[cfg(not(target_arch = "arm64ec"))]
30407pub fn vmul_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
30408 unsafe { simd_mul(a, b) }
30409}
30410#[doc = "Multiply"]
30411#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_f16)"]
30412#[inline(always)]
30413#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
30414#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f16"))]
30415#[cfg_attr(
30416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30417 assert_instr(fmul)
30418)]
30419#[target_feature(enable = "neon,fp16")]
30420#[cfg_attr(
30421 not(target_arch = "arm"),
30422 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
30423)]
30424#[cfg_attr(
30425 target_arch = "arm",
30426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30427)]
30428#[cfg(not(target_arch = "arm64ec"))]
30429pub fn vmulq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
30430 unsafe { simd_mul(a, b) }
30431}
30432#[doc = "Multiply"]
30433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_f32)"]
30434#[inline(always)]
30435#[target_feature(enable = "neon")]
30436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30437#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f32"))]
30438#[cfg_attr(
30439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30440 assert_instr(fmul)
30441)]
30442#[cfg_attr(
30443 not(target_arch = "arm"),
30444 stable(feature = "neon_intrinsics", since = "1.59.0")
30445)]
30446#[cfg_attr(
30447 target_arch = "arm",
30448 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30449)]
30450pub fn vmul_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
30451 unsafe { simd_mul(a, b) }
30452}
30453#[doc = "Multiply"]
30454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_f32)"]
30455#[inline(always)]
30456#[target_feature(enable = "neon")]
30457#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30458#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.f32"))]
30459#[cfg_attr(
30460 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30461 assert_instr(fmul)
30462)]
30463#[cfg_attr(
30464 not(target_arch = "arm"),
30465 stable(feature = "neon_intrinsics", since = "1.59.0")
30466)]
30467#[cfg_attr(
30468 target_arch = "arm",
30469 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30470)]
30471pub fn vmulq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
30472 unsafe { simd_mul(a, b) }
30473}
30474#[doc = "Multiply"]
30475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_f16)"]
30476#[inline(always)]
30477#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
30478#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30479#[cfg_attr(
30480 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30481 assert_instr(fmul, LANE = 1)
30482)]
30483#[rustc_legacy_const_generics(2)]
30484#[target_feature(enable = "neon,fp16")]
30485#[cfg_attr(
30486 not(target_arch = "arm"),
30487 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
30488)]
30489#[cfg_attr(
30490 target_arch = "arm",
30491 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30492)]
30493#[cfg(not(target_arch = "arm64ec"))]
30494pub fn vmul_lane_f16<const LANE: i32>(a: float16x4_t, v: float16x4_t) -> float16x4_t {
30495 static_assert_uimm_bits!(LANE, 2);
30496 unsafe {
30497 simd_mul(
30498 a,
30499 simd_shuffle!(v, v, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30500 )
30501 }
30502}
30503#[doc = "Multiply"]
30504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_f16)"]
30505#[inline(always)]
30506#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
30507#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30508#[cfg_attr(
30509 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30510 assert_instr(fmul, LANE = 1)
30511)]
30512#[rustc_legacy_const_generics(2)]
30513#[target_feature(enable = "neon,fp16")]
30514#[cfg_attr(
30515 not(target_arch = "arm"),
30516 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
30517)]
30518#[cfg_attr(
30519 target_arch = "arm",
30520 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30521)]
30522#[cfg(not(target_arch = "arm64ec"))]
30523pub fn vmulq_lane_f16<const LANE: i32>(a: float16x8_t, v: float16x4_t) -> float16x8_t {
30524 static_assert_uimm_bits!(LANE, 2);
30525 unsafe {
30526 simd_mul(
30527 a,
30528 simd_shuffle!(
30529 v,
30530 v,
30531 [
30532 LANE as u32,
30533 LANE as u32,
30534 LANE as u32,
30535 LANE as u32,
30536 LANE as u32,
30537 LANE as u32,
30538 LANE as u32,
30539 LANE as u32
30540 ]
30541 ),
30542 )
30543 }
30544}
30545#[doc = "Floating-point multiply"]
30546#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_f32)"]
30547#[inline(always)]
30548#[target_feature(enable = "neon")]
30549#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30550#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
30551#[cfg_attr(
30552 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30553 assert_instr(fmul, LANE = 0)
30554)]
30555#[rustc_legacy_const_generics(2)]
30556#[cfg_attr(
30557 not(target_arch = "arm"),
30558 stable(feature = "neon_intrinsics", since = "1.59.0")
30559)]
30560#[cfg_attr(
30561 target_arch = "arm",
30562 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30563)]
30564pub fn vmul_lane_f32<const LANE: i32>(a: float32x2_t, b: float32x2_t) -> float32x2_t {
30565 static_assert_uimm_bits!(LANE, 1);
30566 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
30567}
30568#[doc = "Floating-point multiply"]
30569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_f32)"]
30570#[inline(always)]
30571#[target_feature(enable = "neon")]
30572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30573#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
30574#[cfg_attr(
30575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30576 assert_instr(fmul, LANE = 0)
30577)]
30578#[rustc_legacy_const_generics(2)]
30579#[cfg_attr(
30580 not(target_arch = "arm"),
30581 stable(feature = "neon_intrinsics", since = "1.59.0")
30582)]
30583#[cfg_attr(
30584 target_arch = "arm",
30585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30586)]
30587pub fn vmul_laneq_f32<const LANE: i32>(a: float32x2_t, b: float32x4_t) -> float32x2_t {
30588 static_assert_uimm_bits!(LANE, 2);
30589 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
30590}
30591#[doc = "Floating-point multiply"]
30592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_f32)"]
30593#[inline(always)]
30594#[target_feature(enable = "neon")]
30595#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30596#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 0))]
30597#[cfg_attr(
30598 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30599 assert_instr(fmul, LANE = 0)
30600)]
30601#[rustc_legacy_const_generics(2)]
30602#[cfg_attr(
30603 not(target_arch = "arm"),
30604 stable(feature = "neon_intrinsics", since = "1.59.0")
30605)]
30606#[cfg_attr(
30607 target_arch = "arm",
30608 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30609)]
30610pub fn vmulq_lane_f32<const LANE: i32>(a: float32x4_t, b: float32x2_t) -> float32x4_t {
30611 static_assert_uimm_bits!(LANE, 1);
30612 unsafe {
30613 simd_mul(
30614 a,
30615 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30616 )
30617 }
30618}
30619#[doc = "Floating-point multiply"]
30620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_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 vmulq_laneq_f32<const LANE: i32>(a: float32x4_t, b: float32x4_t) -> float32x4_t {
30639 static_assert_uimm_bits!(LANE, 2);
30640 unsafe {
30641 simd_mul(
30642 a,
30643 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30644 )
30645 }
30646}
30647#[doc = "Multiply"]
30648#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_s16)"]
30649#[inline(always)]
30650#[target_feature(enable = "neon")]
30651#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30652#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30653#[cfg_attr(
30654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30655 assert_instr(mul, LANE = 1)
30656)]
30657#[rustc_legacy_const_generics(2)]
30658#[cfg_attr(
30659 not(target_arch = "arm"),
30660 stable(feature = "neon_intrinsics", since = "1.59.0")
30661)]
30662#[cfg_attr(
30663 target_arch = "arm",
30664 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30665)]
30666pub fn vmul_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
30667 static_assert_uimm_bits!(LANE, 2);
30668 unsafe {
30669 simd_mul(
30670 a,
30671 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30672 )
30673 }
30674}
30675#[doc = "Multiply"]
30676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_s16)"]
30677#[inline(always)]
30678#[target_feature(enable = "neon")]
30679#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30680#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30681#[cfg_attr(
30682 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30683 assert_instr(mul, LANE = 1)
30684)]
30685#[rustc_legacy_const_generics(2)]
30686#[cfg_attr(
30687 not(target_arch = "arm"),
30688 stable(feature = "neon_intrinsics", since = "1.59.0")
30689)]
30690#[cfg_attr(
30691 target_arch = "arm",
30692 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30693)]
30694pub fn vmulq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x4_t) -> int16x8_t {
30695 static_assert_uimm_bits!(LANE, 2);
30696 unsafe {
30697 simd_mul(
30698 a,
30699 simd_shuffle!(
30700 b,
30701 b,
30702 [
30703 LANE as u32,
30704 LANE as u32,
30705 LANE as u32,
30706 LANE as u32,
30707 LANE as u32,
30708 LANE as u32,
30709 LANE as u32,
30710 LANE as u32
30711 ]
30712 ),
30713 )
30714 }
30715}
30716#[doc = "Multiply"]
30717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_s32)"]
30718#[inline(always)]
30719#[target_feature(enable = "neon")]
30720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30721#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30722#[cfg_attr(
30723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30724 assert_instr(mul, LANE = 1)
30725)]
30726#[rustc_legacy_const_generics(2)]
30727#[cfg_attr(
30728 not(target_arch = "arm"),
30729 stable(feature = "neon_intrinsics", since = "1.59.0")
30730)]
30731#[cfg_attr(
30732 target_arch = "arm",
30733 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30734)]
30735pub fn vmul_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
30736 static_assert_uimm_bits!(LANE, 1);
30737 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
30738}
30739#[doc = "Multiply"]
30740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_s32)"]
30741#[inline(always)]
30742#[target_feature(enable = "neon")]
30743#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30744#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30745#[cfg_attr(
30746 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30747 assert_instr(mul, LANE = 1)
30748)]
30749#[rustc_legacy_const_generics(2)]
30750#[cfg_attr(
30751 not(target_arch = "arm"),
30752 stable(feature = "neon_intrinsics", since = "1.59.0")
30753)]
30754#[cfg_attr(
30755 target_arch = "arm",
30756 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30757)]
30758pub fn vmulq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x2_t) -> int32x4_t {
30759 static_assert_uimm_bits!(LANE, 1);
30760 unsafe {
30761 simd_mul(
30762 a,
30763 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30764 )
30765 }
30766}
30767#[doc = "Multiply"]
30768#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_u16)"]
30769#[inline(always)]
30770#[target_feature(enable = "neon")]
30771#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30772#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30773#[cfg_attr(
30774 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30775 assert_instr(mul, LANE = 1)
30776)]
30777#[rustc_legacy_const_generics(2)]
30778#[cfg_attr(
30779 not(target_arch = "arm"),
30780 stable(feature = "neon_intrinsics", since = "1.59.0")
30781)]
30782#[cfg_attr(
30783 target_arch = "arm",
30784 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30785)]
30786pub fn vmul_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
30787 static_assert_uimm_bits!(LANE, 2);
30788 unsafe {
30789 simd_mul(
30790 a,
30791 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30792 )
30793 }
30794}
30795#[doc = "Multiply"]
30796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_u16)"]
30797#[inline(always)]
30798#[target_feature(enable = "neon")]
30799#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30800#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30801#[cfg_attr(
30802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30803 assert_instr(mul, LANE = 1)
30804)]
30805#[rustc_legacy_const_generics(2)]
30806#[cfg_attr(
30807 not(target_arch = "arm"),
30808 stable(feature = "neon_intrinsics", since = "1.59.0")
30809)]
30810#[cfg_attr(
30811 target_arch = "arm",
30812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30813)]
30814pub fn vmulq_lane_u16<const LANE: i32>(a: uint16x8_t, b: uint16x4_t) -> uint16x8_t {
30815 static_assert_uimm_bits!(LANE, 2);
30816 unsafe {
30817 simd_mul(
30818 a,
30819 simd_shuffle!(
30820 b,
30821 b,
30822 [
30823 LANE as u32,
30824 LANE as u32,
30825 LANE as u32,
30826 LANE as u32,
30827 LANE as u32,
30828 LANE as u32,
30829 LANE as u32,
30830 LANE as u32
30831 ]
30832 ),
30833 )
30834 }
30835}
30836#[doc = "Multiply"]
30837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_lane_u32)"]
30838#[inline(always)]
30839#[target_feature(enable = "neon")]
30840#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30841#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30842#[cfg_attr(
30843 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30844 assert_instr(mul, LANE = 1)
30845)]
30846#[rustc_legacy_const_generics(2)]
30847#[cfg_attr(
30848 not(target_arch = "arm"),
30849 stable(feature = "neon_intrinsics", since = "1.59.0")
30850)]
30851#[cfg_attr(
30852 target_arch = "arm",
30853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30854)]
30855pub fn vmul_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
30856 static_assert_uimm_bits!(LANE, 1);
30857 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
30858}
30859#[doc = "Multiply"]
30860#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_lane_u32)"]
30861#[inline(always)]
30862#[target_feature(enable = "neon")]
30863#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30864#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30865#[cfg_attr(
30866 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30867 assert_instr(mul, LANE = 1)
30868)]
30869#[rustc_legacy_const_generics(2)]
30870#[cfg_attr(
30871 not(target_arch = "arm"),
30872 stable(feature = "neon_intrinsics", since = "1.59.0")
30873)]
30874#[cfg_attr(
30875 target_arch = "arm",
30876 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30877)]
30878pub fn vmulq_lane_u32<const LANE: i32>(a: uint32x4_t, b: uint32x2_t) -> uint32x4_t {
30879 static_assert_uimm_bits!(LANE, 1);
30880 unsafe {
30881 simd_mul(
30882 a,
30883 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30884 )
30885 }
30886}
30887#[doc = "Multiply"]
30888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_s16)"]
30889#[inline(always)]
30890#[target_feature(enable = "neon")]
30891#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30892#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30893#[cfg_attr(
30894 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30895 assert_instr(mul, LANE = 1)
30896)]
30897#[rustc_legacy_const_generics(2)]
30898#[cfg_attr(
30899 not(target_arch = "arm"),
30900 stable(feature = "neon_intrinsics", since = "1.59.0")
30901)]
30902#[cfg_attr(
30903 target_arch = "arm",
30904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30905)]
30906pub fn vmul_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
30907 static_assert_uimm_bits!(LANE, 3);
30908 unsafe {
30909 simd_mul(
30910 a,
30911 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
30912 )
30913 }
30914}
30915#[doc = "Multiply"]
30916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_s16)"]
30917#[inline(always)]
30918#[target_feature(enable = "neon")]
30919#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30921#[cfg_attr(
30922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30923 assert_instr(mul, LANE = 1)
30924)]
30925#[rustc_legacy_const_generics(2)]
30926#[cfg_attr(
30927 not(target_arch = "arm"),
30928 stable(feature = "neon_intrinsics", since = "1.59.0")
30929)]
30930#[cfg_attr(
30931 target_arch = "arm",
30932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30933)]
30934pub fn vmulq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
30935 static_assert_uimm_bits!(LANE, 3);
30936 unsafe {
30937 simd_mul(
30938 a,
30939 simd_shuffle!(
30940 b,
30941 b,
30942 [
30943 LANE as u32,
30944 LANE as u32,
30945 LANE as u32,
30946 LANE as u32,
30947 LANE as u32,
30948 LANE as u32,
30949 LANE as u32,
30950 LANE as u32
30951 ]
30952 ),
30953 )
30954 }
30955}
30956#[doc = "Multiply"]
30957#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_s32)"]
30958#[inline(always)]
30959#[target_feature(enable = "neon")]
30960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30961#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30962#[cfg_attr(
30963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30964 assert_instr(mul, LANE = 1)
30965)]
30966#[rustc_legacy_const_generics(2)]
30967#[cfg_attr(
30968 not(target_arch = "arm"),
30969 stable(feature = "neon_intrinsics", since = "1.59.0")
30970)]
30971#[cfg_attr(
30972 target_arch = "arm",
30973 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30974)]
30975pub fn vmul_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
30976 static_assert_uimm_bits!(LANE, 2);
30977 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
30978}
30979#[doc = "Multiply"]
30980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_s32)"]
30981#[inline(always)]
30982#[target_feature(enable = "neon")]
30983#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
30984#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
30985#[cfg_attr(
30986 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
30987 assert_instr(mul, LANE = 1)
30988)]
30989#[rustc_legacy_const_generics(2)]
30990#[cfg_attr(
30991 not(target_arch = "arm"),
30992 stable(feature = "neon_intrinsics", since = "1.59.0")
30993)]
30994#[cfg_attr(
30995 target_arch = "arm",
30996 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
30997)]
30998pub fn vmulq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
30999 static_assert_uimm_bits!(LANE, 2);
31000 unsafe {
31001 simd_mul(
31002 a,
31003 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31004 )
31005 }
31006}
31007#[doc = "Multiply"]
31008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_u16)"]
31009#[inline(always)]
31010#[target_feature(enable = "neon")]
31011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31012#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
31013#[cfg_attr(
31014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31015 assert_instr(mul, LANE = 1)
31016)]
31017#[rustc_legacy_const_generics(2)]
31018#[cfg_attr(
31019 not(target_arch = "arm"),
31020 stable(feature = "neon_intrinsics", since = "1.59.0")
31021)]
31022#[cfg_attr(
31023 target_arch = "arm",
31024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31025)]
31026pub fn vmul_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x8_t) -> uint16x4_t {
31027 static_assert_uimm_bits!(LANE, 3);
31028 unsafe {
31029 simd_mul(
31030 a,
31031 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31032 )
31033 }
31034}
31035#[doc = "Multiply"]
31036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_u16)"]
31037#[inline(always)]
31038#[target_feature(enable = "neon")]
31039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31040#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
31041#[cfg_attr(
31042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31043 assert_instr(mul, LANE = 1)
31044)]
31045#[rustc_legacy_const_generics(2)]
31046#[cfg_attr(
31047 not(target_arch = "arm"),
31048 stable(feature = "neon_intrinsics", since = "1.59.0")
31049)]
31050#[cfg_attr(
31051 target_arch = "arm",
31052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31053)]
31054pub fn vmulq_laneq_u16<const LANE: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
31055 static_assert_uimm_bits!(LANE, 3);
31056 unsafe {
31057 simd_mul(
31058 a,
31059 simd_shuffle!(
31060 b,
31061 b,
31062 [
31063 LANE as u32,
31064 LANE as u32,
31065 LANE as u32,
31066 LANE as u32,
31067 LANE as u32,
31068 LANE as u32,
31069 LANE as u32,
31070 LANE as u32
31071 ]
31072 ),
31073 )
31074 }
31075}
31076#[doc = "Multiply"]
31077#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_laneq_u32)"]
31078#[inline(always)]
31079#[target_feature(enable = "neon")]
31080#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31081#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
31082#[cfg_attr(
31083 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31084 assert_instr(mul, LANE = 1)
31085)]
31086#[rustc_legacy_const_generics(2)]
31087#[cfg_attr(
31088 not(target_arch = "arm"),
31089 stable(feature = "neon_intrinsics", since = "1.59.0")
31090)]
31091#[cfg_attr(
31092 target_arch = "arm",
31093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31094)]
31095pub fn vmul_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x4_t) -> uint32x2_t {
31096 static_assert_uimm_bits!(LANE, 2);
31097 unsafe { simd_mul(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31098}
31099#[doc = "Multiply"]
31100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_laneq_u32)"]
31101#[inline(always)]
31102#[target_feature(enable = "neon")]
31103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31104#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul, LANE = 1))]
31105#[cfg_attr(
31106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31107 assert_instr(mul, LANE = 1)
31108)]
31109#[rustc_legacy_const_generics(2)]
31110#[cfg_attr(
31111 not(target_arch = "arm"),
31112 stable(feature = "neon_intrinsics", since = "1.59.0")
31113)]
31114#[cfg_attr(
31115 target_arch = "arm",
31116 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31117)]
31118pub fn vmulq_laneq_u32<const LANE: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
31119 static_assert_uimm_bits!(LANE, 2);
31120 unsafe {
31121 simd_mul(
31122 a,
31123 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31124 )
31125 }
31126}
31127#[doc = "Vector multiply by scalar"]
31128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_f16)"]
31129#[inline(always)]
31130#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
31131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31132#[cfg_attr(
31133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31134 assert_instr(fmul)
31135)]
31136#[target_feature(enable = "neon,fp16")]
31137#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
31138#[cfg(not(target_arch = "arm64ec"))]
31139pub fn vmul_n_f16(a: float16x4_t, b: f16) -> float16x4_t {
31140 unsafe { simd_mul(a, vdup_n_f16(b)) }
31141}
31142#[doc = "Vector multiply by scalar"]
31143#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_f16)"]
31144#[inline(always)]
31145#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
31146#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31147#[cfg_attr(
31148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31149 assert_instr(fmul)
31150)]
31151#[target_feature(enable = "neon,fp16")]
31152#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
31153#[cfg(not(target_arch = "arm64ec"))]
31154pub fn vmulq_n_f16(a: float16x8_t, b: f16) -> float16x8_t {
31155 unsafe { simd_mul(a, vdupq_n_f16(b)) }
31156}
31157#[doc = "Vector multiply by scalar"]
31158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_f32)"]
31159#[inline(always)]
31160#[target_feature(enable = "neon")]
31161#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31162#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31163#[cfg_attr(
31164 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31165 assert_instr(fmul)
31166)]
31167#[cfg_attr(
31168 not(target_arch = "arm"),
31169 stable(feature = "neon_intrinsics", since = "1.59.0")
31170)]
31171#[cfg_attr(
31172 target_arch = "arm",
31173 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31174)]
31175pub fn vmul_n_f32(a: float32x2_t, b: f32) -> float32x2_t {
31176 unsafe { simd_mul(a, vdup_n_f32(b)) }
31177}
31178#[doc = "Vector multiply by scalar"]
31179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_f32)"]
31180#[inline(always)]
31181#[target_feature(enable = "neon")]
31182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31183#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31184#[cfg_attr(
31185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31186 assert_instr(fmul)
31187)]
31188#[cfg_attr(
31189 not(target_arch = "arm"),
31190 stable(feature = "neon_intrinsics", since = "1.59.0")
31191)]
31192#[cfg_attr(
31193 target_arch = "arm",
31194 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31195)]
31196pub fn vmulq_n_f32(a: float32x4_t, b: f32) -> float32x4_t {
31197 unsafe { simd_mul(a, vdupq_n_f32(b)) }
31198}
31199#[doc = "Vector multiply by scalar"]
31200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_s16)"]
31201#[inline(always)]
31202#[target_feature(enable = "neon")]
31203#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31204#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31205#[cfg_attr(
31206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31207 assert_instr(mul)
31208)]
31209#[cfg_attr(
31210 not(target_arch = "arm"),
31211 stable(feature = "neon_intrinsics", since = "1.59.0")
31212)]
31213#[cfg_attr(
31214 target_arch = "arm",
31215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31216)]
31217pub fn vmul_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
31218 unsafe { simd_mul(a, vdup_n_s16(b)) }
31219}
31220#[doc = "Vector multiply by scalar"]
31221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_s16)"]
31222#[inline(always)]
31223#[target_feature(enable = "neon")]
31224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31225#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31226#[cfg_attr(
31227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31228 assert_instr(mul)
31229)]
31230#[cfg_attr(
31231 not(target_arch = "arm"),
31232 stable(feature = "neon_intrinsics", since = "1.59.0")
31233)]
31234#[cfg_attr(
31235 target_arch = "arm",
31236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31237)]
31238pub fn vmulq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
31239 unsafe { simd_mul(a, vdupq_n_s16(b)) }
31240}
31241#[doc = "Vector multiply by scalar"]
31242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_s32)"]
31243#[inline(always)]
31244#[target_feature(enable = "neon")]
31245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31247#[cfg_attr(
31248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31249 assert_instr(mul)
31250)]
31251#[cfg_attr(
31252 not(target_arch = "arm"),
31253 stable(feature = "neon_intrinsics", since = "1.59.0")
31254)]
31255#[cfg_attr(
31256 target_arch = "arm",
31257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31258)]
31259pub fn vmul_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
31260 unsafe { simd_mul(a, vdup_n_s32(b)) }
31261}
31262#[doc = "Vector multiply by scalar"]
31263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_s32)"]
31264#[inline(always)]
31265#[target_feature(enable = "neon")]
31266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31267#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31268#[cfg_attr(
31269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31270 assert_instr(mul)
31271)]
31272#[cfg_attr(
31273 not(target_arch = "arm"),
31274 stable(feature = "neon_intrinsics", since = "1.59.0")
31275)]
31276#[cfg_attr(
31277 target_arch = "arm",
31278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31279)]
31280pub fn vmulq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
31281 unsafe { simd_mul(a, vdupq_n_s32(b)) }
31282}
31283#[doc = "Vector multiply by scalar"]
31284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_u16)"]
31285#[inline(always)]
31286#[target_feature(enable = "neon")]
31287#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31289#[cfg_attr(
31290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31291 assert_instr(mul)
31292)]
31293#[cfg_attr(
31294 not(target_arch = "arm"),
31295 stable(feature = "neon_intrinsics", since = "1.59.0")
31296)]
31297#[cfg_attr(
31298 target_arch = "arm",
31299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31300)]
31301pub fn vmul_n_u16(a: uint16x4_t, b: u16) -> uint16x4_t {
31302 unsafe { simd_mul(a, vdup_n_u16(b)) }
31303}
31304#[doc = "Vector multiply by scalar"]
31305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_u16)"]
31306#[inline(always)]
31307#[target_feature(enable = "neon")]
31308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31310#[cfg_attr(
31311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31312 assert_instr(mul)
31313)]
31314#[cfg_attr(
31315 not(target_arch = "arm"),
31316 stable(feature = "neon_intrinsics", since = "1.59.0")
31317)]
31318#[cfg_attr(
31319 target_arch = "arm",
31320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31321)]
31322pub fn vmulq_n_u16(a: uint16x8_t, b: u16) -> uint16x8_t {
31323 unsafe { simd_mul(a, vdupq_n_u16(b)) }
31324}
31325#[doc = "Vector multiply by scalar"]
31326#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_n_u32)"]
31327#[inline(always)]
31328#[target_feature(enable = "neon")]
31329#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31330#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31331#[cfg_attr(
31332 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31333 assert_instr(mul)
31334)]
31335#[cfg_attr(
31336 not(target_arch = "arm"),
31337 stable(feature = "neon_intrinsics", since = "1.59.0")
31338)]
31339#[cfg_attr(
31340 target_arch = "arm",
31341 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31342)]
31343pub fn vmul_n_u32(a: uint32x2_t, b: u32) -> uint32x2_t {
31344 unsafe { simd_mul(a, vdup_n_u32(b)) }
31345}
31346#[doc = "Vector multiply by scalar"]
31347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_n_u32)"]
31348#[inline(always)]
31349#[target_feature(enable = "neon")]
31350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31351#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31352#[cfg_attr(
31353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31354 assert_instr(mul)
31355)]
31356#[cfg_attr(
31357 not(target_arch = "arm"),
31358 stable(feature = "neon_intrinsics", since = "1.59.0")
31359)]
31360#[cfg_attr(
31361 target_arch = "arm",
31362 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31363)]
31364pub fn vmulq_n_u32(a: uint32x4_t, b: u32) -> uint32x4_t {
31365 unsafe { simd_mul(a, vdupq_n_u32(b)) }
31366}
31367#[doc = "Polynomial multiply"]
31368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_p8)"]
31369#[inline(always)]
31370#[target_feature(enable = "neon")]
31371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31373#[cfg_attr(
31374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31375 assert_instr(pmul)
31376)]
31377#[cfg_attr(
31378 not(target_arch = "arm"),
31379 stable(feature = "neon_intrinsics", since = "1.59.0")
31380)]
31381#[cfg_attr(
31382 target_arch = "arm",
31383 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31384)]
31385pub fn vmul_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
31386 unsafe extern "unadjusted" {
31387 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulp.v8i8")]
31388 #[cfg_attr(
31389 any(target_arch = "aarch64", target_arch = "arm64ec"),
31390 link_name = "llvm.aarch64.neon.pmul.v8i8"
31391 )]
31392 fn _vmul_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t;
31393 }
31394 unsafe { _vmul_p8(a, b) }
31395}
31396#[doc = "Polynomial multiply"]
31397#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_p8)"]
31398#[inline(always)]
31399#[target_feature(enable = "neon")]
31400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31401#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmul))]
31402#[cfg_attr(
31403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31404 assert_instr(pmul)
31405)]
31406#[cfg_attr(
31407 not(target_arch = "arm"),
31408 stable(feature = "neon_intrinsics", since = "1.59.0")
31409)]
31410#[cfg_attr(
31411 target_arch = "arm",
31412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31413)]
31414pub fn vmulq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
31415 unsafe extern "unadjusted" {
31416 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmulp.v16i8")]
31417 #[cfg_attr(
31418 any(target_arch = "aarch64", target_arch = "arm64ec"),
31419 link_name = "llvm.aarch64.neon.pmul.v16i8"
31420 )]
31421 fn _vmulq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t;
31422 }
31423 unsafe { _vmulq_p8(a, b) }
31424}
31425#[doc = "Multiply"]
31426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s16)"]
31427#[inline(always)]
31428#[target_feature(enable = "neon")]
31429#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31430#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
31431#[cfg_attr(
31432 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31433 assert_instr(mul)
31434)]
31435#[cfg_attr(
31436 not(target_arch = "arm"),
31437 stable(feature = "neon_intrinsics", since = "1.59.0")
31438)]
31439#[cfg_attr(
31440 target_arch = "arm",
31441 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31442)]
31443pub fn vmul_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
31444 unsafe { simd_mul(a, b) }
31445}
31446#[doc = "Multiply"]
31447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s16)"]
31448#[inline(always)]
31449#[target_feature(enable = "neon")]
31450#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31451#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
31452#[cfg_attr(
31453 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31454 assert_instr(mul)
31455)]
31456#[cfg_attr(
31457 not(target_arch = "arm"),
31458 stable(feature = "neon_intrinsics", since = "1.59.0")
31459)]
31460#[cfg_attr(
31461 target_arch = "arm",
31462 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31463)]
31464pub fn vmulq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
31465 unsafe { simd_mul(a, b) }
31466}
31467#[doc = "Multiply"]
31468#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u16)"]
31469#[inline(always)]
31470#[target_feature(enable = "neon")]
31471#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31472#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
31473#[cfg_attr(
31474 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31475 assert_instr(mul)
31476)]
31477#[cfg_attr(
31478 not(target_arch = "arm"),
31479 stable(feature = "neon_intrinsics", since = "1.59.0")
31480)]
31481#[cfg_attr(
31482 target_arch = "arm",
31483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31484)]
31485pub fn vmul_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
31486 unsafe { simd_mul(a, b) }
31487}
31488#[doc = "Multiply"]
31489#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u16)"]
31490#[inline(always)]
31491#[target_feature(enable = "neon")]
31492#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31493#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i16"))]
31494#[cfg_attr(
31495 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31496 assert_instr(mul)
31497)]
31498#[cfg_attr(
31499 not(target_arch = "arm"),
31500 stable(feature = "neon_intrinsics", since = "1.59.0")
31501)]
31502#[cfg_attr(
31503 target_arch = "arm",
31504 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31505)]
31506pub fn vmulq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
31507 unsafe { simd_mul(a, b) }
31508}
31509#[doc = "Multiply"]
31510#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s32)"]
31511#[inline(always)]
31512#[target_feature(enable = "neon")]
31513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31514#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
31515#[cfg_attr(
31516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31517 assert_instr(mul)
31518)]
31519#[cfg_attr(
31520 not(target_arch = "arm"),
31521 stable(feature = "neon_intrinsics", since = "1.59.0")
31522)]
31523#[cfg_attr(
31524 target_arch = "arm",
31525 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31526)]
31527pub fn vmul_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
31528 unsafe { simd_mul(a, b) }
31529}
31530#[doc = "Multiply"]
31531#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s32)"]
31532#[inline(always)]
31533#[target_feature(enable = "neon")]
31534#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31535#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
31536#[cfg_attr(
31537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31538 assert_instr(mul)
31539)]
31540#[cfg_attr(
31541 not(target_arch = "arm"),
31542 stable(feature = "neon_intrinsics", since = "1.59.0")
31543)]
31544#[cfg_attr(
31545 target_arch = "arm",
31546 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31547)]
31548pub fn vmulq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
31549 unsafe { simd_mul(a, b) }
31550}
31551#[doc = "Multiply"]
31552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u32)"]
31553#[inline(always)]
31554#[target_feature(enable = "neon")]
31555#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31556#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
31557#[cfg_attr(
31558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31559 assert_instr(mul)
31560)]
31561#[cfg_attr(
31562 not(target_arch = "arm"),
31563 stable(feature = "neon_intrinsics", since = "1.59.0")
31564)]
31565#[cfg_attr(
31566 target_arch = "arm",
31567 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31568)]
31569pub fn vmul_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
31570 unsafe { simd_mul(a, b) }
31571}
31572#[doc = "Multiply"]
31573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u32)"]
31574#[inline(always)]
31575#[target_feature(enable = "neon")]
31576#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31577#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i32"))]
31578#[cfg_attr(
31579 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31580 assert_instr(mul)
31581)]
31582#[cfg_attr(
31583 not(target_arch = "arm"),
31584 stable(feature = "neon_intrinsics", since = "1.59.0")
31585)]
31586#[cfg_attr(
31587 target_arch = "arm",
31588 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31589)]
31590pub fn vmulq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
31591 unsafe { simd_mul(a, b) }
31592}
31593#[doc = "Multiply"]
31594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_s8)"]
31595#[inline(always)]
31596#[target_feature(enable = "neon")]
31597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31598#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
31599#[cfg_attr(
31600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31601 assert_instr(mul)
31602)]
31603#[cfg_attr(
31604 not(target_arch = "arm"),
31605 stable(feature = "neon_intrinsics", since = "1.59.0")
31606)]
31607#[cfg_attr(
31608 target_arch = "arm",
31609 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31610)]
31611pub fn vmul_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
31612 unsafe { simd_mul(a, b) }
31613}
31614#[doc = "Multiply"]
31615#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_s8)"]
31616#[inline(always)]
31617#[target_feature(enable = "neon")]
31618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31619#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
31620#[cfg_attr(
31621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31622 assert_instr(mul)
31623)]
31624#[cfg_attr(
31625 not(target_arch = "arm"),
31626 stable(feature = "neon_intrinsics", since = "1.59.0")
31627)]
31628#[cfg_attr(
31629 target_arch = "arm",
31630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31631)]
31632pub fn vmulq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
31633 unsafe { simd_mul(a, b) }
31634}
31635#[doc = "Multiply"]
31636#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmul_u8)"]
31637#[inline(always)]
31638#[target_feature(enable = "neon")]
31639#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31640#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
31641#[cfg_attr(
31642 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31643 assert_instr(mul)
31644)]
31645#[cfg_attr(
31646 not(target_arch = "arm"),
31647 stable(feature = "neon_intrinsics", since = "1.59.0")
31648)]
31649#[cfg_attr(
31650 target_arch = "arm",
31651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31652)]
31653pub fn vmul_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
31654 unsafe { simd_mul(a, b) }
31655}
31656#[doc = "Multiply"]
31657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmulq_u8)"]
31658#[inline(always)]
31659#[target_feature(enable = "neon")]
31660#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31661#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmul.i8"))]
31662#[cfg_attr(
31663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31664 assert_instr(mul)
31665)]
31666#[cfg_attr(
31667 not(target_arch = "arm"),
31668 stable(feature = "neon_intrinsics", since = "1.59.0")
31669)]
31670#[cfg_attr(
31671 target_arch = "arm",
31672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31673)]
31674pub fn vmulq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
31675 unsafe { simd_mul(a, b) }
31676}
31677#[doc = "Vector long multiply by scalar"]
31678#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_s16)"]
31679#[inline(always)]
31680#[target_feature(enable = "neon")]
31681#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31682#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31683#[cfg_attr(
31684 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31685 assert_instr(smull, LANE = 1)
31686)]
31687#[rustc_legacy_const_generics(2)]
31688#[cfg_attr(
31689 not(target_arch = "arm"),
31690 stable(feature = "neon_intrinsics", since = "1.59.0")
31691)]
31692#[cfg_attr(
31693 target_arch = "arm",
31694 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31695)]
31696pub fn vmull_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int32x4_t {
31697 static_assert_uimm_bits!(LANE, 2);
31698 unsafe {
31699 vmull_s16(
31700 a,
31701 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31702 )
31703 }
31704}
31705#[doc = "Vector long multiply by scalar"]
31706#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_s16)"]
31707#[inline(always)]
31708#[target_feature(enable = "neon")]
31709#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31710#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31711#[cfg_attr(
31712 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31713 assert_instr(smull, LANE = 1)
31714)]
31715#[rustc_legacy_const_generics(2)]
31716#[cfg_attr(
31717 not(target_arch = "arm"),
31718 stable(feature = "neon_intrinsics", since = "1.59.0")
31719)]
31720#[cfg_attr(
31721 target_arch = "arm",
31722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31723)]
31724pub fn vmull_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int32x4_t {
31725 static_assert_uimm_bits!(LANE, 3);
31726 unsafe {
31727 vmull_s16(
31728 a,
31729 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31730 )
31731 }
31732}
31733#[doc = "Vector long multiply by scalar"]
31734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_s32)"]
31735#[inline(always)]
31736#[target_feature(enable = "neon")]
31737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31738#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31739#[cfg_attr(
31740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31741 assert_instr(smull, LANE = 1)
31742)]
31743#[rustc_legacy_const_generics(2)]
31744#[cfg_attr(
31745 not(target_arch = "arm"),
31746 stable(feature = "neon_intrinsics", since = "1.59.0")
31747)]
31748#[cfg_attr(
31749 target_arch = "arm",
31750 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31751)]
31752pub fn vmull_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int64x2_t {
31753 static_assert_uimm_bits!(LANE, 1);
31754 unsafe { vmull_s32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31755}
31756#[doc = "Vector long multiply by scalar"]
31757#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_s32)"]
31758#[inline(always)]
31759#[target_feature(enable = "neon")]
31760#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31761#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31762#[cfg_attr(
31763 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31764 assert_instr(smull, LANE = 1)
31765)]
31766#[rustc_legacy_const_generics(2)]
31767#[cfg_attr(
31768 not(target_arch = "arm"),
31769 stable(feature = "neon_intrinsics", since = "1.59.0")
31770)]
31771#[cfg_attr(
31772 target_arch = "arm",
31773 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31774)]
31775pub fn vmull_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int64x2_t {
31776 static_assert_uimm_bits!(LANE, 2);
31777 unsafe { vmull_s32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31778}
31779#[doc = "Vector long multiply by scalar"]
31780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_u16)"]
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(umull, 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_lane_u16<const LANE: i32>(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
31799 static_assert_uimm_bits!(LANE, 2);
31800 unsafe {
31801 vmull_u16(
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_laneq_u16)"]
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(umull, 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_laneq_u16<const LANE: i32>(a: uint16x4_t, b: uint16x8_t) -> uint32x4_t {
31827 static_assert_uimm_bits!(LANE, 3);
31828 unsafe {
31829 vmull_u16(
31830 a,
31831 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]),
31832 )
31833 }
31834}
31835#[doc = "Vector long multiply by scalar"]
31836#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_lane_u32)"]
31837#[inline(always)]
31838#[target_feature(enable = "neon")]
31839#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31840#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31841#[cfg_attr(
31842 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31843 assert_instr(umull, LANE = 1)
31844)]
31845#[rustc_legacy_const_generics(2)]
31846#[cfg_attr(
31847 not(target_arch = "arm"),
31848 stable(feature = "neon_intrinsics", since = "1.59.0")
31849)]
31850#[cfg_attr(
31851 target_arch = "arm",
31852 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31853)]
31854pub fn vmull_lane_u32<const LANE: i32>(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
31855 static_assert_uimm_bits!(LANE, 1);
31856 unsafe { vmull_u32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31857}
31858#[doc = "Vector long multiply by scalar"]
31859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_laneq_u32)"]
31860#[inline(always)]
31861#[target_feature(enable = "neon")]
31862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31863#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull, LANE = 1))]
31864#[cfg_attr(
31865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31866 assert_instr(umull, LANE = 1)
31867)]
31868#[rustc_legacy_const_generics(2)]
31869#[cfg_attr(
31870 not(target_arch = "arm"),
31871 stable(feature = "neon_intrinsics", since = "1.59.0")
31872)]
31873#[cfg_attr(
31874 target_arch = "arm",
31875 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31876)]
31877pub fn vmull_laneq_u32<const LANE: i32>(a: uint32x2_t, b: uint32x4_t) -> uint64x2_t {
31878 static_assert_uimm_bits!(LANE, 2);
31879 unsafe { vmull_u32(a, simd_shuffle!(b, b, [LANE as u32, LANE as u32])) }
31880}
31881#[doc = "Vector long multiply with scalar"]
31882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_s16)"]
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))]
31887#[cfg_attr(
31888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31889 assert_instr(smull)
31890)]
31891#[cfg_attr(
31892 not(target_arch = "arm"),
31893 stable(feature = "neon_intrinsics", since = "1.59.0")
31894)]
31895#[cfg_attr(
31896 target_arch = "arm",
31897 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31898)]
31899pub fn vmull_n_s16(a: int16x4_t, b: i16) -> int32x4_t {
31900 vmull_s16(a, vdup_n_s16(b))
31901}
31902#[doc = "Vector long multiply with scalar"]
31903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_s32)"]
31904#[inline(always)]
31905#[target_feature(enable = "neon")]
31906#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31907#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
31908#[cfg_attr(
31909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31910 assert_instr(smull)
31911)]
31912#[cfg_attr(
31913 not(target_arch = "arm"),
31914 stable(feature = "neon_intrinsics", since = "1.59.0")
31915)]
31916#[cfg_attr(
31917 target_arch = "arm",
31918 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31919)]
31920pub fn vmull_n_s32(a: int32x2_t, b: i32) -> int64x2_t {
31921 vmull_s32(a, vdup_n_s32(b))
31922}
31923#[doc = "Vector long multiply with scalar"]
31924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_u16)"]
31925#[inline(always)]
31926#[target_feature(enable = "neon")]
31927#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31928#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
31929#[cfg_attr(
31930 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31931 assert_instr(umull)
31932)]
31933#[cfg_attr(
31934 not(target_arch = "arm"),
31935 stable(feature = "neon_intrinsics", since = "1.59.0")
31936)]
31937#[cfg_attr(
31938 target_arch = "arm",
31939 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31940)]
31941pub fn vmull_n_u16(a: uint16x4_t, b: u16) -> uint32x4_t {
31942 vmull_u16(a, vdup_n_u16(b))
31943}
31944#[doc = "Vector long multiply with scalar"]
31945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_n_u32)"]
31946#[inline(always)]
31947#[target_feature(enable = "neon")]
31948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31949#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmull))]
31950#[cfg_attr(
31951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31952 assert_instr(umull)
31953)]
31954#[cfg_attr(
31955 not(target_arch = "arm"),
31956 stable(feature = "neon_intrinsics", since = "1.59.0")
31957)]
31958#[cfg_attr(
31959 target_arch = "arm",
31960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31961)]
31962pub fn vmull_n_u32(a: uint32x2_t, b: u32) -> uint64x2_t {
31963 vmull_u32(a, vdup_n_u32(b))
31964}
31965#[doc = "Polynomial multiply long"]
31966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_p8)"]
31967#[inline(always)]
31968#[target_feature(enable = "neon")]
31969#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31970#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.p8"))]
31971#[cfg_attr(
31972 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
31973 assert_instr(pmull)
31974)]
31975#[cfg_attr(
31976 not(target_arch = "arm"),
31977 stable(feature = "neon_intrinsics", since = "1.59.0")
31978)]
31979#[cfg_attr(
31980 target_arch = "arm",
31981 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
31982)]
31983pub fn vmull_p8(a: poly8x8_t, b: poly8x8_t) -> poly16x8_t {
31984 unsafe extern "unadjusted" {
31985 #[cfg_attr(
31986 any(target_arch = "aarch64", target_arch = "arm64ec"),
31987 link_name = "llvm.aarch64.neon.pmull.v8i16"
31988 )]
31989 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmullp.v8i16")]
31990 fn _vmull_p8(a: poly8x8_t, b: poly8x8_t) -> poly16x8_t;
31991 }
31992 unsafe { _vmull_p8(a, b) }
31993}
31994#[doc = "Signed multiply long"]
31995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s16)"]
31996#[inline(always)]
31997#[target_feature(enable = "neon")]
31998#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
31999#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s16"))]
32000#[cfg_attr(
32001 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32002 assert_instr(smull)
32003)]
32004#[cfg_attr(
32005 not(target_arch = "arm"),
32006 stable(feature = "neon_intrinsics", since = "1.59.0")
32007)]
32008#[cfg_attr(
32009 target_arch = "arm",
32010 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32011)]
32012pub fn vmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
32013 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32014}
32015#[doc = "Signed multiply long"]
32016#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s32)"]
32017#[inline(always)]
32018#[target_feature(enable = "neon")]
32019#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32020#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s32"))]
32021#[cfg_attr(
32022 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32023 assert_instr(smull)
32024)]
32025#[cfg_attr(
32026 not(target_arch = "arm"),
32027 stable(feature = "neon_intrinsics", since = "1.59.0")
32028)]
32029#[cfg_attr(
32030 target_arch = "arm",
32031 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32032)]
32033pub fn vmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
32034 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32035}
32036#[doc = "Signed multiply long"]
32037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_s8)"]
32038#[inline(always)]
32039#[target_feature(enable = "neon")]
32040#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32041#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.s8"))]
32042#[cfg_attr(
32043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32044 assert_instr(smull)
32045)]
32046#[cfg_attr(
32047 not(target_arch = "arm"),
32048 stable(feature = "neon_intrinsics", since = "1.59.0")
32049)]
32050#[cfg_attr(
32051 target_arch = "arm",
32052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32053)]
32054pub fn vmull_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
32055 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32056}
32057#[doc = "Unsigned multiply long"]
32058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u8)"]
32059#[inline(always)]
32060#[target_feature(enable = "neon")]
32061#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32062#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u8"))]
32063#[cfg_attr(
32064 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32065 assert_instr(umull)
32066)]
32067#[cfg_attr(
32068 not(target_arch = "arm"),
32069 stable(feature = "neon_intrinsics", since = "1.59.0")
32070)]
32071#[cfg_attr(
32072 target_arch = "arm",
32073 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32074)]
32075pub fn vmull_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
32076 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32077}
32078#[doc = "Unsigned multiply long"]
32079#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u16)"]
32080#[inline(always)]
32081#[target_feature(enable = "neon")]
32082#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32083#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u16"))]
32084#[cfg_attr(
32085 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32086 assert_instr(umull)
32087)]
32088#[cfg_attr(
32089 not(target_arch = "arm"),
32090 stable(feature = "neon_intrinsics", since = "1.59.0")
32091)]
32092#[cfg_attr(
32093 target_arch = "arm",
32094 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32095)]
32096pub fn vmull_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
32097 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32098}
32099#[doc = "Unsigned multiply long"]
32100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmull_u32)"]
32101#[inline(always)]
32102#[target_feature(enable = "neon")]
32103#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32104#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vmull.u32"))]
32105#[cfg_attr(
32106 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32107 assert_instr(umull)
32108)]
32109#[cfg_attr(
32110 not(target_arch = "arm"),
32111 stable(feature = "neon_intrinsics", since = "1.59.0")
32112)]
32113#[cfg_attr(
32114 target_arch = "arm",
32115 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32116)]
32117pub fn vmull_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
32118 unsafe { simd_mul(simd_cast(a), simd_cast(b)) }
32119}
32120#[doc = "Vector bitwise not."]
32121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_p8)"]
32122#[inline(always)]
32123#[target_feature(enable = "neon")]
32124#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32125#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32126#[cfg_attr(
32127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32128 assert_instr(mvn)
32129)]
32130#[cfg_attr(
32131 not(target_arch = "arm"),
32132 stable(feature = "neon_intrinsics", since = "1.59.0")
32133)]
32134#[cfg_attr(
32135 target_arch = "arm",
32136 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32137)]
32138pub fn vmvn_p8(a: poly8x8_t) -> poly8x8_t {
32139 let b = poly8x8_t::splat(255);
32140 unsafe { simd_xor(a, b) }
32141}
32142#[doc = "Vector bitwise not."]
32143#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s16)"]
32144#[inline(always)]
32145#[target_feature(enable = "neon")]
32146#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32147#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32148#[cfg_attr(
32149 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32150 assert_instr(mvn)
32151)]
32152#[cfg_attr(
32153 not(target_arch = "arm"),
32154 stable(feature = "neon_intrinsics", since = "1.59.0")
32155)]
32156#[cfg_attr(
32157 target_arch = "arm",
32158 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32159)]
32160pub fn vmvn_s16(a: int16x4_t) -> int16x4_t {
32161 let b = int16x4_t::splat(-1);
32162 unsafe { simd_xor(a, b) }
32163}
32164#[doc = "Vector bitwise not."]
32165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s32)"]
32166#[inline(always)]
32167#[target_feature(enable = "neon")]
32168#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32169#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32170#[cfg_attr(
32171 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32172 assert_instr(mvn)
32173)]
32174#[cfg_attr(
32175 not(target_arch = "arm"),
32176 stable(feature = "neon_intrinsics", since = "1.59.0")
32177)]
32178#[cfg_attr(
32179 target_arch = "arm",
32180 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32181)]
32182pub fn vmvn_s32(a: int32x2_t) -> int32x2_t {
32183 let b = int32x2_t::splat(-1);
32184 unsafe { simd_xor(a, b) }
32185}
32186#[doc = "Vector bitwise not."]
32187#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_s8)"]
32188#[inline(always)]
32189#[target_feature(enable = "neon")]
32190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32191#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32192#[cfg_attr(
32193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32194 assert_instr(mvn)
32195)]
32196#[cfg_attr(
32197 not(target_arch = "arm"),
32198 stable(feature = "neon_intrinsics", since = "1.59.0")
32199)]
32200#[cfg_attr(
32201 target_arch = "arm",
32202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32203)]
32204pub fn vmvn_s8(a: int8x8_t) -> int8x8_t {
32205 let b = int8x8_t::splat(-1);
32206 unsafe { simd_xor(a, b) }
32207}
32208#[doc = "Vector bitwise not."]
32209#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u16)"]
32210#[inline(always)]
32211#[target_feature(enable = "neon")]
32212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32213#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32214#[cfg_attr(
32215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32216 assert_instr(mvn)
32217)]
32218#[cfg_attr(
32219 not(target_arch = "arm"),
32220 stable(feature = "neon_intrinsics", since = "1.59.0")
32221)]
32222#[cfg_attr(
32223 target_arch = "arm",
32224 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32225)]
32226pub fn vmvn_u16(a: uint16x4_t) -> uint16x4_t {
32227 let b = uint16x4_t::splat(65_535);
32228 unsafe { simd_xor(a, b) }
32229}
32230#[doc = "Vector bitwise not."]
32231#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u32)"]
32232#[inline(always)]
32233#[target_feature(enable = "neon")]
32234#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32235#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32236#[cfg_attr(
32237 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32238 assert_instr(mvn)
32239)]
32240#[cfg_attr(
32241 not(target_arch = "arm"),
32242 stable(feature = "neon_intrinsics", since = "1.59.0")
32243)]
32244#[cfg_attr(
32245 target_arch = "arm",
32246 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32247)]
32248pub fn vmvn_u32(a: uint32x2_t) -> uint32x2_t {
32249 let b = uint32x2_t::splat(4_294_967_295);
32250 unsafe { simd_xor(a, b) }
32251}
32252#[doc = "Vector bitwise not."]
32253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvn_u8)"]
32254#[inline(always)]
32255#[target_feature(enable = "neon")]
32256#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32257#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32258#[cfg_attr(
32259 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32260 assert_instr(mvn)
32261)]
32262#[cfg_attr(
32263 not(target_arch = "arm"),
32264 stable(feature = "neon_intrinsics", since = "1.59.0")
32265)]
32266#[cfg_attr(
32267 target_arch = "arm",
32268 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32269)]
32270pub fn vmvn_u8(a: uint8x8_t) -> uint8x8_t {
32271 let b = uint8x8_t::splat(255);
32272 unsafe { simd_xor(a, b) }
32273}
32274#[doc = "Vector bitwise not."]
32275#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_p8)"]
32276#[inline(always)]
32277#[target_feature(enable = "neon")]
32278#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32279#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32280#[cfg_attr(
32281 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32282 assert_instr(mvn)
32283)]
32284#[cfg_attr(
32285 not(target_arch = "arm"),
32286 stable(feature = "neon_intrinsics", since = "1.59.0")
32287)]
32288#[cfg_attr(
32289 target_arch = "arm",
32290 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32291)]
32292pub fn vmvnq_p8(a: poly8x16_t) -> poly8x16_t {
32293 let b = poly8x16_t::splat(255);
32294 unsafe { simd_xor(a, b) }
32295}
32296#[doc = "Vector bitwise not."]
32297#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s16)"]
32298#[inline(always)]
32299#[target_feature(enable = "neon")]
32300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32301#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32302#[cfg_attr(
32303 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32304 assert_instr(mvn)
32305)]
32306#[cfg_attr(
32307 not(target_arch = "arm"),
32308 stable(feature = "neon_intrinsics", since = "1.59.0")
32309)]
32310#[cfg_attr(
32311 target_arch = "arm",
32312 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32313)]
32314pub fn vmvnq_s16(a: int16x8_t) -> int16x8_t {
32315 let b = int16x8_t::splat(-1);
32316 unsafe { simd_xor(a, b) }
32317}
32318#[doc = "Vector bitwise not."]
32319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s32)"]
32320#[inline(always)]
32321#[target_feature(enable = "neon")]
32322#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32323#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32324#[cfg_attr(
32325 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32326 assert_instr(mvn)
32327)]
32328#[cfg_attr(
32329 not(target_arch = "arm"),
32330 stable(feature = "neon_intrinsics", since = "1.59.0")
32331)]
32332#[cfg_attr(
32333 target_arch = "arm",
32334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32335)]
32336pub fn vmvnq_s32(a: int32x4_t) -> int32x4_t {
32337 let b = int32x4_t::splat(-1);
32338 unsafe { simd_xor(a, b) }
32339}
32340#[doc = "Vector bitwise not."]
32341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_s8)"]
32342#[inline(always)]
32343#[target_feature(enable = "neon")]
32344#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32345#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32346#[cfg_attr(
32347 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32348 assert_instr(mvn)
32349)]
32350#[cfg_attr(
32351 not(target_arch = "arm"),
32352 stable(feature = "neon_intrinsics", since = "1.59.0")
32353)]
32354#[cfg_attr(
32355 target_arch = "arm",
32356 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32357)]
32358pub fn vmvnq_s8(a: int8x16_t) -> int8x16_t {
32359 let b = int8x16_t::splat(-1);
32360 unsafe { simd_xor(a, b) }
32361}
32362#[doc = "Vector bitwise not."]
32363#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u16)"]
32364#[inline(always)]
32365#[target_feature(enable = "neon")]
32366#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32367#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32368#[cfg_attr(
32369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32370 assert_instr(mvn)
32371)]
32372#[cfg_attr(
32373 not(target_arch = "arm"),
32374 stable(feature = "neon_intrinsics", since = "1.59.0")
32375)]
32376#[cfg_attr(
32377 target_arch = "arm",
32378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32379)]
32380pub fn vmvnq_u16(a: uint16x8_t) -> uint16x8_t {
32381 let b = uint16x8_t::splat(65_535);
32382 unsafe { simd_xor(a, b) }
32383}
32384#[doc = "Vector bitwise not."]
32385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u32)"]
32386#[inline(always)]
32387#[target_feature(enable = "neon")]
32388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32389#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32390#[cfg_attr(
32391 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32392 assert_instr(mvn)
32393)]
32394#[cfg_attr(
32395 not(target_arch = "arm"),
32396 stable(feature = "neon_intrinsics", since = "1.59.0")
32397)]
32398#[cfg_attr(
32399 target_arch = "arm",
32400 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32401)]
32402pub fn vmvnq_u32(a: uint32x4_t) -> uint32x4_t {
32403 let b = uint32x4_t::splat(4_294_967_295);
32404 unsafe { simd_xor(a, b) }
32405}
32406#[doc = "Vector bitwise not."]
32407#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmvnq_u8)"]
32408#[inline(always)]
32409#[target_feature(enable = "neon")]
32410#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32411#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vmvn))]
32412#[cfg_attr(
32413 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32414 assert_instr(mvn)
32415)]
32416#[cfg_attr(
32417 not(target_arch = "arm"),
32418 stable(feature = "neon_intrinsics", since = "1.59.0")
32419)]
32420#[cfg_attr(
32421 target_arch = "arm",
32422 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32423)]
32424pub fn vmvnq_u8(a: uint8x16_t) -> uint8x16_t {
32425 let b = uint8x16_t::splat(255);
32426 unsafe { simd_xor(a, b) }
32427}
32428#[doc = "Negate"]
32429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_f16)"]
32430#[inline(always)]
32431#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32432#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f16"))]
32433#[cfg_attr(
32434 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32435 assert_instr(fneg)
32436)]
32437#[target_feature(enable = "neon,fp16")]
32438#[cfg_attr(
32439 not(target_arch = "arm"),
32440 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
32441)]
32442#[cfg_attr(
32443 target_arch = "arm",
32444 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32445)]
32446#[cfg(not(target_arch = "arm64ec"))]
32447pub fn vneg_f16(a: float16x4_t) -> float16x4_t {
32448 unsafe { simd_neg(a) }
32449}
32450#[doc = "Negate"]
32451#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_f16)"]
32452#[inline(always)]
32453#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
32454#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f16"))]
32455#[cfg_attr(
32456 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32457 assert_instr(fneg)
32458)]
32459#[target_feature(enable = "neon,fp16")]
32460#[cfg_attr(
32461 not(target_arch = "arm"),
32462 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
32463)]
32464#[cfg_attr(
32465 target_arch = "arm",
32466 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32467)]
32468#[cfg(not(target_arch = "arm64ec"))]
32469pub fn vnegq_f16(a: float16x8_t) -> float16x8_t {
32470 unsafe { simd_neg(a) }
32471}
32472#[doc = "Negate"]
32473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_f32)"]
32474#[inline(always)]
32475#[target_feature(enable = "neon")]
32476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32477#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f32"))]
32478#[cfg_attr(
32479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32480 assert_instr(fneg)
32481)]
32482#[cfg_attr(
32483 not(target_arch = "arm"),
32484 stable(feature = "neon_intrinsics", since = "1.59.0")
32485)]
32486#[cfg_attr(
32487 target_arch = "arm",
32488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32489)]
32490pub fn vneg_f32(a: float32x2_t) -> float32x2_t {
32491 unsafe { simd_neg(a) }
32492}
32493#[doc = "Negate"]
32494#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_f32)"]
32495#[inline(always)]
32496#[target_feature(enable = "neon")]
32497#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32498#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.f32"))]
32499#[cfg_attr(
32500 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32501 assert_instr(fneg)
32502)]
32503#[cfg_attr(
32504 not(target_arch = "arm"),
32505 stable(feature = "neon_intrinsics", since = "1.59.0")
32506)]
32507#[cfg_attr(
32508 target_arch = "arm",
32509 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32510)]
32511pub fn vnegq_f32(a: float32x4_t) -> float32x4_t {
32512 unsafe { simd_neg(a) }
32513}
32514#[doc = "Negate"]
32515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s8)"]
32516#[inline(always)]
32517#[target_feature(enable = "neon")]
32518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32519#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s8"))]
32520#[cfg_attr(
32521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32522 assert_instr(neg)
32523)]
32524#[cfg_attr(
32525 not(target_arch = "arm"),
32526 stable(feature = "neon_intrinsics", since = "1.59.0")
32527)]
32528#[cfg_attr(
32529 target_arch = "arm",
32530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32531)]
32532pub fn vneg_s8(a: int8x8_t) -> int8x8_t {
32533 unsafe { simd_neg(a) }
32534}
32535#[doc = "Negate"]
32536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s8)"]
32537#[inline(always)]
32538#[target_feature(enable = "neon")]
32539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32540#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s8"))]
32541#[cfg_attr(
32542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32543 assert_instr(neg)
32544)]
32545#[cfg_attr(
32546 not(target_arch = "arm"),
32547 stable(feature = "neon_intrinsics", since = "1.59.0")
32548)]
32549#[cfg_attr(
32550 target_arch = "arm",
32551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32552)]
32553pub fn vnegq_s8(a: int8x16_t) -> int8x16_t {
32554 unsafe { simd_neg(a) }
32555}
32556#[doc = "Negate"]
32557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s16)"]
32558#[inline(always)]
32559#[target_feature(enable = "neon")]
32560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32561#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s16"))]
32562#[cfg_attr(
32563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32564 assert_instr(neg)
32565)]
32566#[cfg_attr(
32567 not(target_arch = "arm"),
32568 stable(feature = "neon_intrinsics", since = "1.59.0")
32569)]
32570#[cfg_attr(
32571 target_arch = "arm",
32572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32573)]
32574pub fn vneg_s16(a: int16x4_t) -> int16x4_t {
32575 unsafe { simd_neg(a) }
32576}
32577#[doc = "Negate"]
32578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s16)"]
32579#[inline(always)]
32580#[target_feature(enable = "neon")]
32581#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32582#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s16"))]
32583#[cfg_attr(
32584 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32585 assert_instr(neg)
32586)]
32587#[cfg_attr(
32588 not(target_arch = "arm"),
32589 stable(feature = "neon_intrinsics", since = "1.59.0")
32590)]
32591#[cfg_attr(
32592 target_arch = "arm",
32593 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32594)]
32595pub fn vnegq_s16(a: int16x8_t) -> int16x8_t {
32596 unsafe { simd_neg(a) }
32597}
32598#[doc = "Negate"]
32599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vneg_s32)"]
32600#[inline(always)]
32601#[target_feature(enable = "neon")]
32602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32603#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s32"))]
32604#[cfg_attr(
32605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32606 assert_instr(neg)
32607)]
32608#[cfg_attr(
32609 not(target_arch = "arm"),
32610 stable(feature = "neon_intrinsics", since = "1.59.0")
32611)]
32612#[cfg_attr(
32613 target_arch = "arm",
32614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32615)]
32616pub fn vneg_s32(a: int32x2_t) -> int32x2_t {
32617 unsafe { simd_neg(a) }
32618}
32619#[doc = "Negate"]
32620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vnegq_s32)"]
32621#[inline(always)]
32622#[target_feature(enable = "neon")]
32623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32624#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vneg.s32"))]
32625#[cfg_attr(
32626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32627 assert_instr(neg)
32628)]
32629#[cfg_attr(
32630 not(target_arch = "arm"),
32631 stable(feature = "neon_intrinsics", since = "1.59.0")
32632)]
32633#[cfg_attr(
32634 target_arch = "arm",
32635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32636)]
32637pub fn vnegq_s32(a: int32x4_t) -> int32x4_t {
32638 unsafe { simd_neg(a) }
32639}
32640#[doc = "Vector bitwise inclusive OR NOT"]
32641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s16)"]
32642#[inline(always)]
32643#[target_feature(enable = "neon")]
32644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32646#[cfg_attr(
32647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32648 assert_instr(orn)
32649)]
32650#[cfg_attr(
32651 not(target_arch = "arm"),
32652 stable(feature = "neon_intrinsics", since = "1.59.0")
32653)]
32654#[cfg_attr(
32655 target_arch = "arm",
32656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32657)]
32658pub fn vorn_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
32659 let c = int16x4_t::splat(-1);
32660 unsafe { simd_or(simd_xor(b, c), a) }
32661}
32662#[doc = "Vector bitwise inclusive OR NOT"]
32663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s32)"]
32664#[inline(always)]
32665#[target_feature(enable = "neon")]
32666#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32667#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32668#[cfg_attr(
32669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32670 assert_instr(orn)
32671)]
32672#[cfg_attr(
32673 not(target_arch = "arm"),
32674 stable(feature = "neon_intrinsics", since = "1.59.0")
32675)]
32676#[cfg_attr(
32677 target_arch = "arm",
32678 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32679)]
32680pub fn vorn_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
32681 let c = int32x2_t::splat(-1);
32682 unsafe { simd_or(simd_xor(b, c), a) }
32683}
32684#[doc = "Vector bitwise inclusive OR NOT"]
32685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s64)"]
32686#[inline(always)]
32687#[target_feature(enable = "neon")]
32688#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32689#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32690#[cfg_attr(
32691 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32692 assert_instr(orn)
32693)]
32694#[cfg_attr(
32695 not(target_arch = "arm"),
32696 stable(feature = "neon_intrinsics", since = "1.59.0")
32697)]
32698#[cfg_attr(
32699 target_arch = "arm",
32700 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32701)]
32702pub fn vorn_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
32703 let c = int64x1_t::splat(-1);
32704 unsafe { simd_or(simd_xor(b, c), a) }
32705}
32706#[doc = "Vector bitwise inclusive OR NOT"]
32707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_s8)"]
32708#[inline(always)]
32709#[target_feature(enable = "neon")]
32710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32711#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32712#[cfg_attr(
32713 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32714 assert_instr(orn)
32715)]
32716#[cfg_attr(
32717 not(target_arch = "arm"),
32718 stable(feature = "neon_intrinsics", since = "1.59.0")
32719)]
32720#[cfg_attr(
32721 target_arch = "arm",
32722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32723)]
32724pub fn vorn_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
32725 let c = int8x8_t::splat(-1);
32726 unsafe { simd_or(simd_xor(b, c), a) }
32727}
32728#[doc = "Vector bitwise inclusive OR NOT"]
32729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s16)"]
32730#[inline(always)]
32731#[target_feature(enable = "neon")]
32732#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32733#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32734#[cfg_attr(
32735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32736 assert_instr(orn)
32737)]
32738#[cfg_attr(
32739 not(target_arch = "arm"),
32740 stable(feature = "neon_intrinsics", since = "1.59.0")
32741)]
32742#[cfg_attr(
32743 target_arch = "arm",
32744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32745)]
32746pub fn vornq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
32747 let c = int16x8_t::splat(-1);
32748 unsafe { simd_or(simd_xor(b, c), a) }
32749}
32750#[doc = "Vector bitwise inclusive OR NOT"]
32751#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s32)"]
32752#[inline(always)]
32753#[target_feature(enable = "neon")]
32754#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32755#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32756#[cfg_attr(
32757 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32758 assert_instr(orn)
32759)]
32760#[cfg_attr(
32761 not(target_arch = "arm"),
32762 stable(feature = "neon_intrinsics", since = "1.59.0")
32763)]
32764#[cfg_attr(
32765 target_arch = "arm",
32766 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32767)]
32768pub fn vornq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
32769 let c = int32x4_t::splat(-1);
32770 unsafe { simd_or(simd_xor(b, c), a) }
32771}
32772#[doc = "Vector bitwise inclusive OR NOT"]
32773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s64)"]
32774#[inline(always)]
32775#[target_feature(enable = "neon")]
32776#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32777#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32778#[cfg_attr(
32779 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32780 assert_instr(orn)
32781)]
32782#[cfg_attr(
32783 not(target_arch = "arm"),
32784 stable(feature = "neon_intrinsics", since = "1.59.0")
32785)]
32786#[cfg_attr(
32787 target_arch = "arm",
32788 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32789)]
32790pub fn vornq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
32791 let c = int64x2_t::splat(-1);
32792 unsafe { simd_or(simd_xor(b, c), a) }
32793}
32794#[doc = "Vector bitwise inclusive OR NOT"]
32795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_s8)"]
32796#[inline(always)]
32797#[target_feature(enable = "neon")]
32798#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32799#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32800#[cfg_attr(
32801 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32802 assert_instr(orn)
32803)]
32804#[cfg_attr(
32805 not(target_arch = "arm"),
32806 stable(feature = "neon_intrinsics", since = "1.59.0")
32807)]
32808#[cfg_attr(
32809 target_arch = "arm",
32810 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32811)]
32812pub fn vornq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
32813 let c = int8x16_t::splat(-1);
32814 unsafe { simd_or(simd_xor(b, c), a) }
32815}
32816#[doc = "Vector bitwise inclusive OR NOT"]
32817#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u16)"]
32818#[inline(always)]
32819#[target_feature(enable = "neon")]
32820#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32821#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32822#[cfg_attr(
32823 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32824 assert_instr(orn)
32825)]
32826#[cfg_attr(
32827 not(target_arch = "arm"),
32828 stable(feature = "neon_intrinsics", since = "1.59.0")
32829)]
32830#[cfg_attr(
32831 target_arch = "arm",
32832 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32833)]
32834pub fn vorn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
32835 let c = int16x4_t::splat(-1);
32836 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32837}
32838#[doc = "Vector bitwise inclusive OR NOT"]
32839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u32)"]
32840#[inline(always)]
32841#[target_feature(enable = "neon")]
32842#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32843#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32844#[cfg_attr(
32845 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32846 assert_instr(orn)
32847)]
32848#[cfg_attr(
32849 not(target_arch = "arm"),
32850 stable(feature = "neon_intrinsics", since = "1.59.0")
32851)]
32852#[cfg_attr(
32853 target_arch = "arm",
32854 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32855)]
32856pub fn vorn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
32857 let c = int32x2_t::splat(-1);
32858 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32859}
32860#[doc = "Vector bitwise inclusive OR NOT"]
32861#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u64)"]
32862#[inline(always)]
32863#[target_feature(enable = "neon")]
32864#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32865#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32866#[cfg_attr(
32867 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32868 assert_instr(orn)
32869)]
32870#[cfg_attr(
32871 not(target_arch = "arm"),
32872 stable(feature = "neon_intrinsics", since = "1.59.0")
32873)]
32874#[cfg_attr(
32875 target_arch = "arm",
32876 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32877)]
32878pub fn vorn_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
32879 let c = int64x1_t::splat(-1);
32880 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32881}
32882#[doc = "Vector bitwise inclusive OR NOT"]
32883#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorn_u8)"]
32884#[inline(always)]
32885#[target_feature(enable = "neon")]
32886#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32887#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32888#[cfg_attr(
32889 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32890 assert_instr(orn)
32891)]
32892#[cfg_attr(
32893 not(target_arch = "arm"),
32894 stable(feature = "neon_intrinsics", since = "1.59.0")
32895)]
32896#[cfg_attr(
32897 target_arch = "arm",
32898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32899)]
32900pub fn vorn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
32901 let c = int8x8_t::splat(-1);
32902 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32903}
32904#[doc = "Vector bitwise inclusive OR NOT"]
32905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u16)"]
32906#[inline(always)]
32907#[target_feature(enable = "neon")]
32908#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32909#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32910#[cfg_attr(
32911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32912 assert_instr(orn)
32913)]
32914#[cfg_attr(
32915 not(target_arch = "arm"),
32916 stable(feature = "neon_intrinsics", since = "1.59.0")
32917)]
32918#[cfg_attr(
32919 target_arch = "arm",
32920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32921)]
32922pub fn vornq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
32923 let c = int16x8_t::splat(-1);
32924 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32925}
32926#[doc = "Vector bitwise inclusive OR NOT"]
32927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u32)"]
32928#[inline(always)]
32929#[target_feature(enable = "neon")]
32930#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32931#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32932#[cfg_attr(
32933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32934 assert_instr(orn)
32935)]
32936#[cfg_attr(
32937 not(target_arch = "arm"),
32938 stable(feature = "neon_intrinsics", since = "1.59.0")
32939)]
32940#[cfg_attr(
32941 target_arch = "arm",
32942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32943)]
32944pub fn vornq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
32945 let c = int32x4_t::splat(-1);
32946 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32947}
32948#[doc = "Vector bitwise inclusive OR NOT"]
32949#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u64)"]
32950#[inline(always)]
32951#[target_feature(enable = "neon")]
32952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32954#[cfg_attr(
32955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32956 assert_instr(orn)
32957)]
32958#[cfg_attr(
32959 not(target_arch = "arm"),
32960 stable(feature = "neon_intrinsics", since = "1.59.0")
32961)]
32962#[cfg_attr(
32963 target_arch = "arm",
32964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32965)]
32966pub fn vornq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
32967 let c = int64x2_t::splat(-1);
32968 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32969}
32970#[doc = "Vector bitwise inclusive OR NOT"]
32971#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vornq_u8)"]
32972#[inline(always)]
32973#[target_feature(enable = "neon")]
32974#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32975#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorn))]
32976#[cfg_attr(
32977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
32978 assert_instr(orn)
32979)]
32980#[cfg_attr(
32981 not(target_arch = "arm"),
32982 stable(feature = "neon_intrinsics", since = "1.59.0")
32983)]
32984#[cfg_attr(
32985 target_arch = "arm",
32986 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
32987)]
32988pub fn vornq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
32989 let c = int8x16_t::splat(-1);
32990 unsafe { simd_or(simd_xor(b, transmute(c)), a) }
32991}
32992#[doc = "Vector bitwise or (immediate, inclusive)"]
32993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s8)"]
32994#[inline(always)]
32995#[target_feature(enable = "neon")]
32996#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
32997#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
32998#[cfg_attr(
32999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33000 assert_instr(orr)
33001)]
33002#[cfg_attr(
33003 not(target_arch = "arm"),
33004 stable(feature = "neon_intrinsics", since = "1.59.0")
33005)]
33006#[cfg_attr(
33007 target_arch = "arm",
33008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33009)]
33010pub fn vorr_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
33011 unsafe { simd_or(a, b) }
33012}
33013#[doc = "Vector bitwise or (immediate, inclusive)"]
33014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s8)"]
33015#[inline(always)]
33016#[target_feature(enable = "neon")]
33017#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33018#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33019#[cfg_attr(
33020 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33021 assert_instr(orr)
33022)]
33023#[cfg_attr(
33024 not(target_arch = "arm"),
33025 stable(feature = "neon_intrinsics", since = "1.59.0")
33026)]
33027#[cfg_attr(
33028 target_arch = "arm",
33029 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33030)]
33031pub fn vorrq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
33032 unsafe { simd_or(a, b) }
33033}
33034#[doc = "Vector bitwise or (immediate, inclusive)"]
33035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s16)"]
33036#[inline(always)]
33037#[target_feature(enable = "neon")]
33038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33039#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33040#[cfg_attr(
33041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33042 assert_instr(orr)
33043)]
33044#[cfg_attr(
33045 not(target_arch = "arm"),
33046 stable(feature = "neon_intrinsics", since = "1.59.0")
33047)]
33048#[cfg_attr(
33049 target_arch = "arm",
33050 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33051)]
33052pub fn vorr_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
33053 unsafe { simd_or(a, b) }
33054}
33055#[doc = "Vector bitwise or (immediate, inclusive)"]
33056#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s16)"]
33057#[inline(always)]
33058#[target_feature(enable = "neon")]
33059#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33060#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33061#[cfg_attr(
33062 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33063 assert_instr(orr)
33064)]
33065#[cfg_attr(
33066 not(target_arch = "arm"),
33067 stable(feature = "neon_intrinsics", since = "1.59.0")
33068)]
33069#[cfg_attr(
33070 target_arch = "arm",
33071 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33072)]
33073pub fn vorrq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
33074 unsafe { simd_or(a, b) }
33075}
33076#[doc = "Vector bitwise or (immediate, inclusive)"]
33077#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s32)"]
33078#[inline(always)]
33079#[target_feature(enable = "neon")]
33080#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33081#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33082#[cfg_attr(
33083 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33084 assert_instr(orr)
33085)]
33086#[cfg_attr(
33087 not(target_arch = "arm"),
33088 stable(feature = "neon_intrinsics", since = "1.59.0")
33089)]
33090#[cfg_attr(
33091 target_arch = "arm",
33092 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33093)]
33094pub fn vorr_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
33095 unsafe { simd_or(a, b) }
33096}
33097#[doc = "Vector bitwise or (immediate, inclusive)"]
33098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s32)"]
33099#[inline(always)]
33100#[target_feature(enable = "neon")]
33101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33103#[cfg_attr(
33104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33105 assert_instr(orr)
33106)]
33107#[cfg_attr(
33108 not(target_arch = "arm"),
33109 stable(feature = "neon_intrinsics", since = "1.59.0")
33110)]
33111#[cfg_attr(
33112 target_arch = "arm",
33113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33114)]
33115pub fn vorrq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
33116 unsafe { simd_or(a, b) }
33117}
33118#[doc = "Vector bitwise or (immediate, inclusive)"]
33119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_s64)"]
33120#[inline(always)]
33121#[target_feature(enable = "neon")]
33122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33123#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33124#[cfg_attr(
33125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33126 assert_instr(orr)
33127)]
33128#[cfg_attr(
33129 not(target_arch = "arm"),
33130 stable(feature = "neon_intrinsics", since = "1.59.0")
33131)]
33132#[cfg_attr(
33133 target_arch = "arm",
33134 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33135)]
33136pub fn vorr_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
33137 unsafe { simd_or(a, b) }
33138}
33139#[doc = "Vector bitwise or (immediate, inclusive)"]
33140#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_s64)"]
33141#[inline(always)]
33142#[target_feature(enable = "neon")]
33143#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33144#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33145#[cfg_attr(
33146 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33147 assert_instr(orr)
33148)]
33149#[cfg_attr(
33150 not(target_arch = "arm"),
33151 stable(feature = "neon_intrinsics", since = "1.59.0")
33152)]
33153#[cfg_attr(
33154 target_arch = "arm",
33155 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33156)]
33157pub fn vorrq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
33158 unsafe { simd_or(a, b) }
33159}
33160#[doc = "Vector bitwise or (immediate, inclusive)"]
33161#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u8)"]
33162#[inline(always)]
33163#[target_feature(enable = "neon")]
33164#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33165#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33166#[cfg_attr(
33167 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33168 assert_instr(orr)
33169)]
33170#[cfg_attr(
33171 not(target_arch = "arm"),
33172 stable(feature = "neon_intrinsics", since = "1.59.0")
33173)]
33174#[cfg_attr(
33175 target_arch = "arm",
33176 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33177)]
33178pub fn vorr_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
33179 unsafe { simd_or(a, b) }
33180}
33181#[doc = "Vector bitwise or (immediate, inclusive)"]
33182#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u8)"]
33183#[inline(always)]
33184#[target_feature(enable = "neon")]
33185#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33186#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33187#[cfg_attr(
33188 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33189 assert_instr(orr)
33190)]
33191#[cfg_attr(
33192 not(target_arch = "arm"),
33193 stable(feature = "neon_intrinsics", since = "1.59.0")
33194)]
33195#[cfg_attr(
33196 target_arch = "arm",
33197 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33198)]
33199pub fn vorrq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
33200 unsafe { simd_or(a, b) }
33201}
33202#[doc = "Vector bitwise or (immediate, inclusive)"]
33203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u16)"]
33204#[inline(always)]
33205#[target_feature(enable = "neon")]
33206#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33207#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33208#[cfg_attr(
33209 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33210 assert_instr(orr)
33211)]
33212#[cfg_attr(
33213 not(target_arch = "arm"),
33214 stable(feature = "neon_intrinsics", since = "1.59.0")
33215)]
33216#[cfg_attr(
33217 target_arch = "arm",
33218 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33219)]
33220pub fn vorr_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
33221 unsafe { simd_or(a, b) }
33222}
33223#[doc = "Vector bitwise or (immediate, inclusive)"]
33224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u16)"]
33225#[inline(always)]
33226#[target_feature(enable = "neon")]
33227#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33228#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33229#[cfg_attr(
33230 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33231 assert_instr(orr)
33232)]
33233#[cfg_attr(
33234 not(target_arch = "arm"),
33235 stable(feature = "neon_intrinsics", since = "1.59.0")
33236)]
33237#[cfg_attr(
33238 target_arch = "arm",
33239 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33240)]
33241pub fn vorrq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
33242 unsafe { simd_or(a, b) }
33243}
33244#[doc = "Vector bitwise or (immediate, inclusive)"]
33245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u32)"]
33246#[inline(always)]
33247#[target_feature(enable = "neon")]
33248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33250#[cfg_attr(
33251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33252 assert_instr(orr)
33253)]
33254#[cfg_attr(
33255 not(target_arch = "arm"),
33256 stable(feature = "neon_intrinsics", since = "1.59.0")
33257)]
33258#[cfg_attr(
33259 target_arch = "arm",
33260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33261)]
33262pub fn vorr_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
33263 unsafe { simd_or(a, b) }
33264}
33265#[doc = "Vector bitwise or (immediate, inclusive)"]
33266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u32)"]
33267#[inline(always)]
33268#[target_feature(enable = "neon")]
33269#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33270#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33271#[cfg_attr(
33272 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33273 assert_instr(orr)
33274)]
33275#[cfg_attr(
33276 not(target_arch = "arm"),
33277 stable(feature = "neon_intrinsics", since = "1.59.0")
33278)]
33279#[cfg_attr(
33280 target_arch = "arm",
33281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33282)]
33283pub fn vorrq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
33284 unsafe { simd_or(a, b) }
33285}
33286#[doc = "Vector bitwise or (immediate, inclusive)"]
33287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorr_u64)"]
33288#[inline(always)]
33289#[target_feature(enable = "neon")]
33290#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33291#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33292#[cfg_attr(
33293 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33294 assert_instr(orr)
33295)]
33296#[cfg_attr(
33297 not(target_arch = "arm"),
33298 stable(feature = "neon_intrinsics", since = "1.59.0")
33299)]
33300#[cfg_attr(
33301 target_arch = "arm",
33302 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33303)]
33304pub fn vorr_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
33305 unsafe { simd_or(a, b) }
33306}
33307#[doc = "Vector bitwise or (immediate, inclusive)"]
33308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vorrq_u64)"]
33309#[inline(always)]
33310#[target_feature(enable = "neon")]
33311#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33312#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
33313#[cfg_attr(
33314 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33315 assert_instr(orr)
33316)]
33317#[cfg_attr(
33318 not(target_arch = "arm"),
33319 stable(feature = "neon_intrinsics", since = "1.59.0")
33320)]
33321#[cfg_attr(
33322 target_arch = "arm",
33323 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33324)]
33325pub fn vorrq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
33326 unsafe { simd_or(a, b) }
33327}
33328#[doc = "Signed Add and Accumulate Long Pairwise."]
33329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s8)"]
33330#[inline(always)]
33331#[target_feature(enable = "neon")]
33332#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33333#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s8"))]
33334#[cfg_attr(
33335 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33336 assert_instr(sadalp)
33337)]
33338#[cfg_attr(
33339 not(target_arch = "arm"),
33340 stable(feature = "neon_intrinsics", since = "1.59.0")
33341)]
33342#[cfg_attr(
33343 target_arch = "arm",
33344 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33345)]
33346pub fn vpadal_s8(a: int16x4_t, b: int8x8_t) -> int16x4_t {
33347 let x: int16x4_t;
33348 #[cfg(target_arch = "arm")]
33349 {
33350 x = priv_vpadal_s8(a, b);
33351 }
33352 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33353 unsafe {
33354 x = simd_add(vpaddl_s8(b), a);
33355 };
33356 x
33357}
33358#[doc = "Signed Add and Accumulate Long Pairwise."]
33359#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s8)"]
33360#[inline(always)]
33361#[target_feature(enable = "neon")]
33362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33363#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s8"))]
33364#[cfg_attr(
33365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33366 assert_instr(sadalp)
33367)]
33368#[cfg_attr(
33369 not(target_arch = "arm"),
33370 stable(feature = "neon_intrinsics", since = "1.59.0")
33371)]
33372#[cfg_attr(
33373 target_arch = "arm",
33374 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33375)]
33376pub fn vpadalq_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
33377 let x: int16x8_t;
33378 #[cfg(target_arch = "arm")]
33379 {
33380 x = priv_vpadalq_s8(a, b);
33381 }
33382 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33383 unsafe {
33384 x = simd_add(vpaddlq_s8(b), a);
33385 };
33386 x
33387}
33388#[doc = "Signed Add and Accumulate Long Pairwise."]
33389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s16)"]
33390#[inline(always)]
33391#[target_feature(enable = "neon")]
33392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33393#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s16"))]
33394#[cfg_attr(
33395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33396 assert_instr(sadalp)
33397)]
33398#[cfg_attr(
33399 not(target_arch = "arm"),
33400 stable(feature = "neon_intrinsics", since = "1.59.0")
33401)]
33402#[cfg_attr(
33403 target_arch = "arm",
33404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33405)]
33406pub fn vpadal_s16(a: int32x2_t, b: int16x4_t) -> int32x2_t {
33407 let x: int32x2_t;
33408 #[cfg(target_arch = "arm")]
33409 {
33410 x = priv_vpadal_s16(a, b);
33411 }
33412 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33413 unsafe {
33414 x = simd_add(vpaddl_s16(b), a);
33415 };
33416 x
33417}
33418#[doc = "Signed Add and Accumulate Long Pairwise."]
33419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s16)"]
33420#[inline(always)]
33421#[target_feature(enable = "neon")]
33422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33423#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s16"))]
33424#[cfg_attr(
33425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33426 assert_instr(sadalp)
33427)]
33428#[cfg_attr(
33429 not(target_arch = "arm"),
33430 stable(feature = "neon_intrinsics", since = "1.59.0")
33431)]
33432#[cfg_attr(
33433 target_arch = "arm",
33434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33435)]
33436pub fn vpadalq_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
33437 let x: int32x4_t;
33438 #[cfg(target_arch = "arm")]
33439 {
33440 x = priv_vpadalq_s16(a, b);
33441 }
33442 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33443 unsafe {
33444 x = simd_add(vpaddlq_s16(b), a);
33445 };
33446 x
33447}
33448#[doc = "Signed Add and Accumulate Long Pairwise."]
33449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_s32)"]
33450#[inline(always)]
33451#[target_feature(enable = "neon")]
33452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33453#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s32"))]
33454#[cfg_attr(
33455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33456 assert_instr(sadalp)
33457)]
33458#[cfg_attr(
33459 not(target_arch = "arm"),
33460 stable(feature = "neon_intrinsics", since = "1.59.0")
33461)]
33462#[cfg_attr(
33463 target_arch = "arm",
33464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33465)]
33466pub fn vpadal_s32(a: int64x1_t, b: int32x2_t) -> int64x1_t {
33467 let x: int64x1_t;
33468 #[cfg(target_arch = "arm")]
33469 {
33470 x = priv_vpadal_s32(a, b);
33471 }
33472 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33473 unsafe {
33474 x = simd_add(vpaddl_s32(b), a);
33475 };
33476 x
33477}
33478#[doc = "Signed Add and Accumulate Long Pairwise."]
33479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_s32)"]
33480#[inline(always)]
33481#[target_feature(enable = "neon")]
33482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33483#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.s32"))]
33484#[cfg_attr(
33485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33486 assert_instr(sadalp)
33487)]
33488#[cfg_attr(
33489 not(target_arch = "arm"),
33490 stable(feature = "neon_intrinsics", since = "1.59.0")
33491)]
33492#[cfg_attr(
33493 target_arch = "arm",
33494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33495)]
33496pub fn vpadalq_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
33497 let x: int64x2_t;
33498 #[cfg(target_arch = "arm")]
33499 {
33500 x = priv_vpadalq_s32(a, b);
33501 }
33502 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33503 unsafe {
33504 x = simd_add(vpaddlq_s32(b), a);
33505 };
33506 x
33507}
33508#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u8)"]
33510#[inline(always)]
33511#[target_feature(enable = "neon")]
33512#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33513#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u8"))]
33514#[cfg_attr(
33515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33516 assert_instr(uadalp)
33517)]
33518#[cfg_attr(
33519 not(target_arch = "arm"),
33520 stable(feature = "neon_intrinsics", since = "1.59.0")
33521)]
33522#[cfg_attr(
33523 target_arch = "arm",
33524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33525)]
33526pub fn vpadal_u8(a: uint16x4_t, b: uint8x8_t) -> uint16x4_t {
33527 let x: uint16x4_t;
33528 #[cfg(target_arch = "arm")]
33529 {
33530 x = priv_vpadal_u8(a, b);
33531 }
33532 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33533 unsafe {
33534 x = simd_add(vpaddl_u8(b), a);
33535 };
33536 x
33537}
33538#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u8)"]
33540#[inline(always)]
33541#[target_feature(enable = "neon")]
33542#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33543#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u8"))]
33544#[cfg_attr(
33545 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33546 assert_instr(uadalp)
33547)]
33548#[cfg_attr(
33549 not(target_arch = "arm"),
33550 stable(feature = "neon_intrinsics", since = "1.59.0")
33551)]
33552#[cfg_attr(
33553 target_arch = "arm",
33554 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33555)]
33556pub fn vpadalq_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
33557 let x: uint16x8_t;
33558 #[cfg(target_arch = "arm")]
33559 {
33560 x = priv_vpadalq_u8(a, b);
33561 }
33562 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33563 unsafe {
33564 x = simd_add(vpaddlq_u8(b), a);
33565 };
33566 x
33567}
33568#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u16)"]
33570#[inline(always)]
33571#[target_feature(enable = "neon")]
33572#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33573#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u16"))]
33574#[cfg_attr(
33575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33576 assert_instr(uadalp)
33577)]
33578#[cfg_attr(
33579 not(target_arch = "arm"),
33580 stable(feature = "neon_intrinsics", since = "1.59.0")
33581)]
33582#[cfg_attr(
33583 target_arch = "arm",
33584 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33585)]
33586pub fn vpadal_u16(a: uint32x2_t, b: uint16x4_t) -> uint32x2_t {
33587 let x: uint32x2_t;
33588 #[cfg(target_arch = "arm")]
33589 {
33590 x = priv_vpadal_u16(a, b);
33591 }
33592 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33593 unsafe {
33594 x = simd_add(vpaddl_u16(b), a);
33595 };
33596 x
33597}
33598#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u16)"]
33600#[inline(always)]
33601#[target_feature(enable = "neon")]
33602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33603#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u16"))]
33604#[cfg_attr(
33605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33606 assert_instr(uadalp)
33607)]
33608#[cfg_attr(
33609 not(target_arch = "arm"),
33610 stable(feature = "neon_intrinsics", since = "1.59.0")
33611)]
33612#[cfg_attr(
33613 target_arch = "arm",
33614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33615)]
33616pub fn vpadalq_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
33617 let x: uint32x4_t;
33618 #[cfg(target_arch = "arm")]
33619 {
33620 x = priv_vpadalq_u16(a, b);
33621 }
33622 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33623 unsafe {
33624 x = simd_add(vpaddlq_u16(b), a);
33625 };
33626 x
33627}
33628#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadal_u32)"]
33630#[inline(always)]
33631#[target_feature(enable = "neon")]
33632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33633#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u32"))]
33634#[cfg_attr(
33635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33636 assert_instr(uadalp)
33637)]
33638#[cfg_attr(
33639 not(target_arch = "arm"),
33640 stable(feature = "neon_intrinsics", since = "1.59.0")
33641)]
33642#[cfg_attr(
33643 target_arch = "arm",
33644 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33645)]
33646pub fn vpadal_u32(a: uint64x1_t, b: uint32x2_t) -> uint64x1_t {
33647 let x: uint64x1_t;
33648 #[cfg(target_arch = "arm")]
33649 {
33650 x = priv_vpadal_u32(a, b);
33651 }
33652 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33653 unsafe {
33654 x = simd_add(vpaddl_u32(b), a);
33655 };
33656 x
33657}
33658#[doc = "Unsigned Add and Accumulate Long Pairwise."]
33659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadalq_u32)"]
33660#[inline(always)]
33661#[target_feature(enable = "neon")]
33662#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33663#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpadal.u32"))]
33664#[cfg_attr(
33665 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33666 assert_instr(uadalp)
33667)]
33668#[cfg_attr(
33669 not(target_arch = "arm"),
33670 stable(feature = "neon_intrinsics", since = "1.59.0")
33671)]
33672#[cfg_attr(
33673 target_arch = "arm",
33674 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33675)]
33676pub fn vpadalq_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
33677 let x: uint64x2_t;
33678 #[cfg(target_arch = "arm")]
33679 {
33680 x = priv_vpadalq_u32(a, b);
33681 }
33682 #[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
33683 unsafe {
33684 x = simd_add(vpaddlq_u32(b), a);
33685 };
33686 x
33687}
33688#[doc = "Floating-point add pairwise"]
33689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_f16)"]
33690#[inline(always)]
33691#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
33692#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33693#[cfg_attr(
33694 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33695 assert_instr(faddp)
33696)]
33697#[target_feature(enable = "neon,fp16")]
33698#[cfg_attr(
33699 not(target_arch = "arm"),
33700 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
33701)]
33702#[cfg_attr(
33703 target_arch = "arm",
33704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33705)]
33706#[cfg(not(target_arch = "arm64ec"))]
33707pub fn vpadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
33708 unsafe extern "unadjusted" {
33709 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v4f16")]
33710 #[cfg_attr(
33711 any(target_arch = "aarch64", target_arch = "arm64ec"),
33712 link_name = "llvm.aarch64.neon.faddp.v4f16"
33713 )]
33714 fn _vpadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
33715 }
33716 unsafe { _vpadd_f16(a, b) }
33717}
33718#[doc = "Floating-point add pairwise"]
33719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_f32)"]
33720#[inline(always)]
33721#[target_feature(enable = "neon")]
33722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33724#[cfg_attr(
33725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33726 assert_instr(faddp)
33727)]
33728#[cfg_attr(
33729 not(target_arch = "arm"),
33730 stable(feature = "neon_intrinsics", since = "1.59.0")
33731)]
33732#[cfg_attr(
33733 target_arch = "arm",
33734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33735)]
33736pub fn vpadd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
33737 unsafe extern "unadjusted" {
33738 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v2f32")]
33739 #[cfg_attr(
33740 any(target_arch = "aarch64", target_arch = "arm64ec"),
33741 link_name = "llvm.aarch64.neon.faddp.v2f32"
33742 )]
33743 fn _vpadd_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
33744 }
33745 unsafe { _vpadd_f32(a, b) }
33746}
33747#[doc = "Add pairwise."]
33748#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s8)"]
33749#[inline(always)]
33750#[target_feature(enable = "neon")]
33751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33753#[cfg_attr(
33754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33755 assert_instr(addp)
33756)]
33757#[cfg_attr(
33758 not(target_arch = "arm"),
33759 stable(feature = "neon_intrinsics", since = "1.59.0")
33760)]
33761#[cfg_attr(
33762 target_arch = "arm",
33763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33764)]
33765pub fn vpadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
33766 unsafe extern "unadjusted" {
33767 #[cfg_attr(
33768 any(target_arch = "aarch64", target_arch = "arm64ec"),
33769 link_name = "llvm.aarch64.neon.addp.v8i8"
33770 )]
33771 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v8i8")]
33772 fn _vpadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
33773 }
33774 unsafe { _vpadd_s8(a, b) }
33775}
33776#[doc = "Add pairwise."]
33777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s16)"]
33778#[inline(always)]
33779#[target_feature(enable = "neon")]
33780#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33781#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33782#[cfg_attr(
33783 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33784 assert_instr(addp)
33785)]
33786#[cfg_attr(
33787 not(target_arch = "arm"),
33788 stable(feature = "neon_intrinsics", since = "1.59.0")
33789)]
33790#[cfg_attr(
33791 target_arch = "arm",
33792 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33793)]
33794pub fn vpadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
33795 unsafe extern "unadjusted" {
33796 #[cfg_attr(
33797 any(target_arch = "aarch64", target_arch = "arm64ec"),
33798 link_name = "llvm.aarch64.neon.addp.v4i16"
33799 )]
33800 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v4i16")]
33801 fn _vpadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
33802 }
33803 unsafe { _vpadd_s16(a, b) }
33804}
33805#[doc = "Add pairwise."]
33806#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_s32)"]
33807#[inline(always)]
33808#[target_feature(enable = "neon")]
33809#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33810#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33811#[cfg_attr(
33812 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33813 assert_instr(addp)
33814)]
33815#[cfg_attr(
33816 not(target_arch = "arm"),
33817 stable(feature = "neon_intrinsics", since = "1.59.0")
33818)]
33819#[cfg_attr(
33820 target_arch = "arm",
33821 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33822)]
33823pub fn vpadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
33824 unsafe extern "unadjusted" {
33825 #[cfg_attr(
33826 any(target_arch = "aarch64", target_arch = "arm64ec"),
33827 link_name = "llvm.aarch64.neon.addp.v2i32"
33828 )]
33829 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpadd.v2i32")]
33830 fn _vpadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
33831 }
33832 unsafe { _vpadd_s32(a, b) }
33833}
33834#[doc = "Add pairwise."]
33835#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u8)"]
33836#[inline(always)]
33837#[cfg(target_endian = "little")]
33838#[target_feature(enable = "neon")]
33839#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33840#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33841#[cfg_attr(
33842 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33843 assert_instr(addp)
33844)]
33845#[cfg_attr(
33846 not(target_arch = "arm"),
33847 stable(feature = "neon_intrinsics", since = "1.59.0")
33848)]
33849#[cfg_attr(
33850 target_arch = "arm",
33851 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33852)]
33853pub fn vpadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
33854 unsafe { transmute(vpadd_s8(transmute(a), transmute(b))) }
33855}
33856#[doc = "Add pairwise."]
33857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u8)"]
33858#[inline(always)]
33859#[cfg(target_endian = "big")]
33860#[target_feature(enable = "neon")]
33861#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33862#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33863#[cfg_attr(
33864 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33865 assert_instr(addp)
33866)]
33867#[cfg_attr(
33868 not(target_arch = "arm"),
33869 stable(feature = "neon_intrinsics", since = "1.59.0")
33870)]
33871#[cfg_attr(
33872 target_arch = "arm",
33873 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33874)]
33875pub fn vpadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
33876 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
33877 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
33878 unsafe {
33879 let ret_val: uint8x8_t = transmute(vpadd_s8(transmute(a), transmute(b)));
33880 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
33881 }
33882}
33883#[doc = "Add pairwise."]
33884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u16)"]
33885#[inline(always)]
33886#[cfg(target_endian = "little")]
33887#[target_feature(enable = "neon")]
33888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33890#[cfg_attr(
33891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33892 assert_instr(addp)
33893)]
33894#[cfg_attr(
33895 not(target_arch = "arm"),
33896 stable(feature = "neon_intrinsics", since = "1.59.0")
33897)]
33898#[cfg_attr(
33899 target_arch = "arm",
33900 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33901)]
33902pub fn vpadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
33903 unsafe { transmute(vpadd_s16(transmute(a), transmute(b))) }
33904}
33905#[doc = "Add pairwise."]
33906#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u16)"]
33907#[inline(always)]
33908#[cfg(target_endian = "big")]
33909#[target_feature(enable = "neon")]
33910#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33911#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33912#[cfg_attr(
33913 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33914 assert_instr(addp)
33915)]
33916#[cfg_attr(
33917 not(target_arch = "arm"),
33918 stable(feature = "neon_intrinsics", since = "1.59.0")
33919)]
33920#[cfg_attr(
33921 target_arch = "arm",
33922 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33923)]
33924pub fn vpadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
33925 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
33926 let b: uint16x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
33927 unsafe {
33928 let ret_val: uint16x4_t = transmute(vpadd_s16(transmute(a), transmute(b)));
33929 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
33930 }
33931}
33932#[doc = "Add pairwise."]
33933#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u32)"]
33934#[inline(always)]
33935#[cfg(target_endian = "little")]
33936#[target_feature(enable = "neon")]
33937#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33938#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33939#[cfg_attr(
33940 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33941 assert_instr(addp)
33942)]
33943#[cfg_attr(
33944 not(target_arch = "arm"),
33945 stable(feature = "neon_intrinsics", since = "1.59.0")
33946)]
33947#[cfg_attr(
33948 target_arch = "arm",
33949 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33950)]
33951pub fn vpadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
33952 unsafe { transmute(vpadd_s32(transmute(a), transmute(b))) }
33953}
33954#[doc = "Add pairwise."]
33955#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpadd_u32)"]
33956#[inline(always)]
33957#[cfg(target_endian = "big")]
33958#[target_feature(enable = "neon")]
33959#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33960#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpadd))]
33961#[cfg_attr(
33962 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33963 assert_instr(addp)
33964)]
33965#[cfg_attr(
33966 not(target_arch = "arm"),
33967 stable(feature = "neon_intrinsics", since = "1.59.0")
33968)]
33969#[cfg_attr(
33970 target_arch = "arm",
33971 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33972)]
33973pub fn vpadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
33974 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
33975 let b: uint32x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
33976 unsafe {
33977 let ret_val: uint32x2_t = transmute(vpadd_s32(transmute(a), transmute(b)));
33978 simd_shuffle!(ret_val, ret_val, [1, 0])
33979 }
33980}
33981#[doc = "Signed Add and Accumulate Long Pairwise."]
33982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s8)"]
33983#[inline(always)]
33984#[target_feature(enable = "neon")]
33985#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
33986#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s8"))]
33987#[cfg_attr(
33988 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
33989 assert_instr(saddlp)
33990)]
33991#[cfg_attr(
33992 not(target_arch = "arm"),
33993 stable(feature = "neon_intrinsics", since = "1.59.0")
33994)]
33995#[cfg_attr(
33996 target_arch = "arm",
33997 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
33998)]
33999pub fn vpaddl_s8(a: int8x8_t) -> int16x4_t {
34000 unsafe extern "unadjusted" {
34001 #[cfg_attr(
34002 any(target_arch = "aarch64", target_arch = "arm64ec"),
34003 link_name = "llvm.aarch64.neon.saddlp.v4i16.v8i8"
34004 )]
34005 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v4i16.v8i8")]
34006 fn _vpaddl_s8(a: int8x8_t) -> int16x4_t;
34007 }
34008 unsafe { _vpaddl_s8(a) }
34009}
34010#[doc = "Signed Add and Accumulate Long Pairwise."]
34011#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s8)"]
34012#[inline(always)]
34013#[target_feature(enable = "neon")]
34014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34015#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s8"))]
34016#[cfg_attr(
34017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34018 assert_instr(saddlp)
34019)]
34020#[cfg_attr(
34021 not(target_arch = "arm"),
34022 stable(feature = "neon_intrinsics", since = "1.59.0")
34023)]
34024#[cfg_attr(
34025 target_arch = "arm",
34026 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34027)]
34028pub fn vpaddlq_s8(a: int8x16_t) -> int16x8_t {
34029 unsafe extern "unadjusted" {
34030 #[cfg_attr(
34031 any(target_arch = "aarch64", target_arch = "arm64ec"),
34032 link_name = "llvm.aarch64.neon.saddlp.v8i16.v16i8"
34033 )]
34034 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v8i16.v16i8")]
34035 fn _vpaddlq_s8(a: int8x16_t) -> int16x8_t;
34036 }
34037 unsafe { _vpaddlq_s8(a) }
34038}
34039#[doc = "Signed Add and Accumulate Long Pairwise."]
34040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s16)"]
34041#[inline(always)]
34042#[target_feature(enable = "neon")]
34043#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34044#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s16"))]
34045#[cfg_attr(
34046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34047 assert_instr(saddlp)
34048)]
34049#[cfg_attr(
34050 not(target_arch = "arm"),
34051 stable(feature = "neon_intrinsics", since = "1.59.0")
34052)]
34053#[cfg_attr(
34054 target_arch = "arm",
34055 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34056)]
34057pub fn vpaddl_s16(a: int16x4_t) -> int32x2_t {
34058 unsafe extern "unadjusted" {
34059 #[cfg_attr(
34060 any(target_arch = "aarch64", target_arch = "arm64ec"),
34061 link_name = "llvm.aarch64.neon.saddlp.v2i32.v4i16"
34062 )]
34063 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v2i32.v4i16")]
34064 fn _vpaddl_s16(a: int16x4_t) -> int32x2_t;
34065 }
34066 unsafe { _vpaddl_s16(a) }
34067}
34068#[doc = "Signed Add and Accumulate Long Pairwise."]
34069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s16)"]
34070#[inline(always)]
34071#[target_feature(enable = "neon")]
34072#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34073#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s16"))]
34074#[cfg_attr(
34075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34076 assert_instr(saddlp)
34077)]
34078#[cfg_attr(
34079 not(target_arch = "arm"),
34080 stable(feature = "neon_intrinsics", since = "1.59.0")
34081)]
34082#[cfg_attr(
34083 target_arch = "arm",
34084 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34085)]
34086pub fn vpaddlq_s16(a: int16x8_t) -> int32x4_t {
34087 unsafe extern "unadjusted" {
34088 #[cfg_attr(
34089 any(target_arch = "aarch64", target_arch = "arm64ec"),
34090 link_name = "llvm.aarch64.neon.saddlp.v4i32.v8i16"
34091 )]
34092 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v4i32.v8i16")]
34093 fn _vpaddlq_s16(a: int16x8_t) -> int32x4_t;
34094 }
34095 unsafe { _vpaddlq_s16(a) }
34096}
34097#[doc = "Signed Add and Accumulate Long Pairwise."]
34098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_s32)"]
34099#[inline(always)]
34100#[target_feature(enable = "neon")]
34101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34102#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s32"))]
34103#[cfg_attr(
34104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34105 assert_instr(saddlp)
34106)]
34107#[cfg_attr(
34108 not(target_arch = "arm"),
34109 stable(feature = "neon_intrinsics", since = "1.59.0")
34110)]
34111#[cfg_attr(
34112 target_arch = "arm",
34113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34114)]
34115pub fn vpaddl_s32(a: int32x2_t) -> int64x1_t {
34116 unsafe extern "unadjusted" {
34117 #[cfg_attr(
34118 any(target_arch = "aarch64", target_arch = "arm64ec"),
34119 link_name = "llvm.aarch64.neon.saddlp.v1i64.v2i32"
34120 )]
34121 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v1i64.v2i32")]
34122 fn _vpaddl_s32(a: int32x2_t) -> int64x1_t;
34123 }
34124 unsafe { _vpaddl_s32(a) }
34125}
34126#[doc = "Signed Add and Accumulate Long Pairwise."]
34127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_s32)"]
34128#[inline(always)]
34129#[target_feature(enable = "neon")]
34130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34131#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.s32"))]
34132#[cfg_attr(
34133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34134 assert_instr(saddlp)
34135)]
34136#[cfg_attr(
34137 not(target_arch = "arm"),
34138 stable(feature = "neon_intrinsics", since = "1.59.0")
34139)]
34140#[cfg_attr(
34141 target_arch = "arm",
34142 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34143)]
34144pub fn vpaddlq_s32(a: int32x4_t) -> int64x2_t {
34145 unsafe extern "unadjusted" {
34146 #[cfg_attr(
34147 any(target_arch = "aarch64", target_arch = "arm64ec"),
34148 link_name = "llvm.aarch64.neon.saddlp.v2i64.v4i32"
34149 )]
34150 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddls.v2i64.v4i32")]
34151 fn _vpaddlq_s32(a: int32x4_t) -> int64x2_t;
34152 }
34153 unsafe { _vpaddlq_s32(a) }
34154}
34155#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u8)"]
34157#[inline(always)]
34158#[target_feature(enable = "neon")]
34159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34160#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u8"))]
34161#[cfg_attr(
34162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34163 assert_instr(uaddlp)
34164)]
34165#[cfg_attr(
34166 not(target_arch = "arm"),
34167 stable(feature = "neon_intrinsics", since = "1.59.0")
34168)]
34169#[cfg_attr(
34170 target_arch = "arm",
34171 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34172)]
34173pub fn vpaddl_u8(a: uint8x8_t) -> uint16x4_t {
34174 unsafe extern "unadjusted" {
34175 #[cfg_attr(
34176 any(target_arch = "aarch64", target_arch = "arm64ec"),
34177 link_name = "llvm.aarch64.neon.uaddlp.v4i16.v8i8"
34178 )]
34179 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v4i16.v8i8")]
34180 fn _vpaddl_u8(a: uint8x8_t) -> uint16x4_t;
34181 }
34182 unsafe { _vpaddl_u8(a) }
34183}
34184#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u8)"]
34186#[inline(always)]
34187#[target_feature(enable = "neon")]
34188#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34189#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u8"))]
34190#[cfg_attr(
34191 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34192 assert_instr(uaddlp)
34193)]
34194#[cfg_attr(
34195 not(target_arch = "arm"),
34196 stable(feature = "neon_intrinsics", since = "1.59.0")
34197)]
34198#[cfg_attr(
34199 target_arch = "arm",
34200 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34201)]
34202pub fn vpaddlq_u8(a: uint8x16_t) -> uint16x8_t {
34203 unsafe extern "unadjusted" {
34204 #[cfg_attr(
34205 any(target_arch = "aarch64", target_arch = "arm64ec"),
34206 link_name = "llvm.aarch64.neon.uaddlp.v8i16.v16i8"
34207 )]
34208 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v8i16.v16i8")]
34209 fn _vpaddlq_u8(a: uint8x16_t) -> uint16x8_t;
34210 }
34211 unsafe { _vpaddlq_u8(a) }
34212}
34213#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u16)"]
34215#[inline(always)]
34216#[target_feature(enable = "neon")]
34217#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34218#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u16"))]
34219#[cfg_attr(
34220 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34221 assert_instr(uaddlp)
34222)]
34223#[cfg_attr(
34224 not(target_arch = "arm"),
34225 stable(feature = "neon_intrinsics", since = "1.59.0")
34226)]
34227#[cfg_attr(
34228 target_arch = "arm",
34229 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34230)]
34231pub fn vpaddl_u16(a: uint16x4_t) -> uint32x2_t {
34232 unsafe extern "unadjusted" {
34233 #[cfg_attr(
34234 any(target_arch = "aarch64", target_arch = "arm64ec"),
34235 link_name = "llvm.aarch64.neon.uaddlp.v2i32.v4i16"
34236 )]
34237 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v2i32.v4i16")]
34238 fn _vpaddl_u16(a: uint16x4_t) -> uint32x2_t;
34239 }
34240 unsafe { _vpaddl_u16(a) }
34241}
34242#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34243#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u16)"]
34244#[inline(always)]
34245#[target_feature(enable = "neon")]
34246#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34247#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u16"))]
34248#[cfg_attr(
34249 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34250 assert_instr(uaddlp)
34251)]
34252#[cfg_attr(
34253 not(target_arch = "arm"),
34254 stable(feature = "neon_intrinsics", since = "1.59.0")
34255)]
34256#[cfg_attr(
34257 target_arch = "arm",
34258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34259)]
34260pub fn vpaddlq_u16(a: uint16x8_t) -> uint32x4_t {
34261 unsafe extern "unadjusted" {
34262 #[cfg_attr(
34263 any(target_arch = "aarch64", target_arch = "arm64ec"),
34264 link_name = "llvm.aarch64.neon.uaddlp.v4i32.v8i16"
34265 )]
34266 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v4i32.v8i16")]
34267 fn _vpaddlq_u16(a: uint16x8_t) -> uint32x4_t;
34268 }
34269 unsafe { _vpaddlq_u16(a) }
34270}
34271#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34272#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddl_u32)"]
34273#[inline(always)]
34274#[target_feature(enable = "neon")]
34275#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34276#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u32"))]
34277#[cfg_attr(
34278 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34279 assert_instr(uaddlp)
34280)]
34281#[cfg_attr(
34282 not(target_arch = "arm"),
34283 stable(feature = "neon_intrinsics", since = "1.59.0")
34284)]
34285#[cfg_attr(
34286 target_arch = "arm",
34287 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34288)]
34289pub fn vpaddl_u32(a: uint32x2_t) -> uint64x1_t {
34290 unsafe extern "unadjusted" {
34291 #[cfg_attr(
34292 any(target_arch = "aarch64", target_arch = "arm64ec"),
34293 link_name = "llvm.aarch64.neon.uaddlp.v1i64.v2i32"
34294 )]
34295 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v1i64.v2i32")]
34296 fn _vpaddl_u32(a: uint32x2_t) -> uint64x1_t;
34297 }
34298 unsafe { _vpaddl_u32(a) }
34299}
34300#[doc = "Unsigned Add and Accumulate Long Pairwise."]
34301#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddlq_u32)"]
34302#[inline(always)]
34303#[target_feature(enable = "neon")]
34304#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34305#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vpaddl.u32"))]
34306#[cfg_attr(
34307 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34308 assert_instr(uaddlp)
34309)]
34310#[cfg_attr(
34311 not(target_arch = "arm"),
34312 stable(feature = "neon_intrinsics", since = "1.59.0")
34313)]
34314#[cfg_attr(
34315 target_arch = "arm",
34316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34317)]
34318pub fn vpaddlq_u32(a: uint32x4_t) -> uint64x2_t {
34319 unsafe extern "unadjusted" {
34320 #[cfg_attr(
34321 any(target_arch = "aarch64", target_arch = "arm64ec"),
34322 link_name = "llvm.aarch64.neon.uaddlp.v2i64.v4i32"
34323 )]
34324 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpaddlu.v2i64.v4i32")]
34325 fn _vpaddlq_u32(a: uint32x4_t) -> uint64x2_t;
34326 }
34327 unsafe { _vpaddlq_u32(a) }
34328}
34329#[doc = "Folding maximum of adjacent pairs"]
34330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_f32)"]
34331#[inline(always)]
34332#[target_feature(enable = "neon")]
34333#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34334#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34335#[cfg_attr(
34336 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34337 assert_instr(fmaxp)
34338)]
34339#[cfg_attr(
34340 not(target_arch = "arm"),
34341 stable(feature = "neon_intrinsics", since = "1.59.0")
34342)]
34343#[cfg_attr(
34344 target_arch = "arm",
34345 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34346)]
34347pub fn vpmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
34348 unsafe extern "unadjusted" {
34349 #[cfg_attr(
34350 any(target_arch = "aarch64", target_arch = "arm64ec"),
34351 link_name = "llvm.aarch64.neon.fmaxp.v2f32"
34352 )]
34353 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v2f32")]
34354 fn _vpmax_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
34355 }
34356 unsafe { _vpmax_f32(a, b) }
34357}
34358#[doc = "Folding maximum of adjacent pairs"]
34359#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s8)"]
34360#[inline(always)]
34361#[target_feature(enable = "neon")]
34362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34363#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34364#[cfg_attr(
34365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34366 assert_instr(smaxp)
34367)]
34368#[cfg_attr(
34369 not(target_arch = "arm"),
34370 stable(feature = "neon_intrinsics", since = "1.59.0")
34371)]
34372#[cfg_attr(
34373 target_arch = "arm",
34374 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34375)]
34376pub fn vpmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
34377 unsafe extern "unadjusted" {
34378 #[cfg_attr(
34379 any(target_arch = "aarch64", target_arch = "arm64ec"),
34380 link_name = "llvm.aarch64.neon.smaxp.v8i8"
34381 )]
34382 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v8i8")]
34383 fn _vpmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
34384 }
34385 unsafe { _vpmax_s8(a, b) }
34386}
34387#[doc = "Folding maximum of adjacent pairs"]
34388#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s16)"]
34389#[inline(always)]
34390#[target_feature(enable = "neon")]
34391#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34392#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34393#[cfg_attr(
34394 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34395 assert_instr(smaxp)
34396)]
34397#[cfg_attr(
34398 not(target_arch = "arm"),
34399 stable(feature = "neon_intrinsics", since = "1.59.0")
34400)]
34401#[cfg_attr(
34402 target_arch = "arm",
34403 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34404)]
34405pub fn vpmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
34406 unsafe extern "unadjusted" {
34407 #[cfg_attr(
34408 any(target_arch = "aarch64", target_arch = "arm64ec"),
34409 link_name = "llvm.aarch64.neon.smaxp.v4i16"
34410 )]
34411 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v4i16")]
34412 fn _vpmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
34413 }
34414 unsafe { _vpmax_s16(a, b) }
34415}
34416#[doc = "Folding maximum of adjacent pairs"]
34417#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_s32)"]
34418#[inline(always)]
34419#[target_feature(enable = "neon")]
34420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34421#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34422#[cfg_attr(
34423 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34424 assert_instr(smaxp)
34425)]
34426#[cfg_attr(
34427 not(target_arch = "arm"),
34428 stable(feature = "neon_intrinsics", since = "1.59.0")
34429)]
34430#[cfg_attr(
34431 target_arch = "arm",
34432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34433)]
34434pub fn vpmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
34435 unsafe extern "unadjusted" {
34436 #[cfg_attr(
34437 any(target_arch = "aarch64", target_arch = "arm64ec"),
34438 link_name = "llvm.aarch64.neon.smaxp.v2i32"
34439 )]
34440 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxs.v2i32")]
34441 fn _vpmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
34442 }
34443 unsafe { _vpmax_s32(a, b) }
34444}
34445#[doc = "Folding maximum of adjacent pairs"]
34446#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u8)"]
34447#[inline(always)]
34448#[target_feature(enable = "neon")]
34449#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34450#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34451#[cfg_attr(
34452 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34453 assert_instr(umaxp)
34454)]
34455#[cfg_attr(
34456 not(target_arch = "arm"),
34457 stable(feature = "neon_intrinsics", since = "1.59.0")
34458)]
34459#[cfg_attr(
34460 target_arch = "arm",
34461 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34462)]
34463pub fn vpmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
34464 unsafe extern "unadjusted" {
34465 #[cfg_attr(
34466 any(target_arch = "aarch64", target_arch = "arm64ec"),
34467 link_name = "llvm.aarch64.neon.umaxp.v8i8"
34468 )]
34469 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v8i8")]
34470 fn _vpmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
34471 }
34472 unsafe { _vpmax_u8(a, b) }
34473}
34474#[doc = "Folding maximum of adjacent pairs"]
34475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u16)"]
34476#[inline(always)]
34477#[target_feature(enable = "neon")]
34478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34480#[cfg_attr(
34481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34482 assert_instr(umaxp)
34483)]
34484#[cfg_attr(
34485 not(target_arch = "arm"),
34486 stable(feature = "neon_intrinsics", since = "1.59.0")
34487)]
34488#[cfg_attr(
34489 target_arch = "arm",
34490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34491)]
34492pub fn vpmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
34493 unsafe extern "unadjusted" {
34494 #[cfg_attr(
34495 any(target_arch = "aarch64", target_arch = "arm64ec"),
34496 link_name = "llvm.aarch64.neon.umaxp.v4i16"
34497 )]
34498 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v4i16")]
34499 fn _vpmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
34500 }
34501 unsafe { _vpmax_u16(a, b) }
34502}
34503#[doc = "Folding maximum of adjacent pairs"]
34504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmax_u32)"]
34505#[inline(always)]
34506#[target_feature(enable = "neon")]
34507#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34508#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmax))]
34509#[cfg_attr(
34510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34511 assert_instr(umaxp)
34512)]
34513#[cfg_attr(
34514 not(target_arch = "arm"),
34515 stable(feature = "neon_intrinsics", since = "1.59.0")
34516)]
34517#[cfg_attr(
34518 target_arch = "arm",
34519 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34520)]
34521pub fn vpmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
34522 unsafe extern "unadjusted" {
34523 #[cfg_attr(
34524 any(target_arch = "aarch64", target_arch = "arm64ec"),
34525 link_name = "llvm.aarch64.neon.umaxp.v2i32"
34526 )]
34527 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmaxu.v2i32")]
34528 fn _vpmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
34529 }
34530 unsafe { _vpmax_u32(a, b) }
34531}
34532#[doc = "Folding minimum of adjacent pairs"]
34533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_f32)"]
34534#[inline(always)]
34535#[target_feature(enable = "neon")]
34536#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34537#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34538#[cfg_attr(
34539 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34540 assert_instr(fminp)
34541)]
34542#[cfg_attr(
34543 not(target_arch = "arm"),
34544 stable(feature = "neon_intrinsics", since = "1.59.0")
34545)]
34546#[cfg_attr(
34547 target_arch = "arm",
34548 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34549)]
34550pub fn vpmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
34551 unsafe extern "unadjusted" {
34552 #[cfg_attr(
34553 any(target_arch = "aarch64", target_arch = "arm64ec"),
34554 link_name = "llvm.aarch64.neon.fminp.v2f32"
34555 )]
34556 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v2f32")]
34557 fn _vpmin_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
34558 }
34559 unsafe { _vpmin_f32(a, b) }
34560}
34561#[doc = "Folding minimum of adjacent pairs"]
34562#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s8)"]
34563#[inline(always)]
34564#[target_feature(enable = "neon")]
34565#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34566#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34567#[cfg_attr(
34568 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34569 assert_instr(sminp)
34570)]
34571#[cfg_attr(
34572 not(target_arch = "arm"),
34573 stable(feature = "neon_intrinsics", since = "1.59.0")
34574)]
34575#[cfg_attr(
34576 target_arch = "arm",
34577 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34578)]
34579pub fn vpmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
34580 unsafe extern "unadjusted" {
34581 #[cfg_attr(
34582 any(target_arch = "aarch64", target_arch = "arm64ec"),
34583 link_name = "llvm.aarch64.neon.sminp.v8i8"
34584 )]
34585 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v8i8")]
34586 fn _vpmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
34587 }
34588 unsafe { _vpmin_s8(a, b) }
34589}
34590#[doc = "Folding minimum of adjacent pairs"]
34591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s16)"]
34592#[inline(always)]
34593#[target_feature(enable = "neon")]
34594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34595#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34596#[cfg_attr(
34597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34598 assert_instr(sminp)
34599)]
34600#[cfg_attr(
34601 not(target_arch = "arm"),
34602 stable(feature = "neon_intrinsics", since = "1.59.0")
34603)]
34604#[cfg_attr(
34605 target_arch = "arm",
34606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34607)]
34608pub fn vpmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
34609 unsafe extern "unadjusted" {
34610 #[cfg_attr(
34611 any(target_arch = "aarch64", target_arch = "arm64ec"),
34612 link_name = "llvm.aarch64.neon.sminp.v4i16"
34613 )]
34614 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v4i16")]
34615 fn _vpmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
34616 }
34617 unsafe { _vpmin_s16(a, b) }
34618}
34619#[doc = "Folding minimum of adjacent pairs"]
34620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_s32)"]
34621#[inline(always)]
34622#[target_feature(enable = "neon")]
34623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34624#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34625#[cfg_attr(
34626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34627 assert_instr(sminp)
34628)]
34629#[cfg_attr(
34630 not(target_arch = "arm"),
34631 stable(feature = "neon_intrinsics", since = "1.59.0")
34632)]
34633#[cfg_attr(
34634 target_arch = "arm",
34635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34636)]
34637pub fn vpmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
34638 unsafe extern "unadjusted" {
34639 #[cfg_attr(
34640 any(target_arch = "aarch64", target_arch = "arm64ec"),
34641 link_name = "llvm.aarch64.neon.sminp.v2i32"
34642 )]
34643 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpmins.v2i32")]
34644 fn _vpmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
34645 }
34646 unsafe { _vpmin_s32(a, b) }
34647}
34648#[doc = "Folding minimum of adjacent pairs"]
34649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u8)"]
34650#[inline(always)]
34651#[target_feature(enable = "neon")]
34652#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34653#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34654#[cfg_attr(
34655 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34656 assert_instr(uminp)
34657)]
34658#[cfg_attr(
34659 not(target_arch = "arm"),
34660 stable(feature = "neon_intrinsics", since = "1.59.0")
34661)]
34662#[cfg_attr(
34663 target_arch = "arm",
34664 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34665)]
34666pub fn vpmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
34667 unsafe extern "unadjusted" {
34668 #[cfg_attr(
34669 any(target_arch = "aarch64", target_arch = "arm64ec"),
34670 link_name = "llvm.aarch64.neon.uminp.v8i8"
34671 )]
34672 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v8i8")]
34673 fn _vpmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
34674 }
34675 unsafe { _vpmin_u8(a, b) }
34676}
34677#[doc = "Folding minimum of adjacent pairs"]
34678#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u16)"]
34679#[inline(always)]
34680#[target_feature(enable = "neon")]
34681#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34682#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34683#[cfg_attr(
34684 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34685 assert_instr(uminp)
34686)]
34687#[cfg_attr(
34688 not(target_arch = "arm"),
34689 stable(feature = "neon_intrinsics", since = "1.59.0")
34690)]
34691#[cfg_attr(
34692 target_arch = "arm",
34693 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34694)]
34695pub fn vpmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
34696 unsafe extern "unadjusted" {
34697 #[cfg_attr(
34698 any(target_arch = "aarch64", target_arch = "arm64ec"),
34699 link_name = "llvm.aarch64.neon.uminp.v4i16"
34700 )]
34701 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v4i16")]
34702 fn _vpmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
34703 }
34704 unsafe { _vpmin_u16(a, b) }
34705}
34706#[doc = "Folding minimum of adjacent pairs"]
34707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpmin_u32)"]
34708#[inline(always)]
34709#[target_feature(enable = "neon")]
34710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34711#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vpmin))]
34712#[cfg_attr(
34713 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34714 assert_instr(uminp)
34715)]
34716#[cfg_attr(
34717 not(target_arch = "arm"),
34718 stable(feature = "neon_intrinsics", since = "1.59.0")
34719)]
34720#[cfg_attr(
34721 target_arch = "arm",
34722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34723)]
34724pub fn vpmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
34725 unsafe extern "unadjusted" {
34726 #[cfg_attr(
34727 any(target_arch = "aarch64", target_arch = "arm64ec"),
34728 link_name = "llvm.aarch64.neon.uminp.v2i32"
34729 )]
34730 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vpminu.v2i32")]
34731 fn _vpmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
34732 }
34733 unsafe { _vpmin_u32(a, b) }
34734}
34735#[doc = "Signed saturating Absolute value"]
34736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s8)"]
34737#[inline(always)]
34738#[target_feature(enable = "neon")]
34739#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34740#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s8"))]
34741#[cfg_attr(
34742 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34743 assert_instr(sqabs)
34744)]
34745#[cfg_attr(
34746 not(target_arch = "arm"),
34747 stable(feature = "neon_intrinsics", since = "1.59.0")
34748)]
34749#[cfg_attr(
34750 target_arch = "arm",
34751 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34752)]
34753pub fn vqabs_s8(a: int8x8_t) -> int8x8_t {
34754 unsafe extern "unadjusted" {
34755 #[cfg_attr(
34756 any(target_arch = "aarch64", target_arch = "arm64ec"),
34757 link_name = "llvm.aarch64.neon.sqabs.v8i8"
34758 )]
34759 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v8i8")]
34760 fn _vqabs_s8(a: int8x8_t) -> int8x8_t;
34761 }
34762 unsafe { _vqabs_s8(a) }
34763}
34764#[doc = "Signed saturating Absolute value"]
34765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s8)"]
34766#[inline(always)]
34767#[target_feature(enable = "neon")]
34768#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34769#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s8"))]
34770#[cfg_attr(
34771 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34772 assert_instr(sqabs)
34773)]
34774#[cfg_attr(
34775 not(target_arch = "arm"),
34776 stable(feature = "neon_intrinsics", since = "1.59.0")
34777)]
34778#[cfg_attr(
34779 target_arch = "arm",
34780 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34781)]
34782pub fn vqabsq_s8(a: int8x16_t) -> int8x16_t {
34783 unsafe extern "unadjusted" {
34784 #[cfg_attr(
34785 any(target_arch = "aarch64", target_arch = "arm64ec"),
34786 link_name = "llvm.aarch64.neon.sqabs.v16i8"
34787 )]
34788 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v16i8")]
34789 fn _vqabsq_s8(a: int8x16_t) -> int8x16_t;
34790 }
34791 unsafe { _vqabsq_s8(a) }
34792}
34793#[doc = "Signed saturating Absolute value"]
34794#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s16)"]
34795#[inline(always)]
34796#[target_feature(enable = "neon")]
34797#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34798#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s16"))]
34799#[cfg_attr(
34800 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34801 assert_instr(sqabs)
34802)]
34803#[cfg_attr(
34804 not(target_arch = "arm"),
34805 stable(feature = "neon_intrinsics", since = "1.59.0")
34806)]
34807#[cfg_attr(
34808 target_arch = "arm",
34809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34810)]
34811pub fn vqabs_s16(a: int16x4_t) -> int16x4_t {
34812 unsafe extern "unadjusted" {
34813 #[cfg_attr(
34814 any(target_arch = "aarch64", target_arch = "arm64ec"),
34815 link_name = "llvm.aarch64.neon.sqabs.v4i16"
34816 )]
34817 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v4i16")]
34818 fn _vqabs_s16(a: int16x4_t) -> int16x4_t;
34819 }
34820 unsafe { _vqabs_s16(a) }
34821}
34822#[doc = "Signed saturating Absolute value"]
34823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s16)"]
34824#[inline(always)]
34825#[target_feature(enable = "neon")]
34826#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34827#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s16"))]
34828#[cfg_attr(
34829 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34830 assert_instr(sqabs)
34831)]
34832#[cfg_attr(
34833 not(target_arch = "arm"),
34834 stable(feature = "neon_intrinsics", since = "1.59.0")
34835)]
34836#[cfg_attr(
34837 target_arch = "arm",
34838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34839)]
34840pub fn vqabsq_s16(a: int16x8_t) -> int16x8_t {
34841 unsafe extern "unadjusted" {
34842 #[cfg_attr(
34843 any(target_arch = "aarch64", target_arch = "arm64ec"),
34844 link_name = "llvm.aarch64.neon.sqabs.v8i16"
34845 )]
34846 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v8i16")]
34847 fn _vqabsq_s16(a: int16x8_t) -> int16x8_t;
34848 }
34849 unsafe { _vqabsq_s16(a) }
34850}
34851#[doc = "Signed saturating Absolute value"]
34852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabs_s32)"]
34853#[inline(always)]
34854#[target_feature(enable = "neon")]
34855#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34856#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s32"))]
34857#[cfg_attr(
34858 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34859 assert_instr(sqabs)
34860)]
34861#[cfg_attr(
34862 not(target_arch = "arm"),
34863 stable(feature = "neon_intrinsics", since = "1.59.0")
34864)]
34865#[cfg_attr(
34866 target_arch = "arm",
34867 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34868)]
34869pub fn vqabs_s32(a: int32x2_t) -> int32x2_t {
34870 unsafe extern "unadjusted" {
34871 #[cfg_attr(
34872 any(target_arch = "aarch64", target_arch = "arm64ec"),
34873 link_name = "llvm.aarch64.neon.sqabs.v2i32"
34874 )]
34875 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v2i32")]
34876 fn _vqabs_s32(a: int32x2_t) -> int32x2_t;
34877 }
34878 unsafe { _vqabs_s32(a) }
34879}
34880#[doc = "Signed saturating Absolute value"]
34881#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqabsq_s32)"]
34882#[inline(always)]
34883#[target_feature(enable = "neon")]
34884#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34885#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqabs.s32"))]
34886#[cfg_attr(
34887 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34888 assert_instr(sqabs)
34889)]
34890#[cfg_attr(
34891 not(target_arch = "arm"),
34892 stable(feature = "neon_intrinsics", since = "1.59.0")
34893)]
34894#[cfg_attr(
34895 target_arch = "arm",
34896 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34897)]
34898pub fn vqabsq_s32(a: int32x4_t) -> int32x4_t {
34899 unsafe extern "unadjusted" {
34900 #[cfg_attr(
34901 any(target_arch = "aarch64", target_arch = "arm64ec"),
34902 link_name = "llvm.aarch64.neon.sqabs.v4i32"
34903 )]
34904 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqabs.v4i32")]
34905 fn _vqabsq_s32(a: int32x4_t) -> int32x4_t;
34906 }
34907 unsafe { _vqabsq_s32(a) }
34908}
34909#[doc = "Saturating add"]
34910#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s8)"]
34911#[inline(always)]
34912#[target_feature(enable = "neon")]
34913#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34914#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s8"))]
34915#[cfg_attr(
34916 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34917 assert_instr(sqadd)
34918)]
34919#[cfg_attr(
34920 not(target_arch = "arm"),
34921 stable(feature = "neon_intrinsics", since = "1.59.0")
34922)]
34923#[cfg_attr(
34924 target_arch = "arm",
34925 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34926)]
34927pub fn vqadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
34928 unsafe { simd_saturating_add(a, b) }
34929}
34930#[doc = "Saturating add"]
34931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s8)"]
34932#[inline(always)]
34933#[target_feature(enable = "neon")]
34934#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34935#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s8"))]
34936#[cfg_attr(
34937 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34938 assert_instr(sqadd)
34939)]
34940#[cfg_attr(
34941 not(target_arch = "arm"),
34942 stable(feature = "neon_intrinsics", since = "1.59.0")
34943)]
34944#[cfg_attr(
34945 target_arch = "arm",
34946 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34947)]
34948pub fn vqaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
34949 unsafe { simd_saturating_add(a, b) }
34950}
34951#[doc = "Saturating add"]
34952#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s16)"]
34953#[inline(always)]
34954#[target_feature(enable = "neon")]
34955#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34956#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s16"))]
34957#[cfg_attr(
34958 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34959 assert_instr(sqadd)
34960)]
34961#[cfg_attr(
34962 not(target_arch = "arm"),
34963 stable(feature = "neon_intrinsics", since = "1.59.0")
34964)]
34965#[cfg_attr(
34966 target_arch = "arm",
34967 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34968)]
34969pub fn vqadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
34970 unsafe { simd_saturating_add(a, b) }
34971}
34972#[doc = "Saturating add"]
34973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s16)"]
34974#[inline(always)]
34975#[target_feature(enable = "neon")]
34976#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34977#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s16"))]
34978#[cfg_attr(
34979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
34980 assert_instr(sqadd)
34981)]
34982#[cfg_attr(
34983 not(target_arch = "arm"),
34984 stable(feature = "neon_intrinsics", since = "1.59.0")
34985)]
34986#[cfg_attr(
34987 target_arch = "arm",
34988 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
34989)]
34990pub fn vqaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
34991 unsafe { simd_saturating_add(a, b) }
34992}
34993#[doc = "Saturating add"]
34994#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s32)"]
34995#[inline(always)]
34996#[target_feature(enable = "neon")]
34997#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
34998#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s32"))]
34999#[cfg_attr(
35000 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35001 assert_instr(sqadd)
35002)]
35003#[cfg_attr(
35004 not(target_arch = "arm"),
35005 stable(feature = "neon_intrinsics", since = "1.59.0")
35006)]
35007#[cfg_attr(
35008 target_arch = "arm",
35009 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35010)]
35011pub fn vqadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
35012 unsafe { simd_saturating_add(a, b) }
35013}
35014#[doc = "Saturating add"]
35015#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s32)"]
35016#[inline(always)]
35017#[target_feature(enable = "neon")]
35018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35019#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s32"))]
35020#[cfg_attr(
35021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35022 assert_instr(sqadd)
35023)]
35024#[cfg_attr(
35025 not(target_arch = "arm"),
35026 stable(feature = "neon_intrinsics", since = "1.59.0")
35027)]
35028#[cfg_attr(
35029 target_arch = "arm",
35030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35031)]
35032pub fn vqaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
35033 unsafe { simd_saturating_add(a, b) }
35034}
35035#[doc = "Saturating add"]
35036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s64)"]
35037#[inline(always)]
35038#[target_feature(enable = "neon")]
35039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35040#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s64"))]
35041#[cfg_attr(
35042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35043 assert_instr(sqadd)
35044)]
35045#[cfg_attr(
35046 not(target_arch = "arm"),
35047 stable(feature = "neon_intrinsics", since = "1.59.0")
35048)]
35049#[cfg_attr(
35050 target_arch = "arm",
35051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35052)]
35053pub fn vqadd_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
35054 unsafe { simd_saturating_add(a, b) }
35055}
35056#[doc = "Saturating add"]
35057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s64)"]
35058#[inline(always)]
35059#[target_feature(enable = "neon")]
35060#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35061#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.s64"))]
35062#[cfg_attr(
35063 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35064 assert_instr(sqadd)
35065)]
35066#[cfg_attr(
35067 not(target_arch = "arm"),
35068 stable(feature = "neon_intrinsics", since = "1.59.0")
35069)]
35070#[cfg_attr(
35071 target_arch = "arm",
35072 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35073)]
35074pub fn vqaddq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
35075 unsafe { simd_saturating_add(a, b) }
35076}
35077#[doc = "Saturating add"]
35078#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u8)"]
35079#[inline(always)]
35080#[target_feature(enable = "neon")]
35081#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35082#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u8"))]
35083#[cfg_attr(
35084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35085 assert_instr(uqadd)
35086)]
35087#[cfg_attr(
35088 not(target_arch = "arm"),
35089 stable(feature = "neon_intrinsics", since = "1.59.0")
35090)]
35091#[cfg_attr(
35092 target_arch = "arm",
35093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35094)]
35095pub fn vqadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
35096 unsafe { simd_saturating_add(a, b) }
35097}
35098#[doc = "Saturating add"]
35099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u8)"]
35100#[inline(always)]
35101#[target_feature(enable = "neon")]
35102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35103#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u8"))]
35104#[cfg_attr(
35105 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35106 assert_instr(uqadd)
35107)]
35108#[cfg_attr(
35109 not(target_arch = "arm"),
35110 stable(feature = "neon_intrinsics", since = "1.59.0")
35111)]
35112#[cfg_attr(
35113 target_arch = "arm",
35114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35115)]
35116pub fn vqaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
35117 unsafe { simd_saturating_add(a, b) }
35118}
35119#[doc = "Saturating add"]
35120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u16)"]
35121#[inline(always)]
35122#[target_feature(enable = "neon")]
35123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35124#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u16"))]
35125#[cfg_attr(
35126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35127 assert_instr(uqadd)
35128)]
35129#[cfg_attr(
35130 not(target_arch = "arm"),
35131 stable(feature = "neon_intrinsics", since = "1.59.0")
35132)]
35133#[cfg_attr(
35134 target_arch = "arm",
35135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35136)]
35137pub fn vqadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
35138 unsafe { simd_saturating_add(a, b) }
35139}
35140#[doc = "Saturating add"]
35141#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u16)"]
35142#[inline(always)]
35143#[target_feature(enable = "neon")]
35144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35145#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u16"))]
35146#[cfg_attr(
35147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35148 assert_instr(uqadd)
35149)]
35150#[cfg_attr(
35151 not(target_arch = "arm"),
35152 stable(feature = "neon_intrinsics", since = "1.59.0")
35153)]
35154#[cfg_attr(
35155 target_arch = "arm",
35156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35157)]
35158pub fn vqaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
35159 unsafe { simd_saturating_add(a, b) }
35160}
35161#[doc = "Saturating add"]
35162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u32)"]
35163#[inline(always)]
35164#[target_feature(enable = "neon")]
35165#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35166#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u32"))]
35167#[cfg_attr(
35168 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35169 assert_instr(uqadd)
35170)]
35171#[cfg_attr(
35172 not(target_arch = "arm"),
35173 stable(feature = "neon_intrinsics", since = "1.59.0")
35174)]
35175#[cfg_attr(
35176 target_arch = "arm",
35177 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35178)]
35179pub fn vqadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
35180 unsafe { simd_saturating_add(a, b) }
35181}
35182#[doc = "Saturating add"]
35183#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u32)"]
35184#[inline(always)]
35185#[target_feature(enable = "neon")]
35186#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35187#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u32"))]
35188#[cfg_attr(
35189 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35190 assert_instr(uqadd)
35191)]
35192#[cfg_attr(
35193 not(target_arch = "arm"),
35194 stable(feature = "neon_intrinsics", since = "1.59.0")
35195)]
35196#[cfg_attr(
35197 target_arch = "arm",
35198 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35199)]
35200pub fn vqaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
35201 unsafe { simd_saturating_add(a, b) }
35202}
35203#[doc = "Saturating add"]
35204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u64)"]
35205#[inline(always)]
35206#[target_feature(enable = "neon")]
35207#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35208#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u64"))]
35209#[cfg_attr(
35210 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35211 assert_instr(uqadd)
35212)]
35213#[cfg_attr(
35214 not(target_arch = "arm"),
35215 stable(feature = "neon_intrinsics", since = "1.59.0")
35216)]
35217#[cfg_attr(
35218 target_arch = "arm",
35219 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35220)]
35221pub fn vqadd_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
35222 unsafe { simd_saturating_add(a, b) }
35223}
35224#[doc = "Saturating add"]
35225#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u64)"]
35226#[inline(always)]
35227#[target_feature(enable = "neon")]
35228#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35229#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqadd.u64"))]
35230#[cfg_attr(
35231 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35232 assert_instr(uqadd)
35233)]
35234#[cfg_attr(
35235 not(target_arch = "arm"),
35236 stable(feature = "neon_intrinsics", since = "1.59.0")
35237)]
35238#[cfg_attr(
35239 target_arch = "arm",
35240 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35241)]
35242pub fn vqaddq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
35243 unsafe { simd_saturating_add(a, b) }
35244}
35245#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
35246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_lane_s16)"]
35247#[inline(always)]
35248#[target_feature(enable = "neon")]
35249#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35250#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal, N = 2))]
35251#[cfg_attr(
35252 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35253 assert_instr(sqdmlal, N = 2)
35254)]
35255#[rustc_legacy_const_generics(3)]
35256#[cfg_attr(
35257 not(target_arch = "arm"),
35258 stable(feature = "neon_intrinsics", since = "1.59.0")
35259)]
35260#[cfg_attr(
35261 target_arch = "arm",
35262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35263)]
35264pub fn vqdmlal_lane_s16<const N: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
35265 static_assert_uimm_bits!(N, 2);
35266 vqaddq_s32(a, vqdmull_lane_s16::<N>(b, c))
35267}
35268#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
35269#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_lane_s32)"]
35270#[inline(always)]
35271#[target_feature(enable = "neon")]
35272#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35273#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal, N = 1))]
35274#[cfg_attr(
35275 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35276 assert_instr(sqdmlal, N = 1)
35277)]
35278#[rustc_legacy_const_generics(3)]
35279#[cfg_attr(
35280 not(target_arch = "arm"),
35281 stable(feature = "neon_intrinsics", since = "1.59.0")
35282)]
35283#[cfg_attr(
35284 target_arch = "arm",
35285 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35286)]
35287pub fn vqdmlal_lane_s32<const N: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
35288 static_assert_uimm_bits!(N, 1);
35289 vqaddq_s64(a, vqdmull_lane_s32::<N>(b, c))
35290}
35291#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
35292#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_n_s16)"]
35293#[inline(always)]
35294#[target_feature(enable = "neon")]
35295#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35296#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
35297#[cfg_attr(
35298 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35299 assert_instr(sqdmlal)
35300)]
35301#[cfg_attr(
35302 not(target_arch = "arm"),
35303 stable(feature = "neon_intrinsics", since = "1.59.0")
35304)]
35305#[cfg_attr(
35306 target_arch = "arm",
35307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35308)]
35309pub fn vqdmlal_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
35310 vqaddq_s32(a, vqdmull_n_s16(b, c))
35311}
35312#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
35313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_n_s32)"]
35314#[inline(always)]
35315#[target_feature(enable = "neon")]
35316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
35318#[cfg_attr(
35319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35320 assert_instr(sqdmlal)
35321)]
35322#[cfg_attr(
35323 not(target_arch = "arm"),
35324 stable(feature = "neon_intrinsics", since = "1.59.0")
35325)]
35326#[cfg_attr(
35327 target_arch = "arm",
35328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35329)]
35330pub fn vqdmlal_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
35331 vqaddq_s64(a, vqdmull_n_s32(b, c))
35332}
35333#[doc = "Signed saturating doubling multiply-add long"]
35334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_s16)"]
35335#[inline(always)]
35336#[target_feature(enable = "neon")]
35337#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35338#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
35339#[cfg_attr(
35340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35341 assert_instr(sqdmlal)
35342)]
35343#[cfg_attr(
35344 not(target_arch = "arm"),
35345 stable(feature = "neon_intrinsics", since = "1.59.0")
35346)]
35347#[cfg_attr(
35348 target_arch = "arm",
35349 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35350)]
35351pub fn vqdmlal_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
35352 vqaddq_s32(a, vqdmull_s16(b, c))
35353}
35354#[doc = "Signed saturating doubling multiply-add long"]
35355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_s32)"]
35356#[inline(always)]
35357#[target_feature(enable = "neon")]
35358#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35359#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlal))]
35360#[cfg_attr(
35361 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35362 assert_instr(sqdmlal)
35363)]
35364#[cfg_attr(
35365 not(target_arch = "arm"),
35366 stable(feature = "neon_intrinsics", since = "1.59.0")
35367)]
35368#[cfg_attr(
35369 target_arch = "arm",
35370 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35371)]
35372pub fn vqdmlal_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
35373 vqaddq_s64(a, vqdmull_s32(b, c))
35374}
35375#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
35376#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_lane_s16)"]
35377#[inline(always)]
35378#[target_feature(enable = "neon")]
35379#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35380#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl, N = 2))]
35381#[cfg_attr(
35382 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35383 assert_instr(sqdmlsl, N = 2)
35384)]
35385#[rustc_legacy_const_generics(3)]
35386#[cfg_attr(
35387 not(target_arch = "arm"),
35388 stable(feature = "neon_intrinsics", since = "1.59.0")
35389)]
35390#[cfg_attr(
35391 target_arch = "arm",
35392 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35393)]
35394pub fn vqdmlsl_lane_s16<const N: i32>(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
35395 static_assert_uimm_bits!(N, 2);
35396 vqsubq_s32(a, vqdmull_lane_s16::<N>(b, c))
35397}
35398#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
35399#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_lane_s32)"]
35400#[inline(always)]
35401#[target_feature(enable = "neon")]
35402#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35403#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl, N = 1))]
35404#[cfg_attr(
35405 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35406 assert_instr(sqdmlsl, N = 1)
35407)]
35408#[rustc_legacy_const_generics(3)]
35409#[cfg_attr(
35410 not(target_arch = "arm"),
35411 stable(feature = "neon_intrinsics", since = "1.59.0")
35412)]
35413#[cfg_attr(
35414 target_arch = "arm",
35415 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35416)]
35417pub fn vqdmlsl_lane_s32<const N: i32>(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
35418 static_assert_uimm_bits!(N, 1);
35419 vqsubq_s64(a, vqdmull_lane_s32::<N>(b, c))
35420}
35421#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
35422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_n_s16)"]
35423#[inline(always)]
35424#[target_feature(enable = "neon")]
35425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35426#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
35427#[cfg_attr(
35428 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35429 assert_instr(sqdmlsl)
35430)]
35431#[cfg_attr(
35432 not(target_arch = "arm"),
35433 stable(feature = "neon_intrinsics", since = "1.59.0")
35434)]
35435#[cfg_attr(
35436 target_arch = "arm",
35437 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35438)]
35439pub fn vqdmlsl_n_s16(a: int32x4_t, b: int16x4_t, c: i16) -> int32x4_t {
35440 vqsubq_s32(a, vqdmull_n_s16(b, c))
35441}
35442#[doc = "Vector widening saturating doubling multiply subtract with scalar"]
35443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_n_s32)"]
35444#[inline(always)]
35445#[target_feature(enable = "neon")]
35446#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35447#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
35448#[cfg_attr(
35449 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35450 assert_instr(sqdmlsl)
35451)]
35452#[cfg_attr(
35453 not(target_arch = "arm"),
35454 stable(feature = "neon_intrinsics", since = "1.59.0")
35455)]
35456#[cfg_attr(
35457 target_arch = "arm",
35458 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35459)]
35460pub fn vqdmlsl_n_s32(a: int64x2_t, b: int32x2_t, c: i32) -> int64x2_t {
35461 vqsubq_s64(a, vqdmull_n_s32(b, c))
35462}
35463#[doc = "Signed saturating doubling multiply-subtract long"]
35464#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_s16)"]
35465#[inline(always)]
35466#[target_feature(enable = "neon")]
35467#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35468#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
35469#[cfg_attr(
35470 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35471 assert_instr(sqdmlsl)
35472)]
35473#[cfg_attr(
35474 not(target_arch = "arm"),
35475 stable(feature = "neon_intrinsics", since = "1.59.0")
35476)]
35477#[cfg_attr(
35478 target_arch = "arm",
35479 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35480)]
35481pub fn vqdmlsl_s16(a: int32x4_t, b: int16x4_t, c: int16x4_t) -> int32x4_t {
35482 vqsubq_s32(a, vqdmull_s16(b, c))
35483}
35484#[doc = "Signed saturating doubling multiply-subtract long"]
35485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlsl_s32)"]
35486#[inline(always)]
35487#[target_feature(enable = "neon")]
35488#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35489#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmlsl))]
35490#[cfg_attr(
35491 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35492 assert_instr(sqdmlsl)
35493)]
35494#[cfg_attr(
35495 not(target_arch = "arm"),
35496 stable(feature = "neon_intrinsics", since = "1.59.0")
35497)]
35498#[cfg_attr(
35499 target_arch = "arm",
35500 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35501)]
35502pub fn vqdmlsl_s32(a: int64x2_t, b: int32x2_t, c: int32x2_t) -> int64x2_t {
35503 vqsubq_s64(a, vqdmull_s32(b, c))
35504}
35505#[doc = "Vector saturating doubling multiply high by scalar"]
35506#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_laneq_s16)"]
35507#[inline(always)]
35508#[target_feature(enable = "neon")]
35509#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35510#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
35511#[cfg_attr(
35512 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35513 assert_instr(sqdmulh, LANE = 0)
35514)]
35515#[rustc_legacy_const_generics(2)]
35516#[cfg_attr(
35517 not(target_arch = "arm"),
35518 stable(feature = "neon_intrinsics", since = "1.59.0")
35519)]
35520#[cfg_attr(
35521 target_arch = "arm",
35522 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35523)]
35524pub fn vqdmulh_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
35525 static_assert_uimm_bits!(LANE, 3);
35526 unsafe { vqdmulh_s16(a, vdup_n_s16(simd_extract!(b, LANE as u32))) }
35527}
35528#[doc = "Vector saturating doubling multiply high by scalar"]
35529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_laneq_s16)"]
35530#[inline(always)]
35531#[target_feature(enable = "neon")]
35532#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35533#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
35534#[cfg_attr(
35535 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35536 assert_instr(sqdmulh, LANE = 0)
35537)]
35538#[rustc_legacy_const_generics(2)]
35539#[cfg_attr(
35540 not(target_arch = "arm"),
35541 stable(feature = "neon_intrinsics", since = "1.59.0")
35542)]
35543#[cfg_attr(
35544 target_arch = "arm",
35545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35546)]
35547pub fn vqdmulhq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
35548 static_assert_uimm_bits!(LANE, 3);
35549 unsafe { vqdmulhq_s16(a, vdupq_n_s16(simd_extract!(b, LANE as u32))) }
35550}
35551#[doc = "Vector saturating doubling multiply high by scalar"]
35552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_laneq_s32)"]
35553#[inline(always)]
35554#[target_feature(enable = "neon")]
35555#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35556#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
35557#[cfg_attr(
35558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35559 assert_instr(sqdmulh, LANE = 0)
35560)]
35561#[rustc_legacy_const_generics(2)]
35562#[cfg_attr(
35563 not(target_arch = "arm"),
35564 stable(feature = "neon_intrinsics", since = "1.59.0")
35565)]
35566#[cfg_attr(
35567 target_arch = "arm",
35568 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35569)]
35570pub fn vqdmulh_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
35571 static_assert_uimm_bits!(LANE, 2);
35572 unsafe { vqdmulh_s32(a, vdup_n_s32(simd_extract!(b, LANE as u32))) }
35573}
35574#[doc = "Vector saturating doubling multiply high by scalar"]
35575#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_laneq_s32)"]
35576#[inline(always)]
35577#[target_feature(enable = "neon")]
35578#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35579#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh, LANE = 0))]
35580#[cfg_attr(
35581 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35582 assert_instr(sqdmulh, LANE = 0)
35583)]
35584#[rustc_legacy_const_generics(2)]
35585#[cfg_attr(
35586 not(target_arch = "arm"),
35587 stable(feature = "neon_intrinsics", since = "1.59.0")
35588)]
35589#[cfg_attr(
35590 target_arch = "arm",
35591 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35592)]
35593pub fn vqdmulhq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
35594 static_assert_uimm_bits!(LANE, 2);
35595 unsafe { vqdmulhq_s32(a, vdupq_n_s32(simd_extract!(b, LANE as u32))) }
35596}
35597#[doc = "Vector saturating doubling multiply high with scalar"]
35598#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_n_s16)"]
35599#[inline(always)]
35600#[target_feature(enable = "neon")]
35601#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35602#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35603#[cfg_attr(
35604 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35605 assert_instr(sqdmulh)
35606)]
35607#[cfg_attr(
35608 not(target_arch = "arm"),
35609 stable(feature = "neon_intrinsics", since = "1.59.0")
35610)]
35611#[cfg_attr(
35612 target_arch = "arm",
35613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35614)]
35615pub fn vqdmulh_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
35616 let b: int16x4_t = vdup_n_s16(b);
35617 vqdmulh_s16(a, b)
35618}
35619#[doc = "Vector saturating doubling multiply high with scalar"]
35620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_n_s16)"]
35621#[inline(always)]
35622#[target_feature(enable = "neon")]
35623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35624#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35625#[cfg_attr(
35626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35627 assert_instr(sqdmulh)
35628)]
35629#[cfg_attr(
35630 not(target_arch = "arm"),
35631 stable(feature = "neon_intrinsics", since = "1.59.0")
35632)]
35633#[cfg_attr(
35634 target_arch = "arm",
35635 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35636)]
35637pub fn vqdmulhq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
35638 let b: int16x8_t = vdupq_n_s16(b);
35639 vqdmulhq_s16(a, b)
35640}
35641#[doc = "Vector saturating doubling multiply high with scalar"]
35642#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_n_s32)"]
35643#[inline(always)]
35644#[target_feature(enable = "neon")]
35645#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35646#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35647#[cfg_attr(
35648 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35649 assert_instr(sqdmulh)
35650)]
35651#[cfg_attr(
35652 not(target_arch = "arm"),
35653 stable(feature = "neon_intrinsics", since = "1.59.0")
35654)]
35655#[cfg_attr(
35656 target_arch = "arm",
35657 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35658)]
35659pub fn vqdmulh_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
35660 let b: int32x2_t = vdup_n_s32(b);
35661 vqdmulh_s32(a, b)
35662}
35663#[doc = "Vector saturating doubling multiply high with scalar"]
35664#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_n_s32)"]
35665#[inline(always)]
35666#[target_feature(enable = "neon")]
35667#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35668#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35669#[cfg_attr(
35670 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35671 assert_instr(sqdmulh)
35672)]
35673#[cfg_attr(
35674 not(target_arch = "arm"),
35675 stable(feature = "neon_intrinsics", since = "1.59.0")
35676)]
35677#[cfg_attr(
35678 target_arch = "arm",
35679 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35680)]
35681pub fn vqdmulhq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
35682 let b: int32x4_t = vdupq_n_s32(b);
35683 vqdmulhq_s32(a, b)
35684}
35685#[doc = "Signed saturating doubling multiply returning high half"]
35686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_s16)"]
35687#[inline(always)]
35688#[target_feature(enable = "neon")]
35689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35690#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35691#[cfg_attr(
35692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35693 assert_instr(sqdmulh)
35694)]
35695#[cfg_attr(
35696 not(target_arch = "arm"),
35697 stable(feature = "neon_intrinsics", since = "1.59.0")
35698)]
35699#[cfg_attr(
35700 target_arch = "arm",
35701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35702)]
35703pub fn vqdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
35704 unsafe extern "unadjusted" {
35705 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v4i16")]
35706 #[cfg_attr(
35707 any(target_arch = "aarch64", target_arch = "arm64ec"),
35708 link_name = "llvm.aarch64.neon.sqdmulh.v4i16"
35709 )]
35710 fn _vqdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
35711 }
35712 unsafe { _vqdmulh_s16(a, b) }
35713}
35714#[doc = "Signed saturating doubling multiply returning high half"]
35715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_s16)"]
35716#[inline(always)]
35717#[target_feature(enable = "neon")]
35718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35720#[cfg_attr(
35721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35722 assert_instr(sqdmulh)
35723)]
35724#[cfg_attr(
35725 not(target_arch = "arm"),
35726 stable(feature = "neon_intrinsics", since = "1.59.0")
35727)]
35728#[cfg_attr(
35729 target_arch = "arm",
35730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35731)]
35732pub fn vqdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
35733 unsafe extern "unadjusted" {
35734 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v8i16")]
35735 #[cfg_attr(
35736 any(target_arch = "aarch64", target_arch = "arm64ec"),
35737 link_name = "llvm.aarch64.neon.sqdmulh.v8i16"
35738 )]
35739 fn _vqdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
35740 }
35741 unsafe { _vqdmulhq_s16(a, b) }
35742}
35743#[doc = "Signed saturating doubling multiply returning high half"]
35744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulh_s32)"]
35745#[inline(always)]
35746#[target_feature(enable = "neon")]
35747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35748#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35749#[cfg_attr(
35750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35751 assert_instr(sqdmulh)
35752)]
35753#[cfg_attr(
35754 not(target_arch = "arm"),
35755 stable(feature = "neon_intrinsics", since = "1.59.0")
35756)]
35757#[cfg_attr(
35758 target_arch = "arm",
35759 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35760)]
35761pub fn vqdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
35762 unsafe extern "unadjusted" {
35763 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v2i32")]
35764 #[cfg_attr(
35765 any(target_arch = "aarch64", target_arch = "arm64ec"),
35766 link_name = "llvm.aarch64.neon.sqdmulh.v2i32"
35767 )]
35768 fn _vqdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
35769 }
35770 unsafe { _vqdmulh_s32(a, b) }
35771}
35772#[doc = "Signed saturating doubling multiply returning high half"]
35773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmulhq_s32)"]
35774#[inline(always)]
35775#[target_feature(enable = "neon")]
35776#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35777#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmulh))]
35778#[cfg_attr(
35779 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35780 assert_instr(sqdmulh)
35781)]
35782#[cfg_attr(
35783 not(target_arch = "arm"),
35784 stable(feature = "neon_intrinsics", since = "1.59.0")
35785)]
35786#[cfg_attr(
35787 target_arch = "arm",
35788 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35789)]
35790pub fn vqdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
35791 unsafe extern "unadjusted" {
35792 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmulh.v4i32")]
35793 #[cfg_attr(
35794 any(target_arch = "aarch64", target_arch = "arm64ec"),
35795 link_name = "llvm.aarch64.neon.sqdmulh.v4i32"
35796 )]
35797 fn _vqdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
35798 }
35799 unsafe { _vqdmulhq_s32(a, b) }
35800}
35801#[doc = "Vector saturating doubling long multiply by scalar"]
35802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_lane_s16)"]
35803#[inline(always)]
35804#[target_feature(enable = "neon")]
35805#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35806#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull, N = 2))]
35807#[cfg_attr(
35808 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35809 assert_instr(sqdmull, N = 2)
35810)]
35811#[rustc_legacy_const_generics(2)]
35812#[cfg_attr(
35813 not(target_arch = "arm"),
35814 stable(feature = "neon_intrinsics", since = "1.59.0")
35815)]
35816#[cfg_attr(
35817 target_arch = "arm",
35818 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35819)]
35820pub fn vqdmull_lane_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int32x4_t {
35821 static_assert_uimm_bits!(N, 2);
35822 unsafe {
35823 let b: int16x4_t = simd_shuffle!(b, b, [N as u32; 4]);
35824 vqdmull_s16(a, b)
35825 }
35826}
35827#[doc = "Vector saturating doubling long multiply by scalar"]
35828#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_lane_s32)"]
35829#[inline(always)]
35830#[target_feature(enable = "neon")]
35831#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35832#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull, N = 1))]
35833#[cfg_attr(
35834 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35835 assert_instr(sqdmull, N = 1)
35836)]
35837#[rustc_legacy_const_generics(2)]
35838#[cfg_attr(
35839 not(target_arch = "arm"),
35840 stable(feature = "neon_intrinsics", since = "1.59.0")
35841)]
35842#[cfg_attr(
35843 target_arch = "arm",
35844 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35845)]
35846pub fn vqdmull_lane_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int64x2_t {
35847 static_assert_uimm_bits!(N, 1);
35848 unsafe {
35849 let b: int32x2_t = simd_shuffle!(b, b, [N as u32; 2]);
35850 vqdmull_s32(a, b)
35851 }
35852}
35853#[doc = "Vector saturating doubling long multiply with scalar"]
35854#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_n_s16)"]
35855#[inline(always)]
35856#[target_feature(enable = "neon")]
35857#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35858#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
35859#[cfg_attr(
35860 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35861 assert_instr(sqdmull)
35862)]
35863#[cfg_attr(
35864 not(target_arch = "arm"),
35865 stable(feature = "neon_intrinsics", since = "1.59.0")
35866)]
35867#[cfg_attr(
35868 target_arch = "arm",
35869 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35870)]
35871pub fn vqdmull_n_s16(a: int16x4_t, b: i16) -> int32x4_t {
35872 vqdmull_s16(a, vdup_n_s16(b))
35873}
35874#[doc = "Vector saturating doubling long multiply with scalar"]
35875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_n_s32)"]
35876#[inline(always)]
35877#[target_feature(enable = "neon")]
35878#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35879#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
35880#[cfg_attr(
35881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35882 assert_instr(sqdmull)
35883)]
35884#[cfg_attr(
35885 not(target_arch = "arm"),
35886 stable(feature = "neon_intrinsics", since = "1.59.0")
35887)]
35888#[cfg_attr(
35889 target_arch = "arm",
35890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35891)]
35892pub fn vqdmull_n_s32(a: int32x2_t, b: i32) -> int64x2_t {
35893 vqdmull_s32(a, vdup_n_s32(b))
35894}
35895#[doc = "Signed saturating doubling multiply long"]
35896#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_s16)"]
35897#[inline(always)]
35898#[target_feature(enable = "neon")]
35899#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35900#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
35901#[cfg_attr(
35902 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35903 assert_instr(sqdmull)
35904)]
35905#[cfg_attr(
35906 not(target_arch = "arm"),
35907 stable(feature = "neon_intrinsics", since = "1.59.0")
35908)]
35909#[cfg_attr(
35910 target_arch = "arm",
35911 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35912)]
35913pub fn vqdmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
35914 unsafe extern "unadjusted" {
35915 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmull.v4i32")]
35916 #[cfg_attr(
35917 any(target_arch = "aarch64", target_arch = "arm64ec"),
35918 link_name = "llvm.aarch64.neon.sqdmull.v4i32"
35919 )]
35920 fn _vqdmull_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t;
35921 }
35922 unsafe { _vqdmull_s16(a, b) }
35923}
35924#[doc = "Signed saturating doubling multiply long"]
35925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmull_s32)"]
35926#[inline(always)]
35927#[target_feature(enable = "neon")]
35928#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35929#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqdmull))]
35930#[cfg_attr(
35931 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35932 assert_instr(sqdmull)
35933)]
35934#[cfg_attr(
35935 not(target_arch = "arm"),
35936 stable(feature = "neon_intrinsics", since = "1.59.0")
35937)]
35938#[cfg_attr(
35939 target_arch = "arm",
35940 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35941)]
35942pub fn vqdmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
35943 unsafe extern "unadjusted" {
35944 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqdmull.v2i64")]
35945 #[cfg_attr(
35946 any(target_arch = "aarch64", target_arch = "arm64ec"),
35947 link_name = "llvm.aarch64.neon.sqdmull.v2i64"
35948 )]
35949 fn _vqdmull_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t;
35950 }
35951 unsafe { _vqdmull_s32(a, b) }
35952}
35953#[doc = "Signed saturating extract narrow"]
35954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s16)"]
35955#[inline(always)]
35956#[target_feature(enable = "neon")]
35957#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35958#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
35959#[cfg_attr(
35960 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35961 assert_instr(sqxtn)
35962)]
35963#[cfg_attr(
35964 not(target_arch = "arm"),
35965 stable(feature = "neon_intrinsics", since = "1.59.0")
35966)]
35967#[cfg_attr(
35968 target_arch = "arm",
35969 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35970)]
35971pub fn vqmovn_s16(a: int16x8_t) -> int8x8_t {
35972 unsafe extern "unadjusted" {
35973 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v8i8")]
35974 #[cfg_attr(
35975 any(target_arch = "aarch64", target_arch = "arm64ec"),
35976 link_name = "llvm.aarch64.neon.sqxtn.v8i8"
35977 )]
35978 fn _vqmovn_s16(a: int16x8_t) -> int8x8_t;
35979 }
35980 unsafe { _vqmovn_s16(a) }
35981}
35982#[doc = "Signed saturating extract narrow"]
35983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s32)"]
35984#[inline(always)]
35985#[target_feature(enable = "neon")]
35986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
35987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
35988#[cfg_attr(
35989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
35990 assert_instr(sqxtn)
35991)]
35992#[cfg_attr(
35993 not(target_arch = "arm"),
35994 stable(feature = "neon_intrinsics", since = "1.59.0")
35995)]
35996#[cfg_attr(
35997 target_arch = "arm",
35998 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
35999)]
36000pub fn vqmovn_s32(a: int32x4_t) -> int16x4_t {
36001 unsafe extern "unadjusted" {
36002 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v4i16")]
36003 #[cfg_attr(
36004 any(target_arch = "aarch64", target_arch = "arm64ec"),
36005 link_name = "llvm.aarch64.neon.sqxtn.v4i16"
36006 )]
36007 fn _vqmovn_s32(a: int32x4_t) -> int16x4_t;
36008 }
36009 unsafe { _vqmovn_s32(a) }
36010}
36011#[doc = "Signed saturating extract narrow"]
36012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_s64)"]
36013#[inline(always)]
36014#[target_feature(enable = "neon")]
36015#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36016#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
36017#[cfg_attr(
36018 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36019 assert_instr(sqxtn)
36020)]
36021#[cfg_attr(
36022 not(target_arch = "arm"),
36023 stable(feature = "neon_intrinsics", since = "1.59.0")
36024)]
36025#[cfg_attr(
36026 target_arch = "arm",
36027 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36028)]
36029pub fn vqmovn_s64(a: int64x2_t) -> int32x2_t {
36030 unsafe extern "unadjusted" {
36031 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovns.v2i32")]
36032 #[cfg_attr(
36033 any(target_arch = "aarch64", target_arch = "arm64ec"),
36034 link_name = "llvm.aarch64.neon.sqxtn.v2i32"
36035 )]
36036 fn _vqmovn_s64(a: int64x2_t) -> int32x2_t;
36037 }
36038 unsafe { _vqmovn_s64(a) }
36039}
36040#[doc = "Unsigned saturating extract narrow"]
36041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u16)"]
36042#[inline(always)]
36043#[target_feature(enable = "neon")]
36044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36045#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
36046#[cfg_attr(
36047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36048 assert_instr(uqxtn)
36049)]
36050#[cfg_attr(
36051 not(target_arch = "arm"),
36052 stable(feature = "neon_intrinsics", since = "1.59.0")
36053)]
36054#[cfg_attr(
36055 target_arch = "arm",
36056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36057)]
36058pub fn vqmovn_u16(a: uint16x8_t) -> uint8x8_t {
36059 unsafe extern "unadjusted" {
36060 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v8i8")]
36061 #[cfg_attr(
36062 any(target_arch = "aarch64", target_arch = "arm64ec"),
36063 link_name = "llvm.aarch64.neon.uqxtn.v8i8"
36064 )]
36065 fn _vqmovn_u16(a: uint16x8_t) -> uint8x8_t;
36066 }
36067 unsafe { _vqmovn_u16(a) }
36068}
36069#[doc = "Unsigned saturating extract narrow"]
36070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u32)"]
36071#[inline(always)]
36072#[target_feature(enable = "neon")]
36073#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36074#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
36075#[cfg_attr(
36076 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36077 assert_instr(uqxtn)
36078)]
36079#[cfg_attr(
36080 not(target_arch = "arm"),
36081 stable(feature = "neon_intrinsics", since = "1.59.0")
36082)]
36083#[cfg_attr(
36084 target_arch = "arm",
36085 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36086)]
36087pub fn vqmovn_u32(a: uint32x4_t) -> uint16x4_t {
36088 unsafe extern "unadjusted" {
36089 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v4i16")]
36090 #[cfg_attr(
36091 any(target_arch = "aarch64", target_arch = "arm64ec"),
36092 link_name = "llvm.aarch64.neon.uqxtn.v4i16"
36093 )]
36094 fn _vqmovn_u32(a: uint32x4_t) -> uint16x4_t;
36095 }
36096 unsafe { _vqmovn_u32(a) }
36097}
36098#[doc = "Unsigned saturating extract narrow"]
36099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovn_u64)"]
36100#[inline(always)]
36101#[target_feature(enable = "neon")]
36102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36103#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovn))]
36104#[cfg_attr(
36105 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36106 assert_instr(uqxtn)
36107)]
36108#[cfg_attr(
36109 not(target_arch = "arm"),
36110 stable(feature = "neon_intrinsics", since = "1.59.0")
36111)]
36112#[cfg_attr(
36113 target_arch = "arm",
36114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36115)]
36116pub fn vqmovn_u64(a: uint64x2_t) -> uint32x2_t {
36117 unsafe extern "unadjusted" {
36118 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnu.v2i32")]
36119 #[cfg_attr(
36120 any(target_arch = "aarch64", target_arch = "arm64ec"),
36121 link_name = "llvm.aarch64.neon.uqxtn.v2i32"
36122 )]
36123 fn _vqmovn_u64(a: uint64x2_t) -> uint32x2_t;
36124 }
36125 unsafe { _vqmovn_u64(a) }
36126}
36127#[doc = "Signed saturating extract unsigned narrow"]
36128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s16)"]
36129#[inline(always)]
36130#[target_feature(enable = "neon")]
36131#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36132#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
36133#[cfg_attr(
36134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36135 assert_instr(sqxtun)
36136)]
36137#[cfg_attr(
36138 not(target_arch = "arm"),
36139 stable(feature = "neon_intrinsics", since = "1.59.0")
36140)]
36141#[cfg_attr(
36142 target_arch = "arm",
36143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36144)]
36145pub fn vqmovun_s16(a: int16x8_t) -> uint8x8_t {
36146 unsafe extern "unadjusted" {
36147 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v8i8")]
36148 #[cfg_attr(
36149 any(target_arch = "aarch64", target_arch = "arm64ec"),
36150 link_name = "llvm.aarch64.neon.sqxtun.v8i8"
36151 )]
36152 fn _vqmovun_s16(a: int16x8_t) -> uint8x8_t;
36153 }
36154 unsafe { _vqmovun_s16(a) }
36155}
36156#[doc = "Signed saturating extract unsigned narrow"]
36157#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s32)"]
36158#[inline(always)]
36159#[target_feature(enable = "neon")]
36160#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36161#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
36162#[cfg_attr(
36163 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36164 assert_instr(sqxtun)
36165)]
36166#[cfg_attr(
36167 not(target_arch = "arm"),
36168 stable(feature = "neon_intrinsics", since = "1.59.0")
36169)]
36170#[cfg_attr(
36171 target_arch = "arm",
36172 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36173)]
36174pub fn vqmovun_s32(a: int32x4_t) -> uint16x4_t {
36175 unsafe extern "unadjusted" {
36176 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v4i16")]
36177 #[cfg_attr(
36178 any(target_arch = "aarch64", target_arch = "arm64ec"),
36179 link_name = "llvm.aarch64.neon.sqxtun.v4i16"
36180 )]
36181 fn _vqmovun_s32(a: int32x4_t) -> uint16x4_t;
36182 }
36183 unsafe { _vqmovun_s32(a) }
36184}
36185#[doc = "Signed saturating extract unsigned narrow"]
36186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqmovun_s64)"]
36187#[inline(always)]
36188#[target_feature(enable = "neon")]
36189#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36190#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqmovun))]
36191#[cfg_attr(
36192 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36193 assert_instr(sqxtun)
36194)]
36195#[cfg_attr(
36196 not(target_arch = "arm"),
36197 stable(feature = "neon_intrinsics", since = "1.59.0")
36198)]
36199#[cfg_attr(
36200 target_arch = "arm",
36201 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36202)]
36203pub fn vqmovun_s64(a: int64x2_t) -> uint32x2_t {
36204 unsafe extern "unadjusted" {
36205 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqmovnsu.v2i32")]
36206 #[cfg_attr(
36207 any(target_arch = "aarch64", target_arch = "arm64ec"),
36208 link_name = "llvm.aarch64.neon.sqxtun.v2i32"
36209 )]
36210 fn _vqmovun_s64(a: int64x2_t) -> uint32x2_t;
36211 }
36212 unsafe { _vqmovun_s64(a) }
36213}
36214#[doc = "Signed saturating negate"]
36215#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s8)"]
36216#[inline(always)]
36217#[target_feature(enable = "neon")]
36218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36219#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s8"))]
36220#[cfg_attr(
36221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36222 assert_instr(sqneg)
36223)]
36224#[cfg_attr(
36225 not(target_arch = "arm"),
36226 stable(feature = "neon_intrinsics", since = "1.59.0")
36227)]
36228#[cfg_attr(
36229 target_arch = "arm",
36230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36231)]
36232pub fn vqneg_s8(a: int8x8_t) -> int8x8_t {
36233 unsafe extern "unadjusted" {
36234 #[cfg_attr(
36235 any(target_arch = "aarch64", target_arch = "arm64ec"),
36236 link_name = "llvm.aarch64.neon.sqneg.v8i8"
36237 )]
36238 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v8i8")]
36239 fn _vqneg_s8(a: int8x8_t) -> int8x8_t;
36240 }
36241 unsafe { _vqneg_s8(a) }
36242}
36243#[doc = "Signed saturating negate"]
36244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s8)"]
36245#[inline(always)]
36246#[target_feature(enable = "neon")]
36247#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36248#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s8"))]
36249#[cfg_attr(
36250 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36251 assert_instr(sqneg)
36252)]
36253#[cfg_attr(
36254 not(target_arch = "arm"),
36255 stable(feature = "neon_intrinsics", since = "1.59.0")
36256)]
36257#[cfg_attr(
36258 target_arch = "arm",
36259 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36260)]
36261pub fn vqnegq_s8(a: int8x16_t) -> int8x16_t {
36262 unsafe extern "unadjusted" {
36263 #[cfg_attr(
36264 any(target_arch = "aarch64", target_arch = "arm64ec"),
36265 link_name = "llvm.aarch64.neon.sqneg.v16i8"
36266 )]
36267 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v16i8")]
36268 fn _vqnegq_s8(a: int8x16_t) -> int8x16_t;
36269 }
36270 unsafe { _vqnegq_s8(a) }
36271}
36272#[doc = "Signed saturating negate"]
36273#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s16)"]
36274#[inline(always)]
36275#[target_feature(enable = "neon")]
36276#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36277#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s16"))]
36278#[cfg_attr(
36279 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36280 assert_instr(sqneg)
36281)]
36282#[cfg_attr(
36283 not(target_arch = "arm"),
36284 stable(feature = "neon_intrinsics", since = "1.59.0")
36285)]
36286#[cfg_attr(
36287 target_arch = "arm",
36288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36289)]
36290pub fn vqneg_s16(a: int16x4_t) -> int16x4_t {
36291 unsafe extern "unadjusted" {
36292 #[cfg_attr(
36293 any(target_arch = "aarch64", target_arch = "arm64ec"),
36294 link_name = "llvm.aarch64.neon.sqneg.v4i16"
36295 )]
36296 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v4i16")]
36297 fn _vqneg_s16(a: int16x4_t) -> int16x4_t;
36298 }
36299 unsafe { _vqneg_s16(a) }
36300}
36301#[doc = "Signed saturating negate"]
36302#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s16)"]
36303#[inline(always)]
36304#[target_feature(enable = "neon")]
36305#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36306#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s16"))]
36307#[cfg_attr(
36308 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36309 assert_instr(sqneg)
36310)]
36311#[cfg_attr(
36312 not(target_arch = "arm"),
36313 stable(feature = "neon_intrinsics", since = "1.59.0")
36314)]
36315#[cfg_attr(
36316 target_arch = "arm",
36317 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36318)]
36319pub fn vqnegq_s16(a: int16x8_t) -> int16x8_t {
36320 unsafe extern "unadjusted" {
36321 #[cfg_attr(
36322 any(target_arch = "aarch64", target_arch = "arm64ec"),
36323 link_name = "llvm.aarch64.neon.sqneg.v8i16"
36324 )]
36325 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v8i16")]
36326 fn _vqnegq_s16(a: int16x8_t) -> int16x8_t;
36327 }
36328 unsafe { _vqnegq_s16(a) }
36329}
36330#[doc = "Signed saturating negate"]
36331#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqneg_s32)"]
36332#[inline(always)]
36333#[target_feature(enable = "neon")]
36334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36335#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s32"))]
36336#[cfg_attr(
36337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36338 assert_instr(sqneg)
36339)]
36340#[cfg_attr(
36341 not(target_arch = "arm"),
36342 stable(feature = "neon_intrinsics", since = "1.59.0")
36343)]
36344#[cfg_attr(
36345 target_arch = "arm",
36346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36347)]
36348pub fn vqneg_s32(a: int32x2_t) -> int32x2_t {
36349 unsafe extern "unadjusted" {
36350 #[cfg_attr(
36351 any(target_arch = "aarch64", target_arch = "arm64ec"),
36352 link_name = "llvm.aarch64.neon.sqneg.v2i32"
36353 )]
36354 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v2i32")]
36355 fn _vqneg_s32(a: int32x2_t) -> int32x2_t;
36356 }
36357 unsafe { _vqneg_s32(a) }
36358}
36359#[doc = "Signed saturating negate"]
36360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqnegq_s32)"]
36361#[inline(always)]
36362#[target_feature(enable = "neon")]
36363#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36364#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqneg.s32"))]
36365#[cfg_attr(
36366 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36367 assert_instr(sqneg)
36368)]
36369#[cfg_attr(
36370 not(target_arch = "arm"),
36371 stable(feature = "neon_intrinsics", since = "1.59.0")
36372)]
36373#[cfg_attr(
36374 target_arch = "arm",
36375 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36376)]
36377pub fn vqnegq_s32(a: int32x4_t) -> int32x4_t {
36378 unsafe extern "unadjusted" {
36379 #[cfg_attr(
36380 any(target_arch = "aarch64", target_arch = "arm64ec"),
36381 link_name = "llvm.aarch64.neon.sqneg.v4i32"
36382 )]
36383 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqneg.v4i32")]
36384 fn _vqnegq_s32(a: int32x4_t) -> int32x4_t;
36385 }
36386 unsafe { _vqnegq_s32(a) }
36387}
36388#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36389#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_lane_s16)"]
36390#[inline(always)]
36391#[target_feature(enable = "neon")]
36392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36394#[cfg_attr(
36395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36396 assert_instr(sqrdmulh, LANE = 1)
36397)]
36398#[rustc_legacy_const_generics(2)]
36399#[cfg_attr(
36400 not(target_arch = "arm"),
36401 stable(feature = "neon_intrinsics", since = "1.59.0")
36402)]
36403#[cfg_attr(
36404 target_arch = "arm",
36405 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36406)]
36407pub fn vqrdmulh_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
36408 static_assert_uimm_bits!(LANE, 2);
36409 unsafe {
36410 let b: int16x4_t =
36411 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
36412 vqrdmulh_s16(a, b)
36413 }
36414}
36415#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36416#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_lane_s32)"]
36417#[inline(always)]
36418#[target_feature(enable = "neon")]
36419#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36420#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36421#[cfg_attr(
36422 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36423 assert_instr(sqrdmulh, LANE = 1)
36424)]
36425#[rustc_legacy_const_generics(2)]
36426#[cfg_attr(
36427 not(target_arch = "arm"),
36428 stable(feature = "neon_intrinsics", since = "1.59.0")
36429)]
36430#[cfg_attr(
36431 target_arch = "arm",
36432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36433)]
36434pub fn vqrdmulh_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
36435 static_assert_uimm_bits!(LANE, 1);
36436 unsafe {
36437 let b: int32x2_t = simd_shuffle!(b, b, [LANE as u32, LANE as u32]);
36438 vqrdmulh_s32(a, b)
36439 }
36440}
36441#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_laneq_s16)"]
36443#[inline(always)]
36444#[target_feature(enable = "neon")]
36445#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36446#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36447#[cfg_attr(
36448 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36449 assert_instr(sqrdmulh, LANE = 1)
36450)]
36451#[rustc_legacy_const_generics(2)]
36452#[cfg_attr(
36453 not(target_arch = "arm"),
36454 stable(feature = "neon_intrinsics", since = "1.59.0")
36455)]
36456#[cfg_attr(
36457 target_arch = "arm",
36458 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36459)]
36460pub fn vqrdmulh_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x8_t) -> int16x4_t {
36461 static_assert_uimm_bits!(LANE, 3);
36462 unsafe {
36463 let b: int16x4_t =
36464 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
36465 vqrdmulh_s16(a, b)
36466 }
36467}
36468#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36469#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_laneq_s32)"]
36470#[inline(always)]
36471#[target_feature(enable = "neon")]
36472#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36473#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36474#[cfg_attr(
36475 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36476 assert_instr(sqrdmulh, LANE = 1)
36477)]
36478#[rustc_legacy_const_generics(2)]
36479#[cfg_attr(
36480 not(target_arch = "arm"),
36481 stable(feature = "neon_intrinsics", since = "1.59.0")
36482)]
36483#[cfg_attr(
36484 target_arch = "arm",
36485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36486)]
36487pub fn vqrdmulh_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x4_t) -> int32x2_t {
36488 static_assert_uimm_bits!(LANE, 2);
36489 unsafe {
36490 let b: int32x2_t = simd_shuffle!(b, b, [LANE as u32, LANE as u32]);
36491 vqrdmulh_s32(a, b)
36492 }
36493}
36494#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_lane_s16)"]
36496#[inline(always)]
36497#[target_feature(enable = "neon")]
36498#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36499#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36500#[cfg_attr(
36501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36502 assert_instr(sqrdmulh, LANE = 1)
36503)]
36504#[rustc_legacy_const_generics(2)]
36505#[cfg_attr(
36506 not(target_arch = "arm"),
36507 stable(feature = "neon_intrinsics", since = "1.59.0")
36508)]
36509#[cfg_attr(
36510 target_arch = "arm",
36511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36512)]
36513pub fn vqrdmulhq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x4_t) -> int16x8_t {
36514 static_assert_uimm_bits!(LANE, 2);
36515 unsafe {
36516 let b: int16x8_t = simd_shuffle!(
36517 b,
36518 b,
36519 [
36520 LANE as u32,
36521 LANE as u32,
36522 LANE as u32,
36523 LANE as u32,
36524 LANE as u32,
36525 LANE as u32,
36526 LANE as u32,
36527 LANE as u32
36528 ]
36529 );
36530 vqrdmulhq_s16(a, b)
36531 }
36532}
36533#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_lane_s32)"]
36535#[inline(always)]
36536#[target_feature(enable = "neon")]
36537#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36538#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36539#[cfg_attr(
36540 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36541 assert_instr(sqrdmulh, LANE = 1)
36542)]
36543#[rustc_legacy_const_generics(2)]
36544#[cfg_attr(
36545 not(target_arch = "arm"),
36546 stable(feature = "neon_intrinsics", since = "1.59.0")
36547)]
36548#[cfg_attr(
36549 target_arch = "arm",
36550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36551)]
36552pub fn vqrdmulhq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x2_t) -> int32x4_t {
36553 static_assert_uimm_bits!(LANE, 1);
36554 unsafe {
36555 let b: int32x4_t =
36556 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
36557 vqrdmulhq_s32(a, b)
36558 }
36559}
36560#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36561#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_laneq_s16)"]
36562#[inline(always)]
36563#[target_feature(enable = "neon")]
36564#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36565#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36566#[cfg_attr(
36567 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36568 assert_instr(sqrdmulh, LANE = 1)
36569)]
36570#[rustc_legacy_const_generics(2)]
36571#[cfg_attr(
36572 not(target_arch = "arm"),
36573 stable(feature = "neon_intrinsics", since = "1.59.0")
36574)]
36575#[cfg_attr(
36576 target_arch = "arm",
36577 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36578)]
36579pub fn vqrdmulhq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
36580 static_assert_uimm_bits!(LANE, 3);
36581 unsafe {
36582 let b: int16x8_t = simd_shuffle!(
36583 b,
36584 b,
36585 [
36586 LANE as u32,
36587 LANE as u32,
36588 LANE as u32,
36589 LANE as u32,
36590 LANE as u32,
36591 LANE as u32,
36592 LANE as u32,
36593 LANE as u32
36594 ]
36595 );
36596 vqrdmulhq_s16(a, b)
36597 }
36598}
36599#[doc = "Vector rounding saturating doubling multiply high by scalar"]
36600#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_laneq_s32)"]
36601#[inline(always)]
36602#[target_feature(enable = "neon")]
36603#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36604#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh, LANE = 1))]
36605#[cfg_attr(
36606 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36607 assert_instr(sqrdmulh, LANE = 1)
36608)]
36609#[rustc_legacy_const_generics(2)]
36610#[cfg_attr(
36611 not(target_arch = "arm"),
36612 stable(feature = "neon_intrinsics", since = "1.59.0")
36613)]
36614#[cfg_attr(
36615 target_arch = "arm",
36616 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36617)]
36618pub fn vqrdmulhq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
36619 static_assert_uimm_bits!(LANE, 2);
36620 unsafe {
36621 let b: int32x4_t =
36622 simd_shuffle!(b, b, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
36623 vqrdmulhq_s32(a, b)
36624 }
36625}
36626#[doc = "Vector saturating rounding doubling multiply high with scalar"]
36627#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_n_s16)"]
36628#[inline(always)]
36629#[target_feature(enable = "neon")]
36630#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36631#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36632#[cfg_attr(
36633 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36634 assert_instr(sqrdmulh)
36635)]
36636#[cfg_attr(
36637 not(target_arch = "arm"),
36638 stable(feature = "neon_intrinsics", since = "1.59.0")
36639)]
36640#[cfg_attr(
36641 target_arch = "arm",
36642 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36643)]
36644pub fn vqrdmulh_n_s16(a: int16x4_t, b: i16) -> int16x4_t {
36645 vqrdmulh_s16(a, vdup_n_s16(b))
36646}
36647#[doc = "Vector saturating rounding doubling multiply high with scalar"]
36648#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_n_s16)"]
36649#[inline(always)]
36650#[target_feature(enable = "neon")]
36651#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36652#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36653#[cfg_attr(
36654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36655 assert_instr(sqrdmulh)
36656)]
36657#[cfg_attr(
36658 not(target_arch = "arm"),
36659 stable(feature = "neon_intrinsics", since = "1.59.0")
36660)]
36661#[cfg_attr(
36662 target_arch = "arm",
36663 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36664)]
36665pub fn vqrdmulhq_n_s16(a: int16x8_t, b: i16) -> int16x8_t {
36666 vqrdmulhq_s16(a, vdupq_n_s16(b))
36667}
36668#[doc = "Vector saturating rounding doubling multiply high with scalar"]
36669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_n_s32)"]
36670#[inline(always)]
36671#[target_feature(enable = "neon")]
36672#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36673#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36674#[cfg_attr(
36675 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36676 assert_instr(sqrdmulh)
36677)]
36678#[cfg_attr(
36679 not(target_arch = "arm"),
36680 stable(feature = "neon_intrinsics", since = "1.59.0")
36681)]
36682#[cfg_attr(
36683 target_arch = "arm",
36684 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36685)]
36686pub fn vqrdmulh_n_s32(a: int32x2_t, b: i32) -> int32x2_t {
36687 vqrdmulh_s32(a, vdup_n_s32(b))
36688}
36689#[doc = "Vector saturating rounding doubling multiply high with scalar"]
36690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_n_s32)"]
36691#[inline(always)]
36692#[target_feature(enable = "neon")]
36693#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36694#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36695#[cfg_attr(
36696 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36697 assert_instr(sqrdmulh)
36698)]
36699#[cfg_attr(
36700 not(target_arch = "arm"),
36701 stable(feature = "neon_intrinsics", since = "1.59.0")
36702)]
36703#[cfg_attr(
36704 target_arch = "arm",
36705 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36706)]
36707pub fn vqrdmulhq_n_s32(a: int32x4_t, b: i32) -> int32x4_t {
36708 vqrdmulhq_s32(a, vdupq_n_s32(b))
36709}
36710#[doc = "Signed saturating rounding doubling multiply returning high half"]
36711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_s16)"]
36712#[inline(always)]
36713#[target_feature(enable = "neon")]
36714#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36715#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36716#[cfg_attr(
36717 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36718 assert_instr(sqrdmulh)
36719)]
36720#[cfg_attr(
36721 not(target_arch = "arm"),
36722 stable(feature = "neon_intrinsics", since = "1.59.0")
36723)]
36724#[cfg_attr(
36725 target_arch = "arm",
36726 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36727)]
36728pub fn vqrdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
36729 unsafe extern "unadjusted" {
36730 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v4i16")]
36731 #[cfg_attr(
36732 any(target_arch = "aarch64", target_arch = "arm64ec"),
36733 link_name = "llvm.aarch64.neon.sqrdmulh.v4i16"
36734 )]
36735 fn _vqrdmulh_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
36736 }
36737 unsafe { _vqrdmulh_s16(a, b) }
36738}
36739#[doc = "Signed saturating rounding doubling multiply returning high half"]
36740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_s16)"]
36741#[inline(always)]
36742#[target_feature(enable = "neon")]
36743#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36744#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36745#[cfg_attr(
36746 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36747 assert_instr(sqrdmulh)
36748)]
36749#[cfg_attr(
36750 not(target_arch = "arm"),
36751 stable(feature = "neon_intrinsics", since = "1.59.0")
36752)]
36753#[cfg_attr(
36754 target_arch = "arm",
36755 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36756)]
36757pub fn vqrdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
36758 unsafe extern "unadjusted" {
36759 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v8i16")]
36760 #[cfg_attr(
36761 any(target_arch = "aarch64", target_arch = "arm64ec"),
36762 link_name = "llvm.aarch64.neon.sqrdmulh.v8i16"
36763 )]
36764 fn _vqrdmulhq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
36765 }
36766 unsafe { _vqrdmulhq_s16(a, b) }
36767}
36768#[doc = "Signed saturating rounding doubling multiply returning high half"]
36769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulh_s32)"]
36770#[inline(always)]
36771#[target_feature(enable = "neon")]
36772#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36773#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36774#[cfg_attr(
36775 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36776 assert_instr(sqrdmulh)
36777)]
36778#[cfg_attr(
36779 not(target_arch = "arm"),
36780 stable(feature = "neon_intrinsics", since = "1.59.0")
36781)]
36782#[cfg_attr(
36783 target_arch = "arm",
36784 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36785)]
36786pub fn vqrdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
36787 unsafe extern "unadjusted" {
36788 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v2i32")]
36789 #[cfg_attr(
36790 any(target_arch = "aarch64", target_arch = "arm64ec"),
36791 link_name = "llvm.aarch64.neon.sqrdmulh.v2i32"
36792 )]
36793 fn _vqrdmulh_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
36794 }
36795 unsafe { _vqrdmulh_s32(a, b) }
36796}
36797#[doc = "Signed saturating rounding doubling multiply returning high half"]
36798#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrdmulhq_s32)"]
36799#[inline(always)]
36800#[target_feature(enable = "neon")]
36801#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36802#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrdmulh))]
36803#[cfg_attr(
36804 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36805 assert_instr(sqrdmulh)
36806)]
36807#[cfg_attr(
36808 not(target_arch = "arm"),
36809 stable(feature = "neon_intrinsics", since = "1.59.0")
36810)]
36811#[cfg_attr(
36812 target_arch = "arm",
36813 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36814)]
36815pub fn vqrdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
36816 unsafe extern "unadjusted" {
36817 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrdmulh.v4i32")]
36818 #[cfg_attr(
36819 any(target_arch = "aarch64", target_arch = "arm64ec"),
36820 link_name = "llvm.aarch64.neon.sqrdmulh.v4i32"
36821 )]
36822 fn _vqrdmulhq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
36823 }
36824 unsafe { _vqrdmulhq_s32(a, b) }
36825}
36826#[doc = "Signed saturating rounding shift left"]
36827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s8)"]
36828#[inline(always)]
36829#[target_feature(enable = "neon")]
36830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36831#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
36832#[cfg_attr(
36833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36834 assert_instr(sqrshl)
36835)]
36836#[cfg_attr(
36837 not(target_arch = "arm"),
36838 stable(feature = "neon_intrinsics", since = "1.59.0")
36839)]
36840#[cfg_attr(
36841 target_arch = "arm",
36842 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36843)]
36844pub fn vqrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
36845 unsafe extern "unadjusted" {
36846 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v8i8")]
36847 #[cfg_attr(
36848 any(target_arch = "aarch64", target_arch = "arm64ec"),
36849 link_name = "llvm.aarch64.neon.sqrshl.v8i8"
36850 )]
36851 fn _vqrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
36852 }
36853 unsafe { _vqrshl_s8(a, b) }
36854}
36855#[doc = "Signed saturating rounding shift left"]
36856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s8)"]
36857#[inline(always)]
36858#[target_feature(enable = "neon")]
36859#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36860#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
36861#[cfg_attr(
36862 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36863 assert_instr(sqrshl)
36864)]
36865#[cfg_attr(
36866 not(target_arch = "arm"),
36867 stable(feature = "neon_intrinsics", since = "1.59.0")
36868)]
36869#[cfg_attr(
36870 target_arch = "arm",
36871 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36872)]
36873pub fn vqrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
36874 unsafe extern "unadjusted" {
36875 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v16i8")]
36876 #[cfg_attr(
36877 any(target_arch = "aarch64", target_arch = "arm64ec"),
36878 link_name = "llvm.aarch64.neon.sqrshl.v16i8"
36879 )]
36880 fn _vqrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
36881 }
36882 unsafe { _vqrshlq_s8(a, b) }
36883}
36884#[doc = "Signed saturating rounding shift left"]
36885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s16)"]
36886#[inline(always)]
36887#[target_feature(enable = "neon")]
36888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
36890#[cfg_attr(
36891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36892 assert_instr(sqrshl)
36893)]
36894#[cfg_attr(
36895 not(target_arch = "arm"),
36896 stable(feature = "neon_intrinsics", since = "1.59.0")
36897)]
36898#[cfg_attr(
36899 target_arch = "arm",
36900 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36901)]
36902pub fn vqrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
36903 unsafe extern "unadjusted" {
36904 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v4i16")]
36905 #[cfg_attr(
36906 any(target_arch = "aarch64", target_arch = "arm64ec"),
36907 link_name = "llvm.aarch64.neon.sqrshl.v4i16"
36908 )]
36909 fn _vqrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
36910 }
36911 unsafe { _vqrshl_s16(a, b) }
36912}
36913#[doc = "Signed saturating rounding shift left"]
36914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s16)"]
36915#[inline(always)]
36916#[target_feature(enable = "neon")]
36917#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36918#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
36919#[cfg_attr(
36920 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36921 assert_instr(sqrshl)
36922)]
36923#[cfg_attr(
36924 not(target_arch = "arm"),
36925 stable(feature = "neon_intrinsics", since = "1.59.0")
36926)]
36927#[cfg_attr(
36928 target_arch = "arm",
36929 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36930)]
36931pub fn vqrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
36932 unsafe extern "unadjusted" {
36933 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v8i16")]
36934 #[cfg_attr(
36935 any(target_arch = "aarch64", target_arch = "arm64ec"),
36936 link_name = "llvm.aarch64.neon.sqrshl.v8i16"
36937 )]
36938 fn _vqrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
36939 }
36940 unsafe { _vqrshlq_s16(a, b) }
36941}
36942#[doc = "Signed saturating rounding shift left"]
36943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s32)"]
36944#[inline(always)]
36945#[target_feature(enable = "neon")]
36946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36947#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
36948#[cfg_attr(
36949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36950 assert_instr(sqrshl)
36951)]
36952#[cfg_attr(
36953 not(target_arch = "arm"),
36954 stable(feature = "neon_intrinsics", since = "1.59.0")
36955)]
36956#[cfg_attr(
36957 target_arch = "arm",
36958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36959)]
36960pub fn vqrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
36961 unsafe extern "unadjusted" {
36962 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v2i32")]
36963 #[cfg_attr(
36964 any(target_arch = "aarch64", target_arch = "arm64ec"),
36965 link_name = "llvm.aarch64.neon.sqrshl.v2i32"
36966 )]
36967 fn _vqrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
36968 }
36969 unsafe { _vqrshl_s32(a, b) }
36970}
36971#[doc = "Signed saturating rounding shift left"]
36972#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s32)"]
36973#[inline(always)]
36974#[target_feature(enable = "neon")]
36975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
36976#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
36977#[cfg_attr(
36978 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
36979 assert_instr(sqrshl)
36980)]
36981#[cfg_attr(
36982 not(target_arch = "arm"),
36983 stable(feature = "neon_intrinsics", since = "1.59.0")
36984)]
36985#[cfg_attr(
36986 target_arch = "arm",
36987 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
36988)]
36989pub fn vqrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
36990 unsafe extern "unadjusted" {
36991 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v4i32")]
36992 #[cfg_attr(
36993 any(target_arch = "aarch64", target_arch = "arm64ec"),
36994 link_name = "llvm.aarch64.neon.sqrshl.v4i32"
36995 )]
36996 fn _vqrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
36997 }
36998 unsafe { _vqrshlq_s32(a, b) }
36999}
37000#[doc = "Signed saturating rounding shift left"]
37001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_s64)"]
37002#[inline(always)]
37003#[target_feature(enable = "neon")]
37004#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37005#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37006#[cfg_attr(
37007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37008 assert_instr(sqrshl)
37009)]
37010#[cfg_attr(
37011 not(target_arch = "arm"),
37012 stable(feature = "neon_intrinsics", since = "1.59.0")
37013)]
37014#[cfg_attr(
37015 target_arch = "arm",
37016 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37017)]
37018pub fn vqrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
37019 unsafe extern "unadjusted" {
37020 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v1i64")]
37021 #[cfg_attr(
37022 any(target_arch = "aarch64", target_arch = "arm64ec"),
37023 link_name = "llvm.aarch64.neon.sqrshl.v1i64"
37024 )]
37025 fn _vqrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
37026 }
37027 unsafe { _vqrshl_s64(a, b) }
37028}
37029#[doc = "Signed saturating rounding shift left"]
37030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_s64)"]
37031#[inline(always)]
37032#[target_feature(enable = "neon")]
37033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37034#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37035#[cfg_attr(
37036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37037 assert_instr(sqrshl)
37038)]
37039#[cfg_attr(
37040 not(target_arch = "arm"),
37041 stable(feature = "neon_intrinsics", since = "1.59.0")
37042)]
37043#[cfg_attr(
37044 target_arch = "arm",
37045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37046)]
37047pub fn vqrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
37048 unsafe extern "unadjusted" {
37049 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshifts.v2i64")]
37050 #[cfg_attr(
37051 any(target_arch = "aarch64", target_arch = "arm64ec"),
37052 link_name = "llvm.aarch64.neon.sqrshl.v2i64"
37053 )]
37054 fn _vqrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
37055 }
37056 unsafe { _vqrshlq_s64(a, b) }
37057}
37058#[doc = "Unsigned signed saturating rounding shift left"]
37059#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u8)"]
37060#[inline(always)]
37061#[target_feature(enable = "neon")]
37062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37063#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37064#[cfg_attr(
37065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37066 assert_instr(uqrshl)
37067)]
37068#[cfg_attr(
37069 not(target_arch = "arm"),
37070 stable(feature = "neon_intrinsics", since = "1.59.0")
37071)]
37072#[cfg_attr(
37073 target_arch = "arm",
37074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37075)]
37076pub fn vqrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
37077 unsafe extern "unadjusted" {
37078 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v8i8")]
37079 #[cfg_attr(
37080 any(target_arch = "aarch64", target_arch = "arm64ec"),
37081 link_name = "llvm.aarch64.neon.uqrshl.v8i8"
37082 )]
37083 fn _vqrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
37084 }
37085 unsafe { _vqrshl_u8(a, b) }
37086}
37087#[doc = "Unsigned signed saturating rounding shift left"]
37088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u8)"]
37089#[inline(always)]
37090#[target_feature(enable = "neon")]
37091#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37092#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37093#[cfg_attr(
37094 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37095 assert_instr(uqrshl)
37096)]
37097#[cfg_attr(
37098 not(target_arch = "arm"),
37099 stable(feature = "neon_intrinsics", since = "1.59.0")
37100)]
37101#[cfg_attr(
37102 target_arch = "arm",
37103 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37104)]
37105pub fn vqrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
37106 unsafe extern "unadjusted" {
37107 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v16i8")]
37108 #[cfg_attr(
37109 any(target_arch = "aarch64", target_arch = "arm64ec"),
37110 link_name = "llvm.aarch64.neon.uqrshl.v16i8"
37111 )]
37112 fn _vqrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
37113 }
37114 unsafe { _vqrshlq_u8(a, b) }
37115}
37116#[doc = "Unsigned signed saturating rounding shift left"]
37117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u16)"]
37118#[inline(always)]
37119#[target_feature(enable = "neon")]
37120#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37121#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37122#[cfg_attr(
37123 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37124 assert_instr(uqrshl)
37125)]
37126#[cfg_attr(
37127 not(target_arch = "arm"),
37128 stable(feature = "neon_intrinsics", since = "1.59.0")
37129)]
37130#[cfg_attr(
37131 target_arch = "arm",
37132 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37133)]
37134pub fn vqrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
37135 unsafe extern "unadjusted" {
37136 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v4i16")]
37137 #[cfg_attr(
37138 any(target_arch = "aarch64", target_arch = "arm64ec"),
37139 link_name = "llvm.aarch64.neon.uqrshl.v4i16"
37140 )]
37141 fn _vqrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
37142 }
37143 unsafe { _vqrshl_u16(a, b) }
37144}
37145#[doc = "Unsigned signed saturating rounding shift left"]
37146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u16)"]
37147#[inline(always)]
37148#[target_feature(enable = "neon")]
37149#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37150#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37151#[cfg_attr(
37152 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37153 assert_instr(uqrshl)
37154)]
37155#[cfg_attr(
37156 not(target_arch = "arm"),
37157 stable(feature = "neon_intrinsics", since = "1.59.0")
37158)]
37159#[cfg_attr(
37160 target_arch = "arm",
37161 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37162)]
37163pub fn vqrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
37164 unsafe extern "unadjusted" {
37165 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v8i16")]
37166 #[cfg_attr(
37167 any(target_arch = "aarch64", target_arch = "arm64ec"),
37168 link_name = "llvm.aarch64.neon.uqrshl.v8i16"
37169 )]
37170 fn _vqrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
37171 }
37172 unsafe { _vqrshlq_u16(a, b) }
37173}
37174#[doc = "Unsigned signed saturating rounding shift left"]
37175#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u32)"]
37176#[inline(always)]
37177#[target_feature(enable = "neon")]
37178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37179#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37180#[cfg_attr(
37181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37182 assert_instr(uqrshl)
37183)]
37184#[cfg_attr(
37185 not(target_arch = "arm"),
37186 stable(feature = "neon_intrinsics", since = "1.59.0")
37187)]
37188#[cfg_attr(
37189 target_arch = "arm",
37190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37191)]
37192pub fn vqrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
37193 unsafe extern "unadjusted" {
37194 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v2i32")]
37195 #[cfg_attr(
37196 any(target_arch = "aarch64", target_arch = "arm64ec"),
37197 link_name = "llvm.aarch64.neon.uqrshl.v2i32"
37198 )]
37199 fn _vqrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
37200 }
37201 unsafe { _vqrshl_u32(a, b) }
37202}
37203#[doc = "Unsigned signed saturating rounding shift left"]
37204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u32)"]
37205#[inline(always)]
37206#[target_feature(enable = "neon")]
37207#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37208#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37209#[cfg_attr(
37210 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37211 assert_instr(uqrshl)
37212)]
37213#[cfg_attr(
37214 not(target_arch = "arm"),
37215 stable(feature = "neon_intrinsics", since = "1.59.0")
37216)]
37217#[cfg_attr(
37218 target_arch = "arm",
37219 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37220)]
37221pub fn vqrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
37222 unsafe extern "unadjusted" {
37223 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v4i32")]
37224 #[cfg_attr(
37225 any(target_arch = "aarch64", target_arch = "arm64ec"),
37226 link_name = "llvm.aarch64.neon.uqrshl.v4i32"
37227 )]
37228 fn _vqrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
37229 }
37230 unsafe { _vqrshlq_u32(a, b) }
37231}
37232#[doc = "Unsigned signed saturating rounding shift left"]
37233#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshl_u64)"]
37234#[inline(always)]
37235#[target_feature(enable = "neon")]
37236#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37237#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37238#[cfg_attr(
37239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37240 assert_instr(uqrshl)
37241)]
37242#[cfg_attr(
37243 not(target_arch = "arm"),
37244 stable(feature = "neon_intrinsics", since = "1.59.0")
37245)]
37246#[cfg_attr(
37247 target_arch = "arm",
37248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37249)]
37250pub fn vqrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
37251 unsafe extern "unadjusted" {
37252 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v1i64")]
37253 #[cfg_attr(
37254 any(target_arch = "aarch64", target_arch = "arm64ec"),
37255 link_name = "llvm.aarch64.neon.uqrshl.v1i64"
37256 )]
37257 fn _vqrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
37258 }
37259 unsafe { _vqrshl_u64(a, b) }
37260}
37261#[doc = "Unsigned signed saturating rounding shift left"]
37262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshlq_u64)"]
37263#[inline(always)]
37264#[target_feature(enable = "neon")]
37265#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37266#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqrshl))]
37267#[cfg_attr(
37268 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37269 assert_instr(uqrshl)
37270)]
37271#[cfg_attr(
37272 not(target_arch = "arm"),
37273 stable(feature = "neon_intrinsics", since = "1.59.0")
37274)]
37275#[cfg_attr(
37276 target_arch = "arm",
37277 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37278)]
37279pub fn vqrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
37280 unsafe extern "unadjusted" {
37281 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftu.v2i64")]
37282 #[cfg_attr(
37283 any(target_arch = "aarch64", target_arch = "arm64ec"),
37284 link_name = "llvm.aarch64.neon.uqrshl.v2i64"
37285 )]
37286 fn _vqrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
37287 }
37288 unsafe { _vqrshlq_u64(a, b) }
37289}
37290#[doc = "Signed saturating rounded shift right narrow"]
37291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]
37292#[inline(always)]
37293#[cfg(target_arch = "arm")]
37294#[target_feature(enable = "neon,v7")]
37295#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37296#[rustc_legacy_const_generics(1)]
37297#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37298pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
37299 static_assert!(N >= 1 && N <= 8);
37300 unsafe extern "unadjusted" {
37301 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v8i8")]
37302 fn _vqrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
37303 }
37304 unsafe { _vqrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
37305}
37306#[doc = "Signed saturating rounded shift right narrow"]
37307#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]
37308#[inline(always)]
37309#[cfg(target_arch = "arm")]
37310#[target_feature(enable = "neon,v7")]
37311#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37312#[rustc_legacy_const_generics(1)]
37313#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37314pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
37315 static_assert!(N >= 1 && N <= 16);
37316 unsafe extern "unadjusted" {
37317 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v4i16")]
37318 fn _vqrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
37319 }
37320 unsafe { _vqrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
37321}
37322#[doc = "Signed saturating rounded shift right narrow"]
37323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]
37324#[inline(always)]
37325#[cfg(target_arch = "arm")]
37326#[target_feature(enable = "neon,v7")]
37327#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37328#[rustc_legacy_const_generics(1)]
37329#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37330pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
37331 static_assert!(N >= 1 && N <= 32);
37332 unsafe extern "unadjusted" {
37333 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v2i32")]
37334 fn _vqrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
37335 }
37336 unsafe { _vqrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
37337}
37338#[doc = "Signed saturating rounded shift right narrow"]
37339#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]
37340#[inline(always)]
37341#[target_feature(enable = "neon")]
37342#[cfg(not(target_arch = "arm"))]
37343#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
37344#[rustc_legacy_const_generics(1)]
37345#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37346pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
37347 static_assert!(N >= 1 && N <= 8);
37348 unsafe extern "unadjusted" {
37349 #[cfg_attr(
37350 any(target_arch = "aarch64", target_arch = "arm64ec"),
37351 link_name = "llvm.aarch64.neon.sqrshrn.v8i8"
37352 )]
37353 fn _vqrshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
37354 }
37355 unsafe { _vqrshrn_n_s16(a, N) }
37356}
37357#[doc = "Signed saturating rounded shift right narrow"]
37358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]
37359#[inline(always)]
37360#[target_feature(enable = "neon")]
37361#[cfg(not(target_arch = "arm"))]
37362#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
37363#[rustc_legacy_const_generics(1)]
37364#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37365pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
37366 static_assert!(N >= 1 && N <= 16);
37367 unsafe extern "unadjusted" {
37368 #[cfg_attr(
37369 any(target_arch = "aarch64", target_arch = "arm64ec"),
37370 link_name = "llvm.aarch64.neon.sqrshrn.v4i16"
37371 )]
37372 fn _vqrshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
37373 }
37374 unsafe { _vqrshrn_n_s32(a, N) }
37375}
37376#[doc = "Signed saturating rounded shift right narrow"]
37377#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]
37378#[inline(always)]
37379#[target_feature(enable = "neon")]
37380#[cfg(not(target_arch = "arm"))]
37381#[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
37382#[rustc_legacy_const_generics(1)]
37383#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37384pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
37385 static_assert!(N >= 1 && N <= 32);
37386 unsafe extern "unadjusted" {
37387 #[cfg_attr(
37388 any(target_arch = "aarch64", target_arch = "arm64ec"),
37389 link_name = "llvm.aarch64.neon.sqrshrn.v2i32"
37390 )]
37391 fn _vqrshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
37392 }
37393 unsafe { _vqrshrn_n_s64(a, N) }
37394}
37395#[doc = "Unsigned signed saturating rounded shift right narrow"]
37396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u16)"]
37397#[inline(always)]
37398#[cfg(target_arch = "arm")]
37399#[target_feature(enable = "neon,v7")]
37400#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37401#[rustc_legacy_const_generics(1)]
37402#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37403pub fn vqrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
37404 static_assert!(N >= 1 && N <= 8);
37405 unsafe extern "unadjusted" {
37406 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v8i8")]
37407 fn _vqrshrn_n_u16(a: uint16x8_t, n: uint16x8_t) -> uint8x8_t;
37408 }
37409 unsafe { _vqrshrn_n_u16(a, const { uint16x8_t([-N as u16; 8]) }) }
37410}
37411#[doc = "Unsigned signed saturating rounded shift right narrow"]
37412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u32)"]
37413#[inline(always)]
37414#[cfg(target_arch = "arm")]
37415#[target_feature(enable = "neon,v7")]
37416#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37417#[rustc_legacy_const_generics(1)]
37418#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37419pub fn vqrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
37420 static_assert!(N >= 1 && N <= 16);
37421 unsafe extern "unadjusted" {
37422 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v4i16")]
37423 fn _vqrshrn_n_u32(a: uint32x4_t, n: uint32x4_t) -> uint16x4_t;
37424 }
37425 unsafe { _vqrshrn_n_u32(a, const { uint32x4_t([-N as u32; 4]) }) }
37426}
37427#[doc = "Unsigned signed saturating rounded shift right narrow"]
37428#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u64)"]
37429#[inline(always)]
37430#[cfg(target_arch = "arm")]
37431#[target_feature(enable = "neon,v7")]
37432#[cfg_attr(test, assert_instr(vqrshrn, N = 2))]
37433#[rustc_legacy_const_generics(1)]
37434#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37435pub fn vqrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
37436 static_assert!(N >= 1 && N <= 32);
37437 unsafe extern "unadjusted" {
37438 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnu.v2i32")]
37439 fn _vqrshrn_n_u64(a: uint64x2_t, n: uint64x2_t) -> uint32x2_t;
37440 }
37441 unsafe { _vqrshrn_n_u64(a, const { uint64x2_t([-N as u64; 2]) }) }
37442}
37443#[doc = "Unsigned signed saturating rounded shift right narrow"]
37444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u16)"]
37445#[inline(always)]
37446#[target_feature(enable = "neon")]
37447#[cfg(not(target_arch = "arm"))]
37448#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
37449#[rustc_legacy_const_generics(1)]
37450#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37451pub fn vqrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
37452 static_assert!(N >= 1 && N <= 8);
37453 unsafe extern "unadjusted" {
37454 #[cfg_attr(
37455 any(target_arch = "aarch64", target_arch = "arm64ec"),
37456 link_name = "llvm.aarch64.neon.uqrshrn.v8i8"
37457 )]
37458 fn _vqrshrn_n_u16(a: uint16x8_t, n: i32) -> uint8x8_t;
37459 }
37460 unsafe { _vqrshrn_n_u16(a, N) }
37461}
37462#[doc = "Unsigned signed saturating rounded shift right narrow"]
37463#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u32)"]
37464#[inline(always)]
37465#[target_feature(enable = "neon")]
37466#[cfg(not(target_arch = "arm"))]
37467#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
37468#[rustc_legacy_const_generics(1)]
37469#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37470pub fn vqrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
37471 static_assert!(N >= 1 && N <= 16);
37472 unsafe extern "unadjusted" {
37473 #[cfg_attr(
37474 any(target_arch = "aarch64", target_arch = "arm64ec"),
37475 link_name = "llvm.aarch64.neon.uqrshrn.v4i16"
37476 )]
37477 fn _vqrshrn_n_u32(a: uint32x4_t, n: i32) -> uint16x4_t;
37478 }
37479 unsafe { _vqrshrn_n_u32(a, N) }
37480}
37481#[doc = "Unsigned signed saturating rounded shift right narrow"]
37482#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_u64)"]
37483#[inline(always)]
37484#[target_feature(enable = "neon")]
37485#[cfg(not(target_arch = "arm"))]
37486#[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
37487#[rustc_legacy_const_generics(1)]
37488#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37489pub fn vqrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
37490 static_assert!(N >= 1 && N <= 32);
37491 unsafe extern "unadjusted" {
37492 #[cfg_attr(
37493 any(target_arch = "aarch64", target_arch = "arm64ec"),
37494 link_name = "llvm.aarch64.neon.uqrshrn.v2i32"
37495 )]
37496 fn _vqrshrn_n_u64(a: uint64x2_t, n: i32) -> uint32x2_t;
37497 }
37498 unsafe { _vqrshrn_n_u64(a, N) }
37499}
37500#[doc = "Signed saturating rounded shift right unsigned narrow"]
37501#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]
37502#[inline(always)]
37503#[cfg(target_arch = "arm")]
37504#[target_feature(enable = "neon,v7")]
37505#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
37506#[rustc_legacy_const_generics(1)]
37507#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37508pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
37509 static_assert!(N >= 1 && N <= 8);
37510 unsafe extern "unadjusted" {
37511 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v8i8")]
37512 fn _vqrshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
37513 }
37514 unsafe { _vqrshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
37515}
37516#[doc = "Signed saturating rounded shift right unsigned narrow"]
37517#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]
37518#[inline(always)]
37519#[cfg(target_arch = "arm")]
37520#[target_feature(enable = "neon,v7")]
37521#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
37522#[rustc_legacy_const_generics(1)]
37523#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37524pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
37525 static_assert!(N >= 1 && N <= 16);
37526 unsafe extern "unadjusted" {
37527 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v4i16")]
37528 fn _vqrshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
37529 }
37530 unsafe { _vqrshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
37531}
37532#[doc = "Signed saturating rounded shift right unsigned narrow"]
37533#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]
37534#[inline(always)]
37535#[cfg(target_arch = "arm")]
37536#[target_feature(enable = "neon,v7")]
37537#[cfg_attr(test, assert_instr(vqrshrun, N = 2))]
37538#[rustc_legacy_const_generics(1)]
37539#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
37540pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
37541 static_assert!(N >= 1 && N <= 32);
37542 unsafe extern "unadjusted" {
37543 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v2i32")]
37544 fn _vqrshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
37545 }
37546 unsafe { _vqrshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
37547}
37548#[doc = "Signed saturating rounded shift right unsigned narrow"]
37549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]
37550#[inline(always)]
37551#[target_feature(enable = "neon")]
37552#[cfg(not(target_arch = "arm"))]
37553#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
37554#[rustc_legacy_const_generics(1)]
37555#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37556pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
37557 static_assert!(N >= 1 && N <= 8);
37558 unsafe extern "unadjusted" {
37559 #[cfg_attr(
37560 any(target_arch = "aarch64", target_arch = "arm64ec"),
37561 link_name = "llvm.aarch64.neon.sqrshrun.v8i8"
37562 )]
37563 fn _vqrshrun_n_s16(a: int16x8_t, n: i32) -> uint8x8_t;
37564 }
37565 unsafe { _vqrshrun_n_s16(a, N) }
37566}
37567#[doc = "Signed saturating rounded shift right unsigned narrow"]
37568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]
37569#[inline(always)]
37570#[target_feature(enable = "neon")]
37571#[cfg(not(target_arch = "arm"))]
37572#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
37573#[rustc_legacy_const_generics(1)]
37574#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37575pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
37576 static_assert!(N >= 1 && N <= 16);
37577 unsafe extern "unadjusted" {
37578 #[cfg_attr(
37579 any(target_arch = "aarch64", target_arch = "arm64ec"),
37580 link_name = "llvm.aarch64.neon.sqrshrun.v4i16"
37581 )]
37582 fn _vqrshrun_n_s32(a: int32x4_t, n: i32) -> uint16x4_t;
37583 }
37584 unsafe { _vqrshrun_n_s32(a, N) }
37585}
37586#[doc = "Signed saturating rounded shift right unsigned narrow"]
37587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]
37588#[inline(always)]
37589#[target_feature(enable = "neon")]
37590#[cfg(not(target_arch = "arm"))]
37591#[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
37592#[rustc_legacy_const_generics(1)]
37593#[stable(feature = "neon_intrinsics", since = "1.59.0")]
37594pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
37595 static_assert!(N >= 1 && N <= 32);
37596 unsafe extern "unadjusted" {
37597 #[cfg_attr(
37598 any(target_arch = "aarch64", target_arch = "arm64ec"),
37599 link_name = "llvm.aarch64.neon.sqrshrun.v2i32"
37600 )]
37601 fn _vqrshrun_n_s64(a: int64x2_t, n: i32) -> uint32x2_t;
37602 }
37603 unsafe { _vqrshrun_n_s64(a, N) }
37604}
37605#[doc = "Signed saturating shift left"]
37606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s8)"]
37607#[inline(always)]
37608#[target_feature(enable = "neon")]
37609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37611#[cfg_attr(
37612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37613 assert_instr(sqshl, N = 2)
37614)]
37615#[rustc_legacy_const_generics(1)]
37616#[cfg_attr(
37617 not(target_arch = "arm"),
37618 stable(feature = "neon_intrinsics", since = "1.59.0")
37619)]
37620#[cfg_attr(
37621 target_arch = "arm",
37622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37623)]
37624pub fn vqshl_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
37625 static_assert_uimm_bits!(N, 3);
37626 vqshl_s8(a, vdup_n_s8(N as _))
37627}
37628#[doc = "Signed saturating shift left"]
37629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s8)"]
37630#[inline(always)]
37631#[target_feature(enable = "neon")]
37632#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37633#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37634#[cfg_attr(
37635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37636 assert_instr(sqshl, N = 2)
37637)]
37638#[rustc_legacy_const_generics(1)]
37639#[cfg_attr(
37640 not(target_arch = "arm"),
37641 stable(feature = "neon_intrinsics", since = "1.59.0")
37642)]
37643#[cfg_attr(
37644 target_arch = "arm",
37645 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37646)]
37647pub fn vqshlq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
37648 static_assert_uimm_bits!(N, 3);
37649 vqshlq_s8(a, vdupq_n_s8(N as _))
37650}
37651#[doc = "Signed saturating shift left"]
37652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s16)"]
37653#[inline(always)]
37654#[target_feature(enable = "neon")]
37655#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37656#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37657#[cfg_attr(
37658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37659 assert_instr(sqshl, N = 2)
37660)]
37661#[rustc_legacy_const_generics(1)]
37662#[cfg_attr(
37663 not(target_arch = "arm"),
37664 stable(feature = "neon_intrinsics", since = "1.59.0")
37665)]
37666#[cfg_attr(
37667 target_arch = "arm",
37668 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37669)]
37670pub fn vqshl_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
37671 static_assert_uimm_bits!(N, 4);
37672 vqshl_s16(a, vdup_n_s16(N as _))
37673}
37674#[doc = "Signed saturating shift left"]
37675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s16)"]
37676#[inline(always)]
37677#[target_feature(enable = "neon")]
37678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37679#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37680#[cfg_attr(
37681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37682 assert_instr(sqshl, N = 2)
37683)]
37684#[rustc_legacy_const_generics(1)]
37685#[cfg_attr(
37686 not(target_arch = "arm"),
37687 stable(feature = "neon_intrinsics", since = "1.59.0")
37688)]
37689#[cfg_attr(
37690 target_arch = "arm",
37691 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37692)]
37693pub fn vqshlq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
37694 static_assert_uimm_bits!(N, 4);
37695 vqshlq_s16(a, vdupq_n_s16(N as _))
37696}
37697#[doc = "Signed saturating shift left"]
37698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s32)"]
37699#[inline(always)]
37700#[target_feature(enable = "neon")]
37701#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37702#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37703#[cfg_attr(
37704 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37705 assert_instr(sqshl, N = 2)
37706)]
37707#[rustc_legacy_const_generics(1)]
37708#[cfg_attr(
37709 not(target_arch = "arm"),
37710 stable(feature = "neon_intrinsics", since = "1.59.0")
37711)]
37712#[cfg_attr(
37713 target_arch = "arm",
37714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37715)]
37716pub fn vqshl_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
37717 static_assert_uimm_bits!(N, 5);
37718 vqshl_s32(a, vdup_n_s32(N as _))
37719}
37720#[doc = "Signed saturating shift left"]
37721#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s32)"]
37722#[inline(always)]
37723#[target_feature(enable = "neon")]
37724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37726#[cfg_attr(
37727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37728 assert_instr(sqshl, N = 2)
37729)]
37730#[rustc_legacy_const_generics(1)]
37731#[cfg_attr(
37732 not(target_arch = "arm"),
37733 stable(feature = "neon_intrinsics", since = "1.59.0")
37734)]
37735#[cfg_attr(
37736 target_arch = "arm",
37737 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37738)]
37739pub fn vqshlq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
37740 static_assert_uimm_bits!(N, 5);
37741 vqshlq_s32(a, vdupq_n_s32(N as _))
37742}
37743#[doc = "Signed saturating shift left"]
37744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_s64)"]
37745#[inline(always)]
37746#[target_feature(enable = "neon")]
37747#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37748#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37749#[cfg_attr(
37750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37751 assert_instr(sqshl, N = 2)
37752)]
37753#[rustc_legacy_const_generics(1)]
37754#[cfg_attr(
37755 not(target_arch = "arm"),
37756 stable(feature = "neon_intrinsics", since = "1.59.0")
37757)]
37758#[cfg_attr(
37759 target_arch = "arm",
37760 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37761)]
37762pub fn vqshl_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
37763 static_assert_uimm_bits!(N, 6);
37764 vqshl_s64(a, vdup_n_s64(N as _))
37765}
37766#[doc = "Signed saturating shift left"]
37767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_s64)"]
37768#[inline(always)]
37769#[target_feature(enable = "neon")]
37770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37772#[cfg_attr(
37773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37774 assert_instr(sqshl, N = 2)
37775)]
37776#[rustc_legacy_const_generics(1)]
37777#[cfg_attr(
37778 not(target_arch = "arm"),
37779 stable(feature = "neon_intrinsics", since = "1.59.0")
37780)]
37781#[cfg_attr(
37782 target_arch = "arm",
37783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37784)]
37785pub fn vqshlq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
37786 static_assert_uimm_bits!(N, 6);
37787 vqshlq_s64(a, vdupq_n_s64(N as _))
37788}
37789#[doc = "Unsigned saturating shift left"]
37790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u8)"]
37791#[inline(always)]
37792#[target_feature(enable = "neon")]
37793#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37794#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37795#[cfg_attr(
37796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37797 assert_instr(uqshl, N = 2)
37798)]
37799#[rustc_legacy_const_generics(1)]
37800#[cfg_attr(
37801 not(target_arch = "arm"),
37802 stable(feature = "neon_intrinsics", since = "1.59.0")
37803)]
37804#[cfg_attr(
37805 target_arch = "arm",
37806 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37807)]
37808pub fn vqshl_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
37809 static_assert_uimm_bits!(N, 3);
37810 vqshl_u8(a, vdup_n_s8(N as _))
37811}
37812#[doc = "Unsigned saturating shift left"]
37813#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u8)"]
37814#[inline(always)]
37815#[target_feature(enable = "neon")]
37816#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37817#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37818#[cfg_attr(
37819 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37820 assert_instr(uqshl, N = 2)
37821)]
37822#[rustc_legacy_const_generics(1)]
37823#[cfg_attr(
37824 not(target_arch = "arm"),
37825 stable(feature = "neon_intrinsics", since = "1.59.0")
37826)]
37827#[cfg_attr(
37828 target_arch = "arm",
37829 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37830)]
37831pub fn vqshlq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
37832 static_assert_uimm_bits!(N, 3);
37833 vqshlq_u8(a, vdupq_n_s8(N as _))
37834}
37835#[doc = "Unsigned saturating shift left"]
37836#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u16)"]
37837#[inline(always)]
37838#[target_feature(enable = "neon")]
37839#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37840#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37841#[cfg_attr(
37842 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37843 assert_instr(uqshl, N = 2)
37844)]
37845#[rustc_legacy_const_generics(1)]
37846#[cfg_attr(
37847 not(target_arch = "arm"),
37848 stable(feature = "neon_intrinsics", since = "1.59.0")
37849)]
37850#[cfg_attr(
37851 target_arch = "arm",
37852 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37853)]
37854pub fn vqshl_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
37855 static_assert_uimm_bits!(N, 4);
37856 vqshl_u16(a, vdup_n_s16(N as _))
37857}
37858#[doc = "Unsigned saturating shift left"]
37859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u16)"]
37860#[inline(always)]
37861#[target_feature(enable = "neon")]
37862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37863#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37864#[cfg_attr(
37865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37866 assert_instr(uqshl, N = 2)
37867)]
37868#[rustc_legacy_const_generics(1)]
37869#[cfg_attr(
37870 not(target_arch = "arm"),
37871 stable(feature = "neon_intrinsics", since = "1.59.0")
37872)]
37873#[cfg_attr(
37874 target_arch = "arm",
37875 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37876)]
37877pub fn vqshlq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
37878 static_assert_uimm_bits!(N, 4);
37879 vqshlq_u16(a, vdupq_n_s16(N as _))
37880}
37881#[doc = "Unsigned saturating shift left"]
37882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u32)"]
37883#[inline(always)]
37884#[target_feature(enable = "neon")]
37885#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37886#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37887#[cfg_attr(
37888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37889 assert_instr(uqshl, N = 2)
37890)]
37891#[rustc_legacy_const_generics(1)]
37892#[cfg_attr(
37893 not(target_arch = "arm"),
37894 stable(feature = "neon_intrinsics", since = "1.59.0")
37895)]
37896#[cfg_attr(
37897 target_arch = "arm",
37898 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37899)]
37900pub fn vqshl_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
37901 static_assert_uimm_bits!(N, 5);
37902 vqshl_u32(a, vdup_n_s32(N as _))
37903}
37904#[doc = "Unsigned saturating shift left"]
37905#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u32)"]
37906#[inline(always)]
37907#[target_feature(enable = "neon")]
37908#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37909#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37910#[cfg_attr(
37911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37912 assert_instr(uqshl, N = 2)
37913)]
37914#[rustc_legacy_const_generics(1)]
37915#[cfg_attr(
37916 not(target_arch = "arm"),
37917 stable(feature = "neon_intrinsics", since = "1.59.0")
37918)]
37919#[cfg_attr(
37920 target_arch = "arm",
37921 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37922)]
37923pub fn vqshlq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
37924 static_assert_uimm_bits!(N, 5);
37925 vqshlq_u32(a, vdupq_n_s32(N as _))
37926}
37927#[doc = "Unsigned saturating shift left"]
37928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_n_u64)"]
37929#[inline(always)]
37930#[target_feature(enable = "neon")]
37931#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37932#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37933#[cfg_attr(
37934 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37935 assert_instr(uqshl, N = 2)
37936)]
37937#[rustc_legacy_const_generics(1)]
37938#[cfg_attr(
37939 not(target_arch = "arm"),
37940 stable(feature = "neon_intrinsics", since = "1.59.0")
37941)]
37942#[cfg_attr(
37943 target_arch = "arm",
37944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37945)]
37946pub fn vqshl_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
37947 static_assert_uimm_bits!(N, 6);
37948 vqshl_u64(a, vdup_n_s64(N as _))
37949}
37950#[doc = "Unsigned saturating shift left"]
37951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_n_u64)"]
37952#[inline(always)]
37953#[target_feature(enable = "neon")]
37954#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37955#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl, N = 2))]
37956#[cfg_attr(
37957 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37958 assert_instr(uqshl, N = 2)
37959)]
37960#[rustc_legacy_const_generics(1)]
37961#[cfg_attr(
37962 not(target_arch = "arm"),
37963 stable(feature = "neon_intrinsics", since = "1.59.0")
37964)]
37965#[cfg_attr(
37966 target_arch = "arm",
37967 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37968)]
37969pub fn vqshlq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
37970 static_assert_uimm_bits!(N, 6);
37971 vqshlq_u64(a, vdupq_n_s64(N as _))
37972}
37973#[doc = "Signed saturating shift left"]
37974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s8)"]
37975#[inline(always)]
37976#[target_feature(enable = "neon")]
37977#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
37978#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
37979#[cfg_attr(
37980 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
37981 assert_instr(sqshl)
37982)]
37983#[cfg_attr(
37984 not(target_arch = "arm"),
37985 stable(feature = "neon_intrinsics", since = "1.59.0")
37986)]
37987#[cfg_attr(
37988 target_arch = "arm",
37989 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
37990)]
37991pub fn vqshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
37992 unsafe extern "unadjusted" {
37993 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v8i8")]
37994 #[cfg_attr(
37995 any(target_arch = "aarch64", target_arch = "arm64ec"),
37996 link_name = "llvm.aarch64.neon.sqshl.v8i8"
37997 )]
37998 fn _vqshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
37999 }
38000 unsafe { _vqshl_s8(a, b) }
38001}
38002#[doc = "Signed saturating shift left"]
38003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s8)"]
38004#[inline(always)]
38005#[target_feature(enable = "neon")]
38006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38007#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38008#[cfg_attr(
38009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38010 assert_instr(sqshl)
38011)]
38012#[cfg_attr(
38013 not(target_arch = "arm"),
38014 stable(feature = "neon_intrinsics", since = "1.59.0")
38015)]
38016#[cfg_attr(
38017 target_arch = "arm",
38018 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38019)]
38020pub fn vqshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
38021 unsafe extern "unadjusted" {
38022 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v16i8")]
38023 #[cfg_attr(
38024 any(target_arch = "aarch64", target_arch = "arm64ec"),
38025 link_name = "llvm.aarch64.neon.sqshl.v16i8"
38026 )]
38027 fn _vqshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
38028 }
38029 unsafe { _vqshlq_s8(a, b) }
38030}
38031#[doc = "Signed saturating shift left"]
38032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s16)"]
38033#[inline(always)]
38034#[target_feature(enable = "neon")]
38035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38036#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38037#[cfg_attr(
38038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38039 assert_instr(sqshl)
38040)]
38041#[cfg_attr(
38042 not(target_arch = "arm"),
38043 stable(feature = "neon_intrinsics", since = "1.59.0")
38044)]
38045#[cfg_attr(
38046 target_arch = "arm",
38047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38048)]
38049pub fn vqshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
38050 unsafe extern "unadjusted" {
38051 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v4i16")]
38052 #[cfg_attr(
38053 any(target_arch = "aarch64", target_arch = "arm64ec"),
38054 link_name = "llvm.aarch64.neon.sqshl.v4i16"
38055 )]
38056 fn _vqshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
38057 }
38058 unsafe { _vqshl_s16(a, b) }
38059}
38060#[doc = "Signed saturating shift left"]
38061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s16)"]
38062#[inline(always)]
38063#[target_feature(enable = "neon")]
38064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38066#[cfg_attr(
38067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38068 assert_instr(sqshl)
38069)]
38070#[cfg_attr(
38071 not(target_arch = "arm"),
38072 stable(feature = "neon_intrinsics", since = "1.59.0")
38073)]
38074#[cfg_attr(
38075 target_arch = "arm",
38076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38077)]
38078pub fn vqshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
38079 unsafe extern "unadjusted" {
38080 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v8i16")]
38081 #[cfg_attr(
38082 any(target_arch = "aarch64", target_arch = "arm64ec"),
38083 link_name = "llvm.aarch64.neon.sqshl.v8i16"
38084 )]
38085 fn _vqshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
38086 }
38087 unsafe { _vqshlq_s16(a, b) }
38088}
38089#[doc = "Signed saturating shift left"]
38090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s32)"]
38091#[inline(always)]
38092#[target_feature(enable = "neon")]
38093#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38094#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38095#[cfg_attr(
38096 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38097 assert_instr(sqshl)
38098)]
38099#[cfg_attr(
38100 not(target_arch = "arm"),
38101 stable(feature = "neon_intrinsics", since = "1.59.0")
38102)]
38103#[cfg_attr(
38104 target_arch = "arm",
38105 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38106)]
38107pub fn vqshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
38108 unsafe extern "unadjusted" {
38109 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v2i32")]
38110 #[cfg_attr(
38111 any(target_arch = "aarch64", target_arch = "arm64ec"),
38112 link_name = "llvm.aarch64.neon.sqshl.v2i32"
38113 )]
38114 fn _vqshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
38115 }
38116 unsafe { _vqshl_s32(a, b) }
38117}
38118#[doc = "Signed saturating shift left"]
38119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s32)"]
38120#[inline(always)]
38121#[target_feature(enable = "neon")]
38122#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38123#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38124#[cfg_attr(
38125 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38126 assert_instr(sqshl)
38127)]
38128#[cfg_attr(
38129 not(target_arch = "arm"),
38130 stable(feature = "neon_intrinsics", since = "1.59.0")
38131)]
38132#[cfg_attr(
38133 target_arch = "arm",
38134 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38135)]
38136pub fn vqshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
38137 unsafe extern "unadjusted" {
38138 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v4i32")]
38139 #[cfg_attr(
38140 any(target_arch = "aarch64", target_arch = "arm64ec"),
38141 link_name = "llvm.aarch64.neon.sqshl.v4i32"
38142 )]
38143 fn _vqshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
38144 }
38145 unsafe { _vqshlq_s32(a, b) }
38146}
38147#[doc = "Signed saturating shift left"]
38148#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_s64)"]
38149#[inline(always)]
38150#[target_feature(enable = "neon")]
38151#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38152#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38153#[cfg_attr(
38154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38155 assert_instr(sqshl)
38156)]
38157#[cfg_attr(
38158 not(target_arch = "arm"),
38159 stable(feature = "neon_intrinsics", since = "1.59.0")
38160)]
38161#[cfg_attr(
38162 target_arch = "arm",
38163 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38164)]
38165pub fn vqshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
38166 unsafe extern "unadjusted" {
38167 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v1i64")]
38168 #[cfg_attr(
38169 any(target_arch = "aarch64", target_arch = "arm64ec"),
38170 link_name = "llvm.aarch64.neon.sqshl.v1i64"
38171 )]
38172 fn _vqshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
38173 }
38174 unsafe { _vqshl_s64(a, b) }
38175}
38176#[doc = "Signed saturating shift left"]
38177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_s64)"]
38178#[inline(always)]
38179#[target_feature(enable = "neon")]
38180#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38181#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38182#[cfg_attr(
38183 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38184 assert_instr(sqshl)
38185)]
38186#[cfg_attr(
38187 not(target_arch = "arm"),
38188 stable(feature = "neon_intrinsics", since = "1.59.0")
38189)]
38190#[cfg_attr(
38191 target_arch = "arm",
38192 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38193)]
38194pub fn vqshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
38195 unsafe extern "unadjusted" {
38196 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshifts.v2i64")]
38197 #[cfg_attr(
38198 any(target_arch = "aarch64", target_arch = "arm64ec"),
38199 link_name = "llvm.aarch64.neon.sqshl.v2i64"
38200 )]
38201 fn _vqshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
38202 }
38203 unsafe { _vqshlq_s64(a, b) }
38204}
38205#[doc = "Unsigned saturating shift left"]
38206#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u8)"]
38207#[inline(always)]
38208#[target_feature(enable = "neon")]
38209#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38210#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38211#[cfg_attr(
38212 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38213 assert_instr(uqshl)
38214)]
38215#[cfg_attr(
38216 not(target_arch = "arm"),
38217 stable(feature = "neon_intrinsics", since = "1.59.0")
38218)]
38219#[cfg_attr(
38220 target_arch = "arm",
38221 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38222)]
38223pub fn vqshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
38224 unsafe extern "unadjusted" {
38225 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v8i8")]
38226 #[cfg_attr(
38227 any(target_arch = "aarch64", target_arch = "arm64ec"),
38228 link_name = "llvm.aarch64.neon.uqshl.v8i8"
38229 )]
38230 fn _vqshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
38231 }
38232 unsafe { _vqshl_u8(a, b) }
38233}
38234#[doc = "Unsigned saturating shift left"]
38235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u8)"]
38236#[inline(always)]
38237#[target_feature(enable = "neon")]
38238#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38239#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38240#[cfg_attr(
38241 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38242 assert_instr(uqshl)
38243)]
38244#[cfg_attr(
38245 not(target_arch = "arm"),
38246 stable(feature = "neon_intrinsics", since = "1.59.0")
38247)]
38248#[cfg_attr(
38249 target_arch = "arm",
38250 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38251)]
38252pub fn vqshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
38253 unsafe extern "unadjusted" {
38254 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v16i8")]
38255 #[cfg_attr(
38256 any(target_arch = "aarch64", target_arch = "arm64ec"),
38257 link_name = "llvm.aarch64.neon.uqshl.v16i8"
38258 )]
38259 fn _vqshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
38260 }
38261 unsafe { _vqshlq_u8(a, b) }
38262}
38263#[doc = "Unsigned saturating shift left"]
38264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u16)"]
38265#[inline(always)]
38266#[target_feature(enable = "neon")]
38267#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38268#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38269#[cfg_attr(
38270 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38271 assert_instr(uqshl)
38272)]
38273#[cfg_attr(
38274 not(target_arch = "arm"),
38275 stable(feature = "neon_intrinsics", since = "1.59.0")
38276)]
38277#[cfg_attr(
38278 target_arch = "arm",
38279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38280)]
38281pub fn vqshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
38282 unsafe extern "unadjusted" {
38283 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v4i16")]
38284 #[cfg_attr(
38285 any(target_arch = "aarch64", target_arch = "arm64ec"),
38286 link_name = "llvm.aarch64.neon.uqshl.v4i16"
38287 )]
38288 fn _vqshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
38289 }
38290 unsafe { _vqshl_u16(a, b) }
38291}
38292#[doc = "Unsigned saturating shift left"]
38293#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u16)"]
38294#[inline(always)]
38295#[target_feature(enable = "neon")]
38296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38298#[cfg_attr(
38299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38300 assert_instr(uqshl)
38301)]
38302#[cfg_attr(
38303 not(target_arch = "arm"),
38304 stable(feature = "neon_intrinsics", since = "1.59.0")
38305)]
38306#[cfg_attr(
38307 target_arch = "arm",
38308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38309)]
38310pub fn vqshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
38311 unsafe extern "unadjusted" {
38312 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v8i16")]
38313 #[cfg_attr(
38314 any(target_arch = "aarch64", target_arch = "arm64ec"),
38315 link_name = "llvm.aarch64.neon.uqshl.v8i16"
38316 )]
38317 fn _vqshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
38318 }
38319 unsafe { _vqshlq_u16(a, b) }
38320}
38321#[doc = "Unsigned saturating shift left"]
38322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u32)"]
38323#[inline(always)]
38324#[target_feature(enable = "neon")]
38325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38326#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38327#[cfg_attr(
38328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38329 assert_instr(uqshl)
38330)]
38331#[cfg_attr(
38332 not(target_arch = "arm"),
38333 stable(feature = "neon_intrinsics", since = "1.59.0")
38334)]
38335#[cfg_attr(
38336 target_arch = "arm",
38337 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38338)]
38339pub fn vqshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
38340 unsafe extern "unadjusted" {
38341 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v2i32")]
38342 #[cfg_attr(
38343 any(target_arch = "aarch64", target_arch = "arm64ec"),
38344 link_name = "llvm.aarch64.neon.uqshl.v2i32"
38345 )]
38346 fn _vqshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
38347 }
38348 unsafe { _vqshl_u32(a, b) }
38349}
38350#[doc = "Unsigned saturating shift left"]
38351#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u32)"]
38352#[inline(always)]
38353#[target_feature(enable = "neon")]
38354#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38355#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38356#[cfg_attr(
38357 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38358 assert_instr(uqshl)
38359)]
38360#[cfg_attr(
38361 not(target_arch = "arm"),
38362 stable(feature = "neon_intrinsics", since = "1.59.0")
38363)]
38364#[cfg_attr(
38365 target_arch = "arm",
38366 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38367)]
38368pub fn vqshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
38369 unsafe extern "unadjusted" {
38370 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v4i32")]
38371 #[cfg_attr(
38372 any(target_arch = "aarch64", target_arch = "arm64ec"),
38373 link_name = "llvm.aarch64.neon.uqshl.v4i32"
38374 )]
38375 fn _vqshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
38376 }
38377 unsafe { _vqshlq_u32(a, b) }
38378}
38379#[doc = "Unsigned saturating shift left"]
38380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshl_u64)"]
38381#[inline(always)]
38382#[target_feature(enable = "neon")]
38383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38384#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38385#[cfg_attr(
38386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38387 assert_instr(uqshl)
38388)]
38389#[cfg_attr(
38390 not(target_arch = "arm"),
38391 stable(feature = "neon_intrinsics", since = "1.59.0")
38392)]
38393#[cfg_attr(
38394 target_arch = "arm",
38395 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38396)]
38397pub fn vqshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
38398 unsafe extern "unadjusted" {
38399 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v1i64")]
38400 #[cfg_attr(
38401 any(target_arch = "aarch64", target_arch = "arm64ec"),
38402 link_name = "llvm.aarch64.neon.uqshl.v1i64"
38403 )]
38404 fn _vqshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
38405 }
38406 unsafe { _vqshl_u64(a, b) }
38407}
38408#[doc = "Unsigned saturating shift left"]
38409#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlq_u64)"]
38410#[inline(always)]
38411#[target_feature(enable = "neon")]
38412#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
38413#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vqshl))]
38414#[cfg_attr(
38415 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
38416 assert_instr(uqshl)
38417)]
38418#[cfg_attr(
38419 not(target_arch = "arm"),
38420 stable(feature = "neon_intrinsics", since = "1.59.0")
38421)]
38422#[cfg_attr(
38423 target_arch = "arm",
38424 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
38425)]
38426pub fn vqshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
38427 unsafe extern "unadjusted" {
38428 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftu.v2i64")]
38429 #[cfg_attr(
38430 any(target_arch = "aarch64", target_arch = "arm64ec"),
38431 link_name = "llvm.aarch64.neon.uqshl.v2i64"
38432 )]
38433 fn _vqshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
38434 }
38435 unsafe { _vqshlq_u64(a, b) }
38436}
38437#[doc = "Signed saturating shift left unsigned"]
38438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s8)"]
38439#[inline(always)]
38440#[cfg(target_arch = "arm")]
38441#[target_feature(enable = "neon,v7")]
38442#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38443#[rustc_legacy_const_generics(1)]
38444#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38445pub fn vqshlu_n_s8<const N: i32>(a: int8x8_t) -> uint8x8_t {
38446 static_assert_uimm_bits!(N, 3);
38447 unsafe extern "unadjusted" {
38448 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v8i8")]
38449 fn _vqshlu_n_s8(a: int8x8_t, n: int8x8_t) -> uint8x8_t;
38450 }
38451 unsafe { _vqshlu_n_s8(a, const { int8x8_t([N as i8; 8]) }) }
38452}
38453#[doc = "Signed saturating shift left unsigned"]
38454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s8)"]
38455#[inline(always)]
38456#[cfg(target_arch = "arm")]
38457#[target_feature(enable = "neon,v7")]
38458#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38459#[rustc_legacy_const_generics(1)]
38460#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38461pub fn vqshluq_n_s8<const N: i32>(a: int8x16_t) -> uint8x16_t {
38462 static_assert_uimm_bits!(N, 3);
38463 unsafe extern "unadjusted" {
38464 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v16i8")]
38465 fn _vqshluq_n_s8(a: int8x16_t, n: int8x16_t) -> uint8x16_t;
38466 }
38467 unsafe { _vqshluq_n_s8(a, const { int8x16_t([N as i8; 16]) }) }
38468}
38469#[doc = "Signed saturating shift left unsigned"]
38470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s16)"]
38471#[inline(always)]
38472#[cfg(target_arch = "arm")]
38473#[target_feature(enable = "neon,v7")]
38474#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38475#[rustc_legacy_const_generics(1)]
38476#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38477pub fn vqshlu_n_s16<const N: i32>(a: int16x4_t) -> uint16x4_t {
38478 static_assert_uimm_bits!(N, 4);
38479 unsafe extern "unadjusted" {
38480 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v4i16")]
38481 fn _vqshlu_n_s16(a: int16x4_t, n: int16x4_t) -> uint16x4_t;
38482 }
38483 unsafe { _vqshlu_n_s16(a, const { int16x4_t([N as i16; 4]) }) }
38484}
38485#[doc = "Signed saturating shift left unsigned"]
38486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s16)"]
38487#[inline(always)]
38488#[cfg(target_arch = "arm")]
38489#[target_feature(enable = "neon,v7")]
38490#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38491#[rustc_legacy_const_generics(1)]
38492#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38493pub fn vqshluq_n_s16<const N: i32>(a: int16x8_t) -> uint16x8_t {
38494 static_assert_uimm_bits!(N, 4);
38495 unsafe extern "unadjusted" {
38496 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v8i16")]
38497 fn _vqshluq_n_s16(a: int16x8_t, n: int16x8_t) -> uint16x8_t;
38498 }
38499 unsafe { _vqshluq_n_s16(a, const { int16x8_t([N as i16; 8]) }) }
38500}
38501#[doc = "Signed saturating shift left unsigned"]
38502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s32)"]
38503#[inline(always)]
38504#[cfg(target_arch = "arm")]
38505#[target_feature(enable = "neon,v7")]
38506#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38507#[rustc_legacy_const_generics(1)]
38508#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38509pub fn vqshlu_n_s32<const N: i32>(a: int32x2_t) -> uint32x2_t {
38510 static_assert_uimm_bits!(N, 5);
38511 unsafe extern "unadjusted" {
38512 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v2i32")]
38513 fn _vqshlu_n_s32(a: int32x2_t, n: int32x2_t) -> uint32x2_t;
38514 }
38515 unsafe { _vqshlu_n_s32(a, const { int32x2_t([N; 2]) }) }
38516}
38517#[doc = "Signed saturating shift left unsigned"]
38518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s32)"]
38519#[inline(always)]
38520#[cfg(target_arch = "arm")]
38521#[target_feature(enable = "neon,v7")]
38522#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38523#[rustc_legacy_const_generics(1)]
38524#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38525pub fn vqshluq_n_s32<const N: i32>(a: int32x4_t) -> uint32x4_t {
38526 static_assert_uimm_bits!(N, 5);
38527 unsafe extern "unadjusted" {
38528 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v4i32")]
38529 fn _vqshluq_n_s32(a: int32x4_t, n: int32x4_t) -> uint32x4_t;
38530 }
38531 unsafe { _vqshluq_n_s32(a, const { int32x4_t([N; 4]) }) }
38532}
38533#[doc = "Signed saturating shift left unsigned"]
38534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s64)"]
38535#[inline(always)]
38536#[cfg(target_arch = "arm")]
38537#[target_feature(enable = "neon,v7")]
38538#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38539#[rustc_legacy_const_generics(1)]
38540#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38541pub fn vqshlu_n_s64<const N: i32>(a: int64x1_t) -> uint64x1_t {
38542 static_assert_uimm_bits!(N, 6);
38543 unsafe extern "unadjusted" {
38544 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v1i64")]
38545 fn _vqshlu_n_s64(a: int64x1_t, n: int64x1_t) -> uint64x1_t;
38546 }
38547 unsafe { _vqshlu_n_s64(a, const { int64x1_t([N as i64]) }) }
38548}
38549#[doc = "Signed saturating shift left unsigned"]
38550#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s64)"]
38551#[inline(always)]
38552#[cfg(target_arch = "arm")]
38553#[target_feature(enable = "neon,v7")]
38554#[cfg_attr(test, assert_instr(vqshlu, N = 2))]
38555#[rustc_legacy_const_generics(1)]
38556#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38557pub fn vqshluq_n_s64<const N: i32>(a: int64x2_t) -> uint64x2_t {
38558 static_assert_uimm_bits!(N, 6);
38559 unsafe extern "unadjusted" {
38560 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftsu.v2i64")]
38561 fn _vqshluq_n_s64(a: int64x2_t, n: int64x2_t) -> uint64x2_t;
38562 }
38563 unsafe { _vqshluq_n_s64(a, const { int64x2_t([N as i64; 2]) }) }
38564}
38565#[doc = "Signed saturating shift left unsigned"]
38566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s8)"]
38567#[inline(always)]
38568#[target_feature(enable = "neon")]
38569#[cfg(not(target_arch = "arm"))]
38570#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38571#[rustc_legacy_const_generics(1)]
38572#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38573pub fn vqshlu_n_s8<const N: i32>(a: int8x8_t) -> uint8x8_t {
38574 static_assert_uimm_bits!(N, 3);
38575 unsafe extern "unadjusted" {
38576 #[cfg_attr(
38577 any(target_arch = "aarch64", target_arch = "arm64ec"),
38578 link_name = "llvm.aarch64.neon.sqshlu.v8i8"
38579 )]
38580 fn _vqshlu_n_s8(a: int8x8_t, n: int8x8_t) -> uint8x8_t;
38581 }
38582 unsafe { _vqshlu_n_s8(a, const { int8x8_t([N as i8; 8]) }) }
38583}
38584#[doc = "Signed saturating shift left unsigned"]
38585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s8)"]
38586#[inline(always)]
38587#[target_feature(enable = "neon")]
38588#[cfg(not(target_arch = "arm"))]
38589#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38590#[rustc_legacy_const_generics(1)]
38591#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38592pub fn vqshluq_n_s8<const N: i32>(a: int8x16_t) -> uint8x16_t {
38593 static_assert_uimm_bits!(N, 3);
38594 unsafe extern "unadjusted" {
38595 #[cfg_attr(
38596 any(target_arch = "aarch64", target_arch = "arm64ec"),
38597 link_name = "llvm.aarch64.neon.sqshlu.v16i8"
38598 )]
38599 fn _vqshluq_n_s8(a: int8x16_t, n: int8x16_t) -> uint8x16_t;
38600 }
38601 unsafe { _vqshluq_n_s8(a, const { int8x16_t([N as i8; 16]) }) }
38602}
38603#[doc = "Signed saturating shift left unsigned"]
38604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s16)"]
38605#[inline(always)]
38606#[target_feature(enable = "neon")]
38607#[cfg(not(target_arch = "arm"))]
38608#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38609#[rustc_legacy_const_generics(1)]
38610#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38611pub fn vqshlu_n_s16<const N: i32>(a: int16x4_t) -> uint16x4_t {
38612 static_assert_uimm_bits!(N, 4);
38613 unsafe extern "unadjusted" {
38614 #[cfg_attr(
38615 any(target_arch = "aarch64", target_arch = "arm64ec"),
38616 link_name = "llvm.aarch64.neon.sqshlu.v4i16"
38617 )]
38618 fn _vqshlu_n_s16(a: int16x4_t, n: int16x4_t) -> uint16x4_t;
38619 }
38620 unsafe { _vqshlu_n_s16(a, const { int16x4_t([N as i16; 4]) }) }
38621}
38622#[doc = "Signed saturating shift left unsigned"]
38623#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s16)"]
38624#[inline(always)]
38625#[target_feature(enable = "neon")]
38626#[cfg(not(target_arch = "arm"))]
38627#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38628#[rustc_legacy_const_generics(1)]
38629#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38630pub fn vqshluq_n_s16<const N: i32>(a: int16x8_t) -> uint16x8_t {
38631 static_assert_uimm_bits!(N, 4);
38632 unsafe extern "unadjusted" {
38633 #[cfg_attr(
38634 any(target_arch = "aarch64", target_arch = "arm64ec"),
38635 link_name = "llvm.aarch64.neon.sqshlu.v8i16"
38636 )]
38637 fn _vqshluq_n_s16(a: int16x8_t, n: int16x8_t) -> uint16x8_t;
38638 }
38639 unsafe { _vqshluq_n_s16(a, const { int16x8_t([N as i16; 8]) }) }
38640}
38641#[doc = "Signed saturating shift left unsigned"]
38642#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s32)"]
38643#[inline(always)]
38644#[target_feature(enable = "neon")]
38645#[cfg(not(target_arch = "arm"))]
38646#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38647#[rustc_legacy_const_generics(1)]
38648#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38649pub fn vqshlu_n_s32<const N: i32>(a: int32x2_t) -> uint32x2_t {
38650 static_assert_uimm_bits!(N, 5);
38651 unsafe extern "unadjusted" {
38652 #[cfg_attr(
38653 any(target_arch = "aarch64", target_arch = "arm64ec"),
38654 link_name = "llvm.aarch64.neon.sqshlu.v2i32"
38655 )]
38656 fn _vqshlu_n_s32(a: int32x2_t, n: int32x2_t) -> uint32x2_t;
38657 }
38658 unsafe { _vqshlu_n_s32(a, const { int32x2_t([N; 2]) }) }
38659}
38660#[doc = "Signed saturating shift left unsigned"]
38661#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s32)"]
38662#[inline(always)]
38663#[target_feature(enable = "neon")]
38664#[cfg(not(target_arch = "arm"))]
38665#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38666#[rustc_legacy_const_generics(1)]
38667#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38668pub fn vqshluq_n_s32<const N: i32>(a: int32x4_t) -> uint32x4_t {
38669 static_assert_uimm_bits!(N, 5);
38670 unsafe extern "unadjusted" {
38671 #[cfg_attr(
38672 any(target_arch = "aarch64", target_arch = "arm64ec"),
38673 link_name = "llvm.aarch64.neon.sqshlu.v4i32"
38674 )]
38675 fn _vqshluq_n_s32(a: int32x4_t, n: int32x4_t) -> uint32x4_t;
38676 }
38677 unsafe { _vqshluq_n_s32(a, const { int32x4_t([N; 4]) }) }
38678}
38679#[doc = "Signed saturating shift left unsigned"]
38680#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshlu_n_s64)"]
38681#[inline(always)]
38682#[target_feature(enable = "neon")]
38683#[cfg(not(target_arch = "arm"))]
38684#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38685#[rustc_legacy_const_generics(1)]
38686#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38687pub fn vqshlu_n_s64<const N: i32>(a: int64x1_t) -> uint64x1_t {
38688 static_assert_uimm_bits!(N, 6);
38689 unsafe extern "unadjusted" {
38690 #[cfg_attr(
38691 any(target_arch = "aarch64", target_arch = "arm64ec"),
38692 link_name = "llvm.aarch64.neon.sqshlu.v1i64"
38693 )]
38694 fn _vqshlu_n_s64(a: int64x1_t, n: int64x1_t) -> uint64x1_t;
38695 }
38696 unsafe { _vqshlu_n_s64(a, const { int64x1_t([N as i64]) }) }
38697}
38698#[doc = "Signed saturating shift left unsigned"]
38699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshluq_n_s64)"]
38700#[inline(always)]
38701#[target_feature(enable = "neon")]
38702#[cfg(not(target_arch = "arm"))]
38703#[cfg_attr(test, assert_instr(sqshlu, N = 2))]
38704#[rustc_legacy_const_generics(1)]
38705#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38706pub fn vqshluq_n_s64<const N: i32>(a: int64x2_t) -> uint64x2_t {
38707 static_assert_uimm_bits!(N, 6);
38708 unsafe extern "unadjusted" {
38709 #[cfg_attr(
38710 any(target_arch = "aarch64", target_arch = "arm64ec"),
38711 link_name = "llvm.aarch64.neon.sqshlu.v2i64"
38712 )]
38713 fn _vqshluq_n_s64(a: int64x2_t, n: int64x2_t) -> uint64x2_t;
38714 }
38715 unsafe { _vqshluq_n_s64(a, const { int64x2_t([N as i64; 2]) }) }
38716}
38717#[doc = "Signed saturating shift right narrow"]
38718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]
38719#[inline(always)]
38720#[cfg(target_arch = "arm")]
38721#[target_feature(enable = "neon,v7")]
38722#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
38723#[rustc_legacy_const_generics(1)]
38724#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38725pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
38726 static_assert!(N >= 1 && N <= 8);
38727 unsafe extern "unadjusted" {
38728 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v8i8")]
38729 fn _vqshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
38730 }
38731 unsafe { _vqshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
38732}
38733#[doc = "Signed saturating shift right narrow"]
38734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]
38735#[inline(always)]
38736#[cfg(target_arch = "arm")]
38737#[target_feature(enable = "neon,v7")]
38738#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
38739#[rustc_legacy_const_generics(1)]
38740#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38741pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
38742 static_assert!(N >= 1 && N <= 16);
38743 unsafe extern "unadjusted" {
38744 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v4i16")]
38745 fn _vqshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
38746 }
38747 unsafe { _vqshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
38748}
38749#[doc = "Signed saturating shift right narrow"]
38750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]
38751#[inline(always)]
38752#[cfg(target_arch = "arm")]
38753#[target_feature(enable = "neon,v7")]
38754#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
38755#[rustc_legacy_const_generics(1)]
38756#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38757pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
38758 static_assert!(N >= 1 && N <= 32);
38759 unsafe extern "unadjusted" {
38760 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v2i32")]
38761 fn _vqshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
38762 }
38763 unsafe { _vqshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
38764}
38765#[doc = "Signed saturating shift right narrow"]
38766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]
38767#[inline(always)]
38768#[target_feature(enable = "neon")]
38769#[cfg(not(target_arch = "arm"))]
38770#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
38771#[rustc_legacy_const_generics(1)]
38772#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38773pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
38774 static_assert!(N >= 1 && N <= 8);
38775 unsafe extern "unadjusted" {
38776 #[cfg_attr(
38777 any(target_arch = "aarch64", target_arch = "arm64ec"),
38778 link_name = "llvm.aarch64.neon.sqshrn.v8i8"
38779 )]
38780 fn _vqshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
38781 }
38782 unsafe { _vqshrn_n_s16(a, N) }
38783}
38784#[doc = "Signed saturating shift right narrow"]
38785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]
38786#[inline(always)]
38787#[target_feature(enable = "neon")]
38788#[cfg(not(target_arch = "arm"))]
38789#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
38790#[rustc_legacy_const_generics(1)]
38791#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38792pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
38793 static_assert!(N >= 1 && N <= 16);
38794 unsafe extern "unadjusted" {
38795 #[cfg_attr(
38796 any(target_arch = "aarch64", target_arch = "arm64ec"),
38797 link_name = "llvm.aarch64.neon.sqshrn.v4i16"
38798 )]
38799 fn _vqshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
38800 }
38801 unsafe { _vqshrn_n_s32(a, N) }
38802}
38803#[doc = "Signed saturating shift right narrow"]
38804#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]
38805#[inline(always)]
38806#[target_feature(enable = "neon")]
38807#[cfg(not(target_arch = "arm"))]
38808#[cfg_attr(test, assert_instr(sqshrn, N = 2))]
38809#[rustc_legacy_const_generics(1)]
38810#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38811pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
38812 static_assert!(N >= 1 && N <= 32);
38813 unsafe extern "unadjusted" {
38814 #[cfg_attr(
38815 any(target_arch = "aarch64", target_arch = "arm64ec"),
38816 link_name = "llvm.aarch64.neon.sqshrn.v2i32"
38817 )]
38818 fn _vqshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
38819 }
38820 unsafe { _vqshrn_n_s64(a, N) }
38821}
38822#[doc = "Unsigned saturating shift right narrow"]
38823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u16)"]
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_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
38831 static_assert!(N >= 1 && N <= 8);
38832 unsafe extern "unadjusted" {
38833 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v8i8")]
38834 fn _vqshrn_n_u16(a: uint16x8_t, n: uint16x8_t) -> uint8x8_t;
38835 }
38836 unsafe { _vqshrn_n_u16(a, const { uint16x8_t([-N as u16; 8]) }) }
38837}
38838#[doc = "Unsigned saturating shift right narrow"]
38839#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u32)"]
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_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
38847 static_assert!(N >= 1 && N <= 16);
38848 unsafe extern "unadjusted" {
38849 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v4i16")]
38850 fn _vqshrn_n_u32(a: uint32x4_t, n: uint32x4_t) -> uint16x4_t;
38851 }
38852 unsafe { _vqshrn_n_u32(a, const { uint32x4_t([-N as u32; 4]) }) }
38853}
38854#[doc = "Unsigned saturating shift right narrow"]
38855#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u64)"]
38856#[inline(always)]
38857#[cfg(target_arch = "arm")]
38858#[target_feature(enable = "neon,v7")]
38859#[cfg_attr(test, assert_instr(vqshrn, N = 2))]
38860#[rustc_legacy_const_generics(1)]
38861#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38862pub fn vqshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
38863 static_assert!(N >= 1 && N <= 32);
38864 unsafe extern "unadjusted" {
38865 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnu.v2i32")]
38866 fn _vqshrn_n_u64(a: uint64x2_t, n: uint64x2_t) -> uint32x2_t;
38867 }
38868 unsafe { _vqshrn_n_u64(a, const { uint64x2_t([-N as u64; 2]) }) }
38869}
38870#[doc = "Unsigned saturating shift right narrow"]
38871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u16)"]
38872#[inline(always)]
38873#[target_feature(enable = "neon")]
38874#[cfg(not(target_arch = "arm"))]
38875#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
38876#[rustc_legacy_const_generics(1)]
38877#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38878pub fn vqshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
38879 static_assert!(N >= 1 && N <= 8);
38880 unsafe extern "unadjusted" {
38881 #[cfg_attr(
38882 any(target_arch = "aarch64", target_arch = "arm64ec"),
38883 link_name = "llvm.aarch64.neon.uqshrn.v8i8"
38884 )]
38885 fn _vqshrn_n_u16(a: uint16x8_t, n: i32) -> uint8x8_t;
38886 }
38887 unsafe { _vqshrn_n_u16(a, N) }
38888}
38889#[doc = "Unsigned saturating shift right narrow"]
38890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u32)"]
38891#[inline(always)]
38892#[target_feature(enable = "neon")]
38893#[cfg(not(target_arch = "arm"))]
38894#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
38895#[rustc_legacy_const_generics(1)]
38896#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38897pub fn vqshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
38898 static_assert!(N >= 1 && N <= 16);
38899 unsafe extern "unadjusted" {
38900 #[cfg_attr(
38901 any(target_arch = "aarch64", target_arch = "arm64ec"),
38902 link_name = "llvm.aarch64.neon.uqshrn.v4i16"
38903 )]
38904 fn _vqshrn_n_u32(a: uint32x4_t, n: i32) -> uint16x4_t;
38905 }
38906 unsafe { _vqshrn_n_u32(a, N) }
38907}
38908#[doc = "Unsigned saturating shift right narrow"]
38909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_u64)"]
38910#[inline(always)]
38911#[target_feature(enable = "neon")]
38912#[cfg(not(target_arch = "arm"))]
38913#[cfg_attr(test, assert_instr(uqshrn, N = 2))]
38914#[rustc_legacy_const_generics(1)]
38915#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38916pub fn vqshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
38917 static_assert!(N >= 1 && N <= 32);
38918 unsafe extern "unadjusted" {
38919 #[cfg_attr(
38920 any(target_arch = "aarch64", target_arch = "arm64ec"),
38921 link_name = "llvm.aarch64.neon.uqshrn.v2i32"
38922 )]
38923 fn _vqshrn_n_u64(a: uint64x2_t, n: i32) -> uint32x2_t;
38924 }
38925 unsafe { _vqshrn_n_u64(a, N) }
38926}
38927#[doc = "Signed saturating shift right unsigned narrow"]
38928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]
38929#[inline(always)]
38930#[cfg(target_arch = "arm")]
38931#[target_feature(enable = "neon,v7")]
38932#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
38933#[rustc_legacy_const_generics(1)]
38934#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38935pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
38936 static_assert!(N >= 1 && N <= 8);
38937 unsafe extern "unadjusted" {
38938 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v8i8")]
38939 fn _vqshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
38940 }
38941 unsafe { _vqshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
38942}
38943#[doc = "Signed saturating shift right unsigned narrow"]
38944#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]
38945#[inline(always)]
38946#[cfg(target_arch = "arm")]
38947#[target_feature(enable = "neon,v7")]
38948#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
38949#[rustc_legacy_const_generics(1)]
38950#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38951pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
38952 static_assert!(N >= 1 && N <= 16);
38953 unsafe extern "unadjusted" {
38954 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v4i16")]
38955 fn _vqshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
38956 }
38957 unsafe { _vqshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
38958}
38959#[doc = "Signed saturating shift right unsigned narrow"]
38960#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]
38961#[inline(always)]
38962#[cfg(target_arch = "arm")]
38963#[target_feature(enable = "neon,v7")]
38964#[cfg_attr(test, assert_instr(vqshrun, N = 2))]
38965#[rustc_legacy_const_generics(1)]
38966#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
38967pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
38968 static_assert!(N >= 1 && N <= 32);
38969 unsafe extern "unadjusted" {
38970 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v2i32")]
38971 fn _vqshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
38972 }
38973 unsafe { _vqshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
38974}
38975#[doc = "Signed saturating shift right unsigned narrow"]
38976#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]
38977#[inline(always)]
38978#[target_feature(enable = "neon")]
38979#[cfg(not(target_arch = "arm"))]
38980#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
38981#[rustc_legacy_const_generics(1)]
38982#[stable(feature = "neon_intrinsics", since = "1.59.0")]
38983pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
38984 static_assert!(N >= 1 && N <= 8);
38985 unsafe extern "unadjusted" {
38986 #[cfg_attr(
38987 any(target_arch = "aarch64", target_arch = "arm64ec"),
38988 link_name = "llvm.aarch64.neon.sqshrun.v8i8"
38989 )]
38990 fn _vqshrun_n_s16(a: int16x8_t, n: i32) -> uint8x8_t;
38991 }
38992 unsafe { _vqshrun_n_s16(a, N) }
38993}
38994#[doc = "Signed saturating shift right unsigned narrow"]
38995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]
38996#[inline(always)]
38997#[target_feature(enable = "neon")]
38998#[cfg(not(target_arch = "arm"))]
38999#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
39000#[rustc_legacy_const_generics(1)]
39001#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39002pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
39003 static_assert!(N >= 1 && N <= 16);
39004 unsafe extern "unadjusted" {
39005 #[cfg_attr(
39006 any(target_arch = "aarch64", target_arch = "arm64ec"),
39007 link_name = "llvm.aarch64.neon.sqshrun.v4i16"
39008 )]
39009 fn _vqshrun_n_s32(a: int32x4_t, n: i32) -> uint16x4_t;
39010 }
39011 unsafe { _vqshrun_n_s32(a, N) }
39012}
39013#[doc = "Signed saturating shift right unsigned narrow"]
39014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]
39015#[inline(always)]
39016#[target_feature(enable = "neon")]
39017#[cfg(not(target_arch = "arm"))]
39018#[cfg_attr(test, assert_instr(sqshrun, N = 2))]
39019#[rustc_legacy_const_generics(1)]
39020#[stable(feature = "neon_intrinsics", since = "1.59.0")]
39021pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
39022 static_assert!(N >= 1 && N <= 32);
39023 unsafe extern "unadjusted" {
39024 #[cfg_attr(
39025 any(target_arch = "aarch64", target_arch = "arm64ec"),
39026 link_name = "llvm.aarch64.neon.sqshrun.v2i32"
39027 )]
39028 fn _vqshrun_n_s64(a: int64x2_t, n: i32) -> uint32x2_t;
39029 }
39030 unsafe { _vqshrun_n_s64(a, N) }
39031}
39032#[doc = "Saturating subtract"]
39033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s8)"]
39034#[inline(always)]
39035#[target_feature(enable = "neon")]
39036#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39037#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s8"))]
39038#[cfg_attr(
39039 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39040 assert_instr(sqsub)
39041)]
39042#[cfg_attr(
39043 not(target_arch = "arm"),
39044 stable(feature = "neon_intrinsics", since = "1.59.0")
39045)]
39046#[cfg_attr(
39047 target_arch = "arm",
39048 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39049)]
39050pub fn vqsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
39051 unsafe { simd_saturating_sub(a, b) }
39052}
39053#[doc = "Saturating subtract"]
39054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s8)"]
39055#[inline(always)]
39056#[target_feature(enable = "neon")]
39057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39058#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s8"))]
39059#[cfg_attr(
39060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39061 assert_instr(sqsub)
39062)]
39063#[cfg_attr(
39064 not(target_arch = "arm"),
39065 stable(feature = "neon_intrinsics", since = "1.59.0")
39066)]
39067#[cfg_attr(
39068 target_arch = "arm",
39069 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39070)]
39071pub fn vqsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
39072 unsafe { simd_saturating_sub(a, b) }
39073}
39074#[doc = "Saturating subtract"]
39075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s16)"]
39076#[inline(always)]
39077#[target_feature(enable = "neon")]
39078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39079#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s16"))]
39080#[cfg_attr(
39081 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39082 assert_instr(sqsub)
39083)]
39084#[cfg_attr(
39085 not(target_arch = "arm"),
39086 stable(feature = "neon_intrinsics", since = "1.59.0")
39087)]
39088#[cfg_attr(
39089 target_arch = "arm",
39090 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39091)]
39092pub fn vqsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
39093 unsafe { simd_saturating_sub(a, b) }
39094}
39095#[doc = "Saturating subtract"]
39096#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s16)"]
39097#[inline(always)]
39098#[target_feature(enable = "neon")]
39099#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39100#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s16"))]
39101#[cfg_attr(
39102 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39103 assert_instr(sqsub)
39104)]
39105#[cfg_attr(
39106 not(target_arch = "arm"),
39107 stable(feature = "neon_intrinsics", since = "1.59.0")
39108)]
39109#[cfg_attr(
39110 target_arch = "arm",
39111 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39112)]
39113pub fn vqsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
39114 unsafe { simd_saturating_sub(a, b) }
39115}
39116#[doc = "Saturating subtract"]
39117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s32)"]
39118#[inline(always)]
39119#[target_feature(enable = "neon")]
39120#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39121#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s32"))]
39122#[cfg_attr(
39123 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39124 assert_instr(sqsub)
39125)]
39126#[cfg_attr(
39127 not(target_arch = "arm"),
39128 stable(feature = "neon_intrinsics", since = "1.59.0")
39129)]
39130#[cfg_attr(
39131 target_arch = "arm",
39132 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39133)]
39134pub fn vqsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
39135 unsafe { simd_saturating_sub(a, b) }
39136}
39137#[doc = "Saturating subtract"]
39138#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s32)"]
39139#[inline(always)]
39140#[target_feature(enable = "neon")]
39141#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39142#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s32"))]
39143#[cfg_attr(
39144 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39145 assert_instr(sqsub)
39146)]
39147#[cfg_attr(
39148 not(target_arch = "arm"),
39149 stable(feature = "neon_intrinsics", since = "1.59.0")
39150)]
39151#[cfg_attr(
39152 target_arch = "arm",
39153 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39154)]
39155pub fn vqsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
39156 unsafe { simd_saturating_sub(a, b) }
39157}
39158#[doc = "Saturating subtract"]
39159#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s64)"]
39160#[inline(always)]
39161#[target_feature(enable = "neon")]
39162#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39163#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s64"))]
39164#[cfg_attr(
39165 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39166 assert_instr(sqsub)
39167)]
39168#[cfg_attr(
39169 not(target_arch = "arm"),
39170 stable(feature = "neon_intrinsics", since = "1.59.0")
39171)]
39172#[cfg_attr(
39173 target_arch = "arm",
39174 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39175)]
39176pub fn vqsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
39177 unsafe { simd_saturating_sub(a, b) }
39178}
39179#[doc = "Saturating subtract"]
39180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s64)"]
39181#[inline(always)]
39182#[target_feature(enable = "neon")]
39183#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39184#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.s64"))]
39185#[cfg_attr(
39186 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39187 assert_instr(sqsub)
39188)]
39189#[cfg_attr(
39190 not(target_arch = "arm"),
39191 stable(feature = "neon_intrinsics", since = "1.59.0")
39192)]
39193#[cfg_attr(
39194 target_arch = "arm",
39195 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39196)]
39197pub fn vqsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
39198 unsafe { simd_saturating_sub(a, b) }
39199}
39200#[doc = "Saturating subtract"]
39201#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u8)"]
39202#[inline(always)]
39203#[target_feature(enable = "neon")]
39204#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39205#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u8"))]
39206#[cfg_attr(
39207 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39208 assert_instr(uqsub)
39209)]
39210#[cfg_attr(
39211 not(target_arch = "arm"),
39212 stable(feature = "neon_intrinsics", since = "1.59.0")
39213)]
39214#[cfg_attr(
39215 target_arch = "arm",
39216 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39217)]
39218pub fn vqsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
39219 unsafe { simd_saturating_sub(a, b) }
39220}
39221#[doc = "Saturating subtract"]
39222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u8)"]
39223#[inline(always)]
39224#[target_feature(enable = "neon")]
39225#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39226#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u8"))]
39227#[cfg_attr(
39228 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39229 assert_instr(uqsub)
39230)]
39231#[cfg_attr(
39232 not(target_arch = "arm"),
39233 stable(feature = "neon_intrinsics", since = "1.59.0")
39234)]
39235#[cfg_attr(
39236 target_arch = "arm",
39237 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39238)]
39239pub fn vqsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
39240 unsafe { simd_saturating_sub(a, b) }
39241}
39242#[doc = "Saturating subtract"]
39243#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u16)"]
39244#[inline(always)]
39245#[target_feature(enable = "neon")]
39246#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39247#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u16"))]
39248#[cfg_attr(
39249 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39250 assert_instr(uqsub)
39251)]
39252#[cfg_attr(
39253 not(target_arch = "arm"),
39254 stable(feature = "neon_intrinsics", since = "1.59.0")
39255)]
39256#[cfg_attr(
39257 target_arch = "arm",
39258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39259)]
39260pub fn vqsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
39261 unsafe { simd_saturating_sub(a, b) }
39262}
39263#[doc = "Saturating subtract"]
39264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u16)"]
39265#[inline(always)]
39266#[target_feature(enable = "neon")]
39267#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39268#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u16"))]
39269#[cfg_attr(
39270 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39271 assert_instr(uqsub)
39272)]
39273#[cfg_attr(
39274 not(target_arch = "arm"),
39275 stable(feature = "neon_intrinsics", since = "1.59.0")
39276)]
39277#[cfg_attr(
39278 target_arch = "arm",
39279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39280)]
39281pub fn vqsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
39282 unsafe { simd_saturating_sub(a, b) }
39283}
39284#[doc = "Saturating subtract"]
39285#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u32)"]
39286#[inline(always)]
39287#[target_feature(enable = "neon")]
39288#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39289#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u32"))]
39290#[cfg_attr(
39291 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39292 assert_instr(uqsub)
39293)]
39294#[cfg_attr(
39295 not(target_arch = "arm"),
39296 stable(feature = "neon_intrinsics", since = "1.59.0")
39297)]
39298#[cfg_attr(
39299 target_arch = "arm",
39300 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39301)]
39302pub fn vqsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
39303 unsafe { simd_saturating_sub(a, b) }
39304}
39305#[doc = "Saturating subtract"]
39306#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u32)"]
39307#[inline(always)]
39308#[target_feature(enable = "neon")]
39309#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39310#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u32"))]
39311#[cfg_attr(
39312 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39313 assert_instr(uqsub)
39314)]
39315#[cfg_attr(
39316 not(target_arch = "arm"),
39317 stable(feature = "neon_intrinsics", since = "1.59.0")
39318)]
39319#[cfg_attr(
39320 target_arch = "arm",
39321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39322)]
39323pub fn vqsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
39324 unsafe { simd_saturating_sub(a, b) }
39325}
39326#[doc = "Saturating subtract"]
39327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u64)"]
39328#[inline(always)]
39329#[target_feature(enable = "neon")]
39330#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39331#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u64"))]
39332#[cfg_attr(
39333 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39334 assert_instr(uqsub)
39335)]
39336#[cfg_attr(
39337 not(target_arch = "arm"),
39338 stable(feature = "neon_intrinsics", since = "1.59.0")
39339)]
39340#[cfg_attr(
39341 target_arch = "arm",
39342 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39343)]
39344pub fn vqsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
39345 unsafe { simd_saturating_sub(a, b) }
39346}
39347#[doc = "Saturating subtract"]
39348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u64)"]
39349#[inline(always)]
39350#[target_feature(enable = "neon")]
39351#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39352#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vqsub.u64"))]
39353#[cfg_attr(
39354 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39355 assert_instr(uqsub)
39356)]
39357#[cfg_attr(
39358 not(target_arch = "arm"),
39359 stable(feature = "neon_intrinsics", since = "1.59.0")
39360)]
39361#[cfg_attr(
39362 target_arch = "arm",
39363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39364)]
39365pub fn vqsubq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
39366 unsafe { simd_saturating_sub(a, b) }
39367}
39368#[doc = "Rounding Add returning High Narrow (high half)."]
39369#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s16)"]
39370#[inline(always)]
39371#[target_feature(enable = "neon")]
39372#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39373#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
39374#[cfg_attr(
39375 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39376 assert_instr(raddhn2)
39377)]
39378#[cfg_attr(
39379 not(target_arch = "arm"),
39380 stable(feature = "neon_intrinsics", since = "1.59.0")
39381)]
39382#[cfg_attr(
39383 target_arch = "arm",
39384 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39385)]
39386pub fn vraddhn_high_s16(a: int8x8_t, b: int16x8_t, c: int16x8_t) -> int8x16_t {
39387 let x = vraddhn_s16(b, c);
39388 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
39389}
39390#[doc = "Rounding Add returning High Narrow (high half)."]
39391#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s32)"]
39392#[inline(always)]
39393#[target_feature(enable = "neon")]
39394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39395#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
39396#[cfg_attr(
39397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39398 assert_instr(raddhn2)
39399)]
39400#[cfg_attr(
39401 not(target_arch = "arm"),
39402 stable(feature = "neon_intrinsics", since = "1.59.0")
39403)]
39404#[cfg_attr(
39405 target_arch = "arm",
39406 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39407)]
39408pub fn vraddhn_high_s32(a: int16x4_t, b: int32x4_t, c: int32x4_t) -> int16x8_t {
39409 let x = vraddhn_s32(b, c);
39410 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7]) }
39411}
39412#[doc = "Rounding Add returning High Narrow (high half)."]
39413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s64)"]
39414#[inline(always)]
39415#[target_feature(enable = "neon")]
39416#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39417#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
39418#[cfg_attr(
39419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39420 assert_instr(raddhn2)
39421)]
39422#[cfg_attr(
39423 not(target_arch = "arm"),
39424 stable(feature = "neon_intrinsics", since = "1.59.0")
39425)]
39426#[cfg_attr(
39427 target_arch = "arm",
39428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39429)]
39430pub fn vraddhn_high_s64(a: int32x2_t, b: int64x2_t, c: int64x2_t) -> int32x4_t {
39431 let x = vraddhn_s64(b, c);
39432 unsafe { simd_shuffle!(a, x, [0, 1, 2, 3]) }
39433}
39434#[doc = "Rounding Add returning High Narrow (high half)."]
39435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u16)"]
39436#[inline(always)]
39437#[target_feature(enable = "neon")]
39438#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39439#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
39440#[cfg_attr(
39441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39442 assert_instr(raddhn2)
39443)]
39444#[cfg_attr(
39445 not(target_arch = "arm"),
39446 stable(feature = "neon_intrinsics", since = "1.59.0")
39447)]
39448#[cfg_attr(
39449 target_arch = "arm",
39450 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39451)]
39452pub fn vraddhn_high_u16(a: uint8x8_t, b: uint16x8_t, c: uint16x8_t) -> uint8x16_t {
39453 unsafe {
39454 let x: uint8x8_t = transmute(vraddhn_s16(transmute(b), transmute(c)));
39455 simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
39456 }
39457}
39458#[doc = "Rounding Add returning High Narrow (high half)."]
39459#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u32)"]
39460#[inline(always)]
39461#[target_feature(enable = "neon")]
39462#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39463#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
39464#[cfg_attr(
39465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39466 assert_instr(raddhn2)
39467)]
39468#[cfg_attr(
39469 not(target_arch = "arm"),
39470 stable(feature = "neon_intrinsics", since = "1.59.0")
39471)]
39472#[cfg_attr(
39473 target_arch = "arm",
39474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39475)]
39476pub fn vraddhn_high_u32(a: uint16x4_t, b: uint32x4_t, c: uint32x4_t) -> uint16x8_t {
39477 unsafe {
39478 let x: uint16x4_t = transmute(vraddhn_s32(transmute(b), transmute(c)));
39479 simd_shuffle!(a, x, [0, 1, 2, 3, 4, 5, 6, 7])
39480 }
39481}
39482#[doc = "Rounding Add returning High Narrow (high half)."]
39483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_u64)"]
39484#[inline(always)]
39485#[target_feature(enable = "neon")]
39486#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39487#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
39488#[cfg_attr(
39489 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39490 assert_instr(raddhn2)
39491)]
39492#[cfg_attr(
39493 not(target_arch = "arm"),
39494 stable(feature = "neon_intrinsics", since = "1.59.0")
39495)]
39496#[cfg_attr(
39497 target_arch = "arm",
39498 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39499)]
39500pub fn vraddhn_high_u64(a: uint32x2_t, b: uint64x2_t, c: uint64x2_t) -> uint32x4_t {
39501 unsafe {
39502 let x: uint32x2_t = transmute(vraddhn_s64(transmute(b), transmute(c)));
39503 simd_shuffle!(a, x, [0, 1, 2, 3])
39504 }
39505}
39506#[doc = "Rounding Add returning High Narrow."]
39507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s16)"]
39508#[inline(always)]
39509#[target_feature(enable = "neon")]
39510#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39511#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
39512#[cfg_attr(
39513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39514 assert_instr(raddhn)
39515)]
39516#[cfg_attr(
39517 not(target_arch = "arm"),
39518 stable(feature = "neon_intrinsics", since = "1.59.0")
39519)]
39520#[cfg_attr(
39521 target_arch = "arm",
39522 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39523)]
39524pub fn vraddhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
39525 unsafe extern "unadjusted" {
39526 #[cfg_attr(
39527 any(target_arch = "aarch64", target_arch = "arm64ec"),
39528 link_name = "llvm.aarch64.neon.raddhn.v8i8"
39529 )]
39530 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v8i8")]
39531 fn _vraddhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t;
39532 }
39533 unsafe { _vraddhn_s16(a, b) }
39534}
39535#[doc = "Rounding Add returning High Narrow."]
39536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s32)"]
39537#[inline(always)]
39538#[target_feature(enable = "neon")]
39539#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39540#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
39541#[cfg_attr(
39542 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39543 assert_instr(raddhn)
39544)]
39545#[cfg_attr(
39546 not(target_arch = "arm"),
39547 stable(feature = "neon_intrinsics", since = "1.59.0")
39548)]
39549#[cfg_attr(
39550 target_arch = "arm",
39551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39552)]
39553pub fn vraddhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
39554 unsafe extern "unadjusted" {
39555 #[cfg_attr(
39556 any(target_arch = "aarch64", target_arch = "arm64ec"),
39557 link_name = "llvm.aarch64.neon.raddhn.v4i16"
39558 )]
39559 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v4i16")]
39560 fn _vraddhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t;
39561 }
39562 unsafe { _vraddhn_s32(a, b) }
39563}
39564#[doc = "Rounding Add returning High Narrow."]
39565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_s64)"]
39566#[inline(always)]
39567#[target_feature(enable = "neon")]
39568#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39569#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
39570#[cfg_attr(
39571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39572 assert_instr(raddhn)
39573)]
39574#[cfg_attr(
39575 not(target_arch = "arm"),
39576 stable(feature = "neon_intrinsics", since = "1.59.0")
39577)]
39578#[cfg_attr(
39579 target_arch = "arm",
39580 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39581)]
39582pub fn vraddhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
39583 unsafe extern "unadjusted" {
39584 #[cfg_attr(
39585 any(target_arch = "aarch64", target_arch = "arm64ec"),
39586 link_name = "llvm.aarch64.neon.raddhn.v2i32"
39587 )]
39588 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vraddhn.v2i32")]
39589 fn _vraddhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t;
39590 }
39591 unsafe { _vraddhn_s64(a, b) }
39592}
39593#[doc = "Rounding Add returning High Narrow."]
39594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u16)"]
39595#[inline(always)]
39596#[cfg(target_endian = "little")]
39597#[target_feature(enable = "neon")]
39598#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39599#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
39600#[cfg_attr(
39601 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39602 assert_instr(raddhn)
39603)]
39604#[cfg_attr(
39605 not(target_arch = "arm"),
39606 stable(feature = "neon_intrinsics", since = "1.59.0")
39607)]
39608#[cfg_attr(
39609 target_arch = "arm",
39610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39611)]
39612pub fn vraddhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
39613 unsafe { transmute(vraddhn_s16(transmute(a), transmute(b))) }
39614}
39615#[doc = "Rounding Add returning High Narrow."]
39616#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u16)"]
39617#[inline(always)]
39618#[cfg(target_endian = "big")]
39619#[target_feature(enable = "neon")]
39620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39621#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i16"))]
39622#[cfg_attr(
39623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39624 assert_instr(raddhn)
39625)]
39626#[cfg_attr(
39627 not(target_arch = "arm"),
39628 stable(feature = "neon_intrinsics", since = "1.59.0")
39629)]
39630#[cfg_attr(
39631 target_arch = "arm",
39632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39633)]
39634pub fn vraddhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
39635 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
39636 let b: uint16x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
39637 unsafe {
39638 let ret_val: uint8x8_t = transmute(vraddhn_s16(transmute(a), transmute(b)));
39639 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
39640 }
39641}
39642#[doc = "Rounding Add returning High Narrow."]
39643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u32)"]
39644#[inline(always)]
39645#[cfg(target_endian = "little")]
39646#[target_feature(enable = "neon")]
39647#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39648#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
39649#[cfg_attr(
39650 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39651 assert_instr(raddhn)
39652)]
39653#[cfg_attr(
39654 not(target_arch = "arm"),
39655 stable(feature = "neon_intrinsics", since = "1.59.0")
39656)]
39657#[cfg_attr(
39658 target_arch = "arm",
39659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39660)]
39661pub fn vraddhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
39662 unsafe { transmute(vraddhn_s32(transmute(a), transmute(b))) }
39663}
39664#[doc = "Rounding Add returning High Narrow."]
39665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u32)"]
39666#[inline(always)]
39667#[cfg(target_endian = "big")]
39668#[target_feature(enable = "neon")]
39669#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39670#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i32"))]
39671#[cfg_attr(
39672 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39673 assert_instr(raddhn)
39674)]
39675#[cfg_attr(
39676 not(target_arch = "arm"),
39677 stable(feature = "neon_intrinsics", since = "1.59.0")
39678)]
39679#[cfg_attr(
39680 target_arch = "arm",
39681 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39682)]
39683pub fn vraddhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
39684 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
39685 let b: uint32x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
39686 unsafe {
39687 let ret_val: uint16x4_t = transmute(vraddhn_s32(transmute(a), transmute(b)));
39688 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
39689 }
39690}
39691#[doc = "Rounding Add returning High Narrow."]
39692#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u64)"]
39693#[inline(always)]
39694#[cfg(target_endian = "little")]
39695#[target_feature(enable = "neon")]
39696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39697#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
39698#[cfg_attr(
39699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39700 assert_instr(raddhn)
39701)]
39702#[cfg_attr(
39703 not(target_arch = "arm"),
39704 stable(feature = "neon_intrinsics", since = "1.59.0")
39705)]
39706#[cfg_attr(
39707 target_arch = "arm",
39708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39709)]
39710pub fn vraddhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
39711 unsafe { transmute(vraddhn_s64(transmute(a), transmute(b))) }
39712}
39713#[doc = "Rounding Add returning High Narrow."]
39714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_u64)"]
39715#[inline(always)]
39716#[cfg(target_endian = "big")]
39717#[target_feature(enable = "neon")]
39718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39719#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vraddhn.i64"))]
39720#[cfg_attr(
39721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39722 assert_instr(raddhn)
39723)]
39724#[cfg_attr(
39725 not(target_arch = "arm"),
39726 stable(feature = "neon_intrinsics", since = "1.59.0")
39727)]
39728#[cfg_attr(
39729 target_arch = "arm",
39730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39731)]
39732pub fn vraddhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
39733 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
39734 let b: uint64x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
39735 unsafe {
39736 let ret_val: uint32x2_t = transmute(vraddhn_s64(transmute(a), transmute(b)));
39737 simd_shuffle!(ret_val, ret_val, [1, 0])
39738 }
39739}
39740#[doc = "Reciprocal estimate."]
39741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_f16)"]
39742#[inline(always)]
39743#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
39744#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39745#[cfg_attr(
39746 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39747 assert_instr(frecpe)
39748)]
39749#[target_feature(enable = "neon,fp16")]
39750#[cfg_attr(
39751 not(target_arch = "arm"),
39752 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
39753)]
39754#[cfg_attr(
39755 target_arch = "arm",
39756 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39757)]
39758#[cfg(not(target_arch = "arm64ec"))]
39759pub fn vrecpe_f16(a: float16x4_t) -> float16x4_t {
39760 unsafe extern "unadjusted" {
39761 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4f16")]
39762 #[cfg_attr(
39763 any(target_arch = "aarch64", target_arch = "arm64ec"),
39764 link_name = "llvm.aarch64.neon.frecpe.v4f16"
39765 )]
39766 fn _vrecpe_f16(a: float16x4_t) -> float16x4_t;
39767 }
39768 unsafe { _vrecpe_f16(a) }
39769}
39770#[doc = "Reciprocal estimate."]
39771#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_f16)"]
39772#[inline(always)]
39773#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
39774#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39775#[cfg_attr(
39776 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39777 assert_instr(frecpe)
39778)]
39779#[target_feature(enable = "neon,fp16")]
39780#[cfg_attr(
39781 not(target_arch = "arm"),
39782 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
39783)]
39784#[cfg_attr(
39785 target_arch = "arm",
39786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39787)]
39788#[cfg(not(target_arch = "arm64ec"))]
39789pub fn vrecpeq_f16(a: float16x8_t) -> float16x8_t {
39790 unsafe extern "unadjusted" {
39791 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v8f16")]
39792 #[cfg_attr(
39793 any(target_arch = "aarch64", target_arch = "arm64ec"),
39794 link_name = "llvm.aarch64.neon.frecpe.v8f16"
39795 )]
39796 fn _vrecpeq_f16(a: float16x8_t) -> float16x8_t;
39797 }
39798 unsafe { _vrecpeq_f16(a) }
39799}
39800#[doc = "Reciprocal estimate."]
39801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_f32)"]
39802#[inline(always)]
39803#[target_feature(enable = "neon")]
39804#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39805#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39806#[cfg_attr(
39807 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39808 assert_instr(frecpe)
39809)]
39810#[cfg_attr(
39811 not(target_arch = "arm"),
39812 stable(feature = "neon_intrinsics", since = "1.59.0")
39813)]
39814#[cfg_attr(
39815 target_arch = "arm",
39816 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39817)]
39818pub fn vrecpe_f32(a: float32x2_t) -> float32x2_t {
39819 unsafe extern "unadjusted" {
39820 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v2f32")]
39821 #[cfg_attr(
39822 any(target_arch = "aarch64", target_arch = "arm64ec"),
39823 link_name = "llvm.aarch64.neon.frecpe.v2f32"
39824 )]
39825 fn _vrecpe_f32(a: float32x2_t) -> float32x2_t;
39826 }
39827 unsafe { _vrecpe_f32(a) }
39828}
39829#[doc = "Reciprocal estimate."]
39830#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_f32)"]
39831#[inline(always)]
39832#[target_feature(enable = "neon")]
39833#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39834#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39835#[cfg_attr(
39836 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39837 assert_instr(frecpe)
39838)]
39839#[cfg_attr(
39840 not(target_arch = "arm"),
39841 stable(feature = "neon_intrinsics", since = "1.59.0")
39842)]
39843#[cfg_attr(
39844 target_arch = "arm",
39845 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39846)]
39847pub fn vrecpeq_f32(a: float32x4_t) -> float32x4_t {
39848 unsafe extern "unadjusted" {
39849 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4f32")]
39850 #[cfg_attr(
39851 any(target_arch = "aarch64", target_arch = "arm64ec"),
39852 link_name = "llvm.aarch64.neon.frecpe.v4f32"
39853 )]
39854 fn _vrecpeq_f32(a: float32x4_t) -> float32x4_t;
39855 }
39856 unsafe { _vrecpeq_f32(a) }
39857}
39858#[doc = "Unsigned reciprocal estimate"]
39859#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpe_u32)"]
39860#[inline(always)]
39861#[target_feature(enable = "neon")]
39862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39863#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39864#[cfg_attr(
39865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39866 assert_instr(urecpe)
39867)]
39868#[cfg_attr(
39869 not(target_arch = "arm"),
39870 stable(feature = "neon_intrinsics", since = "1.59.0")
39871)]
39872#[cfg_attr(
39873 target_arch = "arm",
39874 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39875)]
39876pub fn vrecpe_u32(a: uint32x2_t) -> uint32x2_t {
39877 unsafe extern "unadjusted" {
39878 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v2i32")]
39879 #[cfg_attr(
39880 any(target_arch = "aarch64", target_arch = "arm64ec"),
39881 link_name = "llvm.aarch64.neon.urecpe.v2i32"
39882 )]
39883 fn _vrecpe_u32(a: uint32x2_t) -> uint32x2_t;
39884 }
39885 unsafe { _vrecpe_u32(a) }
39886}
39887#[doc = "Unsigned reciprocal estimate"]
39888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpeq_u32)"]
39889#[inline(always)]
39890#[target_feature(enable = "neon")]
39891#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39892#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecpe))]
39893#[cfg_attr(
39894 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39895 assert_instr(urecpe)
39896)]
39897#[cfg_attr(
39898 not(target_arch = "arm"),
39899 stable(feature = "neon_intrinsics", since = "1.59.0")
39900)]
39901#[cfg_attr(
39902 target_arch = "arm",
39903 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39904)]
39905pub fn vrecpeq_u32(a: uint32x4_t) -> uint32x4_t {
39906 unsafe extern "unadjusted" {
39907 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecpe.v4i32")]
39908 #[cfg_attr(
39909 any(target_arch = "aarch64", target_arch = "arm64ec"),
39910 link_name = "llvm.aarch64.neon.urecpe.v4i32"
39911 )]
39912 fn _vrecpeq_u32(a: uint32x4_t) -> uint32x4_t;
39913 }
39914 unsafe { _vrecpeq_u32(a) }
39915}
39916#[doc = "Floating-point reciprocal step"]
39917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecps_f16)"]
39918#[inline(always)]
39919#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
39920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
39921#[cfg_attr(
39922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39923 assert_instr(frecps)
39924)]
39925#[target_feature(enable = "neon,fp16")]
39926#[cfg_attr(
39927 not(target_arch = "arm"),
39928 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
39929)]
39930#[cfg_attr(
39931 target_arch = "arm",
39932 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39933)]
39934#[cfg(not(target_arch = "arm64ec"))]
39935pub fn vrecps_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
39936 unsafe extern "unadjusted" {
39937 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v4f16")]
39938 #[cfg_attr(
39939 any(target_arch = "aarch64", target_arch = "arm64ec"),
39940 link_name = "llvm.aarch64.neon.frecps.v4f16"
39941 )]
39942 fn _vrecps_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
39943 }
39944 unsafe { _vrecps_f16(a, b) }
39945}
39946#[doc = "Floating-point reciprocal step"]
39947#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpsq_f16)"]
39948#[inline(always)]
39949#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
39950#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
39951#[cfg_attr(
39952 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39953 assert_instr(frecps)
39954)]
39955#[target_feature(enable = "neon,fp16")]
39956#[cfg_attr(
39957 not(target_arch = "arm"),
39958 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
39959)]
39960#[cfg_attr(
39961 target_arch = "arm",
39962 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39963)]
39964#[cfg(not(target_arch = "arm64ec"))]
39965pub fn vrecpsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
39966 unsafe extern "unadjusted" {
39967 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v8f16")]
39968 #[cfg_attr(
39969 any(target_arch = "aarch64", target_arch = "arm64ec"),
39970 link_name = "llvm.aarch64.neon.frecps.v8f16"
39971 )]
39972 fn _vrecpsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
39973 }
39974 unsafe { _vrecpsq_f16(a, b) }
39975}
39976#[doc = "Floating-point reciprocal step"]
39977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecps_f32)"]
39978#[inline(always)]
39979#[target_feature(enable = "neon")]
39980#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
39981#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
39982#[cfg_attr(
39983 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
39984 assert_instr(frecps)
39985)]
39986#[cfg_attr(
39987 not(target_arch = "arm"),
39988 stable(feature = "neon_intrinsics", since = "1.59.0")
39989)]
39990#[cfg_attr(
39991 target_arch = "arm",
39992 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
39993)]
39994pub fn vrecps_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
39995 unsafe extern "unadjusted" {
39996 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v2f32")]
39997 #[cfg_attr(
39998 any(target_arch = "aarch64", target_arch = "arm64ec"),
39999 link_name = "llvm.aarch64.neon.frecps.v2f32"
40000 )]
40001 fn _vrecps_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
40002 }
40003 unsafe { _vrecps_f32(a, b) }
40004}
40005#[doc = "Floating-point reciprocal step"]
40006#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrecpsq_f32)"]
40007#[inline(always)]
40008#[target_feature(enable = "neon")]
40009#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrecps))]
40011#[cfg_attr(
40012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40013 assert_instr(frecps)
40014)]
40015#[cfg_attr(
40016 not(target_arch = "arm"),
40017 stable(feature = "neon_intrinsics", since = "1.59.0")
40018)]
40019#[cfg_attr(
40020 target_arch = "arm",
40021 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40022)]
40023pub fn vrecpsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
40024 unsafe extern "unadjusted" {
40025 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrecps.v4f32")]
40026 #[cfg_attr(
40027 any(target_arch = "aarch64", target_arch = "arm64ec"),
40028 link_name = "llvm.aarch64.neon.frecps.v4f32"
40029 )]
40030 fn _vrecpsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
40031 }
40032 unsafe { _vrecpsq_f32(a, b) }
40033}
40034#[doc = "Vector reinterpret cast operation"]
40035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_f16)"]
40036#[inline(always)]
40037#[cfg(target_endian = "little")]
40038#[target_feature(enable = "neon")]
40039#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40040#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40041#[cfg_attr(
40042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40043 assert_instr(nop)
40044)]
40045#[cfg_attr(
40046 not(target_arch = "arm"),
40047 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40048)]
40049#[cfg_attr(
40050 target_arch = "arm",
40051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40052)]
40053#[cfg(not(target_arch = "arm64ec"))]
40054pub fn vreinterpret_f32_f16(a: float16x4_t) -> float32x2_t {
40055 unsafe { transmute(a) }
40056}
40057#[doc = "Vector reinterpret cast operation"]
40058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_f16)"]
40059#[inline(always)]
40060#[cfg(target_endian = "big")]
40061#[target_feature(enable = "neon")]
40062#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40063#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40064#[cfg_attr(
40065 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40066 assert_instr(nop)
40067)]
40068#[cfg_attr(
40069 not(target_arch = "arm"),
40070 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40071)]
40072#[cfg_attr(
40073 target_arch = "arm",
40074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40075)]
40076#[cfg(not(target_arch = "arm64ec"))]
40077pub fn vreinterpret_f32_f16(a: float16x4_t) -> float32x2_t {
40078 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40079 unsafe {
40080 let ret_val: float32x2_t = transmute(a);
40081 simd_shuffle!(ret_val, ret_val, [1, 0])
40082 }
40083}
40084#[doc = "Vector reinterpret cast operation"]
40085#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f16)"]
40086#[inline(always)]
40087#[cfg(target_endian = "little")]
40088#[target_feature(enable = "neon")]
40089#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40090#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40091#[cfg_attr(
40092 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40093 assert_instr(nop)
40094)]
40095#[cfg_attr(
40096 not(target_arch = "arm"),
40097 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40098)]
40099#[cfg_attr(
40100 target_arch = "arm",
40101 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40102)]
40103#[cfg(not(target_arch = "arm64ec"))]
40104pub fn vreinterpret_s8_f16(a: float16x4_t) -> int8x8_t {
40105 unsafe { transmute(a) }
40106}
40107#[doc = "Vector reinterpret cast operation"]
40108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f16)"]
40109#[inline(always)]
40110#[cfg(target_endian = "big")]
40111#[target_feature(enable = "neon")]
40112#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40113#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40114#[cfg_attr(
40115 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40116 assert_instr(nop)
40117)]
40118#[cfg_attr(
40119 not(target_arch = "arm"),
40120 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40121)]
40122#[cfg_attr(
40123 target_arch = "arm",
40124 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40125)]
40126#[cfg(not(target_arch = "arm64ec"))]
40127pub fn vreinterpret_s8_f16(a: float16x4_t) -> int8x8_t {
40128 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40129 unsafe {
40130 let ret_val: int8x8_t = transmute(a);
40131 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
40132 }
40133}
40134#[doc = "Vector reinterpret cast operation"]
40135#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f16)"]
40136#[inline(always)]
40137#[cfg(target_endian = "little")]
40138#[target_feature(enable = "neon")]
40139#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40140#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40141#[cfg_attr(
40142 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40143 assert_instr(nop)
40144)]
40145#[cfg_attr(
40146 not(target_arch = "arm"),
40147 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40148)]
40149#[cfg_attr(
40150 target_arch = "arm",
40151 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40152)]
40153#[cfg(not(target_arch = "arm64ec"))]
40154pub fn vreinterpret_s16_f16(a: float16x4_t) -> int16x4_t {
40155 unsafe { transmute(a) }
40156}
40157#[doc = "Vector reinterpret cast operation"]
40158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f16)"]
40159#[inline(always)]
40160#[cfg(target_endian = "big")]
40161#[target_feature(enable = "neon")]
40162#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40163#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40164#[cfg_attr(
40165 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40166 assert_instr(nop)
40167)]
40168#[cfg_attr(
40169 not(target_arch = "arm"),
40170 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40171)]
40172#[cfg_attr(
40173 target_arch = "arm",
40174 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40175)]
40176#[cfg(not(target_arch = "arm64ec"))]
40177pub fn vreinterpret_s16_f16(a: float16x4_t) -> int16x4_t {
40178 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40179 unsafe {
40180 let ret_val: int16x4_t = transmute(a);
40181 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40182 }
40183}
40184#[doc = "Vector reinterpret cast operation"]
40185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f16)"]
40186#[inline(always)]
40187#[cfg(target_endian = "little")]
40188#[target_feature(enable = "neon")]
40189#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40190#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40191#[cfg_attr(
40192 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40193 assert_instr(nop)
40194)]
40195#[cfg_attr(
40196 not(target_arch = "arm"),
40197 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40198)]
40199#[cfg_attr(
40200 target_arch = "arm",
40201 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40202)]
40203#[cfg(not(target_arch = "arm64ec"))]
40204pub fn vreinterpret_s32_f16(a: float16x4_t) -> int32x2_t {
40205 unsafe { transmute(a) }
40206}
40207#[doc = "Vector reinterpret cast operation"]
40208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f16)"]
40209#[inline(always)]
40210#[cfg(target_endian = "big")]
40211#[target_feature(enable = "neon")]
40212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40213#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40214#[cfg_attr(
40215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40216 assert_instr(nop)
40217)]
40218#[cfg_attr(
40219 not(target_arch = "arm"),
40220 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40221)]
40222#[cfg_attr(
40223 target_arch = "arm",
40224 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40225)]
40226#[cfg(not(target_arch = "arm64ec"))]
40227pub fn vreinterpret_s32_f16(a: float16x4_t) -> int32x2_t {
40228 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40229 unsafe {
40230 let ret_val: int32x2_t = transmute(a);
40231 simd_shuffle!(ret_val, ret_val, [1, 0])
40232 }
40233}
40234#[doc = "Vector reinterpret cast operation"]
40235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f16)"]
40236#[inline(always)]
40237#[cfg(target_endian = "little")]
40238#[target_feature(enable = "neon")]
40239#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40240#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40241#[cfg_attr(
40242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40243 assert_instr(nop)
40244)]
40245#[cfg_attr(
40246 not(target_arch = "arm"),
40247 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40248)]
40249#[cfg_attr(
40250 target_arch = "arm",
40251 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40252)]
40253#[cfg(not(target_arch = "arm64ec"))]
40254pub fn vreinterpret_s64_f16(a: float16x4_t) -> int64x1_t {
40255 unsafe { transmute(a) }
40256}
40257#[doc = "Vector reinterpret cast operation"]
40258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f16)"]
40259#[inline(always)]
40260#[cfg(target_endian = "big")]
40261#[target_feature(enable = "neon")]
40262#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40263#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40264#[cfg_attr(
40265 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40266 assert_instr(nop)
40267)]
40268#[cfg_attr(
40269 not(target_arch = "arm"),
40270 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40271)]
40272#[cfg_attr(
40273 target_arch = "arm",
40274 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40275)]
40276#[cfg(not(target_arch = "arm64ec"))]
40277pub fn vreinterpret_s64_f16(a: float16x4_t) -> int64x1_t {
40278 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40279 unsafe { transmute(a) }
40280}
40281#[doc = "Vector reinterpret cast operation"]
40282#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f16)"]
40283#[inline(always)]
40284#[cfg(target_endian = "little")]
40285#[target_feature(enable = "neon")]
40286#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40287#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40288#[cfg_attr(
40289 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40290 assert_instr(nop)
40291)]
40292#[cfg_attr(
40293 not(target_arch = "arm"),
40294 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40295)]
40296#[cfg_attr(
40297 target_arch = "arm",
40298 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40299)]
40300#[cfg(not(target_arch = "arm64ec"))]
40301pub fn vreinterpret_u8_f16(a: float16x4_t) -> uint8x8_t {
40302 unsafe { transmute(a) }
40303}
40304#[doc = "Vector reinterpret cast operation"]
40305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f16)"]
40306#[inline(always)]
40307#[cfg(target_endian = "big")]
40308#[target_feature(enable = "neon")]
40309#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40310#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40311#[cfg_attr(
40312 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40313 assert_instr(nop)
40314)]
40315#[cfg_attr(
40316 not(target_arch = "arm"),
40317 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40318)]
40319#[cfg_attr(
40320 target_arch = "arm",
40321 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40322)]
40323#[cfg(not(target_arch = "arm64ec"))]
40324pub fn vreinterpret_u8_f16(a: float16x4_t) -> uint8x8_t {
40325 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40326 unsafe {
40327 let ret_val: uint8x8_t = transmute(a);
40328 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
40329 }
40330}
40331#[doc = "Vector reinterpret cast operation"]
40332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f16)"]
40333#[inline(always)]
40334#[cfg(target_endian = "little")]
40335#[target_feature(enable = "neon")]
40336#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40337#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40338#[cfg_attr(
40339 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40340 assert_instr(nop)
40341)]
40342#[cfg_attr(
40343 not(target_arch = "arm"),
40344 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40345)]
40346#[cfg_attr(
40347 target_arch = "arm",
40348 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40349)]
40350#[cfg(not(target_arch = "arm64ec"))]
40351pub fn vreinterpret_u16_f16(a: float16x4_t) -> uint16x4_t {
40352 unsafe { transmute(a) }
40353}
40354#[doc = "Vector reinterpret cast operation"]
40355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f16)"]
40356#[inline(always)]
40357#[cfg(target_endian = "big")]
40358#[target_feature(enable = "neon")]
40359#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40360#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40361#[cfg_attr(
40362 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40363 assert_instr(nop)
40364)]
40365#[cfg_attr(
40366 not(target_arch = "arm"),
40367 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40368)]
40369#[cfg_attr(
40370 target_arch = "arm",
40371 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40372)]
40373#[cfg(not(target_arch = "arm64ec"))]
40374pub fn vreinterpret_u16_f16(a: float16x4_t) -> uint16x4_t {
40375 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40376 unsafe {
40377 let ret_val: uint16x4_t = transmute(a);
40378 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40379 }
40380}
40381#[doc = "Vector reinterpret cast operation"]
40382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f16)"]
40383#[inline(always)]
40384#[cfg(target_endian = "little")]
40385#[target_feature(enable = "neon")]
40386#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40388#[cfg_attr(
40389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40390 assert_instr(nop)
40391)]
40392#[cfg_attr(
40393 not(target_arch = "arm"),
40394 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40395)]
40396#[cfg_attr(
40397 target_arch = "arm",
40398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40399)]
40400#[cfg(not(target_arch = "arm64ec"))]
40401pub fn vreinterpret_u32_f16(a: float16x4_t) -> uint32x2_t {
40402 unsafe { transmute(a) }
40403}
40404#[doc = "Vector reinterpret cast operation"]
40405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f16)"]
40406#[inline(always)]
40407#[cfg(target_endian = "big")]
40408#[target_feature(enable = "neon")]
40409#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40410#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40411#[cfg_attr(
40412 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40413 assert_instr(nop)
40414)]
40415#[cfg_attr(
40416 not(target_arch = "arm"),
40417 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40418)]
40419#[cfg_attr(
40420 target_arch = "arm",
40421 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40422)]
40423#[cfg(not(target_arch = "arm64ec"))]
40424pub fn vreinterpret_u32_f16(a: float16x4_t) -> uint32x2_t {
40425 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40426 unsafe {
40427 let ret_val: uint32x2_t = transmute(a);
40428 simd_shuffle!(ret_val, ret_val, [1, 0])
40429 }
40430}
40431#[doc = "Vector reinterpret cast operation"]
40432#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f16)"]
40433#[inline(always)]
40434#[cfg(target_endian = "little")]
40435#[target_feature(enable = "neon")]
40436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40437#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40438#[cfg_attr(
40439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40440 assert_instr(nop)
40441)]
40442#[cfg_attr(
40443 not(target_arch = "arm"),
40444 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40445)]
40446#[cfg_attr(
40447 target_arch = "arm",
40448 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40449)]
40450#[cfg(not(target_arch = "arm64ec"))]
40451pub fn vreinterpret_u64_f16(a: float16x4_t) -> uint64x1_t {
40452 unsafe { transmute(a) }
40453}
40454#[doc = "Vector reinterpret cast operation"]
40455#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f16)"]
40456#[inline(always)]
40457#[cfg(target_endian = "big")]
40458#[target_feature(enable = "neon")]
40459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40460#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40461#[cfg_attr(
40462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40463 assert_instr(nop)
40464)]
40465#[cfg_attr(
40466 not(target_arch = "arm"),
40467 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40468)]
40469#[cfg_attr(
40470 target_arch = "arm",
40471 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40472)]
40473#[cfg(not(target_arch = "arm64ec"))]
40474pub fn vreinterpret_u64_f16(a: float16x4_t) -> uint64x1_t {
40475 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40476 unsafe { transmute(a) }
40477}
40478#[doc = "Vector reinterpret cast operation"]
40479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f16)"]
40480#[inline(always)]
40481#[cfg(target_endian = "little")]
40482#[target_feature(enable = "neon")]
40483#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40484#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40485#[cfg_attr(
40486 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40487 assert_instr(nop)
40488)]
40489#[cfg_attr(
40490 not(target_arch = "arm"),
40491 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40492)]
40493#[cfg_attr(
40494 target_arch = "arm",
40495 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40496)]
40497#[cfg(not(target_arch = "arm64ec"))]
40498pub fn vreinterpret_p8_f16(a: float16x4_t) -> poly8x8_t {
40499 unsafe { transmute(a) }
40500}
40501#[doc = "Vector reinterpret cast operation"]
40502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f16)"]
40503#[inline(always)]
40504#[cfg(target_endian = "big")]
40505#[target_feature(enable = "neon")]
40506#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40507#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40508#[cfg_attr(
40509 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40510 assert_instr(nop)
40511)]
40512#[cfg_attr(
40513 not(target_arch = "arm"),
40514 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40515)]
40516#[cfg_attr(
40517 target_arch = "arm",
40518 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40519)]
40520#[cfg(not(target_arch = "arm64ec"))]
40521pub fn vreinterpret_p8_f16(a: float16x4_t) -> poly8x8_t {
40522 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40523 unsafe {
40524 let ret_val: poly8x8_t = transmute(a);
40525 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
40526 }
40527}
40528#[doc = "Vector reinterpret cast operation"]
40529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f16)"]
40530#[inline(always)]
40531#[cfg(target_endian = "little")]
40532#[target_feature(enable = "neon")]
40533#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40534#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40535#[cfg_attr(
40536 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40537 assert_instr(nop)
40538)]
40539#[cfg_attr(
40540 not(target_arch = "arm"),
40541 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40542)]
40543#[cfg_attr(
40544 target_arch = "arm",
40545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40546)]
40547#[cfg(not(target_arch = "arm64ec"))]
40548pub fn vreinterpret_p16_f16(a: float16x4_t) -> poly16x4_t {
40549 unsafe { transmute(a) }
40550}
40551#[doc = "Vector reinterpret cast operation"]
40552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f16)"]
40553#[inline(always)]
40554#[cfg(target_endian = "big")]
40555#[target_feature(enable = "neon")]
40556#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40557#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40558#[cfg_attr(
40559 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40560 assert_instr(nop)
40561)]
40562#[cfg_attr(
40563 not(target_arch = "arm"),
40564 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40565)]
40566#[cfg_attr(
40567 target_arch = "arm",
40568 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40569)]
40570#[cfg(not(target_arch = "arm64ec"))]
40571pub fn vreinterpret_p16_f16(a: float16x4_t) -> poly16x4_t {
40572 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
40573 unsafe {
40574 let ret_val: poly16x4_t = transmute(a);
40575 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40576 }
40577}
40578#[doc = "Vector reinterpret cast operation"]
40579#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_f16)"]
40580#[inline(always)]
40581#[cfg(target_endian = "little")]
40582#[target_feature(enable = "neon")]
40583#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40584#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40585#[cfg_attr(
40586 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40587 assert_instr(nop)
40588)]
40589#[cfg_attr(
40590 not(target_arch = "arm"),
40591 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40592)]
40593#[cfg_attr(
40594 target_arch = "arm",
40595 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40596)]
40597#[cfg(not(target_arch = "arm64ec"))]
40598pub fn vreinterpretq_f32_f16(a: float16x8_t) -> float32x4_t {
40599 unsafe { transmute(a) }
40600}
40601#[doc = "Vector reinterpret cast operation"]
40602#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_f16)"]
40603#[inline(always)]
40604#[cfg(target_endian = "big")]
40605#[target_feature(enable = "neon")]
40606#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40607#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40608#[cfg_attr(
40609 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40610 assert_instr(nop)
40611)]
40612#[cfg_attr(
40613 not(target_arch = "arm"),
40614 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40615)]
40616#[cfg_attr(
40617 target_arch = "arm",
40618 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40619)]
40620#[cfg(not(target_arch = "arm64ec"))]
40621pub fn vreinterpretq_f32_f16(a: float16x8_t) -> float32x4_t {
40622 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
40623 unsafe {
40624 let ret_val: float32x4_t = transmute(a);
40625 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40626 }
40627}
40628#[doc = "Vector reinterpret cast operation"]
40629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f16)"]
40630#[inline(always)]
40631#[cfg(target_endian = "little")]
40632#[target_feature(enable = "neon")]
40633#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40634#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40635#[cfg_attr(
40636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40637 assert_instr(nop)
40638)]
40639#[cfg_attr(
40640 not(target_arch = "arm"),
40641 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40642)]
40643#[cfg_attr(
40644 target_arch = "arm",
40645 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40646)]
40647#[cfg(not(target_arch = "arm64ec"))]
40648pub fn vreinterpretq_s8_f16(a: float16x8_t) -> int8x16_t {
40649 unsafe { transmute(a) }
40650}
40651#[doc = "Vector reinterpret cast operation"]
40652#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f16)"]
40653#[inline(always)]
40654#[cfg(target_endian = "big")]
40655#[target_feature(enable = "neon")]
40656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40657#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40658#[cfg_attr(
40659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40660 assert_instr(nop)
40661)]
40662#[cfg_attr(
40663 not(target_arch = "arm"),
40664 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40665)]
40666#[cfg_attr(
40667 target_arch = "arm",
40668 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40669)]
40670#[cfg(not(target_arch = "arm64ec"))]
40671pub fn vreinterpretq_s8_f16(a: float16x8_t) -> int8x16_t {
40672 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
40673 unsafe {
40674 let ret_val: int8x16_t = transmute(a);
40675 simd_shuffle!(
40676 ret_val,
40677 ret_val,
40678 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
40679 )
40680 }
40681}
40682#[doc = "Vector reinterpret cast operation"]
40683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_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_s16_f16(a: float16x8_t) -> int16x8_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_s16_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_s16_f16(a: float16x8_t) -> int16x8_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: int16x8_t = transmute(a);
40729 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 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_s32_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_s32_f16(a: float16x8_t) -> int32x4_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_s32_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_s32_f16(a: float16x8_t) -> int32x4_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: int32x4_t = transmute(a);
40779 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40780 }
40781}
40782#[doc = "Vector reinterpret cast operation"]
40783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f16)"]
40784#[inline(always)]
40785#[cfg(target_endian = "little")]
40786#[target_feature(enable = "neon")]
40787#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40788#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40789#[cfg_attr(
40790 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40791 assert_instr(nop)
40792)]
40793#[cfg_attr(
40794 not(target_arch = "arm"),
40795 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40796)]
40797#[cfg_attr(
40798 target_arch = "arm",
40799 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40800)]
40801#[cfg(not(target_arch = "arm64ec"))]
40802pub fn vreinterpretq_s64_f16(a: float16x8_t) -> int64x2_t {
40803 unsafe { transmute(a) }
40804}
40805#[doc = "Vector reinterpret cast operation"]
40806#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f16)"]
40807#[inline(always)]
40808#[cfg(target_endian = "big")]
40809#[target_feature(enable = "neon")]
40810#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40811#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40812#[cfg_attr(
40813 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40814 assert_instr(nop)
40815)]
40816#[cfg_attr(
40817 not(target_arch = "arm"),
40818 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40819)]
40820#[cfg_attr(
40821 target_arch = "arm",
40822 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40823)]
40824#[cfg(not(target_arch = "arm64ec"))]
40825pub fn vreinterpretq_s64_f16(a: float16x8_t) -> int64x2_t {
40826 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
40827 unsafe {
40828 let ret_val: int64x2_t = transmute(a);
40829 simd_shuffle!(ret_val, ret_val, [1, 0])
40830 }
40831}
40832#[doc = "Vector reinterpret cast operation"]
40833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f16)"]
40834#[inline(always)]
40835#[cfg(target_endian = "little")]
40836#[target_feature(enable = "neon")]
40837#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40838#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40839#[cfg_attr(
40840 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40841 assert_instr(nop)
40842)]
40843#[cfg_attr(
40844 not(target_arch = "arm"),
40845 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40846)]
40847#[cfg_attr(
40848 target_arch = "arm",
40849 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40850)]
40851#[cfg(not(target_arch = "arm64ec"))]
40852pub fn vreinterpretq_u8_f16(a: float16x8_t) -> uint8x16_t {
40853 unsafe { transmute(a) }
40854}
40855#[doc = "Vector reinterpret cast operation"]
40856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f16)"]
40857#[inline(always)]
40858#[cfg(target_endian = "big")]
40859#[target_feature(enable = "neon")]
40860#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40861#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40862#[cfg_attr(
40863 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40864 assert_instr(nop)
40865)]
40866#[cfg_attr(
40867 not(target_arch = "arm"),
40868 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
40869)]
40870#[cfg_attr(
40871 target_arch = "arm",
40872 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
40873)]
40874#[cfg(not(target_arch = "arm64ec"))]
40875pub fn vreinterpretq_u8_f16(a: float16x8_t) -> uint8x16_t {
40876 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
40877 unsafe {
40878 let ret_val: uint8x16_t = transmute(a);
40879 simd_shuffle!(
40880 ret_val,
40881 ret_val,
40882 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
40883 )
40884 }
40885}
40886#[doc = "Vector reinterpret cast operation"]
40887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_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_u16_f16(a: float16x8_t) -> uint16x8_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_u16_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_u16_f16(a: float16x8_t) -> uint16x8_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: uint16x8_t = transmute(a);
40933 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
40934 }
40935}
40936#[doc = "Vector reinterpret cast operation"]
40937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_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_u32_f16(a: float16x8_t) -> uint32x4_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_u32_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_u32_f16(a: float16x8_t) -> uint32x4_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: uint32x4_t = transmute(a);
40983 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
40984 }
40985}
40986#[doc = "Vector reinterpret cast operation"]
40987#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f16)"]
40988#[inline(always)]
40989#[cfg(target_endian = "little")]
40990#[target_feature(enable = "neon")]
40991#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
40992#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
40993#[cfg_attr(
40994 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
40995 assert_instr(nop)
40996)]
40997#[cfg_attr(
40998 not(target_arch = "arm"),
40999 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41000)]
41001#[cfg_attr(
41002 target_arch = "arm",
41003 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41004)]
41005#[cfg(not(target_arch = "arm64ec"))]
41006pub fn vreinterpretq_u64_f16(a: float16x8_t) -> uint64x2_t {
41007 unsafe { transmute(a) }
41008}
41009#[doc = "Vector reinterpret cast operation"]
41010#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f16)"]
41011#[inline(always)]
41012#[cfg(target_endian = "big")]
41013#[target_feature(enable = "neon")]
41014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41015#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41016#[cfg_attr(
41017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41018 assert_instr(nop)
41019)]
41020#[cfg_attr(
41021 not(target_arch = "arm"),
41022 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41023)]
41024#[cfg_attr(
41025 target_arch = "arm",
41026 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41027)]
41028#[cfg(not(target_arch = "arm64ec"))]
41029pub fn vreinterpretq_u64_f16(a: float16x8_t) -> uint64x2_t {
41030 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41031 unsafe {
41032 let ret_val: uint64x2_t = transmute(a);
41033 simd_shuffle!(ret_val, ret_val, [1, 0])
41034 }
41035}
41036#[doc = "Vector reinterpret cast operation"]
41037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f16)"]
41038#[inline(always)]
41039#[cfg(target_endian = "little")]
41040#[target_feature(enable = "neon")]
41041#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41042#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41043#[cfg_attr(
41044 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41045 assert_instr(nop)
41046)]
41047#[cfg_attr(
41048 not(target_arch = "arm"),
41049 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41050)]
41051#[cfg_attr(
41052 target_arch = "arm",
41053 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41054)]
41055#[cfg(not(target_arch = "arm64ec"))]
41056pub fn vreinterpretq_p8_f16(a: float16x8_t) -> poly8x16_t {
41057 unsafe { transmute(a) }
41058}
41059#[doc = "Vector reinterpret cast operation"]
41060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f16)"]
41061#[inline(always)]
41062#[cfg(target_endian = "big")]
41063#[target_feature(enable = "neon")]
41064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41066#[cfg_attr(
41067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41068 assert_instr(nop)
41069)]
41070#[cfg_attr(
41071 not(target_arch = "arm"),
41072 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41073)]
41074#[cfg_attr(
41075 target_arch = "arm",
41076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41077)]
41078#[cfg(not(target_arch = "arm64ec"))]
41079pub fn vreinterpretq_p8_f16(a: float16x8_t) -> poly8x16_t {
41080 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41081 unsafe {
41082 let ret_val: poly8x16_t = transmute(a);
41083 simd_shuffle!(
41084 ret_val,
41085 ret_val,
41086 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
41087 )
41088 }
41089}
41090#[doc = "Vector reinterpret cast operation"]
41091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_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_p16_f16(a: float16x8_t) -> poly16x8_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_p16_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_p16_f16(a: float16x8_t) -> poly16x8_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: poly16x8_t = transmute(a);
41137 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41138 }
41139}
41140#[doc = "Vector reinterpret cast operation"]
41141#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_f32)"]
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 vreinterpret_f16_f32(a: float32x2_t) -> float16x4_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/vreinterpret_f16_f32)"]
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 vreinterpret_f16_f32(a: float32x2_t) -> float16x4_t {
41184 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
41185 unsafe {
41186 let ret_val: float16x4_t = transmute(a);
41187 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41188 }
41189}
41190#[doc = "Vector reinterpret cast operation"]
41191#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_f32)"]
41192#[inline(always)]
41193#[cfg(target_endian = "little")]
41194#[target_feature(enable = "neon")]
41195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41197#[cfg_attr(
41198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41199 assert_instr(nop)
41200)]
41201#[cfg_attr(
41202 not(target_arch = "arm"),
41203 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41204)]
41205#[cfg_attr(
41206 target_arch = "arm",
41207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41208)]
41209#[cfg(not(target_arch = "arm64ec"))]
41210pub fn vreinterpretq_f16_f32(a: float32x4_t) -> float16x8_t {
41211 unsafe { transmute(a) }
41212}
41213#[doc = "Vector reinterpret cast operation"]
41214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_f32)"]
41215#[inline(always)]
41216#[cfg(target_endian = "big")]
41217#[target_feature(enable = "neon")]
41218#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41219#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41220#[cfg_attr(
41221 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41222 assert_instr(nop)
41223)]
41224#[cfg_attr(
41225 not(target_arch = "arm"),
41226 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41227)]
41228#[cfg_attr(
41229 target_arch = "arm",
41230 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41231)]
41232#[cfg(not(target_arch = "arm64ec"))]
41233pub fn vreinterpretq_f16_f32(a: float32x4_t) -> float16x8_t {
41234 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
41235 unsafe {
41236 let ret_val: float16x8_t = transmute(a);
41237 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41238 }
41239}
41240#[doc = "Vector reinterpret cast operation"]
41241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s8)"]
41242#[inline(always)]
41243#[cfg(target_endian = "little")]
41244#[target_feature(enable = "neon")]
41245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41247#[cfg_attr(
41248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41249 assert_instr(nop)
41250)]
41251#[cfg_attr(
41252 not(target_arch = "arm"),
41253 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41254)]
41255#[cfg_attr(
41256 target_arch = "arm",
41257 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41258)]
41259#[cfg(not(target_arch = "arm64ec"))]
41260pub fn vreinterpret_f16_s8(a: int8x8_t) -> float16x4_t {
41261 unsafe { transmute(a) }
41262}
41263#[doc = "Vector reinterpret cast operation"]
41264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s8)"]
41265#[inline(always)]
41266#[cfg(target_endian = "big")]
41267#[target_feature(enable = "neon")]
41268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41269#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41270#[cfg_attr(
41271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41272 assert_instr(nop)
41273)]
41274#[cfg_attr(
41275 not(target_arch = "arm"),
41276 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41277)]
41278#[cfg_attr(
41279 target_arch = "arm",
41280 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41281)]
41282#[cfg(not(target_arch = "arm64ec"))]
41283pub fn vreinterpret_f16_s8(a: int8x8_t) -> float16x4_t {
41284 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41285 unsafe {
41286 let ret_val: float16x4_t = transmute(a);
41287 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41288 }
41289}
41290#[doc = "Vector reinterpret cast operation"]
41291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s8)"]
41292#[inline(always)]
41293#[cfg(target_endian = "little")]
41294#[target_feature(enable = "neon")]
41295#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41296#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41297#[cfg_attr(
41298 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41299 assert_instr(nop)
41300)]
41301#[cfg_attr(
41302 not(target_arch = "arm"),
41303 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41304)]
41305#[cfg_attr(
41306 target_arch = "arm",
41307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41308)]
41309#[cfg(not(target_arch = "arm64ec"))]
41310pub fn vreinterpretq_f16_s8(a: int8x16_t) -> float16x8_t {
41311 unsafe { transmute(a) }
41312}
41313#[doc = "Vector reinterpret cast operation"]
41314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s8)"]
41315#[inline(always)]
41316#[cfg(target_endian = "big")]
41317#[target_feature(enable = "neon")]
41318#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41319#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41320#[cfg_attr(
41321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41322 assert_instr(nop)
41323)]
41324#[cfg_attr(
41325 not(target_arch = "arm"),
41326 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41327)]
41328#[cfg_attr(
41329 target_arch = "arm",
41330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41331)]
41332#[cfg(not(target_arch = "arm64ec"))]
41333pub fn vreinterpretq_f16_s8(a: int8x16_t) -> float16x8_t {
41334 let a: int8x16_t =
41335 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
41336 unsafe {
41337 let ret_val: float16x8_t = transmute(a);
41338 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41339 }
41340}
41341#[doc = "Vector reinterpret cast operation"]
41342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s16)"]
41343#[inline(always)]
41344#[cfg(target_endian = "little")]
41345#[target_feature(enable = "neon")]
41346#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41347#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41348#[cfg_attr(
41349 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41350 assert_instr(nop)
41351)]
41352#[cfg_attr(
41353 not(target_arch = "arm"),
41354 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41355)]
41356#[cfg_attr(
41357 target_arch = "arm",
41358 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41359)]
41360#[cfg(not(target_arch = "arm64ec"))]
41361pub fn vreinterpret_f16_s16(a: int16x4_t) -> float16x4_t {
41362 unsafe { transmute(a) }
41363}
41364#[doc = "Vector reinterpret cast operation"]
41365#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s16)"]
41366#[inline(always)]
41367#[cfg(target_endian = "big")]
41368#[target_feature(enable = "neon")]
41369#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41370#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41371#[cfg_attr(
41372 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41373 assert_instr(nop)
41374)]
41375#[cfg_attr(
41376 not(target_arch = "arm"),
41377 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41378)]
41379#[cfg_attr(
41380 target_arch = "arm",
41381 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41382)]
41383#[cfg(not(target_arch = "arm64ec"))]
41384pub fn vreinterpret_f16_s16(a: int16x4_t) -> float16x4_t {
41385 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
41386 unsafe {
41387 let ret_val: float16x4_t = transmute(a);
41388 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41389 }
41390}
41391#[doc = "Vector reinterpret cast operation"]
41392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s16)"]
41393#[inline(always)]
41394#[cfg(target_endian = "little")]
41395#[target_feature(enable = "neon")]
41396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41397#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41398#[cfg_attr(
41399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41400 assert_instr(nop)
41401)]
41402#[cfg_attr(
41403 not(target_arch = "arm"),
41404 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41405)]
41406#[cfg_attr(
41407 target_arch = "arm",
41408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41409)]
41410#[cfg(not(target_arch = "arm64ec"))]
41411pub fn vreinterpretq_f16_s16(a: int16x8_t) -> float16x8_t {
41412 unsafe { transmute(a) }
41413}
41414#[doc = "Vector reinterpret cast operation"]
41415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s16)"]
41416#[inline(always)]
41417#[cfg(target_endian = "big")]
41418#[target_feature(enable = "neon")]
41419#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41420#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41421#[cfg_attr(
41422 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41423 assert_instr(nop)
41424)]
41425#[cfg_attr(
41426 not(target_arch = "arm"),
41427 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41428)]
41429#[cfg_attr(
41430 target_arch = "arm",
41431 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41432)]
41433#[cfg(not(target_arch = "arm64ec"))]
41434pub fn vreinterpretq_f16_s16(a: int16x8_t) -> float16x8_t {
41435 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41436 unsafe {
41437 let ret_val: float16x8_t = transmute(a);
41438 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41439 }
41440}
41441#[doc = "Vector reinterpret cast operation"]
41442#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s32)"]
41443#[inline(always)]
41444#[cfg(target_endian = "little")]
41445#[target_feature(enable = "neon")]
41446#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41447#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41448#[cfg_attr(
41449 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41450 assert_instr(nop)
41451)]
41452#[cfg_attr(
41453 not(target_arch = "arm"),
41454 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41455)]
41456#[cfg_attr(
41457 target_arch = "arm",
41458 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41459)]
41460#[cfg(not(target_arch = "arm64ec"))]
41461pub fn vreinterpret_f16_s32(a: int32x2_t) -> float16x4_t {
41462 unsafe { transmute(a) }
41463}
41464#[doc = "Vector reinterpret cast operation"]
41465#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s32)"]
41466#[inline(always)]
41467#[cfg(target_endian = "big")]
41468#[target_feature(enable = "neon")]
41469#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41470#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41471#[cfg_attr(
41472 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41473 assert_instr(nop)
41474)]
41475#[cfg_attr(
41476 not(target_arch = "arm"),
41477 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41478)]
41479#[cfg_attr(
41480 target_arch = "arm",
41481 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41482)]
41483#[cfg(not(target_arch = "arm64ec"))]
41484pub fn vreinterpret_f16_s32(a: int32x2_t) -> float16x4_t {
41485 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
41486 unsafe {
41487 let ret_val: float16x4_t = transmute(a);
41488 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41489 }
41490}
41491#[doc = "Vector reinterpret cast operation"]
41492#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s32)"]
41493#[inline(always)]
41494#[cfg(target_endian = "little")]
41495#[target_feature(enable = "neon")]
41496#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41497#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41498#[cfg_attr(
41499 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41500 assert_instr(nop)
41501)]
41502#[cfg_attr(
41503 not(target_arch = "arm"),
41504 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41505)]
41506#[cfg_attr(
41507 target_arch = "arm",
41508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41509)]
41510#[cfg(not(target_arch = "arm64ec"))]
41511pub fn vreinterpretq_f16_s32(a: int32x4_t) -> float16x8_t {
41512 unsafe { transmute(a) }
41513}
41514#[doc = "Vector reinterpret cast operation"]
41515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s32)"]
41516#[inline(always)]
41517#[cfg(target_endian = "big")]
41518#[target_feature(enable = "neon")]
41519#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41520#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41521#[cfg_attr(
41522 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41523 assert_instr(nop)
41524)]
41525#[cfg_attr(
41526 not(target_arch = "arm"),
41527 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41528)]
41529#[cfg_attr(
41530 target_arch = "arm",
41531 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41532)]
41533#[cfg(not(target_arch = "arm64ec"))]
41534pub fn vreinterpretq_f16_s32(a: int32x4_t) -> float16x8_t {
41535 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
41536 unsafe {
41537 let ret_val: float16x8_t = transmute(a);
41538 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41539 }
41540}
41541#[doc = "Vector reinterpret cast operation"]
41542#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s64)"]
41543#[inline(always)]
41544#[cfg(target_endian = "little")]
41545#[target_feature(enable = "neon")]
41546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41547#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41548#[cfg_attr(
41549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41550 assert_instr(nop)
41551)]
41552#[cfg_attr(
41553 not(target_arch = "arm"),
41554 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41555)]
41556#[cfg_attr(
41557 target_arch = "arm",
41558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41559)]
41560#[cfg(not(target_arch = "arm64ec"))]
41561pub fn vreinterpret_f16_s64(a: int64x1_t) -> float16x4_t {
41562 unsafe { transmute(a) }
41563}
41564#[doc = "Vector reinterpret cast operation"]
41565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_s64)"]
41566#[inline(always)]
41567#[cfg(target_endian = "big")]
41568#[target_feature(enable = "neon")]
41569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41570#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41571#[cfg_attr(
41572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41573 assert_instr(nop)
41574)]
41575#[cfg_attr(
41576 not(target_arch = "arm"),
41577 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41578)]
41579#[cfg_attr(
41580 target_arch = "arm",
41581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41582)]
41583#[cfg(not(target_arch = "arm64ec"))]
41584pub fn vreinterpret_f16_s64(a: int64x1_t) -> float16x4_t {
41585 unsafe {
41586 let ret_val: float16x4_t = transmute(a);
41587 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41588 }
41589}
41590#[doc = "Vector reinterpret cast operation"]
41591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s64)"]
41592#[inline(always)]
41593#[cfg(target_endian = "little")]
41594#[target_feature(enable = "neon")]
41595#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41596#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41597#[cfg_attr(
41598 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41599 assert_instr(nop)
41600)]
41601#[cfg_attr(
41602 not(target_arch = "arm"),
41603 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41604)]
41605#[cfg_attr(
41606 target_arch = "arm",
41607 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41608)]
41609#[cfg(not(target_arch = "arm64ec"))]
41610pub fn vreinterpretq_f16_s64(a: int64x2_t) -> float16x8_t {
41611 unsafe { transmute(a) }
41612}
41613#[doc = "Vector reinterpret cast operation"]
41614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_s64)"]
41615#[inline(always)]
41616#[cfg(target_endian = "big")]
41617#[target_feature(enable = "neon")]
41618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41620#[cfg_attr(
41621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41622 assert_instr(nop)
41623)]
41624#[cfg_attr(
41625 not(target_arch = "arm"),
41626 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41627)]
41628#[cfg_attr(
41629 target_arch = "arm",
41630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41631)]
41632#[cfg(not(target_arch = "arm64ec"))]
41633pub fn vreinterpretq_f16_s64(a: int64x2_t) -> float16x8_t {
41634 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
41635 unsafe {
41636 let ret_val: float16x8_t = transmute(a);
41637 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41638 }
41639}
41640#[doc = "Vector reinterpret cast operation"]
41641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u8)"]
41642#[inline(always)]
41643#[cfg(target_endian = "little")]
41644#[target_feature(enable = "neon")]
41645#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41646#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41647#[cfg_attr(
41648 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41649 assert_instr(nop)
41650)]
41651#[cfg_attr(
41652 not(target_arch = "arm"),
41653 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41654)]
41655#[cfg_attr(
41656 target_arch = "arm",
41657 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41658)]
41659#[cfg(not(target_arch = "arm64ec"))]
41660pub fn vreinterpret_f16_u8(a: uint8x8_t) -> float16x4_t {
41661 unsafe { transmute(a) }
41662}
41663#[doc = "Vector reinterpret cast operation"]
41664#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u8)"]
41665#[inline(always)]
41666#[cfg(target_endian = "big")]
41667#[target_feature(enable = "neon")]
41668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41669#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41670#[cfg_attr(
41671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41672 assert_instr(nop)
41673)]
41674#[cfg_attr(
41675 not(target_arch = "arm"),
41676 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41677)]
41678#[cfg_attr(
41679 target_arch = "arm",
41680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41681)]
41682#[cfg(not(target_arch = "arm64ec"))]
41683pub fn vreinterpret_f16_u8(a: uint8x8_t) -> float16x4_t {
41684 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41685 unsafe {
41686 let ret_val: float16x4_t = transmute(a);
41687 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41688 }
41689}
41690#[doc = "Vector reinterpret cast operation"]
41691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u8)"]
41692#[inline(always)]
41693#[cfg(target_endian = "little")]
41694#[target_feature(enable = "neon")]
41695#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41696#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41697#[cfg_attr(
41698 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41699 assert_instr(nop)
41700)]
41701#[cfg_attr(
41702 not(target_arch = "arm"),
41703 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41704)]
41705#[cfg_attr(
41706 target_arch = "arm",
41707 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41708)]
41709#[cfg(not(target_arch = "arm64ec"))]
41710pub fn vreinterpretq_f16_u8(a: uint8x16_t) -> float16x8_t {
41711 unsafe { transmute(a) }
41712}
41713#[doc = "Vector reinterpret cast operation"]
41714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u8)"]
41715#[inline(always)]
41716#[cfg(target_endian = "big")]
41717#[target_feature(enable = "neon")]
41718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41720#[cfg_attr(
41721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41722 assert_instr(nop)
41723)]
41724#[cfg_attr(
41725 not(target_arch = "arm"),
41726 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41727)]
41728#[cfg_attr(
41729 target_arch = "arm",
41730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41731)]
41732#[cfg(not(target_arch = "arm64ec"))]
41733pub fn vreinterpretq_f16_u8(a: uint8x16_t) -> float16x8_t {
41734 let a: uint8x16_t =
41735 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
41736 unsafe {
41737 let ret_val: float16x8_t = transmute(a);
41738 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41739 }
41740}
41741#[doc = "Vector reinterpret cast operation"]
41742#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u16)"]
41743#[inline(always)]
41744#[cfg(target_endian = "little")]
41745#[target_feature(enable = "neon")]
41746#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41747#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41748#[cfg_attr(
41749 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41750 assert_instr(nop)
41751)]
41752#[cfg_attr(
41753 not(target_arch = "arm"),
41754 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41755)]
41756#[cfg_attr(
41757 target_arch = "arm",
41758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41759)]
41760#[cfg(not(target_arch = "arm64ec"))]
41761pub fn vreinterpret_f16_u16(a: uint16x4_t) -> float16x4_t {
41762 unsafe { transmute(a) }
41763}
41764#[doc = "Vector reinterpret cast operation"]
41765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u16)"]
41766#[inline(always)]
41767#[cfg(target_endian = "big")]
41768#[target_feature(enable = "neon")]
41769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41771#[cfg_attr(
41772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41773 assert_instr(nop)
41774)]
41775#[cfg_attr(
41776 not(target_arch = "arm"),
41777 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41778)]
41779#[cfg_attr(
41780 target_arch = "arm",
41781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41782)]
41783#[cfg(not(target_arch = "arm64ec"))]
41784pub fn vreinterpret_f16_u16(a: uint16x4_t) -> float16x4_t {
41785 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
41786 unsafe {
41787 let ret_val: float16x4_t = transmute(a);
41788 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41789 }
41790}
41791#[doc = "Vector reinterpret cast operation"]
41792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u16)"]
41793#[inline(always)]
41794#[cfg(target_endian = "little")]
41795#[target_feature(enable = "neon")]
41796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41798#[cfg_attr(
41799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41800 assert_instr(nop)
41801)]
41802#[cfg_attr(
41803 not(target_arch = "arm"),
41804 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41805)]
41806#[cfg_attr(
41807 target_arch = "arm",
41808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41809)]
41810#[cfg(not(target_arch = "arm64ec"))]
41811pub fn vreinterpretq_f16_u16(a: uint16x8_t) -> float16x8_t {
41812 unsafe { transmute(a) }
41813}
41814#[doc = "Vector reinterpret cast operation"]
41815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u16)"]
41816#[inline(always)]
41817#[cfg(target_endian = "big")]
41818#[target_feature(enable = "neon")]
41819#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41820#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41821#[cfg_attr(
41822 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41823 assert_instr(nop)
41824)]
41825#[cfg_attr(
41826 not(target_arch = "arm"),
41827 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41828)]
41829#[cfg_attr(
41830 target_arch = "arm",
41831 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41832)]
41833#[cfg(not(target_arch = "arm64ec"))]
41834pub fn vreinterpretq_f16_u16(a: uint16x8_t) -> float16x8_t {
41835 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
41836 unsafe {
41837 let ret_val: float16x8_t = transmute(a);
41838 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41839 }
41840}
41841#[doc = "Vector reinterpret cast operation"]
41842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u32)"]
41843#[inline(always)]
41844#[cfg(target_endian = "little")]
41845#[target_feature(enable = "neon")]
41846#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41847#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41848#[cfg_attr(
41849 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41850 assert_instr(nop)
41851)]
41852#[cfg_attr(
41853 not(target_arch = "arm"),
41854 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41855)]
41856#[cfg_attr(
41857 target_arch = "arm",
41858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41859)]
41860#[cfg(not(target_arch = "arm64ec"))]
41861pub fn vreinterpret_f16_u32(a: uint32x2_t) -> float16x4_t {
41862 unsafe { transmute(a) }
41863}
41864#[doc = "Vector reinterpret cast operation"]
41865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u32)"]
41866#[inline(always)]
41867#[cfg(target_endian = "big")]
41868#[target_feature(enable = "neon")]
41869#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41870#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41871#[cfg_attr(
41872 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41873 assert_instr(nop)
41874)]
41875#[cfg_attr(
41876 not(target_arch = "arm"),
41877 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41878)]
41879#[cfg_attr(
41880 target_arch = "arm",
41881 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41882)]
41883#[cfg(not(target_arch = "arm64ec"))]
41884pub fn vreinterpret_f16_u32(a: uint32x2_t) -> float16x4_t {
41885 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
41886 unsafe {
41887 let ret_val: float16x4_t = transmute(a);
41888 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41889 }
41890}
41891#[doc = "Vector reinterpret cast operation"]
41892#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u32)"]
41893#[inline(always)]
41894#[cfg(target_endian = "little")]
41895#[target_feature(enable = "neon")]
41896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41897#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41898#[cfg_attr(
41899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41900 assert_instr(nop)
41901)]
41902#[cfg_attr(
41903 not(target_arch = "arm"),
41904 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41905)]
41906#[cfg_attr(
41907 target_arch = "arm",
41908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41909)]
41910#[cfg(not(target_arch = "arm64ec"))]
41911pub fn vreinterpretq_f16_u32(a: uint32x4_t) -> float16x8_t {
41912 unsafe { transmute(a) }
41913}
41914#[doc = "Vector reinterpret cast operation"]
41915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u32)"]
41916#[inline(always)]
41917#[cfg(target_endian = "big")]
41918#[target_feature(enable = "neon")]
41919#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41921#[cfg_attr(
41922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41923 assert_instr(nop)
41924)]
41925#[cfg_attr(
41926 not(target_arch = "arm"),
41927 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41928)]
41929#[cfg_attr(
41930 target_arch = "arm",
41931 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41932)]
41933#[cfg(not(target_arch = "arm64ec"))]
41934pub fn vreinterpretq_f16_u32(a: uint32x4_t) -> float16x8_t {
41935 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
41936 unsafe {
41937 let ret_val: float16x8_t = transmute(a);
41938 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
41939 }
41940}
41941#[doc = "Vector reinterpret cast operation"]
41942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u64)"]
41943#[inline(always)]
41944#[cfg(target_endian = "little")]
41945#[target_feature(enable = "neon")]
41946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41947#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41948#[cfg_attr(
41949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41950 assert_instr(nop)
41951)]
41952#[cfg_attr(
41953 not(target_arch = "arm"),
41954 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41955)]
41956#[cfg_attr(
41957 target_arch = "arm",
41958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41959)]
41960#[cfg(not(target_arch = "arm64ec"))]
41961pub fn vreinterpret_f16_u64(a: uint64x1_t) -> float16x4_t {
41962 unsafe { transmute(a) }
41963}
41964#[doc = "Vector reinterpret cast operation"]
41965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_u64)"]
41966#[inline(always)]
41967#[cfg(target_endian = "big")]
41968#[target_feature(enable = "neon")]
41969#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41970#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41971#[cfg_attr(
41972 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41973 assert_instr(nop)
41974)]
41975#[cfg_attr(
41976 not(target_arch = "arm"),
41977 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
41978)]
41979#[cfg_attr(
41980 target_arch = "arm",
41981 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
41982)]
41983#[cfg(not(target_arch = "arm64ec"))]
41984pub fn vreinterpret_f16_u64(a: uint64x1_t) -> float16x4_t {
41985 unsafe {
41986 let ret_val: float16x4_t = transmute(a);
41987 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
41988 }
41989}
41990#[doc = "Vector reinterpret cast operation"]
41991#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u64)"]
41992#[inline(always)]
41993#[cfg(target_endian = "little")]
41994#[target_feature(enable = "neon")]
41995#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
41996#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
41997#[cfg_attr(
41998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
41999 assert_instr(nop)
42000)]
42001#[cfg_attr(
42002 not(target_arch = "arm"),
42003 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42004)]
42005#[cfg_attr(
42006 target_arch = "arm",
42007 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42008)]
42009#[cfg(not(target_arch = "arm64ec"))]
42010pub fn vreinterpretq_f16_u64(a: uint64x2_t) -> float16x8_t {
42011 unsafe { transmute(a) }
42012}
42013#[doc = "Vector reinterpret cast operation"]
42014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_u64)"]
42015#[inline(always)]
42016#[cfg(target_endian = "big")]
42017#[target_feature(enable = "neon")]
42018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42019#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42020#[cfg_attr(
42021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42022 assert_instr(nop)
42023)]
42024#[cfg_attr(
42025 not(target_arch = "arm"),
42026 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42027)]
42028#[cfg_attr(
42029 target_arch = "arm",
42030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42031)]
42032#[cfg(not(target_arch = "arm64ec"))]
42033pub fn vreinterpretq_f16_u64(a: uint64x2_t) -> float16x8_t {
42034 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42035 unsafe {
42036 let ret_val: float16x8_t = transmute(a);
42037 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42038 }
42039}
42040#[doc = "Vector reinterpret cast operation"]
42041#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p8)"]
42042#[inline(always)]
42043#[cfg(target_endian = "little")]
42044#[target_feature(enable = "neon")]
42045#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42046#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42047#[cfg_attr(
42048 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42049 assert_instr(nop)
42050)]
42051#[cfg_attr(
42052 not(target_arch = "arm"),
42053 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42054)]
42055#[cfg_attr(
42056 target_arch = "arm",
42057 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42058)]
42059#[cfg(not(target_arch = "arm64ec"))]
42060pub fn vreinterpret_f16_p8(a: poly8x8_t) -> float16x4_t {
42061 unsafe { transmute(a) }
42062}
42063#[doc = "Vector reinterpret cast operation"]
42064#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p8)"]
42065#[inline(always)]
42066#[cfg(target_endian = "big")]
42067#[target_feature(enable = "neon")]
42068#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42069#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42070#[cfg_attr(
42071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42072 assert_instr(nop)
42073)]
42074#[cfg_attr(
42075 not(target_arch = "arm"),
42076 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42077)]
42078#[cfg_attr(
42079 target_arch = "arm",
42080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42081)]
42082#[cfg(not(target_arch = "arm64ec"))]
42083pub fn vreinterpret_f16_p8(a: poly8x8_t) -> float16x4_t {
42084 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
42085 unsafe {
42086 let ret_val: float16x4_t = transmute(a);
42087 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42088 }
42089}
42090#[doc = "Vector reinterpret cast operation"]
42091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p8)"]
42092#[inline(always)]
42093#[cfg(target_endian = "little")]
42094#[target_feature(enable = "neon")]
42095#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42096#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42097#[cfg_attr(
42098 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42099 assert_instr(nop)
42100)]
42101#[cfg_attr(
42102 not(target_arch = "arm"),
42103 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42104)]
42105#[cfg_attr(
42106 target_arch = "arm",
42107 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42108)]
42109#[cfg(not(target_arch = "arm64ec"))]
42110pub fn vreinterpretq_f16_p8(a: poly8x16_t) -> float16x8_t {
42111 unsafe { transmute(a) }
42112}
42113#[doc = "Vector reinterpret cast operation"]
42114#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p8)"]
42115#[inline(always)]
42116#[cfg(target_endian = "big")]
42117#[target_feature(enable = "neon")]
42118#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42119#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42120#[cfg_attr(
42121 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42122 assert_instr(nop)
42123)]
42124#[cfg_attr(
42125 not(target_arch = "arm"),
42126 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42127)]
42128#[cfg_attr(
42129 target_arch = "arm",
42130 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42131)]
42132#[cfg(not(target_arch = "arm64ec"))]
42133pub fn vreinterpretq_f16_p8(a: poly8x16_t) -> float16x8_t {
42134 let a: poly8x16_t =
42135 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
42136 unsafe {
42137 let ret_val: float16x8_t = transmute(a);
42138 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42139 }
42140}
42141#[doc = "Vector reinterpret cast operation"]
42142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p16)"]
42143#[inline(always)]
42144#[cfg(target_endian = "little")]
42145#[target_feature(enable = "neon")]
42146#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42147#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42148#[cfg_attr(
42149 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42150 assert_instr(nop)
42151)]
42152#[cfg_attr(
42153 not(target_arch = "arm"),
42154 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42155)]
42156#[cfg_attr(
42157 target_arch = "arm",
42158 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42159)]
42160#[cfg(not(target_arch = "arm64ec"))]
42161pub fn vreinterpret_f16_p16(a: poly16x4_t) -> float16x4_t {
42162 unsafe { transmute(a) }
42163}
42164#[doc = "Vector reinterpret cast operation"]
42165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p16)"]
42166#[inline(always)]
42167#[cfg(target_endian = "big")]
42168#[target_feature(enable = "neon")]
42169#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42170#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42171#[cfg_attr(
42172 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42173 assert_instr(nop)
42174)]
42175#[cfg_attr(
42176 not(target_arch = "arm"),
42177 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42178)]
42179#[cfg_attr(
42180 target_arch = "arm",
42181 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42182)]
42183#[cfg(not(target_arch = "arm64ec"))]
42184pub fn vreinterpret_f16_p16(a: poly16x4_t) -> float16x4_t {
42185 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42186 unsafe {
42187 let ret_val: float16x4_t = transmute(a);
42188 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42189 }
42190}
42191#[doc = "Vector reinterpret cast operation"]
42192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p16)"]
42193#[inline(always)]
42194#[cfg(target_endian = "little")]
42195#[target_feature(enable = "neon")]
42196#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42197#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42198#[cfg_attr(
42199 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42200 assert_instr(nop)
42201)]
42202#[cfg_attr(
42203 not(target_arch = "arm"),
42204 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42205)]
42206#[cfg_attr(
42207 target_arch = "arm",
42208 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42209)]
42210#[cfg(not(target_arch = "arm64ec"))]
42211pub fn vreinterpretq_f16_p16(a: poly16x8_t) -> float16x8_t {
42212 unsafe { transmute(a) }
42213}
42214#[doc = "Vector reinterpret cast operation"]
42215#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p16)"]
42216#[inline(always)]
42217#[cfg(target_endian = "big")]
42218#[target_feature(enable = "neon")]
42219#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42220#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42221#[cfg_attr(
42222 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42223 assert_instr(nop)
42224)]
42225#[cfg_attr(
42226 not(target_arch = "arm"),
42227 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42228)]
42229#[cfg_attr(
42230 target_arch = "arm",
42231 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42232)]
42233#[cfg(not(target_arch = "arm64ec"))]
42234pub fn vreinterpretq_f16_p16(a: poly16x8_t) -> float16x8_t {
42235 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
42236 unsafe {
42237 let ret_val: float16x8_t = transmute(a);
42238 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42239 }
42240}
42241#[doc = "Vector reinterpret cast operation"]
42242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p128)"]
42243#[inline(always)]
42244#[cfg(target_endian = "little")]
42245#[target_feature(enable = "neon")]
42246#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42247#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42248#[cfg_attr(
42249 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42250 assert_instr(nop)
42251)]
42252#[cfg_attr(
42253 not(target_arch = "arm"),
42254 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42255)]
42256#[cfg_attr(
42257 target_arch = "arm",
42258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42259)]
42260#[cfg(not(target_arch = "arm64ec"))]
42261pub fn vreinterpretq_f16_p128(a: p128) -> float16x8_t {
42262 unsafe { transmute(a) }
42263}
42264#[doc = "Vector reinterpret cast operation"]
42265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p128)"]
42266#[inline(always)]
42267#[cfg(target_endian = "big")]
42268#[target_feature(enable = "neon")]
42269#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42270#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42271#[cfg_attr(
42272 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42273 assert_instr(nop)
42274)]
42275#[cfg_attr(
42276 not(target_arch = "arm"),
42277 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42278)]
42279#[cfg_attr(
42280 target_arch = "arm",
42281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42282)]
42283#[cfg(not(target_arch = "arm64ec"))]
42284pub fn vreinterpretq_f16_p128(a: p128) -> float16x8_t {
42285 unsafe {
42286 let ret_val: float16x8_t = transmute(a);
42287 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42288 }
42289}
42290#[doc = "Vector reinterpret cast operation"]
42291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_f16)"]
42292#[inline(always)]
42293#[cfg(target_endian = "little")]
42294#[target_feature(enable = "neon")]
42295#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42296#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42297#[cfg_attr(
42298 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42299 assert_instr(nop)
42300)]
42301#[cfg_attr(
42302 not(target_arch = "arm"),
42303 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42304)]
42305#[cfg_attr(
42306 target_arch = "arm",
42307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42308)]
42309#[cfg(not(target_arch = "arm64ec"))]
42310pub fn vreinterpret_p64_f16(a: float16x4_t) -> poly64x1_t {
42311 unsafe { transmute(a) }
42312}
42313#[doc = "Vector reinterpret cast operation"]
42314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_f16)"]
42315#[inline(always)]
42316#[cfg(target_endian = "big")]
42317#[target_feature(enable = "neon")]
42318#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42319#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42320#[cfg_attr(
42321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42322 assert_instr(nop)
42323)]
42324#[cfg_attr(
42325 not(target_arch = "arm"),
42326 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42327)]
42328#[cfg_attr(
42329 target_arch = "arm",
42330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42331)]
42332#[cfg(not(target_arch = "arm64ec"))]
42333pub fn vreinterpret_p64_f16(a: float16x4_t) -> poly64x1_t {
42334 let a: float16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
42335 unsafe { transmute(a) }
42336}
42337#[doc = "Vector reinterpret cast operation"]
42338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f16)"]
42339#[inline(always)]
42340#[cfg(target_endian = "little")]
42341#[target_feature(enable = "neon")]
42342#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42343#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42344#[cfg_attr(
42345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42346 assert_instr(nop)
42347)]
42348#[cfg_attr(
42349 not(target_arch = "arm"),
42350 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42351)]
42352#[cfg_attr(
42353 target_arch = "arm",
42354 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42355)]
42356#[cfg(not(target_arch = "arm64ec"))]
42357pub fn vreinterpretq_p128_f16(a: float16x8_t) -> p128 {
42358 unsafe { transmute(a) }
42359}
42360#[doc = "Vector reinterpret cast operation"]
42361#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f16)"]
42362#[inline(always)]
42363#[cfg(target_endian = "big")]
42364#[target_feature(enable = "neon")]
42365#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42366#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42367#[cfg_attr(
42368 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42369 assert_instr(nop)
42370)]
42371#[cfg_attr(
42372 not(target_arch = "arm"),
42373 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42374)]
42375#[cfg_attr(
42376 target_arch = "arm",
42377 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42378)]
42379#[cfg(not(target_arch = "arm64ec"))]
42380pub fn vreinterpretq_p128_f16(a: float16x8_t) -> p128 {
42381 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
42382 unsafe { transmute(a) }
42383}
42384#[doc = "Vector reinterpret cast operation"]
42385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_f16)"]
42386#[inline(always)]
42387#[cfg(target_endian = "little")]
42388#[target_feature(enable = "neon")]
42389#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42390#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42391#[cfg_attr(
42392 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42393 assert_instr(nop)
42394)]
42395#[cfg_attr(
42396 not(target_arch = "arm"),
42397 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42398)]
42399#[cfg_attr(
42400 target_arch = "arm",
42401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42402)]
42403#[cfg(not(target_arch = "arm64ec"))]
42404pub fn vreinterpretq_p64_f16(a: float16x8_t) -> poly64x2_t {
42405 unsafe { transmute(a) }
42406}
42407#[doc = "Vector reinterpret cast operation"]
42408#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_f16)"]
42409#[inline(always)]
42410#[cfg(target_endian = "big")]
42411#[target_feature(enable = "neon")]
42412#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42413#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42414#[cfg_attr(
42415 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42416 assert_instr(nop)
42417)]
42418#[cfg_attr(
42419 not(target_arch = "arm"),
42420 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42421)]
42422#[cfg_attr(
42423 target_arch = "arm",
42424 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42425)]
42426#[cfg(not(target_arch = "arm64ec"))]
42427pub fn vreinterpretq_p64_f16(a: float16x8_t) -> poly64x2_t {
42428 let a: float16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
42429 unsafe {
42430 let ret_val: poly64x2_t = transmute(a);
42431 simd_shuffle!(ret_val, ret_val, [1, 0])
42432 }
42433}
42434#[doc = "Vector reinterpret cast operation"]
42435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p64)"]
42436#[inline(always)]
42437#[cfg(target_endian = "little")]
42438#[target_feature(enable = "neon")]
42439#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42440#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42441#[cfg_attr(
42442 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42443 assert_instr(nop)
42444)]
42445#[cfg_attr(
42446 not(target_arch = "arm"),
42447 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42448)]
42449#[cfg_attr(
42450 target_arch = "arm",
42451 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42452)]
42453#[cfg(not(target_arch = "arm64ec"))]
42454pub fn vreinterpret_f16_p64(a: poly64x1_t) -> float16x4_t {
42455 unsafe { transmute(a) }
42456}
42457#[doc = "Vector reinterpret cast operation"]
42458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f16_p64)"]
42459#[inline(always)]
42460#[cfg(target_endian = "big")]
42461#[target_feature(enable = "neon")]
42462#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42464#[cfg_attr(
42465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42466 assert_instr(nop)
42467)]
42468#[cfg_attr(
42469 not(target_arch = "arm"),
42470 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42471)]
42472#[cfg_attr(
42473 target_arch = "arm",
42474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42475)]
42476#[cfg(not(target_arch = "arm64ec"))]
42477pub fn vreinterpret_f16_p64(a: poly64x1_t) -> float16x4_t {
42478 unsafe {
42479 let ret_val: float16x4_t = transmute(a);
42480 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42481 }
42482}
42483#[doc = "Vector reinterpret cast operation"]
42484#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p64)"]
42485#[inline(always)]
42486#[cfg(target_endian = "little")]
42487#[target_feature(enable = "neon")]
42488#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42489#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42490#[cfg_attr(
42491 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42492 assert_instr(nop)
42493)]
42494#[cfg_attr(
42495 not(target_arch = "arm"),
42496 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42497)]
42498#[cfg_attr(
42499 target_arch = "arm",
42500 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42501)]
42502#[cfg(not(target_arch = "arm64ec"))]
42503pub fn vreinterpretq_f16_p64(a: poly64x2_t) -> float16x8_t {
42504 unsafe { transmute(a) }
42505}
42506#[doc = "Vector reinterpret cast operation"]
42507#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f16_p64)"]
42508#[inline(always)]
42509#[cfg(target_endian = "big")]
42510#[target_feature(enable = "neon")]
42511#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
42512#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42513#[cfg_attr(
42514 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42515 assert_instr(nop)
42516)]
42517#[cfg_attr(
42518 not(target_arch = "arm"),
42519 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
42520)]
42521#[cfg_attr(
42522 target_arch = "arm",
42523 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42524)]
42525#[cfg(not(target_arch = "arm64ec"))]
42526pub fn vreinterpretq_f16_p64(a: poly64x2_t) -> float16x8_t {
42527 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42528 unsafe {
42529 let ret_val: float16x8_t = transmute(a);
42530 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42531 }
42532}
42533#[doc = "Vector reinterpret cast operation"]
42534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p128)"]
42535#[inline(always)]
42536#[cfg(target_endian = "little")]
42537#[target_feature(enable = "neon")]
42538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42540#[cfg_attr(
42541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42542 assert_instr(nop)
42543)]
42544#[cfg_attr(
42545 not(target_arch = "arm"),
42546 stable(feature = "neon_intrinsics", since = "1.59.0")
42547)]
42548#[cfg_attr(
42549 target_arch = "arm",
42550 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42551)]
42552pub fn vreinterpretq_f32_p128(a: p128) -> float32x4_t {
42553 unsafe { transmute(a) }
42554}
42555#[doc = "Vector reinterpret cast operation"]
42556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p128)"]
42557#[inline(always)]
42558#[cfg(target_endian = "big")]
42559#[target_feature(enable = "neon")]
42560#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42561#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42562#[cfg_attr(
42563 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42564 assert_instr(nop)
42565)]
42566#[cfg_attr(
42567 not(target_arch = "arm"),
42568 stable(feature = "neon_intrinsics", since = "1.59.0")
42569)]
42570#[cfg_attr(
42571 target_arch = "arm",
42572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42573)]
42574pub fn vreinterpretq_f32_p128(a: p128) -> float32x4_t {
42575 unsafe {
42576 let ret_val: float32x4_t = transmute(a);
42577 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42578 }
42579}
42580#[doc = "Vector reinterpret cast operation"]
42581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f32)"]
42582#[inline(always)]
42583#[cfg(target_endian = "little")]
42584#[target_feature(enable = "neon")]
42585#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42586#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42587#[cfg_attr(
42588 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42589 assert_instr(nop)
42590)]
42591#[cfg_attr(
42592 not(target_arch = "arm"),
42593 stable(feature = "neon_intrinsics", since = "1.59.0")
42594)]
42595#[cfg_attr(
42596 target_arch = "arm",
42597 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42598)]
42599pub fn vreinterpret_s8_f32(a: float32x2_t) -> int8x8_t {
42600 unsafe { transmute(a) }
42601}
42602#[doc = "Vector reinterpret cast operation"]
42603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_f32)"]
42604#[inline(always)]
42605#[cfg(target_endian = "big")]
42606#[target_feature(enable = "neon")]
42607#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42608#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42609#[cfg_attr(
42610 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42611 assert_instr(nop)
42612)]
42613#[cfg_attr(
42614 not(target_arch = "arm"),
42615 stable(feature = "neon_intrinsics", since = "1.59.0")
42616)]
42617#[cfg_attr(
42618 target_arch = "arm",
42619 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42620)]
42621pub fn vreinterpret_s8_f32(a: float32x2_t) -> int8x8_t {
42622 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42623 unsafe {
42624 let ret_val: int8x8_t = transmute(a);
42625 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42626 }
42627}
42628#[doc = "Vector reinterpret cast operation"]
42629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f32)"]
42630#[inline(always)]
42631#[cfg(target_endian = "little")]
42632#[target_feature(enable = "neon")]
42633#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42634#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42635#[cfg_attr(
42636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42637 assert_instr(nop)
42638)]
42639#[cfg_attr(
42640 not(target_arch = "arm"),
42641 stable(feature = "neon_intrinsics", since = "1.59.0")
42642)]
42643#[cfg_attr(
42644 target_arch = "arm",
42645 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42646)]
42647pub fn vreinterpret_s16_f32(a: float32x2_t) -> int16x4_t {
42648 unsafe { transmute(a) }
42649}
42650#[doc = "Vector reinterpret cast operation"]
42651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_f32)"]
42652#[inline(always)]
42653#[cfg(target_endian = "big")]
42654#[target_feature(enable = "neon")]
42655#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42656#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42657#[cfg_attr(
42658 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42659 assert_instr(nop)
42660)]
42661#[cfg_attr(
42662 not(target_arch = "arm"),
42663 stable(feature = "neon_intrinsics", since = "1.59.0")
42664)]
42665#[cfg_attr(
42666 target_arch = "arm",
42667 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42668)]
42669pub fn vreinterpret_s16_f32(a: float32x2_t) -> int16x4_t {
42670 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42671 unsafe {
42672 let ret_val: int16x4_t = transmute(a);
42673 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42674 }
42675}
42676#[doc = "Vector reinterpret cast operation"]
42677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f32)"]
42678#[inline(always)]
42679#[cfg(target_endian = "little")]
42680#[target_feature(enable = "neon")]
42681#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42682#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42683#[cfg_attr(
42684 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42685 assert_instr(nop)
42686)]
42687#[cfg_attr(
42688 not(target_arch = "arm"),
42689 stable(feature = "neon_intrinsics", since = "1.59.0")
42690)]
42691#[cfg_attr(
42692 target_arch = "arm",
42693 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42694)]
42695pub fn vreinterpret_s32_f32(a: float32x2_t) -> int32x2_t {
42696 unsafe { transmute(a) }
42697}
42698#[doc = "Vector reinterpret cast operation"]
42699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_f32)"]
42700#[inline(always)]
42701#[cfg(target_endian = "big")]
42702#[target_feature(enable = "neon")]
42703#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42704#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42705#[cfg_attr(
42706 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42707 assert_instr(nop)
42708)]
42709#[cfg_attr(
42710 not(target_arch = "arm"),
42711 stable(feature = "neon_intrinsics", since = "1.59.0")
42712)]
42713#[cfg_attr(
42714 target_arch = "arm",
42715 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42716)]
42717pub fn vreinterpret_s32_f32(a: float32x2_t) -> int32x2_t {
42718 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42719 unsafe {
42720 let ret_val: int32x2_t = transmute(a);
42721 simd_shuffle!(ret_val, ret_val, [1, 0])
42722 }
42723}
42724#[doc = "Vector reinterpret cast operation"]
42725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f32)"]
42726#[inline(always)]
42727#[cfg(target_endian = "little")]
42728#[target_feature(enable = "neon")]
42729#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42730#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42731#[cfg_attr(
42732 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42733 assert_instr(nop)
42734)]
42735#[cfg_attr(
42736 not(target_arch = "arm"),
42737 stable(feature = "neon_intrinsics", since = "1.59.0")
42738)]
42739#[cfg_attr(
42740 target_arch = "arm",
42741 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42742)]
42743pub fn vreinterpret_s64_f32(a: float32x2_t) -> int64x1_t {
42744 unsafe { transmute(a) }
42745}
42746#[doc = "Vector reinterpret cast operation"]
42747#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_f32)"]
42748#[inline(always)]
42749#[cfg(target_endian = "big")]
42750#[target_feature(enable = "neon")]
42751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42753#[cfg_attr(
42754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42755 assert_instr(nop)
42756)]
42757#[cfg_attr(
42758 not(target_arch = "arm"),
42759 stable(feature = "neon_intrinsics", since = "1.59.0")
42760)]
42761#[cfg_attr(
42762 target_arch = "arm",
42763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42764)]
42765pub fn vreinterpret_s64_f32(a: float32x2_t) -> int64x1_t {
42766 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42767 unsafe { transmute(a) }
42768}
42769#[doc = "Vector reinterpret cast operation"]
42770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f32)"]
42771#[inline(always)]
42772#[cfg(target_endian = "little")]
42773#[target_feature(enable = "neon")]
42774#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42775#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42776#[cfg_attr(
42777 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42778 assert_instr(nop)
42779)]
42780#[cfg_attr(
42781 not(target_arch = "arm"),
42782 stable(feature = "neon_intrinsics", since = "1.59.0")
42783)]
42784#[cfg_attr(
42785 target_arch = "arm",
42786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42787)]
42788pub fn vreinterpret_u8_f32(a: float32x2_t) -> uint8x8_t {
42789 unsafe { transmute(a) }
42790}
42791#[doc = "Vector reinterpret cast operation"]
42792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_f32)"]
42793#[inline(always)]
42794#[cfg(target_endian = "big")]
42795#[target_feature(enable = "neon")]
42796#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42797#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42798#[cfg_attr(
42799 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42800 assert_instr(nop)
42801)]
42802#[cfg_attr(
42803 not(target_arch = "arm"),
42804 stable(feature = "neon_intrinsics", since = "1.59.0")
42805)]
42806#[cfg_attr(
42807 target_arch = "arm",
42808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42809)]
42810pub fn vreinterpret_u8_f32(a: float32x2_t) -> uint8x8_t {
42811 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42812 unsafe {
42813 let ret_val: uint8x8_t = transmute(a);
42814 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
42815 }
42816}
42817#[doc = "Vector reinterpret cast operation"]
42818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f32)"]
42819#[inline(always)]
42820#[cfg(target_endian = "little")]
42821#[target_feature(enable = "neon")]
42822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42823#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42824#[cfg_attr(
42825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42826 assert_instr(nop)
42827)]
42828#[cfg_attr(
42829 not(target_arch = "arm"),
42830 stable(feature = "neon_intrinsics", since = "1.59.0")
42831)]
42832#[cfg_attr(
42833 target_arch = "arm",
42834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42835)]
42836pub fn vreinterpret_u16_f32(a: float32x2_t) -> uint16x4_t {
42837 unsafe { transmute(a) }
42838}
42839#[doc = "Vector reinterpret cast operation"]
42840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_f32)"]
42841#[inline(always)]
42842#[cfg(target_endian = "big")]
42843#[target_feature(enable = "neon")]
42844#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42845#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42846#[cfg_attr(
42847 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42848 assert_instr(nop)
42849)]
42850#[cfg_attr(
42851 not(target_arch = "arm"),
42852 stable(feature = "neon_intrinsics", since = "1.59.0")
42853)]
42854#[cfg_attr(
42855 target_arch = "arm",
42856 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42857)]
42858pub fn vreinterpret_u16_f32(a: float32x2_t) -> uint16x4_t {
42859 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42860 unsafe {
42861 let ret_val: uint16x4_t = transmute(a);
42862 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
42863 }
42864}
42865#[doc = "Vector reinterpret cast operation"]
42866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f32)"]
42867#[inline(always)]
42868#[cfg(target_endian = "little")]
42869#[target_feature(enable = "neon")]
42870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42871#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42872#[cfg_attr(
42873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42874 assert_instr(nop)
42875)]
42876#[cfg_attr(
42877 not(target_arch = "arm"),
42878 stable(feature = "neon_intrinsics", since = "1.59.0")
42879)]
42880#[cfg_attr(
42881 target_arch = "arm",
42882 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42883)]
42884pub fn vreinterpret_u32_f32(a: float32x2_t) -> uint32x2_t {
42885 unsafe { transmute(a) }
42886}
42887#[doc = "Vector reinterpret cast operation"]
42888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_f32)"]
42889#[inline(always)]
42890#[cfg(target_endian = "big")]
42891#[target_feature(enable = "neon")]
42892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42893#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42894#[cfg_attr(
42895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42896 assert_instr(nop)
42897)]
42898#[cfg_attr(
42899 not(target_arch = "arm"),
42900 stable(feature = "neon_intrinsics", since = "1.59.0")
42901)]
42902#[cfg_attr(
42903 target_arch = "arm",
42904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42905)]
42906pub fn vreinterpret_u32_f32(a: float32x2_t) -> uint32x2_t {
42907 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42908 unsafe {
42909 let ret_val: uint32x2_t = transmute(a);
42910 simd_shuffle!(ret_val, ret_val, [1, 0])
42911 }
42912}
42913#[doc = "Vector reinterpret cast operation"]
42914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f32)"]
42915#[inline(always)]
42916#[cfg(target_endian = "little")]
42917#[target_feature(enable = "neon")]
42918#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42919#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42920#[cfg_attr(
42921 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42922 assert_instr(nop)
42923)]
42924#[cfg_attr(
42925 not(target_arch = "arm"),
42926 stable(feature = "neon_intrinsics", since = "1.59.0")
42927)]
42928#[cfg_attr(
42929 target_arch = "arm",
42930 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42931)]
42932pub fn vreinterpret_u64_f32(a: float32x2_t) -> uint64x1_t {
42933 unsafe { transmute(a) }
42934}
42935#[doc = "Vector reinterpret cast operation"]
42936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_f32)"]
42937#[inline(always)]
42938#[cfg(target_endian = "big")]
42939#[target_feature(enable = "neon")]
42940#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42941#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42942#[cfg_attr(
42943 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42944 assert_instr(nop)
42945)]
42946#[cfg_attr(
42947 not(target_arch = "arm"),
42948 stable(feature = "neon_intrinsics", since = "1.59.0")
42949)]
42950#[cfg_attr(
42951 target_arch = "arm",
42952 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42953)]
42954pub fn vreinterpret_u64_f32(a: float32x2_t) -> uint64x1_t {
42955 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
42956 unsafe { transmute(a) }
42957}
42958#[doc = "Vector reinterpret cast operation"]
42959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f32)"]
42960#[inline(always)]
42961#[cfg(target_endian = "little")]
42962#[target_feature(enable = "neon")]
42963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42964#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42965#[cfg_attr(
42966 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42967 assert_instr(nop)
42968)]
42969#[cfg_attr(
42970 not(target_arch = "arm"),
42971 stable(feature = "neon_intrinsics", since = "1.59.0")
42972)]
42973#[cfg_attr(
42974 target_arch = "arm",
42975 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42976)]
42977pub fn vreinterpret_p8_f32(a: float32x2_t) -> poly8x8_t {
42978 unsafe { transmute(a) }
42979}
42980#[doc = "Vector reinterpret cast operation"]
42981#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_f32)"]
42982#[inline(always)]
42983#[cfg(target_endian = "big")]
42984#[target_feature(enable = "neon")]
42985#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
42986#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
42987#[cfg_attr(
42988 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
42989 assert_instr(nop)
42990)]
42991#[cfg_attr(
42992 not(target_arch = "arm"),
42993 stable(feature = "neon_intrinsics", since = "1.59.0")
42994)]
42995#[cfg_attr(
42996 target_arch = "arm",
42997 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
42998)]
42999pub fn vreinterpret_p8_f32(a: float32x2_t) -> poly8x8_t {
43000 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
43001 unsafe {
43002 let ret_val: poly8x8_t = transmute(a);
43003 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43004 }
43005}
43006#[doc = "Vector reinterpret cast operation"]
43007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f32)"]
43008#[inline(always)]
43009#[cfg(target_endian = "little")]
43010#[target_feature(enable = "neon")]
43011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43012#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43013#[cfg_attr(
43014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43015 assert_instr(nop)
43016)]
43017#[cfg_attr(
43018 not(target_arch = "arm"),
43019 stable(feature = "neon_intrinsics", since = "1.59.0")
43020)]
43021#[cfg_attr(
43022 target_arch = "arm",
43023 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43024)]
43025pub fn vreinterpret_p16_f32(a: float32x2_t) -> poly16x4_t {
43026 unsafe { transmute(a) }
43027}
43028#[doc = "Vector reinterpret cast operation"]
43029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_f32)"]
43030#[inline(always)]
43031#[cfg(target_endian = "big")]
43032#[target_feature(enable = "neon")]
43033#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43034#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43035#[cfg_attr(
43036 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43037 assert_instr(nop)
43038)]
43039#[cfg_attr(
43040 not(target_arch = "arm"),
43041 stable(feature = "neon_intrinsics", since = "1.59.0")
43042)]
43043#[cfg_attr(
43044 target_arch = "arm",
43045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43046)]
43047pub fn vreinterpret_p16_f32(a: float32x2_t) -> poly16x4_t {
43048 let a: float32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
43049 unsafe {
43050 let ret_val: poly16x4_t = transmute(a);
43051 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43052 }
43053}
43054#[doc = "Vector reinterpret cast operation"]
43055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f32)"]
43056#[inline(always)]
43057#[cfg(target_endian = "little")]
43058#[target_feature(enable = "neon")]
43059#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43060#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43061#[cfg_attr(
43062 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43063 assert_instr(nop)
43064)]
43065#[cfg_attr(
43066 not(target_arch = "arm"),
43067 stable(feature = "neon_intrinsics", since = "1.59.0")
43068)]
43069#[cfg_attr(
43070 target_arch = "arm",
43071 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43072)]
43073pub fn vreinterpretq_p128_f32(a: float32x4_t) -> p128 {
43074 unsafe { transmute(a) }
43075}
43076#[doc = "Vector reinterpret cast operation"]
43077#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_f32)"]
43078#[inline(always)]
43079#[cfg(target_endian = "big")]
43080#[target_feature(enable = "neon")]
43081#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43082#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43083#[cfg_attr(
43084 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43085 assert_instr(nop)
43086)]
43087#[cfg_attr(
43088 not(target_arch = "arm"),
43089 stable(feature = "neon_intrinsics", since = "1.59.0")
43090)]
43091#[cfg_attr(
43092 target_arch = "arm",
43093 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43094)]
43095pub fn vreinterpretq_p128_f32(a: float32x4_t) -> p128 {
43096 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43097 unsafe { transmute(a) }
43098}
43099#[doc = "Vector reinterpret cast operation"]
43100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f32)"]
43101#[inline(always)]
43102#[cfg(target_endian = "little")]
43103#[target_feature(enable = "neon")]
43104#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43105#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43106#[cfg_attr(
43107 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43108 assert_instr(nop)
43109)]
43110#[cfg_attr(
43111 not(target_arch = "arm"),
43112 stable(feature = "neon_intrinsics", since = "1.59.0")
43113)]
43114#[cfg_attr(
43115 target_arch = "arm",
43116 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43117)]
43118pub fn vreinterpretq_s8_f32(a: float32x4_t) -> int8x16_t {
43119 unsafe { transmute(a) }
43120}
43121#[doc = "Vector reinterpret cast operation"]
43122#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_f32)"]
43123#[inline(always)]
43124#[cfg(target_endian = "big")]
43125#[target_feature(enable = "neon")]
43126#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43127#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43128#[cfg_attr(
43129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43130 assert_instr(nop)
43131)]
43132#[cfg_attr(
43133 not(target_arch = "arm"),
43134 stable(feature = "neon_intrinsics", since = "1.59.0")
43135)]
43136#[cfg_attr(
43137 target_arch = "arm",
43138 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43139)]
43140pub fn vreinterpretq_s8_f32(a: float32x4_t) -> int8x16_t {
43141 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43142 unsafe {
43143 let ret_val: int8x16_t = transmute(a);
43144 simd_shuffle!(
43145 ret_val,
43146 ret_val,
43147 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
43148 )
43149 }
43150}
43151#[doc = "Vector reinterpret cast operation"]
43152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f32)"]
43153#[inline(always)]
43154#[cfg(target_endian = "little")]
43155#[target_feature(enable = "neon")]
43156#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43157#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43158#[cfg_attr(
43159 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43160 assert_instr(nop)
43161)]
43162#[cfg_attr(
43163 not(target_arch = "arm"),
43164 stable(feature = "neon_intrinsics", since = "1.59.0")
43165)]
43166#[cfg_attr(
43167 target_arch = "arm",
43168 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43169)]
43170pub fn vreinterpretq_s16_f32(a: float32x4_t) -> int16x8_t {
43171 unsafe { transmute(a) }
43172}
43173#[doc = "Vector reinterpret cast operation"]
43174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_f32)"]
43175#[inline(always)]
43176#[cfg(target_endian = "big")]
43177#[target_feature(enable = "neon")]
43178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43179#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43180#[cfg_attr(
43181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43182 assert_instr(nop)
43183)]
43184#[cfg_attr(
43185 not(target_arch = "arm"),
43186 stable(feature = "neon_intrinsics", since = "1.59.0")
43187)]
43188#[cfg_attr(
43189 target_arch = "arm",
43190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43191)]
43192pub fn vreinterpretq_s16_f32(a: float32x4_t) -> int16x8_t {
43193 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43194 unsafe {
43195 let ret_val: int16x8_t = transmute(a);
43196 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43197 }
43198}
43199#[doc = "Vector reinterpret cast operation"]
43200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f32)"]
43201#[inline(always)]
43202#[cfg(target_endian = "little")]
43203#[target_feature(enable = "neon")]
43204#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43205#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43206#[cfg_attr(
43207 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43208 assert_instr(nop)
43209)]
43210#[cfg_attr(
43211 not(target_arch = "arm"),
43212 stable(feature = "neon_intrinsics", since = "1.59.0")
43213)]
43214#[cfg_attr(
43215 target_arch = "arm",
43216 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43217)]
43218pub fn vreinterpretq_s32_f32(a: float32x4_t) -> int32x4_t {
43219 unsafe { transmute(a) }
43220}
43221#[doc = "Vector reinterpret cast operation"]
43222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_f32)"]
43223#[inline(always)]
43224#[cfg(target_endian = "big")]
43225#[target_feature(enable = "neon")]
43226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43228#[cfg_attr(
43229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43230 assert_instr(nop)
43231)]
43232#[cfg_attr(
43233 not(target_arch = "arm"),
43234 stable(feature = "neon_intrinsics", since = "1.59.0")
43235)]
43236#[cfg_attr(
43237 target_arch = "arm",
43238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43239)]
43240pub fn vreinterpretq_s32_f32(a: float32x4_t) -> int32x4_t {
43241 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43242 unsafe {
43243 let ret_val: int32x4_t = transmute(a);
43244 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43245 }
43246}
43247#[doc = "Vector reinterpret cast operation"]
43248#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f32)"]
43249#[inline(always)]
43250#[cfg(target_endian = "little")]
43251#[target_feature(enable = "neon")]
43252#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43253#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43254#[cfg_attr(
43255 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43256 assert_instr(nop)
43257)]
43258#[cfg_attr(
43259 not(target_arch = "arm"),
43260 stable(feature = "neon_intrinsics", since = "1.59.0")
43261)]
43262#[cfg_attr(
43263 target_arch = "arm",
43264 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43265)]
43266pub fn vreinterpretq_s64_f32(a: float32x4_t) -> int64x2_t {
43267 unsafe { transmute(a) }
43268}
43269#[doc = "Vector reinterpret cast operation"]
43270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_f32)"]
43271#[inline(always)]
43272#[cfg(target_endian = "big")]
43273#[target_feature(enable = "neon")]
43274#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43275#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43276#[cfg_attr(
43277 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43278 assert_instr(nop)
43279)]
43280#[cfg_attr(
43281 not(target_arch = "arm"),
43282 stable(feature = "neon_intrinsics", since = "1.59.0")
43283)]
43284#[cfg_attr(
43285 target_arch = "arm",
43286 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43287)]
43288pub fn vreinterpretq_s64_f32(a: float32x4_t) -> int64x2_t {
43289 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43290 unsafe {
43291 let ret_val: int64x2_t = transmute(a);
43292 simd_shuffle!(ret_val, ret_val, [1, 0])
43293 }
43294}
43295#[doc = "Vector reinterpret cast operation"]
43296#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f32)"]
43297#[inline(always)]
43298#[cfg(target_endian = "little")]
43299#[target_feature(enable = "neon")]
43300#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43301#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43302#[cfg_attr(
43303 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43304 assert_instr(nop)
43305)]
43306#[cfg_attr(
43307 not(target_arch = "arm"),
43308 stable(feature = "neon_intrinsics", since = "1.59.0")
43309)]
43310#[cfg_attr(
43311 target_arch = "arm",
43312 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43313)]
43314pub fn vreinterpretq_u8_f32(a: float32x4_t) -> uint8x16_t {
43315 unsafe { transmute(a) }
43316}
43317#[doc = "Vector reinterpret cast operation"]
43318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_f32)"]
43319#[inline(always)]
43320#[cfg(target_endian = "big")]
43321#[target_feature(enable = "neon")]
43322#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43323#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43324#[cfg_attr(
43325 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43326 assert_instr(nop)
43327)]
43328#[cfg_attr(
43329 not(target_arch = "arm"),
43330 stable(feature = "neon_intrinsics", since = "1.59.0")
43331)]
43332#[cfg_attr(
43333 target_arch = "arm",
43334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43335)]
43336pub fn vreinterpretq_u8_f32(a: float32x4_t) -> uint8x16_t {
43337 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43338 unsafe {
43339 let ret_val: uint8x16_t = transmute(a);
43340 simd_shuffle!(
43341 ret_val,
43342 ret_val,
43343 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
43344 )
43345 }
43346}
43347#[doc = "Vector reinterpret cast operation"]
43348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f32)"]
43349#[inline(always)]
43350#[cfg(target_endian = "little")]
43351#[target_feature(enable = "neon")]
43352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43354#[cfg_attr(
43355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43356 assert_instr(nop)
43357)]
43358#[cfg_attr(
43359 not(target_arch = "arm"),
43360 stable(feature = "neon_intrinsics", since = "1.59.0")
43361)]
43362#[cfg_attr(
43363 target_arch = "arm",
43364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43365)]
43366pub fn vreinterpretq_u16_f32(a: float32x4_t) -> uint16x8_t {
43367 unsafe { transmute(a) }
43368}
43369#[doc = "Vector reinterpret cast operation"]
43370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_f32)"]
43371#[inline(always)]
43372#[cfg(target_endian = "big")]
43373#[target_feature(enable = "neon")]
43374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43376#[cfg_attr(
43377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43378 assert_instr(nop)
43379)]
43380#[cfg_attr(
43381 not(target_arch = "arm"),
43382 stable(feature = "neon_intrinsics", since = "1.59.0")
43383)]
43384#[cfg_attr(
43385 target_arch = "arm",
43386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43387)]
43388pub fn vreinterpretq_u16_f32(a: float32x4_t) -> uint16x8_t {
43389 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43390 unsafe {
43391 let ret_val: uint16x8_t = transmute(a);
43392 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43393 }
43394}
43395#[doc = "Vector reinterpret cast operation"]
43396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f32)"]
43397#[inline(always)]
43398#[cfg(target_endian = "little")]
43399#[target_feature(enable = "neon")]
43400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43401#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43402#[cfg_attr(
43403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43404 assert_instr(nop)
43405)]
43406#[cfg_attr(
43407 not(target_arch = "arm"),
43408 stable(feature = "neon_intrinsics", since = "1.59.0")
43409)]
43410#[cfg_attr(
43411 target_arch = "arm",
43412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43413)]
43414pub fn vreinterpretq_u32_f32(a: float32x4_t) -> uint32x4_t {
43415 unsafe { transmute(a) }
43416}
43417#[doc = "Vector reinterpret cast operation"]
43418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_f32)"]
43419#[inline(always)]
43420#[cfg(target_endian = "big")]
43421#[target_feature(enable = "neon")]
43422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43424#[cfg_attr(
43425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43426 assert_instr(nop)
43427)]
43428#[cfg_attr(
43429 not(target_arch = "arm"),
43430 stable(feature = "neon_intrinsics", since = "1.59.0")
43431)]
43432#[cfg_attr(
43433 target_arch = "arm",
43434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43435)]
43436pub fn vreinterpretq_u32_f32(a: float32x4_t) -> uint32x4_t {
43437 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43438 unsafe {
43439 let ret_val: uint32x4_t = transmute(a);
43440 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43441 }
43442}
43443#[doc = "Vector reinterpret cast operation"]
43444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f32)"]
43445#[inline(always)]
43446#[cfg(target_endian = "little")]
43447#[target_feature(enable = "neon")]
43448#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43449#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43450#[cfg_attr(
43451 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43452 assert_instr(nop)
43453)]
43454#[cfg_attr(
43455 not(target_arch = "arm"),
43456 stable(feature = "neon_intrinsics", since = "1.59.0")
43457)]
43458#[cfg_attr(
43459 target_arch = "arm",
43460 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43461)]
43462pub fn vreinterpretq_u64_f32(a: float32x4_t) -> uint64x2_t {
43463 unsafe { transmute(a) }
43464}
43465#[doc = "Vector reinterpret cast operation"]
43466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_f32)"]
43467#[inline(always)]
43468#[cfg(target_endian = "big")]
43469#[target_feature(enable = "neon")]
43470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43472#[cfg_attr(
43473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43474 assert_instr(nop)
43475)]
43476#[cfg_attr(
43477 not(target_arch = "arm"),
43478 stable(feature = "neon_intrinsics", since = "1.59.0")
43479)]
43480#[cfg_attr(
43481 target_arch = "arm",
43482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43483)]
43484pub fn vreinterpretq_u64_f32(a: float32x4_t) -> uint64x2_t {
43485 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43486 unsafe {
43487 let ret_val: uint64x2_t = transmute(a);
43488 simd_shuffle!(ret_val, ret_val, [1, 0])
43489 }
43490}
43491#[doc = "Vector reinterpret cast operation"]
43492#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f32)"]
43493#[inline(always)]
43494#[cfg(target_endian = "little")]
43495#[target_feature(enable = "neon")]
43496#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43497#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43498#[cfg_attr(
43499 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43500 assert_instr(nop)
43501)]
43502#[cfg_attr(
43503 not(target_arch = "arm"),
43504 stable(feature = "neon_intrinsics", since = "1.59.0")
43505)]
43506#[cfg_attr(
43507 target_arch = "arm",
43508 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43509)]
43510pub fn vreinterpretq_p8_f32(a: float32x4_t) -> poly8x16_t {
43511 unsafe { transmute(a) }
43512}
43513#[doc = "Vector reinterpret cast operation"]
43514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_f32)"]
43515#[inline(always)]
43516#[cfg(target_endian = "big")]
43517#[target_feature(enable = "neon")]
43518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43519#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43520#[cfg_attr(
43521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43522 assert_instr(nop)
43523)]
43524#[cfg_attr(
43525 not(target_arch = "arm"),
43526 stable(feature = "neon_intrinsics", since = "1.59.0")
43527)]
43528#[cfg_attr(
43529 target_arch = "arm",
43530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43531)]
43532pub fn vreinterpretq_p8_f32(a: float32x4_t) -> poly8x16_t {
43533 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43534 unsafe {
43535 let ret_val: poly8x16_t = transmute(a);
43536 simd_shuffle!(
43537 ret_val,
43538 ret_val,
43539 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
43540 )
43541 }
43542}
43543#[doc = "Vector reinterpret cast operation"]
43544#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f32)"]
43545#[inline(always)]
43546#[cfg(target_endian = "little")]
43547#[target_feature(enable = "neon")]
43548#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43549#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43550#[cfg_attr(
43551 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43552 assert_instr(nop)
43553)]
43554#[cfg_attr(
43555 not(target_arch = "arm"),
43556 stable(feature = "neon_intrinsics", since = "1.59.0")
43557)]
43558#[cfg_attr(
43559 target_arch = "arm",
43560 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43561)]
43562pub fn vreinterpretq_p16_f32(a: float32x4_t) -> poly16x8_t {
43563 unsafe { transmute(a) }
43564}
43565#[doc = "Vector reinterpret cast operation"]
43566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_f32)"]
43567#[inline(always)]
43568#[cfg(target_endian = "big")]
43569#[target_feature(enable = "neon")]
43570#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43571#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43572#[cfg_attr(
43573 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43574 assert_instr(nop)
43575)]
43576#[cfg_attr(
43577 not(target_arch = "arm"),
43578 stable(feature = "neon_intrinsics", since = "1.59.0")
43579)]
43580#[cfg_attr(
43581 target_arch = "arm",
43582 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43583)]
43584pub fn vreinterpretq_p16_f32(a: float32x4_t) -> poly16x8_t {
43585 let a: float32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
43586 unsafe {
43587 let ret_val: poly16x8_t = transmute(a);
43588 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43589 }
43590}
43591#[doc = "Vector reinterpret cast operation"]
43592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s8)"]
43593#[inline(always)]
43594#[cfg(target_endian = "little")]
43595#[target_feature(enable = "neon")]
43596#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43597#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43598#[cfg_attr(
43599 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43600 assert_instr(nop)
43601)]
43602#[cfg_attr(
43603 not(target_arch = "arm"),
43604 stable(feature = "neon_intrinsics", since = "1.59.0")
43605)]
43606#[cfg_attr(
43607 target_arch = "arm",
43608 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43609)]
43610pub fn vreinterpret_f32_s8(a: int8x8_t) -> float32x2_t {
43611 unsafe { transmute(a) }
43612}
43613#[doc = "Vector reinterpret cast operation"]
43614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s8)"]
43615#[inline(always)]
43616#[cfg(target_endian = "big")]
43617#[target_feature(enable = "neon")]
43618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43620#[cfg_attr(
43621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43622 assert_instr(nop)
43623)]
43624#[cfg_attr(
43625 not(target_arch = "arm"),
43626 stable(feature = "neon_intrinsics", since = "1.59.0")
43627)]
43628#[cfg_attr(
43629 target_arch = "arm",
43630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43631)]
43632pub fn vreinterpret_f32_s8(a: int8x8_t) -> float32x2_t {
43633 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43634 unsafe {
43635 let ret_val: float32x2_t = transmute(a);
43636 simd_shuffle!(ret_val, ret_val, [1, 0])
43637 }
43638}
43639#[doc = "Vector reinterpret cast operation"]
43640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s8)"]
43641#[inline(always)]
43642#[cfg(target_endian = "little")]
43643#[target_feature(enable = "neon")]
43644#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43645#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43646#[cfg_attr(
43647 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43648 assert_instr(nop)
43649)]
43650#[cfg_attr(
43651 not(target_arch = "arm"),
43652 stable(feature = "neon_intrinsics", since = "1.59.0")
43653)]
43654#[cfg_attr(
43655 target_arch = "arm",
43656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43657)]
43658pub fn vreinterpret_s16_s8(a: int8x8_t) -> int16x4_t {
43659 unsafe { transmute(a) }
43660}
43661#[doc = "Vector reinterpret cast operation"]
43662#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s8)"]
43663#[inline(always)]
43664#[cfg(target_endian = "big")]
43665#[target_feature(enable = "neon")]
43666#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43667#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43668#[cfg_attr(
43669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43670 assert_instr(nop)
43671)]
43672#[cfg_attr(
43673 not(target_arch = "arm"),
43674 stable(feature = "neon_intrinsics", since = "1.59.0")
43675)]
43676#[cfg_attr(
43677 target_arch = "arm",
43678 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43679)]
43680pub fn vreinterpret_s16_s8(a: int8x8_t) -> int16x4_t {
43681 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43682 unsafe {
43683 let ret_val: int16x4_t = transmute(a);
43684 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43685 }
43686}
43687#[doc = "Vector reinterpret cast operation"]
43688#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s8)"]
43689#[inline(always)]
43690#[cfg(target_endian = "little")]
43691#[target_feature(enable = "neon")]
43692#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43693#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43694#[cfg_attr(
43695 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43696 assert_instr(nop)
43697)]
43698#[cfg_attr(
43699 not(target_arch = "arm"),
43700 stable(feature = "neon_intrinsics", since = "1.59.0")
43701)]
43702#[cfg_attr(
43703 target_arch = "arm",
43704 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43705)]
43706pub fn vreinterpret_s32_s8(a: int8x8_t) -> int32x2_t {
43707 unsafe { transmute(a) }
43708}
43709#[doc = "Vector reinterpret cast operation"]
43710#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s8)"]
43711#[inline(always)]
43712#[cfg(target_endian = "big")]
43713#[target_feature(enable = "neon")]
43714#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43715#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43716#[cfg_attr(
43717 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43718 assert_instr(nop)
43719)]
43720#[cfg_attr(
43721 not(target_arch = "arm"),
43722 stable(feature = "neon_intrinsics", since = "1.59.0")
43723)]
43724#[cfg_attr(
43725 target_arch = "arm",
43726 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43727)]
43728pub fn vreinterpret_s32_s8(a: int8x8_t) -> int32x2_t {
43729 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43730 unsafe {
43731 let ret_val: int32x2_t = transmute(a);
43732 simd_shuffle!(ret_val, ret_val, [1, 0])
43733 }
43734}
43735#[doc = "Vector reinterpret cast operation"]
43736#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s8)"]
43737#[inline(always)]
43738#[cfg(target_endian = "little")]
43739#[target_feature(enable = "neon")]
43740#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43741#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43742#[cfg_attr(
43743 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43744 assert_instr(nop)
43745)]
43746#[cfg_attr(
43747 not(target_arch = "arm"),
43748 stable(feature = "neon_intrinsics", since = "1.59.0")
43749)]
43750#[cfg_attr(
43751 target_arch = "arm",
43752 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43753)]
43754pub fn vreinterpret_s64_s8(a: int8x8_t) -> int64x1_t {
43755 unsafe { transmute(a) }
43756}
43757#[doc = "Vector reinterpret cast operation"]
43758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s8)"]
43759#[inline(always)]
43760#[cfg(target_endian = "big")]
43761#[target_feature(enable = "neon")]
43762#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43763#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43764#[cfg_attr(
43765 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43766 assert_instr(nop)
43767)]
43768#[cfg_attr(
43769 not(target_arch = "arm"),
43770 stable(feature = "neon_intrinsics", since = "1.59.0")
43771)]
43772#[cfg_attr(
43773 target_arch = "arm",
43774 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43775)]
43776pub fn vreinterpret_s64_s8(a: int8x8_t) -> int64x1_t {
43777 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43778 unsafe { transmute(a) }
43779}
43780#[doc = "Vector reinterpret cast operation"]
43781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s8)"]
43782#[inline(always)]
43783#[cfg(target_endian = "little")]
43784#[target_feature(enable = "neon")]
43785#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43786#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43787#[cfg_attr(
43788 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43789 assert_instr(nop)
43790)]
43791#[cfg_attr(
43792 not(target_arch = "arm"),
43793 stable(feature = "neon_intrinsics", since = "1.59.0")
43794)]
43795#[cfg_attr(
43796 target_arch = "arm",
43797 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43798)]
43799pub fn vreinterpret_u8_s8(a: int8x8_t) -> uint8x8_t {
43800 unsafe { transmute(a) }
43801}
43802#[doc = "Vector reinterpret cast operation"]
43803#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s8)"]
43804#[inline(always)]
43805#[cfg(target_endian = "big")]
43806#[target_feature(enable = "neon")]
43807#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43808#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43809#[cfg_attr(
43810 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43811 assert_instr(nop)
43812)]
43813#[cfg_attr(
43814 not(target_arch = "arm"),
43815 stable(feature = "neon_intrinsics", since = "1.59.0")
43816)]
43817#[cfg_attr(
43818 target_arch = "arm",
43819 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43820)]
43821pub fn vreinterpret_u8_s8(a: int8x8_t) -> uint8x8_t {
43822 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43823 unsafe {
43824 let ret_val: uint8x8_t = transmute(a);
43825 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
43826 }
43827}
43828#[doc = "Vector reinterpret cast operation"]
43829#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s8)"]
43830#[inline(always)]
43831#[cfg(target_endian = "little")]
43832#[target_feature(enable = "neon")]
43833#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43834#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43835#[cfg_attr(
43836 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43837 assert_instr(nop)
43838)]
43839#[cfg_attr(
43840 not(target_arch = "arm"),
43841 stable(feature = "neon_intrinsics", since = "1.59.0")
43842)]
43843#[cfg_attr(
43844 target_arch = "arm",
43845 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43846)]
43847pub fn vreinterpret_u16_s8(a: int8x8_t) -> uint16x4_t {
43848 unsafe { transmute(a) }
43849}
43850#[doc = "Vector reinterpret cast operation"]
43851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s8)"]
43852#[inline(always)]
43853#[cfg(target_endian = "big")]
43854#[target_feature(enable = "neon")]
43855#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43856#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43857#[cfg_attr(
43858 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43859 assert_instr(nop)
43860)]
43861#[cfg_attr(
43862 not(target_arch = "arm"),
43863 stable(feature = "neon_intrinsics", since = "1.59.0")
43864)]
43865#[cfg_attr(
43866 target_arch = "arm",
43867 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43868)]
43869pub fn vreinterpret_u16_s8(a: int8x8_t) -> uint16x4_t {
43870 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43871 unsafe {
43872 let ret_val: uint16x4_t = transmute(a);
43873 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
43874 }
43875}
43876#[doc = "Vector reinterpret cast operation"]
43877#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s8)"]
43878#[inline(always)]
43879#[cfg(target_endian = "little")]
43880#[target_feature(enable = "neon")]
43881#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43882#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43883#[cfg_attr(
43884 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43885 assert_instr(nop)
43886)]
43887#[cfg_attr(
43888 not(target_arch = "arm"),
43889 stable(feature = "neon_intrinsics", since = "1.59.0")
43890)]
43891#[cfg_attr(
43892 target_arch = "arm",
43893 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43894)]
43895pub fn vreinterpret_u32_s8(a: int8x8_t) -> uint32x2_t {
43896 unsafe { transmute(a) }
43897}
43898#[doc = "Vector reinterpret cast operation"]
43899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s8)"]
43900#[inline(always)]
43901#[cfg(target_endian = "big")]
43902#[target_feature(enable = "neon")]
43903#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43904#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43905#[cfg_attr(
43906 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43907 assert_instr(nop)
43908)]
43909#[cfg_attr(
43910 not(target_arch = "arm"),
43911 stable(feature = "neon_intrinsics", since = "1.59.0")
43912)]
43913#[cfg_attr(
43914 target_arch = "arm",
43915 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43916)]
43917pub fn vreinterpret_u32_s8(a: int8x8_t) -> uint32x2_t {
43918 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43919 unsafe {
43920 let ret_val: uint32x2_t = transmute(a);
43921 simd_shuffle!(ret_val, ret_val, [1, 0])
43922 }
43923}
43924#[doc = "Vector reinterpret cast operation"]
43925#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s8)"]
43926#[inline(always)]
43927#[cfg(target_endian = "little")]
43928#[target_feature(enable = "neon")]
43929#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43930#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43931#[cfg_attr(
43932 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43933 assert_instr(nop)
43934)]
43935#[cfg_attr(
43936 not(target_arch = "arm"),
43937 stable(feature = "neon_intrinsics", since = "1.59.0")
43938)]
43939#[cfg_attr(
43940 target_arch = "arm",
43941 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43942)]
43943pub fn vreinterpret_u64_s8(a: int8x8_t) -> uint64x1_t {
43944 unsafe { transmute(a) }
43945}
43946#[doc = "Vector reinterpret cast operation"]
43947#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s8)"]
43948#[inline(always)]
43949#[cfg(target_endian = "big")]
43950#[target_feature(enable = "neon")]
43951#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43952#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43953#[cfg_attr(
43954 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43955 assert_instr(nop)
43956)]
43957#[cfg_attr(
43958 not(target_arch = "arm"),
43959 stable(feature = "neon_intrinsics", since = "1.59.0")
43960)]
43961#[cfg_attr(
43962 target_arch = "arm",
43963 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43964)]
43965pub fn vreinterpret_u64_s8(a: int8x8_t) -> uint64x1_t {
43966 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
43967 unsafe { transmute(a) }
43968}
43969#[doc = "Vector reinterpret cast operation"]
43970#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s8)"]
43971#[inline(always)]
43972#[cfg(target_endian = "little")]
43973#[target_feature(enable = "neon")]
43974#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43975#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43976#[cfg_attr(
43977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
43978 assert_instr(nop)
43979)]
43980#[cfg_attr(
43981 not(target_arch = "arm"),
43982 stable(feature = "neon_intrinsics", since = "1.59.0")
43983)]
43984#[cfg_attr(
43985 target_arch = "arm",
43986 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
43987)]
43988pub fn vreinterpret_p8_s8(a: int8x8_t) -> poly8x8_t {
43989 unsafe { transmute(a) }
43990}
43991#[doc = "Vector reinterpret cast operation"]
43992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s8)"]
43993#[inline(always)]
43994#[cfg(target_endian = "big")]
43995#[target_feature(enable = "neon")]
43996#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
43997#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
43998#[cfg_attr(
43999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44000 assert_instr(nop)
44001)]
44002#[cfg_attr(
44003 not(target_arch = "arm"),
44004 stable(feature = "neon_intrinsics", since = "1.59.0")
44005)]
44006#[cfg_attr(
44007 target_arch = "arm",
44008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44009)]
44010pub fn vreinterpret_p8_s8(a: int8x8_t) -> poly8x8_t {
44011 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44012 unsafe {
44013 let ret_val: poly8x8_t = transmute(a);
44014 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44015 }
44016}
44017#[doc = "Vector reinterpret cast operation"]
44018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s8)"]
44019#[inline(always)]
44020#[cfg(target_endian = "little")]
44021#[target_feature(enable = "neon")]
44022#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44023#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44024#[cfg_attr(
44025 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44026 assert_instr(nop)
44027)]
44028#[cfg_attr(
44029 not(target_arch = "arm"),
44030 stable(feature = "neon_intrinsics", since = "1.59.0")
44031)]
44032#[cfg_attr(
44033 target_arch = "arm",
44034 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44035)]
44036pub fn vreinterpret_p16_s8(a: int8x8_t) -> poly16x4_t {
44037 unsafe { transmute(a) }
44038}
44039#[doc = "Vector reinterpret cast operation"]
44040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s8)"]
44041#[inline(always)]
44042#[cfg(target_endian = "big")]
44043#[target_feature(enable = "neon")]
44044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44045#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44046#[cfg_attr(
44047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44048 assert_instr(nop)
44049)]
44050#[cfg_attr(
44051 not(target_arch = "arm"),
44052 stable(feature = "neon_intrinsics", since = "1.59.0")
44053)]
44054#[cfg_attr(
44055 target_arch = "arm",
44056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44057)]
44058pub fn vreinterpret_p16_s8(a: int8x8_t) -> poly16x4_t {
44059 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
44060 unsafe {
44061 let ret_val: poly16x4_t = transmute(a);
44062 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44063 }
44064}
44065#[doc = "Vector reinterpret cast operation"]
44066#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s8)"]
44067#[inline(always)]
44068#[cfg(target_endian = "little")]
44069#[target_feature(enable = "neon")]
44070#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44071#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44072#[cfg_attr(
44073 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44074 assert_instr(nop)
44075)]
44076#[cfg_attr(
44077 not(target_arch = "arm"),
44078 stable(feature = "neon_intrinsics", since = "1.59.0")
44079)]
44080#[cfg_attr(
44081 target_arch = "arm",
44082 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44083)]
44084pub fn vreinterpretq_f32_s8(a: int8x16_t) -> float32x4_t {
44085 unsafe { transmute(a) }
44086}
44087#[doc = "Vector reinterpret cast operation"]
44088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s8)"]
44089#[inline(always)]
44090#[cfg(target_endian = "big")]
44091#[target_feature(enable = "neon")]
44092#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44093#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44094#[cfg_attr(
44095 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44096 assert_instr(nop)
44097)]
44098#[cfg_attr(
44099 not(target_arch = "arm"),
44100 stable(feature = "neon_intrinsics", since = "1.59.0")
44101)]
44102#[cfg_attr(
44103 target_arch = "arm",
44104 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44105)]
44106pub fn vreinterpretq_f32_s8(a: int8x16_t) -> float32x4_t {
44107 let a: int8x16_t =
44108 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44109 unsafe {
44110 let ret_val: float32x4_t = transmute(a);
44111 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44112 }
44113}
44114#[doc = "Vector reinterpret cast operation"]
44115#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s8)"]
44116#[inline(always)]
44117#[cfg(target_endian = "little")]
44118#[target_feature(enable = "neon")]
44119#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44120#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44121#[cfg_attr(
44122 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44123 assert_instr(nop)
44124)]
44125#[cfg_attr(
44126 not(target_arch = "arm"),
44127 stable(feature = "neon_intrinsics", since = "1.59.0")
44128)]
44129#[cfg_attr(
44130 target_arch = "arm",
44131 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44132)]
44133pub fn vreinterpretq_s16_s8(a: int8x16_t) -> int16x8_t {
44134 unsafe { transmute(a) }
44135}
44136#[doc = "Vector reinterpret cast operation"]
44137#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s8)"]
44138#[inline(always)]
44139#[cfg(target_endian = "big")]
44140#[target_feature(enable = "neon")]
44141#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44142#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44143#[cfg_attr(
44144 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44145 assert_instr(nop)
44146)]
44147#[cfg_attr(
44148 not(target_arch = "arm"),
44149 stable(feature = "neon_intrinsics", since = "1.59.0")
44150)]
44151#[cfg_attr(
44152 target_arch = "arm",
44153 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44154)]
44155pub fn vreinterpretq_s16_s8(a: int8x16_t) -> int16x8_t {
44156 let a: int8x16_t =
44157 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44158 unsafe {
44159 let ret_val: int16x8_t = transmute(a);
44160 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44161 }
44162}
44163#[doc = "Vector reinterpret cast operation"]
44164#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s8)"]
44165#[inline(always)]
44166#[cfg(target_endian = "little")]
44167#[target_feature(enable = "neon")]
44168#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44169#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44170#[cfg_attr(
44171 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44172 assert_instr(nop)
44173)]
44174#[cfg_attr(
44175 not(target_arch = "arm"),
44176 stable(feature = "neon_intrinsics", since = "1.59.0")
44177)]
44178#[cfg_attr(
44179 target_arch = "arm",
44180 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44181)]
44182pub fn vreinterpretq_s32_s8(a: int8x16_t) -> int32x4_t {
44183 unsafe { transmute(a) }
44184}
44185#[doc = "Vector reinterpret cast operation"]
44186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s8)"]
44187#[inline(always)]
44188#[cfg(target_endian = "big")]
44189#[target_feature(enable = "neon")]
44190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44191#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44192#[cfg_attr(
44193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44194 assert_instr(nop)
44195)]
44196#[cfg_attr(
44197 not(target_arch = "arm"),
44198 stable(feature = "neon_intrinsics", since = "1.59.0")
44199)]
44200#[cfg_attr(
44201 target_arch = "arm",
44202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44203)]
44204pub fn vreinterpretq_s32_s8(a: int8x16_t) -> int32x4_t {
44205 let a: int8x16_t =
44206 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44207 unsafe {
44208 let ret_val: int32x4_t = transmute(a);
44209 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44210 }
44211}
44212#[doc = "Vector reinterpret cast operation"]
44213#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s8)"]
44214#[inline(always)]
44215#[cfg(target_endian = "little")]
44216#[target_feature(enable = "neon")]
44217#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44218#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44219#[cfg_attr(
44220 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44221 assert_instr(nop)
44222)]
44223#[cfg_attr(
44224 not(target_arch = "arm"),
44225 stable(feature = "neon_intrinsics", since = "1.59.0")
44226)]
44227#[cfg_attr(
44228 target_arch = "arm",
44229 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44230)]
44231pub fn vreinterpretq_s64_s8(a: int8x16_t) -> int64x2_t {
44232 unsafe { transmute(a) }
44233}
44234#[doc = "Vector reinterpret cast operation"]
44235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s8)"]
44236#[inline(always)]
44237#[cfg(target_endian = "big")]
44238#[target_feature(enable = "neon")]
44239#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44240#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44241#[cfg_attr(
44242 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44243 assert_instr(nop)
44244)]
44245#[cfg_attr(
44246 not(target_arch = "arm"),
44247 stable(feature = "neon_intrinsics", since = "1.59.0")
44248)]
44249#[cfg_attr(
44250 target_arch = "arm",
44251 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44252)]
44253pub fn vreinterpretq_s64_s8(a: int8x16_t) -> int64x2_t {
44254 let a: int8x16_t =
44255 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44256 unsafe {
44257 let ret_val: int64x2_t = transmute(a);
44258 simd_shuffle!(ret_val, ret_val, [1, 0])
44259 }
44260}
44261#[doc = "Vector reinterpret cast operation"]
44262#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s8)"]
44263#[inline(always)]
44264#[cfg(target_endian = "little")]
44265#[target_feature(enable = "neon")]
44266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44267#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44268#[cfg_attr(
44269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44270 assert_instr(nop)
44271)]
44272#[cfg_attr(
44273 not(target_arch = "arm"),
44274 stable(feature = "neon_intrinsics", since = "1.59.0")
44275)]
44276#[cfg_attr(
44277 target_arch = "arm",
44278 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44279)]
44280pub fn vreinterpretq_u8_s8(a: int8x16_t) -> uint8x16_t {
44281 unsafe { transmute(a) }
44282}
44283#[doc = "Vector reinterpret cast operation"]
44284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s8)"]
44285#[inline(always)]
44286#[cfg(target_endian = "big")]
44287#[target_feature(enable = "neon")]
44288#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44289#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44290#[cfg_attr(
44291 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44292 assert_instr(nop)
44293)]
44294#[cfg_attr(
44295 not(target_arch = "arm"),
44296 stable(feature = "neon_intrinsics", since = "1.59.0")
44297)]
44298#[cfg_attr(
44299 target_arch = "arm",
44300 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44301)]
44302pub fn vreinterpretq_u8_s8(a: int8x16_t) -> uint8x16_t {
44303 let a: int8x16_t =
44304 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44305 unsafe {
44306 let ret_val: uint8x16_t = transmute(a);
44307 simd_shuffle!(
44308 ret_val,
44309 ret_val,
44310 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
44311 )
44312 }
44313}
44314#[doc = "Vector reinterpret cast operation"]
44315#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s8)"]
44316#[inline(always)]
44317#[cfg(target_endian = "little")]
44318#[target_feature(enable = "neon")]
44319#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44320#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44321#[cfg_attr(
44322 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44323 assert_instr(nop)
44324)]
44325#[cfg_attr(
44326 not(target_arch = "arm"),
44327 stable(feature = "neon_intrinsics", since = "1.59.0")
44328)]
44329#[cfg_attr(
44330 target_arch = "arm",
44331 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44332)]
44333pub fn vreinterpretq_u16_s8(a: int8x16_t) -> uint16x8_t {
44334 unsafe { transmute(a) }
44335}
44336#[doc = "Vector reinterpret cast operation"]
44337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s8)"]
44338#[inline(always)]
44339#[cfg(target_endian = "big")]
44340#[target_feature(enable = "neon")]
44341#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44342#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44343#[cfg_attr(
44344 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44345 assert_instr(nop)
44346)]
44347#[cfg_attr(
44348 not(target_arch = "arm"),
44349 stable(feature = "neon_intrinsics", since = "1.59.0")
44350)]
44351#[cfg_attr(
44352 target_arch = "arm",
44353 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44354)]
44355pub fn vreinterpretq_u16_s8(a: int8x16_t) -> uint16x8_t {
44356 let a: int8x16_t =
44357 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44358 unsafe {
44359 let ret_val: uint16x8_t = transmute(a);
44360 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44361 }
44362}
44363#[doc = "Vector reinterpret cast operation"]
44364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s8)"]
44365#[inline(always)]
44366#[cfg(target_endian = "little")]
44367#[target_feature(enable = "neon")]
44368#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44369#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44370#[cfg_attr(
44371 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44372 assert_instr(nop)
44373)]
44374#[cfg_attr(
44375 not(target_arch = "arm"),
44376 stable(feature = "neon_intrinsics", since = "1.59.0")
44377)]
44378#[cfg_attr(
44379 target_arch = "arm",
44380 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44381)]
44382pub fn vreinterpretq_u32_s8(a: int8x16_t) -> uint32x4_t {
44383 unsafe { transmute(a) }
44384}
44385#[doc = "Vector reinterpret cast operation"]
44386#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s8)"]
44387#[inline(always)]
44388#[cfg(target_endian = "big")]
44389#[target_feature(enable = "neon")]
44390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44391#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44392#[cfg_attr(
44393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44394 assert_instr(nop)
44395)]
44396#[cfg_attr(
44397 not(target_arch = "arm"),
44398 stable(feature = "neon_intrinsics", since = "1.59.0")
44399)]
44400#[cfg_attr(
44401 target_arch = "arm",
44402 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44403)]
44404pub fn vreinterpretq_u32_s8(a: int8x16_t) -> uint32x4_t {
44405 let a: int8x16_t =
44406 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44407 unsafe {
44408 let ret_val: uint32x4_t = transmute(a);
44409 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44410 }
44411}
44412#[doc = "Vector reinterpret cast operation"]
44413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s8)"]
44414#[inline(always)]
44415#[cfg(target_endian = "little")]
44416#[target_feature(enable = "neon")]
44417#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44418#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44419#[cfg_attr(
44420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44421 assert_instr(nop)
44422)]
44423#[cfg_attr(
44424 not(target_arch = "arm"),
44425 stable(feature = "neon_intrinsics", since = "1.59.0")
44426)]
44427#[cfg_attr(
44428 target_arch = "arm",
44429 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44430)]
44431pub fn vreinterpretq_u64_s8(a: int8x16_t) -> uint64x2_t {
44432 unsafe { transmute(a) }
44433}
44434#[doc = "Vector reinterpret cast operation"]
44435#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s8)"]
44436#[inline(always)]
44437#[cfg(target_endian = "big")]
44438#[target_feature(enable = "neon")]
44439#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44440#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44441#[cfg_attr(
44442 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44443 assert_instr(nop)
44444)]
44445#[cfg_attr(
44446 not(target_arch = "arm"),
44447 stable(feature = "neon_intrinsics", since = "1.59.0")
44448)]
44449#[cfg_attr(
44450 target_arch = "arm",
44451 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44452)]
44453pub fn vreinterpretq_u64_s8(a: int8x16_t) -> uint64x2_t {
44454 let a: int8x16_t =
44455 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44456 unsafe {
44457 let ret_val: uint64x2_t = transmute(a);
44458 simd_shuffle!(ret_val, ret_val, [1, 0])
44459 }
44460}
44461#[doc = "Vector reinterpret cast operation"]
44462#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s8)"]
44463#[inline(always)]
44464#[cfg(target_endian = "little")]
44465#[target_feature(enable = "neon")]
44466#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44467#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44468#[cfg_attr(
44469 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44470 assert_instr(nop)
44471)]
44472#[cfg_attr(
44473 not(target_arch = "arm"),
44474 stable(feature = "neon_intrinsics", since = "1.59.0")
44475)]
44476#[cfg_attr(
44477 target_arch = "arm",
44478 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44479)]
44480pub fn vreinterpretq_p8_s8(a: int8x16_t) -> poly8x16_t {
44481 unsafe { transmute(a) }
44482}
44483#[doc = "Vector reinterpret cast operation"]
44484#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s8)"]
44485#[inline(always)]
44486#[cfg(target_endian = "big")]
44487#[target_feature(enable = "neon")]
44488#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44489#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44490#[cfg_attr(
44491 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44492 assert_instr(nop)
44493)]
44494#[cfg_attr(
44495 not(target_arch = "arm"),
44496 stable(feature = "neon_intrinsics", since = "1.59.0")
44497)]
44498#[cfg_attr(
44499 target_arch = "arm",
44500 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44501)]
44502pub fn vreinterpretq_p8_s8(a: int8x16_t) -> poly8x16_t {
44503 let a: int8x16_t =
44504 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44505 unsafe {
44506 let ret_val: poly8x16_t = transmute(a);
44507 simd_shuffle!(
44508 ret_val,
44509 ret_val,
44510 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
44511 )
44512 }
44513}
44514#[doc = "Vector reinterpret cast operation"]
44515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s8)"]
44516#[inline(always)]
44517#[cfg(target_endian = "little")]
44518#[target_feature(enable = "neon")]
44519#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44520#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44521#[cfg_attr(
44522 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44523 assert_instr(nop)
44524)]
44525#[cfg_attr(
44526 not(target_arch = "arm"),
44527 stable(feature = "neon_intrinsics", since = "1.59.0")
44528)]
44529#[cfg_attr(
44530 target_arch = "arm",
44531 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44532)]
44533pub fn vreinterpretq_p16_s8(a: int8x16_t) -> poly16x8_t {
44534 unsafe { transmute(a) }
44535}
44536#[doc = "Vector reinterpret cast operation"]
44537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s8)"]
44538#[inline(always)]
44539#[cfg(target_endian = "big")]
44540#[target_feature(enable = "neon")]
44541#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44542#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44543#[cfg_attr(
44544 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44545 assert_instr(nop)
44546)]
44547#[cfg_attr(
44548 not(target_arch = "arm"),
44549 stable(feature = "neon_intrinsics", since = "1.59.0")
44550)]
44551#[cfg_attr(
44552 target_arch = "arm",
44553 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44554)]
44555pub fn vreinterpretq_p16_s8(a: int8x16_t) -> poly16x8_t {
44556 let a: int8x16_t =
44557 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
44558 unsafe {
44559 let ret_val: poly16x8_t = transmute(a);
44560 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44561 }
44562}
44563#[doc = "Vector reinterpret cast operation"]
44564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s16)"]
44565#[inline(always)]
44566#[cfg(target_endian = "little")]
44567#[target_feature(enable = "neon")]
44568#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44569#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44570#[cfg_attr(
44571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44572 assert_instr(nop)
44573)]
44574#[cfg_attr(
44575 not(target_arch = "arm"),
44576 stable(feature = "neon_intrinsics", since = "1.59.0")
44577)]
44578#[cfg_attr(
44579 target_arch = "arm",
44580 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44581)]
44582pub fn vreinterpret_f32_s16(a: int16x4_t) -> float32x2_t {
44583 unsafe { transmute(a) }
44584}
44585#[doc = "Vector reinterpret cast operation"]
44586#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s16)"]
44587#[inline(always)]
44588#[cfg(target_endian = "big")]
44589#[target_feature(enable = "neon")]
44590#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44591#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44592#[cfg_attr(
44593 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44594 assert_instr(nop)
44595)]
44596#[cfg_attr(
44597 not(target_arch = "arm"),
44598 stable(feature = "neon_intrinsics", since = "1.59.0")
44599)]
44600#[cfg_attr(
44601 target_arch = "arm",
44602 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44603)]
44604pub fn vreinterpret_f32_s16(a: int16x4_t) -> float32x2_t {
44605 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44606 unsafe {
44607 let ret_val: float32x2_t = transmute(a);
44608 simd_shuffle!(ret_val, ret_val, [1, 0])
44609 }
44610}
44611#[doc = "Vector reinterpret cast operation"]
44612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s16)"]
44613#[inline(always)]
44614#[cfg(target_endian = "little")]
44615#[target_feature(enable = "neon")]
44616#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44617#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44618#[cfg_attr(
44619 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44620 assert_instr(nop)
44621)]
44622#[cfg_attr(
44623 not(target_arch = "arm"),
44624 stable(feature = "neon_intrinsics", since = "1.59.0")
44625)]
44626#[cfg_attr(
44627 target_arch = "arm",
44628 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44629)]
44630pub fn vreinterpret_s8_s16(a: int16x4_t) -> int8x8_t {
44631 unsafe { transmute(a) }
44632}
44633#[doc = "Vector reinterpret cast operation"]
44634#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s16)"]
44635#[inline(always)]
44636#[cfg(target_endian = "big")]
44637#[target_feature(enable = "neon")]
44638#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44639#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44640#[cfg_attr(
44641 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44642 assert_instr(nop)
44643)]
44644#[cfg_attr(
44645 not(target_arch = "arm"),
44646 stable(feature = "neon_intrinsics", since = "1.59.0")
44647)]
44648#[cfg_attr(
44649 target_arch = "arm",
44650 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44651)]
44652pub fn vreinterpret_s8_s16(a: int16x4_t) -> int8x8_t {
44653 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44654 unsafe {
44655 let ret_val: int8x8_t = transmute(a);
44656 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44657 }
44658}
44659#[doc = "Vector reinterpret cast operation"]
44660#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s16)"]
44661#[inline(always)]
44662#[cfg(target_endian = "little")]
44663#[target_feature(enable = "neon")]
44664#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44665#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44666#[cfg_attr(
44667 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44668 assert_instr(nop)
44669)]
44670#[cfg_attr(
44671 not(target_arch = "arm"),
44672 stable(feature = "neon_intrinsics", since = "1.59.0")
44673)]
44674#[cfg_attr(
44675 target_arch = "arm",
44676 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44677)]
44678pub fn vreinterpret_s32_s16(a: int16x4_t) -> int32x2_t {
44679 unsafe { transmute(a) }
44680}
44681#[doc = "Vector reinterpret cast operation"]
44682#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s16)"]
44683#[inline(always)]
44684#[cfg(target_endian = "big")]
44685#[target_feature(enable = "neon")]
44686#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44687#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44688#[cfg_attr(
44689 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44690 assert_instr(nop)
44691)]
44692#[cfg_attr(
44693 not(target_arch = "arm"),
44694 stable(feature = "neon_intrinsics", since = "1.59.0")
44695)]
44696#[cfg_attr(
44697 target_arch = "arm",
44698 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44699)]
44700pub fn vreinterpret_s32_s16(a: int16x4_t) -> int32x2_t {
44701 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44702 unsafe {
44703 let ret_val: int32x2_t = transmute(a);
44704 simd_shuffle!(ret_val, ret_val, [1, 0])
44705 }
44706}
44707#[doc = "Vector reinterpret cast operation"]
44708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s16)"]
44709#[inline(always)]
44710#[cfg(target_endian = "little")]
44711#[target_feature(enable = "neon")]
44712#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44713#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44714#[cfg_attr(
44715 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44716 assert_instr(nop)
44717)]
44718#[cfg_attr(
44719 not(target_arch = "arm"),
44720 stable(feature = "neon_intrinsics", since = "1.59.0")
44721)]
44722#[cfg_attr(
44723 target_arch = "arm",
44724 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44725)]
44726pub fn vreinterpret_s64_s16(a: int16x4_t) -> int64x1_t {
44727 unsafe { transmute(a) }
44728}
44729#[doc = "Vector reinterpret cast operation"]
44730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s16)"]
44731#[inline(always)]
44732#[cfg(target_endian = "big")]
44733#[target_feature(enable = "neon")]
44734#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44735#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44736#[cfg_attr(
44737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44738 assert_instr(nop)
44739)]
44740#[cfg_attr(
44741 not(target_arch = "arm"),
44742 stable(feature = "neon_intrinsics", since = "1.59.0")
44743)]
44744#[cfg_attr(
44745 target_arch = "arm",
44746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44747)]
44748pub fn vreinterpret_s64_s16(a: int16x4_t) -> int64x1_t {
44749 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44750 unsafe { transmute(a) }
44751}
44752#[doc = "Vector reinterpret cast operation"]
44753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s16)"]
44754#[inline(always)]
44755#[cfg(target_endian = "little")]
44756#[target_feature(enable = "neon")]
44757#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44758#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44759#[cfg_attr(
44760 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44761 assert_instr(nop)
44762)]
44763#[cfg_attr(
44764 not(target_arch = "arm"),
44765 stable(feature = "neon_intrinsics", since = "1.59.0")
44766)]
44767#[cfg_attr(
44768 target_arch = "arm",
44769 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44770)]
44771pub fn vreinterpret_u8_s16(a: int16x4_t) -> uint8x8_t {
44772 unsafe { transmute(a) }
44773}
44774#[doc = "Vector reinterpret cast operation"]
44775#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s16)"]
44776#[inline(always)]
44777#[cfg(target_endian = "big")]
44778#[target_feature(enable = "neon")]
44779#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44780#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44781#[cfg_attr(
44782 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44783 assert_instr(nop)
44784)]
44785#[cfg_attr(
44786 not(target_arch = "arm"),
44787 stable(feature = "neon_intrinsics", since = "1.59.0")
44788)]
44789#[cfg_attr(
44790 target_arch = "arm",
44791 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44792)]
44793pub fn vreinterpret_u8_s16(a: int16x4_t) -> uint8x8_t {
44794 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44795 unsafe {
44796 let ret_val: uint8x8_t = transmute(a);
44797 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44798 }
44799}
44800#[doc = "Vector reinterpret cast operation"]
44801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s16)"]
44802#[inline(always)]
44803#[cfg(target_endian = "little")]
44804#[target_feature(enable = "neon")]
44805#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44806#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44807#[cfg_attr(
44808 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44809 assert_instr(nop)
44810)]
44811#[cfg_attr(
44812 not(target_arch = "arm"),
44813 stable(feature = "neon_intrinsics", since = "1.59.0")
44814)]
44815#[cfg_attr(
44816 target_arch = "arm",
44817 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44818)]
44819pub fn vreinterpret_u16_s16(a: int16x4_t) -> uint16x4_t {
44820 unsafe { transmute(a) }
44821}
44822#[doc = "Vector reinterpret cast operation"]
44823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s16)"]
44824#[inline(always)]
44825#[cfg(target_endian = "big")]
44826#[target_feature(enable = "neon")]
44827#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44828#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44829#[cfg_attr(
44830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44831 assert_instr(nop)
44832)]
44833#[cfg_attr(
44834 not(target_arch = "arm"),
44835 stable(feature = "neon_intrinsics", since = "1.59.0")
44836)]
44837#[cfg_attr(
44838 target_arch = "arm",
44839 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44840)]
44841pub fn vreinterpret_u16_s16(a: int16x4_t) -> uint16x4_t {
44842 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44843 unsafe {
44844 let ret_val: uint16x4_t = transmute(a);
44845 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
44846 }
44847}
44848#[doc = "Vector reinterpret cast operation"]
44849#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s16)"]
44850#[inline(always)]
44851#[cfg(target_endian = "little")]
44852#[target_feature(enable = "neon")]
44853#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44854#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44855#[cfg_attr(
44856 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44857 assert_instr(nop)
44858)]
44859#[cfg_attr(
44860 not(target_arch = "arm"),
44861 stable(feature = "neon_intrinsics", since = "1.59.0")
44862)]
44863#[cfg_attr(
44864 target_arch = "arm",
44865 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44866)]
44867pub fn vreinterpret_u32_s16(a: int16x4_t) -> uint32x2_t {
44868 unsafe { transmute(a) }
44869}
44870#[doc = "Vector reinterpret cast operation"]
44871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s16)"]
44872#[inline(always)]
44873#[cfg(target_endian = "big")]
44874#[target_feature(enable = "neon")]
44875#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44876#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44877#[cfg_attr(
44878 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44879 assert_instr(nop)
44880)]
44881#[cfg_attr(
44882 not(target_arch = "arm"),
44883 stable(feature = "neon_intrinsics", since = "1.59.0")
44884)]
44885#[cfg_attr(
44886 target_arch = "arm",
44887 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44888)]
44889pub fn vreinterpret_u32_s16(a: int16x4_t) -> uint32x2_t {
44890 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44891 unsafe {
44892 let ret_val: uint32x2_t = transmute(a);
44893 simd_shuffle!(ret_val, ret_val, [1, 0])
44894 }
44895}
44896#[doc = "Vector reinterpret cast operation"]
44897#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s16)"]
44898#[inline(always)]
44899#[cfg(target_endian = "little")]
44900#[target_feature(enable = "neon")]
44901#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44902#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44903#[cfg_attr(
44904 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44905 assert_instr(nop)
44906)]
44907#[cfg_attr(
44908 not(target_arch = "arm"),
44909 stable(feature = "neon_intrinsics", since = "1.59.0")
44910)]
44911#[cfg_attr(
44912 target_arch = "arm",
44913 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44914)]
44915pub fn vreinterpret_u64_s16(a: int16x4_t) -> uint64x1_t {
44916 unsafe { transmute(a) }
44917}
44918#[doc = "Vector reinterpret cast operation"]
44919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s16)"]
44920#[inline(always)]
44921#[cfg(target_endian = "big")]
44922#[target_feature(enable = "neon")]
44923#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44924#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44925#[cfg_attr(
44926 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44927 assert_instr(nop)
44928)]
44929#[cfg_attr(
44930 not(target_arch = "arm"),
44931 stable(feature = "neon_intrinsics", since = "1.59.0")
44932)]
44933#[cfg_attr(
44934 target_arch = "arm",
44935 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44936)]
44937pub fn vreinterpret_u64_s16(a: int16x4_t) -> uint64x1_t {
44938 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44939 unsafe { transmute(a) }
44940}
44941#[doc = "Vector reinterpret cast operation"]
44942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s16)"]
44943#[inline(always)]
44944#[cfg(target_endian = "little")]
44945#[target_feature(enable = "neon")]
44946#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44947#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44948#[cfg_attr(
44949 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44950 assert_instr(nop)
44951)]
44952#[cfg_attr(
44953 not(target_arch = "arm"),
44954 stable(feature = "neon_intrinsics", since = "1.59.0")
44955)]
44956#[cfg_attr(
44957 target_arch = "arm",
44958 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44959)]
44960pub fn vreinterpret_p8_s16(a: int16x4_t) -> poly8x8_t {
44961 unsafe { transmute(a) }
44962}
44963#[doc = "Vector reinterpret cast operation"]
44964#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s16)"]
44965#[inline(always)]
44966#[cfg(target_endian = "big")]
44967#[target_feature(enable = "neon")]
44968#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44969#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44970#[cfg_attr(
44971 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44972 assert_instr(nop)
44973)]
44974#[cfg_attr(
44975 not(target_arch = "arm"),
44976 stable(feature = "neon_intrinsics", since = "1.59.0")
44977)]
44978#[cfg_attr(
44979 target_arch = "arm",
44980 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
44981)]
44982pub fn vreinterpret_p8_s16(a: int16x4_t) -> poly8x8_t {
44983 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
44984 unsafe {
44985 let ret_val: poly8x8_t = transmute(a);
44986 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
44987 }
44988}
44989#[doc = "Vector reinterpret cast operation"]
44990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s16)"]
44991#[inline(always)]
44992#[cfg(target_endian = "little")]
44993#[target_feature(enable = "neon")]
44994#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
44995#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
44996#[cfg_attr(
44997 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
44998 assert_instr(nop)
44999)]
45000#[cfg_attr(
45001 not(target_arch = "arm"),
45002 stable(feature = "neon_intrinsics", since = "1.59.0")
45003)]
45004#[cfg_attr(
45005 target_arch = "arm",
45006 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45007)]
45008pub fn vreinterpret_p16_s16(a: int16x4_t) -> poly16x4_t {
45009 unsafe { transmute(a) }
45010}
45011#[doc = "Vector reinterpret cast operation"]
45012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s16)"]
45013#[inline(always)]
45014#[cfg(target_endian = "big")]
45015#[target_feature(enable = "neon")]
45016#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45017#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45018#[cfg_attr(
45019 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45020 assert_instr(nop)
45021)]
45022#[cfg_attr(
45023 not(target_arch = "arm"),
45024 stable(feature = "neon_intrinsics", since = "1.59.0")
45025)]
45026#[cfg_attr(
45027 target_arch = "arm",
45028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45029)]
45030pub fn vreinterpret_p16_s16(a: int16x4_t) -> poly16x4_t {
45031 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
45032 unsafe {
45033 let ret_val: poly16x4_t = transmute(a);
45034 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45035 }
45036}
45037#[doc = "Vector reinterpret cast operation"]
45038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s16)"]
45039#[inline(always)]
45040#[cfg(target_endian = "little")]
45041#[target_feature(enable = "neon")]
45042#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45043#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45044#[cfg_attr(
45045 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45046 assert_instr(nop)
45047)]
45048#[cfg_attr(
45049 not(target_arch = "arm"),
45050 stable(feature = "neon_intrinsics", since = "1.59.0")
45051)]
45052#[cfg_attr(
45053 target_arch = "arm",
45054 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45055)]
45056pub fn vreinterpretq_f32_s16(a: int16x8_t) -> float32x4_t {
45057 unsafe { transmute(a) }
45058}
45059#[doc = "Vector reinterpret cast operation"]
45060#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s16)"]
45061#[inline(always)]
45062#[cfg(target_endian = "big")]
45063#[target_feature(enable = "neon")]
45064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45066#[cfg_attr(
45067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45068 assert_instr(nop)
45069)]
45070#[cfg_attr(
45071 not(target_arch = "arm"),
45072 stable(feature = "neon_intrinsics", since = "1.59.0")
45073)]
45074#[cfg_attr(
45075 target_arch = "arm",
45076 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45077)]
45078pub fn vreinterpretq_f32_s16(a: int16x8_t) -> float32x4_t {
45079 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45080 unsafe {
45081 let ret_val: float32x4_t = transmute(a);
45082 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45083 }
45084}
45085#[doc = "Vector reinterpret cast operation"]
45086#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s16)"]
45087#[inline(always)]
45088#[cfg(target_endian = "little")]
45089#[target_feature(enable = "neon")]
45090#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45091#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45092#[cfg_attr(
45093 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45094 assert_instr(nop)
45095)]
45096#[cfg_attr(
45097 not(target_arch = "arm"),
45098 stable(feature = "neon_intrinsics", since = "1.59.0")
45099)]
45100#[cfg_attr(
45101 target_arch = "arm",
45102 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45103)]
45104pub fn vreinterpretq_s8_s16(a: int16x8_t) -> int8x16_t {
45105 unsafe { transmute(a) }
45106}
45107#[doc = "Vector reinterpret cast operation"]
45108#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s16)"]
45109#[inline(always)]
45110#[cfg(target_endian = "big")]
45111#[target_feature(enable = "neon")]
45112#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45113#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45114#[cfg_attr(
45115 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45116 assert_instr(nop)
45117)]
45118#[cfg_attr(
45119 not(target_arch = "arm"),
45120 stable(feature = "neon_intrinsics", since = "1.59.0")
45121)]
45122#[cfg_attr(
45123 target_arch = "arm",
45124 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45125)]
45126pub fn vreinterpretq_s8_s16(a: int16x8_t) -> int8x16_t {
45127 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45128 unsafe {
45129 let ret_val: int8x16_t = transmute(a);
45130 simd_shuffle!(
45131 ret_val,
45132 ret_val,
45133 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
45134 )
45135 }
45136}
45137#[doc = "Vector reinterpret cast operation"]
45138#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s16)"]
45139#[inline(always)]
45140#[cfg(target_endian = "little")]
45141#[target_feature(enable = "neon")]
45142#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45143#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45144#[cfg_attr(
45145 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45146 assert_instr(nop)
45147)]
45148#[cfg_attr(
45149 not(target_arch = "arm"),
45150 stable(feature = "neon_intrinsics", since = "1.59.0")
45151)]
45152#[cfg_attr(
45153 target_arch = "arm",
45154 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45155)]
45156pub fn vreinterpretq_s32_s16(a: int16x8_t) -> int32x4_t {
45157 unsafe { transmute(a) }
45158}
45159#[doc = "Vector reinterpret cast operation"]
45160#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s16)"]
45161#[inline(always)]
45162#[cfg(target_endian = "big")]
45163#[target_feature(enable = "neon")]
45164#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45165#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45166#[cfg_attr(
45167 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45168 assert_instr(nop)
45169)]
45170#[cfg_attr(
45171 not(target_arch = "arm"),
45172 stable(feature = "neon_intrinsics", since = "1.59.0")
45173)]
45174#[cfg_attr(
45175 target_arch = "arm",
45176 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45177)]
45178pub fn vreinterpretq_s32_s16(a: int16x8_t) -> int32x4_t {
45179 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45180 unsafe {
45181 let ret_val: int32x4_t = transmute(a);
45182 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45183 }
45184}
45185#[doc = "Vector reinterpret cast operation"]
45186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s16)"]
45187#[inline(always)]
45188#[cfg(target_endian = "little")]
45189#[target_feature(enable = "neon")]
45190#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45191#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45192#[cfg_attr(
45193 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45194 assert_instr(nop)
45195)]
45196#[cfg_attr(
45197 not(target_arch = "arm"),
45198 stable(feature = "neon_intrinsics", since = "1.59.0")
45199)]
45200#[cfg_attr(
45201 target_arch = "arm",
45202 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45203)]
45204pub fn vreinterpretq_s64_s16(a: int16x8_t) -> int64x2_t {
45205 unsafe { transmute(a) }
45206}
45207#[doc = "Vector reinterpret cast operation"]
45208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s16)"]
45209#[inline(always)]
45210#[cfg(target_endian = "big")]
45211#[target_feature(enable = "neon")]
45212#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45213#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45214#[cfg_attr(
45215 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45216 assert_instr(nop)
45217)]
45218#[cfg_attr(
45219 not(target_arch = "arm"),
45220 stable(feature = "neon_intrinsics", since = "1.59.0")
45221)]
45222#[cfg_attr(
45223 target_arch = "arm",
45224 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45225)]
45226pub fn vreinterpretq_s64_s16(a: int16x8_t) -> int64x2_t {
45227 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45228 unsafe {
45229 let ret_val: int64x2_t = transmute(a);
45230 simd_shuffle!(ret_val, ret_val, [1, 0])
45231 }
45232}
45233#[doc = "Vector reinterpret cast operation"]
45234#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s16)"]
45235#[inline(always)]
45236#[cfg(target_endian = "little")]
45237#[target_feature(enable = "neon")]
45238#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45239#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45240#[cfg_attr(
45241 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45242 assert_instr(nop)
45243)]
45244#[cfg_attr(
45245 not(target_arch = "arm"),
45246 stable(feature = "neon_intrinsics", since = "1.59.0")
45247)]
45248#[cfg_attr(
45249 target_arch = "arm",
45250 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45251)]
45252pub fn vreinterpretq_u8_s16(a: int16x8_t) -> uint8x16_t {
45253 unsafe { transmute(a) }
45254}
45255#[doc = "Vector reinterpret cast operation"]
45256#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s16)"]
45257#[inline(always)]
45258#[cfg(target_endian = "big")]
45259#[target_feature(enable = "neon")]
45260#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45261#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45262#[cfg_attr(
45263 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45264 assert_instr(nop)
45265)]
45266#[cfg_attr(
45267 not(target_arch = "arm"),
45268 stable(feature = "neon_intrinsics", since = "1.59.0")
45269)]
45270#[cfg_attr(
45271 target_arch = "arm",
45272 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45273)]
45274pub fn vreinterpretq_u8_s16(a: int16x8_t) -> uint8x16_t {
45275 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45276 unsafe {
45277 let ret_val: uint8x16_t = transmute(a);
45278 simd_shuffle!(
45279 ret_val,
45280 ret_val,
45281 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
45282 )
45283 }
45284}
45285#[doc = "Vector reinterpret cast operation"]
45286#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s16)"]
45287#[inline(always)]
45288#[cfg(target_endian = "little")]
45289#[target_feature(enable = "neon")]
45290#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45291#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45292#[cfg_attr(
45293 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45294 assert_instr(nop)
45295)]
45296#[cfg_attr(
45297 not(target_arch = "arm"),
45298 stable(feature = "neon_intrinsics", since = "1.59.0")
45299)]
45300#[cfg_attr(
45301 target_arch = "arm",
45302 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45303)]
45304pub fn vreinterpretq_u16_s16(a: int16x8_t) -> uint16x8_t {
45305 unsafe { transmute(a) }
45306}
45307#[doc = "Vector reinterpret cast operation"]
45308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s16)"]
45309#[inline(always)]
45310#[cfg(target_endian = "big")]
45311#[target_feature(enable = "neon")]
45312#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45313#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45314#[cfg_attr(
45315 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45316 assert_instr(nop)
45317)]
45318#[cfg_attr(
45319 not(target_arch = "arm"),
45320 stable(feature = "neon_intrinsics", since = "1.59.0")
45321)]
45322#[cfg_attr(
45323 target_arch = "arm",
45324 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45325)]
45326pub fn vreinterpretq_u16_s16(a: int16x8_t) -> uint16x8_t {
45327 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45328 unsafe {
45329 let ret_val: uint16x8_t = transmute(a);
45330 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45331 }
45332}
45333#[doc = "Vector reinterpret cast operation"]
45334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s16)"]
45335#[inline(always)]
45336#[cfg(target_endian = "little")]
45337#[target_feature(enable = "neon")]
45338#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45339#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45340#[cfg_attr(
45341 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45342 assert_instr(nop)
45343)]
45344#[cfg_attr(
45345 not(target_arch = "arm"),
45346 stable(feature = "neon_intrinsics", since = "1.59.0")
45347)]
45348#[cfg_attr(
45349 target_arch = "arm",
45350 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45351)]
45352pub fn vreinterpretq_u32_s16(a: int16x8_t) -> uint32x4_t {
45353 unsafe { transmute(a) }
45354}
45355#[doc = "Vector reinterpret cast operation"]
45356#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s16)"]
45357#[inline(always)]
45358#[cfg(target_endian = "big")]
45359#[target_feature(enable = "neon")]
45360#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45361#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45362#[cfg_attr(
45363 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45364 assert_instr(nop)
45365)]
45366#[cfg_attr(
45367 not(target_arch = "arm"),
45368 stable(feature = "neon_intrinsics", since = "1.59.0")
45369)]
45370#[cfg_attr(
45371 target_arch = "arm",
45372 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45373)]
45374pub fn vreinterpretq_u32_s16(a: int16x8_t) -> uint32x4_t {
45375 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45376 unsafe {
45377 let ret_val: uint32x4_t = transmute(a);
45378 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45379 }
45380}
45381#[doc = "Vector reinterpret cast operation"]
45382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s16)"]
45383#[inline(always)]
45384#[cfg(target_endian = "little")]
45385#[target_feature(enable = "neon")]
45386#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45388#[cfg_attr(
45389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45390 assert_instr(nop)
45391)]
45392#[cfg_attr(
45393 not(target_arch = "arm"),
45394 stable(feature = "neon_intrinsics", since = "1.59.0")
45395)]
45396#[cfg_attr(
45397 target_arch = "arm",
45398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45399)]
45400pub fn vreinterpretq_u64_s16(a: int16x8_t) -> uint64x2_t {
45401 unsafe { transmute(a) }
45402}
45403#[doc = "Vector reinterpret cast operation"]
45404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s16)"]
45405#[inline(always)]
45406#[cfg(target_endian = "big")]
45407#[target_feature(enable = "neon")]
45408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45410#[cfg_attr(
45411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45412 assert_instr(nop)
45413)]
45414#[cfg_attr(
45415 not(target_arch = "arm"),
45416 stable(feature = "neon_intrinsics", since = "1.59.0")
45417)]
45418#[cfg_attr(
45419 target_arch = "arm",
45420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45421)]
45422pub fn vreinterpretq_u64_s16(a: int16x8_t) -> uint64x2_t {
45423 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45424 unsafe {
45425 let ret_val: uint64x2_t = transmute(a);
45426 simd_shuffle!(ret_val, ret_val, [1, 0])
45427 }
45428}
45429#[doc = "Vector reinterpret cast operation"]
45430#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s16)"]
45431#[inline(always)]
45432#[cfg(target_endian = "little")]
45433#[target_feature(enable = "neon")]
45434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45435#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45436#[cfg_attr(
45437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45438 assert_instr(nop)
45439)]
45440#[cfg_attr(
45441 not(target_arch = "arm"),
45442 stable(feature = "neon_intrinsics", since = "1.59.0")
45443)]
45444#[cfg_attr(
45445 target_arch = "arm",
45446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45447)]
45448pub fn vreinterpretq_p8_s16(a: int16x8_t) -> poly8x16_t {
45449 unsafe { transmute(a) }
45450}
45451#[doc = "Vector reinterpret cast operation"]
45452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s16)"]
45453#[inline(always)]
45454#[cfg(target_endian = "big")]
45455#[target_feature(enable = "neon")]
45456#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45457#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45458#[cfg_attr(
45459 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45460 assert_instr(nop)
45461)]
45462#[cfg_attr(
45463 not(target_arch = "arm"),
45464 stable(feature = "neon_intrinsics", since = "1.59.0")
45465)]
45466#[cfg_attr(
45467 target_arch = "arm",
45468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45469)]
45470pub fn vreinterpretq_p8_s16(a: int16x8_t) -> poly8x16_t {
45471 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45472 unsafe {
45473 let ret_val: poly8x16_t = transmute(a);
45474 simd_shuffle!(
45475 ret_val,
45476 ret_val,
45477 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
45478 )
45479 }
45480}
45481#[doc = "Vector reinterpret cast operation"]
45482#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s16)"]
45483#[inline(always)]
45484#[cfg(target_endian = "little")]
45485#[target_feature(enable = "neon")]
45486#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45487#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45488#[cfg_attr(
45489 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45490 assert_instr(nop)
45491)]
45492#[cfg_attr(
45493 not(target_arch = "arm"),
45494 stable(feature = "neon_intrinsics", since = "1.59.0")
45495)]
45496#[cfg_attr(
45497 target_arch = "arm",
45498 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45499)]
45500pub fn vreinterpretq_p16_s16(a: int16x8_t) -> poly16x8_t {
45501 unsafe { transmute(a) }
45502}
45503#[doc = "Vector reinterpret cast operation"]
45504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s16)"]
45505#[inline(always)]
45506#[cfg(target_endian = "big")]
45507#[target_feature(enable = "neon")]
45508#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45509#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45510#[cfg_attr(
45511 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45512 assert_instr(nop)
45513)]
45514#[cfg_attr(
45515 not(target_arch = "arm"),
45516 stable(feature = "neon_intrinsics", since = "1.59.0")
45517)]
45518#[cfg_attr(
45519 target_arch = "arm",
45520 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45521)]
45522pub fn vreinterpretq_p16_s16(a: int16x8_t) -> poly16x8_t {
45523 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
45524 unsafe {
45525 let ret_val: poly16x8_t = transmute(a);
45526 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45527 }
45528}
45529#[doc = "Vector reinterpret cast operation"]
45530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s32)"]
45531#[inline(always)]
45532#[cfg(target_endian = "little")]
45533#[target_feature(enable = "neon")]
45534#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45536#[cfg_attr(
45537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45538 assert_instr(nop)
45539)]
45540#[cfg_attr(
45541 not(target_arch = "arm"),
45542 stable(feature = "neon_intrinsics", since = "1.59.0")
45543)]
45544#[cfg_attr(
45545 target_arch = "arm",
45546 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45547)]
45548pub fn vreinterpret_f32_s32(a: int32x2_t) -> float32x2_t {
45549 unsafe { transmute(a) }
45550}
45551#[doc = "Vector reinterpret cast operation"]
45552#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s32)"]
45553#[inline(always)]
45554#[cfg(target_endian = "big")]
45555#[target_feature(enable = "neon")]
45556#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45557#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45558#[cfg_attr(
45559 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45560 assert_instr(nop)
45561)]
45562#[cfg_attr(
45563 not(target_arch = "arm"),
45564 stable(feature = "neon_intrinsics", since = "1.59.0")
45565)]
45566#[cfg_attr(
45567 target_arch = "arm",
45568 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45569)]
45570pub fn vreinterpret_f32_s32(a: int32x2_t) -> float32x2_t {
45571 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45572 unsafe {
45573 let ret_val: float32x2_t = transmute(a);
45574 simd_shuffle!(ret_val, ret_val, [1, 0])
45575 }
45576}
45577#[doc = "Vector reinterpret cast operation"]
45578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s32)"]
45579#[inline(always)]
45580#[cfg(target_endian = "little")]
45581#[target_feature(enable = "neon")]
45582#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45583#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45584#[cfg_attr(
45585 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45586 assert_instr(nop)
45587)]
45588#[cfg_attr(
45589 not(target_arch = "arm"),
45590 stable(feature = "neon_intrinsics", since = "1.59.0")
45591)]
45592#[cfg_attr(
45593 target_arch = "arm",
45594 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45595)]
45596pub fn vreinterpret_s8_s32(a: int32x2_t) -> int8x8_t {
45597 unsafe { transmute(a) }
45598}
45599#[doc = "Vector reinterpret cast operation"]
45600#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s32)"]
45601#[inline(always)]
45602#[cfg(target_endian = "big")]
45603#[target_feature(enable = "neon")]
45604#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45605#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45606#[cfg_attr(
45607 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45608 assert_instr(nop)
45609)]
45610#[cfg_attr(
45611 not(target_arch = "arm"),
45612 stable(feature = "neon_intrinsics", since = "1.59.0")
45613)]
45614#[cfg_attr(
45615 target_arch = "arm",
45616 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45617)]
45618pub fn vreinterpret_s8_s32(a: int32x2_t) -> int8x8_t {
45619 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45620 unsafe {
45621 let ret_val: int8x8_t = transmute(a);
45622 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45623 }
45624}
45625#[doc = "Vector reinterpret cast operation"]
45626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s32)"]
45627#[inline(always)]
45628#[cfg(target_endian = "little")]
45629#[target_feature(enable = "neon")]
45630#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45631#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45632#[cfg_attr(
45633 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45634 assert_instr(nop)
45635)]
45636#[cfg_attr(
45637 not(target_arch = "arm"),
45638 stable(feature = "neon_intrinsics", since = "1.59.0")
45639)]
45640#[cfg_attr(
45641 target_arch = "arm",
45642 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45643)]
45644pub fn vreinterpret_s16_s32(a: int32x2_t) -> int16x4_t {
45645 unsafe { transmute(a) }
45646}
45647#[doc = "Vector reinterpret cast operation"]
45648#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s32)"]
45649#[inline(always)]
45650#[cfg(target_endian = "big")]
45651#[target_feature(enable = "neon")]
45652#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45653#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45654#[cfg_attr(
45655 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45656 assert_instr(nop)
45657)]
45658#[cfg_attr(
45659 not(target_arch = "arm"),
45660 stable(feature = "neon_intrinsics", since = "1.59.0")
45661)]
45662#[cfg_attr(
45663 target_arch = "arm",
45664 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45665)]
45666pub fn vreinterpret_s16_s32(a: int32x2_t) -> int16x4_t {
45667 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45668 unsafe {
45669 let ret_val: int16x4_t = transmute(a);
45670 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45671 }
45672}
45673#[doc = "Vector reinterpret cast operation"]
45674#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s32)"]
45675#[inline(always)]
45676#[cfg(target_endian = "little")]
45677#[target_feature(enable = "neon")]
45678#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45679#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45680#[cfg_attr(
45681 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45682 assert_instr(nop)
45683)]
45684#[cfg_attr(
45685 not(target_arch = "arm"),
45686 stable(feature = "neon_intrinsics", since = "1.59.0")
45687)]
45688#[cfg_attr(
45689 target_arch = "arm",
45690 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45691)]
45692pub fn vreinterpret_s64_s32(a: int32x2_t) -> int64x1_t {
45693 unsafe { transmute(a) }
45694}
45695#[doc = "Vector reinterpret cast operation"]
45696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_s32)"]
45697#[inline(always)]
45698#[cfg(target_endian = "big")]
45699#[target_feature(enable = "neon")]
45700#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45701#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45702#[cfg_attr(
45703 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45704 assert_instr(nop)
45705)]
45706#[cfg_attr(
45707 not(target_arch = "arm"),
45708 stable(feature = "neon_intrinsics", since = "1.59.0")
45709)]
45710#[cfg_attr(
45711 target_arch = "arm",
45712 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45713)]
45714pub fn vreinterpret_s64_s32(a: int32x2_t) -> int64x1_t {
45715 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45716 unsafe { transmute(a) }
45717}
45718#[doc = "Vector reinterpret cast operation"]
45719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s32)"]
45720#[inline(always)]
45721#[cfg(target_endian = "little")]
45722#[target_feature(enable = "neon")]
45723#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45724#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45725#[cfg_attr(
45726 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45727 assert_instr(nop)
45728)]
45729#[cfg_attr(
45730 not(target_arch = "arm"),
45731 stable(feature = "neon_intrinsics", since = "1.59.0")
45732)]
45733#[cfg_attr(
45734 target_arch = "arm",
45735 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45736)]
45737pub fn vreinterpret_u8_s32(a: int32x2_t) -> uint8x8_t {
45738 unsafe { transmute(a) }
45739}
45740#[doc = "Vector reinterpret cast operation"]
45741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s32)"]
45742#[inline(always)]
45743#[cfg(target_endian = "big")]
45744#[target_feature(enable = "neon")]
45745#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45746#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45747#[cfg_attr(
45748 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45749 assert_instr(nop)
45750)]
45751#[cfg_attr(
45752 not(target_arch = "arm"),
45753 stable(feature = "neon_intrinsics", since = "1.59.0")
45754)]
45755#[cfg_attr(
45756 target_arch = "arm",
45757 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45758)]
45759pub fn vreinterpret_u8_s32(a: int32x2_t) -> uint8x8_t {
45760 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45761 unsafe {
45762 let ret_val: uint8x8_t = transmute(a);
45763 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45764 }
45765}
45766#[doc = "Vector reinterpret cast operation"]
45767#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s32)"]
45768#[inline(always)]
45769#[cfg(target_endian = "little")]
45770#[target_feature(enable = "neon")]
45771#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45772#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45773#[cfg_attr(
45774 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45775 assert_instr(nop)
45776)]
45777#[cfg_attr(
45778 not(target_arch = "arm"),
45779 stable(feature = "neon_intrinsics", since = "1.59.0")
45780)]
45781#[cfg_attr(
45782 target_arch = "arm",
45783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45784)]
45785pub fn vreinterpret_u16_s32(a: int32x2_t) -> uint16x4_t {
45786 unsafe { transmute(a) }
45787}
45788#[doc = "Vector reinterpret cast operation"]
45789#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s32)"]
45790#[inline(always)]
45791#[cfg(target_endian = "big")]
45792#[target_feature(enable = "neon")]
45793#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45794#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45795#[cfg_attr(
45796 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45797 assert_instr(nop)
45798)]
45799#[cfg_attr(
45800 not(target_arch = "arm"),
45801 stable(feature = "neon_intrinsics", since = "1.59.0")
45802)]
45803#[cfg_attr(
45804 target_arch = "arm",
45805 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45806)]
45807pub fn vreinterpret_u16_s32(a: int32x2_t) -> uint16x4_t {
45808 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45809 unsafe {
45810 let ret_val: uint16x4_t = transmute(a);
45811 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
45812 }
45813}
45814#[doc = "Vector reinterpret cast operation"]
45815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s32)"]
45816#[inline(always)]
45817#[cfg(target_endian = "little")]
45818#[target_feature(enable = "neon")]
45819#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45820#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45821#[cfg_attr(
45822 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45823 assert_instr(nop)
45824)]
45825#[cfg_attr(
45826 not(target_arch = "arm"),
45827 stable(feature = "neon_intrinsics", since = "1.59.0")
45828)]
45829#[cfg_attr(
45830 target_arch = "arm",
45831 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45832)]
45833pub fn vreinterpret_u32_s32(a: int32x2_t) -> uint32x2_t {
45834 unsafe { transmute(a) }
45835}
45836#[doc = "Vector reinterpret cast operation"]
45837#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s32)"]
45838#[inline(always)]
45839#[cfg(target_endian = "big")]
45840#[target_feature(enable = "neon")]
45841#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45842#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45843#[cfg_attr(
45844 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45845 assert_instr(nop)
45846)]
45847#[cfg_attr(
45848 not(target_arch = "arm"),
45849 stable(feature = "neon_intrinsics", since = "1.59.0")
45850)]
45851#[cfg_attr(
45852 target_arch = "arm",
45853 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45854)]
45855pub fn vreinterpret_u32_s32(a: int32x2_t) -> uint32x2_t {
45856 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45857 unsafe {
45858 let ret_val: uint32x2_t = transmute(a);
45859 simd_shuffle!(ret_val, ret_val, [1, 0])
45860 }
45861}
45862#[doc = "Vector reinterpret cast operation"]
45863#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s32)"]
45864#[inline(always)]
45865#[cfg(target_endian = "little")]
45866#[target_feature(enable = "neon")]
45867#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45868#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45869#[cfg_attr(
45870 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45871 assert_instr(nop)
45872)]
45873#[cfg_attr(
45874 not(target_arch = "arm"),
45875 stable(feature = "neon_intrinsics", since = "1.59.0")
45876)]
45877#[cfg_attr(
45878 target_arch = "arm",
45879 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45880)]
45881pub fn vreinterpret_u64_s32(a: int32x2_t) -> uint64x1_t {
45882 unsafe { transmute(a) }
45883}
45884#[doc = "Vector reinterpret cast operation"]
45885#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s32)"]
45886#[inline(always)]
45887#[cfg(target_endian = "big")]
45888#[target_feature(enable = "neon")]
45889#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45890#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45891#[cfg_attr(
45892 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45893 assert_instr(nop)
45894)]
45895#[cfg_attr(
45896 not(target_arch = "arm"),
45897 stable(feature = "neon_intrinsics", since = "1.59.0")
45898)]
45899#[cfg_attr(
45900 target_arch = "arm",
45901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45902)]
45903pub fn vreinterpret_u64_s32(a: int32x2_t) -> uint64x1_t {
45904 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45905 unsafe { transmute(a) }
45906}
45907#[doc = "Vector reinterpret cast operation"]
45908#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s32)"]
45909#[inline(always)]
45910#[cfg(target_endian = "little")]
45911#[target_feature(enable = "neon")]
45912#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45913#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45914#[cfg_attr(
45915 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45916 assert_instr(nop)
45917)]
45918#[cfg_attr(
45919 not(target_arch = "arm"),
45920 stable(feature = "neon_intrinsics", since = "1.59.0")
45921)]
45922#[cfg_attr(
45923 target_arch = "arm",
45924 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45925)]
45926pub fn vreinterpret_p8_s32(a: int32x2_t) -> poly8x8_t {
45927 unsafe { transmute(a) }
45928}
45929#[doc = "Vector reinterpret cast operation"]
45930#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s32)"]
45931#[inline(always)]
45932#[cfg(target_endian = "big")]
45933#[target_feature(enable = "neon")]
45934#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45935#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45936#[cfg_attr(
45937 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45938 assert_instr(nop)
45939)]
45940#[cfg_attr(
45941 not(target_arch = "arm"),
45942 stable(feature = "neon_intrinsics", since = "1.59.0")
45943)]
45944#[cfg_attr(
45945 target_arch = "arm",
45946 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45947)]
45948pub fn vreinterpret_p8_s32(a: int32x2_t) -> poly8x8_t {
45949 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45950 unsafe {
45951 let ret_val: poly8x8_t = transmute(a);
45952 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
45953 }
45954}
45955#[doc = "Vector reinterpret cast operation"]
45956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s32)"]
45957#[inline(always)]
45958#[cfg(target_endian = "little")]
45959#[target_feature(enable = "neon")]
45960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45961#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45962#[cfg_attr(
45963 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45964 assert_instr(nop)
45965)]
45966#[cfg_attr(
45967 not(target_arch = "arm"),
45968 stable(feature = "neon_intrinsics", since = "1.59.0")
45969)]
45970#[cfg_attr(
45971 target_arch = "arm",
45972 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45973)]
45974pub fn vreinterpret_p16_s32(a: int32x2_t) -> poly16x4_t {
45975 unsafe { transmute(a) }
45976}
45977#[doc = "Vector reinterpret cast operation"]
45978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s32)"]
45979#[inline(always)]
45980#[cfg(target_endian = "big")]
45981#[target_feature(enable = "neon")]
45982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
45983#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
45984#[cfg_attr(
45985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
45986 assert_instr(nop)
45987)]
45988#[cfg_attr(
45989 not(target_arch = "arm"),
45990 stable(feature = "neon_intrinsics", since = "1.59.0")
45991)]
45992#[cfg_attr(
45993 target_arch = "arm",
45994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
45995)]
45996pub fn vreinterpret_p16_s32(a: int32x2_t) -> poly16x4_t {
45997 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
45998 unsafe {
45999 let ret_val: poly16x4_t = transmute(a);
46000 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46001 }
46002}
46003#[doc = "Vector reinterpret cast operation"]
46004#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s32)"]
46005#[inline(always)]
46006#[cfg(target_endian = "little")]
46007#[target_feature(enable = "neon")]
46008#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46009#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46010#[cfg_attr(
46011 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46012 assert_instr(nop)
46013)]
46014#[cfg_attr(
46015 not(target_arch = "arm"),
46016 stable(feature = "neon_intrinsics", since = "1.59.0")
46017)]
46018#[cfg_attr(
46019 target_arch = "arm",
46020 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46021)]
46022pub fn vreinterpretq_f32_s32(a: int32x4_t) -> float32x4_t {
46023 unsafe { transmute(a) }
46024}
46025#[doc = "Vector reinterpret cast operation"]
46026#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s32)"]
46027#[inline(always)]
46028#[cfg(target_endian = "big")]
46029#[target_feature(enable = "neon")]
46030#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46031#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46032#[cfg_attr(
46033 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46034 assert_instr(nop)
46035)]
46036#[cfg_attr(
46037 not(target_arch = "arm"),
46038 stable(feature = "neon_intrinsics", since = "1.59.0")
46039)]
46040#[cfg_attr(
46041 target_arch = "arm",
46042 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46043)]
46044pub fn vreinterpretq_f32_s32(a: int32x4_t) -> float32x4_t {
46045 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46046 unsafe {
46047 let ret_val: float32x4_t = transmute(a);
46048 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46049 }
46050}
46051#[doc = "Vector reinterpret cast operation"]
46052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s32)"]
46053#[inline(always)]
46054#[cfg(target_endian = "little")]
46055#[target_feature(enable = "neon")]
46056#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46057#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46058#[cfg_attr(
46059 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46060 assert_instr(nop)
46061)]
46062#[cfg_attr(
46063 not(target_arch = "arm"),
46064 stable(feature = "neon_intrinsics", since = "1.59.0")
46065)]
46066#[cfg_attr(
46067 target_arch = "arm",
46068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46069)]
46070pub fn vreinterpretq_s8_s32(a: int32x4_t) -> int8x16_t {
46071 unsafe { transmute(a) }
46072}
46073#[doc = "Vector reinterpret cast operation"]
46074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s32)"]
46075#[inline(always)]
46076#[cfg(target_endian = "big")]
46077#[target_feature(enable = "neon")]
46078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46079#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46080#[cfg_attr(
46081 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46082 assert_instr(nop)
46083)]
46084#[cfg_attr(
46085 not(target_arch = "arm"),
46086 stable(feature = "neon_intrinsics", since = "1.59.0")
46087)]
46088#[cfg_attr(
46089 target_arch = "arm",
46090 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46091)]
46092pub fn vreinterpretq_s8_s32(a: int32x4_t) -> int8x16_t {
46093 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46094 unsafe {
46095 let ret_val: int8x16_t = transmute(a);
46096 simd_shuffle!(
46097 ret_val,
46098 ret_val,
46099 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
46100 )
46101 }
46102}
46103#[doc = "Vector reinterpret cast operation"]
46104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s32)"]
46105#[inline(always)]
46106#[cfg(target_endian = "little")]
46107#[target_feature(enable = "neon")]
46108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46109#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46110#[cfg_attr(
46111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46112 assert_instr(nop)
46113)]
46114#[cfg_attr(
46115 not(target_arch = "arm"),
46116 stable(feature = "neon_intrinsics", since = "1.59.0")
46117)]
46118#[cfg_attr(
46119 target_arch = "arm",
46120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46121)]
46122pub fn vreinterpretq_s16_s32(a: int32x4_t) -> int16x8_t {
46123 unsafe { transmute(a) }
46124}
46125#[doc = "Vector reinterpret cast operation"]
46126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s32)"]
46127#[inline(always)]
46128#[cfg(target_endian = "big")]
46129#[target_feature(enable = "neon")]
46130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46132#[cfg_attr(
46133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46134 assert_instr(nop)
46135)]
46136#[cfg_attr(
46137 not(target_arch = "arm"),
46138 stable(feature = "neon_intrinsics", since = "1.59.0")
46139)]
46140#[cfg_attr(
46141 target_arch = "arm",
46142 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46143)]
46144pub fn vreinterpretq_s16_s32(a: int32x4_t) -> int16x8_t {
46145 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46146 unsafe {
46147 let ret_val: int16x8_t = transmute(a);
46148 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46149 }
46150}
46151#[doc = "Vector reinterpret cast operation"]
46152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s32)"]
46153#[inline(always)]
46154#[cfg(target_endian = "little")]
46155#[target_feature(enable = "neon")]
46156#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46157#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46158#[cfg_attr(
46159 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46160 assert_instr(nop)
46161)]
46162#[cfg_attr(
46163 not(target_arch = "arm"),
46164 stable(feature = "neon_intrinsics", since = "1.59.0")
46165)]
46166#[cfg_attr(
46167 target_arch = "arm",
46168 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46169)]
46170pub fn vreinterpretq_s64_s32(a: int32x4_t) -> int64x2_t {
46171 unsafe { transmute(a) }
46172}
46173#[doc = "Vector reinterpret cast operation"]
46174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_s32)"]
46175#[inline(always)]
46176#[cfg(target_endian = "big")]
46177#[target_feature(enable = "neon")]
46178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46179#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46180#[cfg_attr(
46181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46182 assert_instr(nop)
46183)]
46184#[cfg_attr(
46185 not(target_arch = "arm"),
46186 stable(feature = "neon_intrinsics", since = "1.59.0")
46187)]
46188#[cfg_attr(
46189 target_arch = "arm",
46190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46191)]
46192pub fn vreinterpretq_s64_s32(a: int32x4_t) -> int64x2_t {
46193 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46194 unsafe {
46195 let ret_val: int64x2_t = transmute(a);
46196 simd_shuffle!(ret_val, ret_val, [1, 0])
46197 }
46198}
46199#[doc = "Vector reinterpret cast operation"]
46200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s32)"]
46201#[inline(always)]
46202#[cfg(target_endian = "little")]
46203#[target_feature(enable = "neon")]
46204#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46205#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46206#[cfg_attr(
46207 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46208 assert_instr(nop)
46209)]
46210#[cfg_attr(
46211 not(target_arch = "arm"),
46212 stable(feature = "neon_intrinsics", since = "1.59.0")
46213)]
46214#[cfg_attr(
46215 target_arch = "arm",
46216 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46217)]
46218pub fn vreinterpretq_u8_s32(a: int32x4_t) -> uint8x16_t {
46219 unsafe { transmute(a) }
46220}
46221#[doc = "Vector reinterpret cast operation"]
46222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s32)"]
46223#[inline(always)]
46224#[cfg(target_endian = "big")]
46225#[target_feature(enable = "neon")]
46226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46228#[cfg_attr(
46229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46230 assert_instr(nop)
46231)]
46232#[cfg_attr(
46233 not(target_arch = "arm"),
46234 stable(feature = "neon_intrinsics", since = "1.59.0")
46235)]
46236#[cfg_attr(
46237 target_arch = "arm",
46238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46239)]
46240pub fn vreinterpretq_u8_s32(a: int32x4_t) -> uint8x16_t {
46241 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46242 unsafe {
46243 let ret_val: uint8x16_t = transmute(a);
46244 simd_shuffle!(
46245 ret_val,
46246 ret_val,
46247 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
46248 )
46249 }
46250}
46251#[doc = "Vector reinterpret cast operation"]
46252#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s32)"]
46253#[inline(always)]
46254#[cfg(target_endian = "little")]
46255#[target_feature(enable = "neon")]
46256#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46257#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46258#[cfg_attr(
46259 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46260 assert_instr(nop)
46261)]
46262#[cfg_attr(
46263 not(target_arch = "arm"),
46264 stable(feature = "neon_intrinsics", since = "1.59.0")
46265)]
46266#[cfg_attr(
46267 target_arch = "arm",
46268 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46269)]
46270pub fn vreinterpretq_u16_s32(a: int32x4_t) -> uint16x8_t {
46271 unsafe { transmute(a) }
46272}
46273#[doc = "Vector reinterpret cast operation"]
46274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s32)"]
46275#[inline(always)]
46276#[cfg(target_endian = "big")]
46277#[target_feature(enable = "neon")]
46278#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46279#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46280#[cfg_attr(
46281 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46282 assert_instr(nop)
46283)]
46284#[cfg_attr(
46285 not(target_arch = "arm"),
46286 stable(feature = "neon_intrinsics", since = "1.59.0")
46287)]
46288#[cfg_attr(
46289 target_arch = "arm",
46290 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46291)]
46292pub fn vreinterpretq_u16_s32(a: int32x4_t) -> uint16x8_t {
46293 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46294 unsafe {
46295 let ret_val: uint16x8_t = transmute(a);
46296 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46297 }
46298}
46299#[doc = "Vector reinterpret cast operation"]
46300#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s32)"]
46301#[inline(always)]
46302#[cfg(target_endian = "little")]
46303#[target_feature(enable = "neon")]
46304#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46305#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46306#[cfg_attr(
46307 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46308 assert_instr(nop)
46309)]
46310#[cfg_attr(
46311 not(target_arch = "arm"),
46312 stable(feature = "neon_intrinsics", since = "1.59.0")
46313)]
46314#[cfg_attr(
46315 target_arch = "arm",
46316 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46317)]
46318pub fn vreinterpretq_u32_s32(a: int32x4_t) -> uint32x4_t {
46319 unsafe { transmute(a) }
46320}
46321#[doc = "Vector reinterpret cast operation"]
46322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s32)"]
46323#[inline(always)]
46324#[cfg(target_endian = "big")]
46325#[target_feature(enable = "neon")]
46326#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46327#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46328#[cfg_attr(
46329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46330 assert_instr(nop)
46331)]
46332#[cfg_attr(
46333 not(target_arch = "arm"),
46334 stable(feature = "neon_intrinsics", since = "1.59.0")
46335)]
46336#[cfg_attr(
46337 target_arch = "arm",
46338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46339)]
46340pub fn vreinterpretq_u32_s32(a: int32x4_t) -> uint32x4_t {
46341 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46342 unsafe {
46343 let ret_val: uint32x4_t = transmute(a);
46344 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46345 }
46346}
46347#[doc = "Vector reinterpret cast operation"]
46348#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s32)"]
46349#[inline(always)]
46350#[cfg(target_endian = "little")]
46351#[target_feature(enable = "neon")]
46352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46354#[cfg_attr(
46355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46356 assert_instr(nop)
46357)]
46358#[cfg_attr(
46359 not(target_arch = "arm"),
46360 stable(feature = "neon_intrinsics", since = "1.59.0")
46361)]
46362#[cfg_attr(
46363 target_arch = "arm",
46364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46365)]
46366pub fn vreinterpretq_u64_s32(a: int32x4_t) -> uint64x2_t {
46367 unsafe { transmute(a) }
46368}
46369#[doc = "Vector reinterpret cast operation"]
46370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s32)"]
46371#[inline(always)]
46372#[cfg(target_endian = "big")]
46373#[target_feature(enable = "neon")]
46374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46376#[cfg_attr(
46377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46378 assert_instr(nop)
46379)]
46380#[cfg_attr(
46381 not(target_arch = "arm"),
46382 stable(feature = "neon_intrinsics", since = "1.59.0")
46383)]
46384#[cfg_attr(
46385 target_arch = "arm",
46386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46387)]
46388pub fn vreinterpretq_u64_s32(a: int32x4_t) -> uint64x2_t {
46389 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46390 unsafe {
46391 let ret_val: uint64x2_t = transmute(a);
46392 simd_shuffle!(ret_val, ret_val, [1, 0])
46393 }
46394}
46395#[doc = "Vector reinterpret cast operation"]
46396#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s32)"]
46397#[inline(always)]
46398#[cfg(target_endian = "little")]
46399#[target_feature(enable = "neon")]
46400#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46401#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46402#[cfg_attr(
46403 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46404 assert_instr(nop)
46405)]
46406#[cfg_attr(
46407 not(target_arch = "arm"),
46408 stable(feature = "neon_intrinsics", since = "1.59.0")
46409)]
46410#[cfg_attr(
46411 target_arch = "arm",
46412 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46413)]
46414pub fn vreinterpretq_p8_s32(a: int32x4_t) -> poly8x16_t {
46415 unsafe { transmute(a) }
46416}
46417#[doc = "Vector reinterpret cast operation"]
46418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s32)"]
46419#[inline(always)]
46420#[cfg(target_endian = "big")]
46421#[target_feature(enable = "neon")]
46422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46424#[cfg_attr(
46425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46426 assert_instr(nop)
46427)]
46428#[cfg_attr(
46429 not(target_arch = "arm"),
46430 stable(feature = "neon_intrinsics", since = "1.59.0")
46431)]
46432#[cfg_attr(
46433 target_arch = "arm",
46434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46435)]
46436pub fn vreinterpretq_p8_s32(a: int32x4_t) -> poly8x16_t {
46437 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46438 unsafe {
46439 let ret_val: poly8x16_t = transmute(a);
46440 simd_shuffle!(
46441 ret_val,
46442 ret_val,
46443 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
46444 )
46445 }
46446}
46447#[doc = "Vector reinterpret cast operation"]
46448#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s32)"]
46449#[inline(always)]
46450#[cfg(target_endian = "little")]
46451#[target_feature(enable = "neon")]
46452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46453#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46454#[cfg_attr(
46455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46456 assert_instr(nop)
46457)]
46458#[cfg_attr(
46459 not(target_arch = "arm"),
46460 stable(feature = "neon_intrinsics", since = "1.59.0")
46461)]
46462#[cfg_attr(
46463 target_arch = "arm",
46464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46465)]
46466pub fn vreinterpretq_p16_s32(a: int32x4_t) -> poly16x8_t {
46467 unsafe { transmute(a) }
46468}
46469#[doc = "Vector reinterpret cast operation"]
46470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s32)"]
46471#[inline(always)]
46472#[cfg(target_endian = "big")]
46473#[target_feature(enable = "neon")]
46474#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46475#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46476#[cfg_attr(
46477 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46478 assert_instr(nop)
46479)]
46480#[cfg_attr(
46481 not(target_arch = "arm"),
46482 stable(feature = "neon_intrinsics", since = "1.59.0")
46483)]
46484#[cfg_attr(
46485 target_arch = "arm",
46486 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46487)]
46488pub fn vreinterpretq_p16_s32(a: int32x4_t) -> poly16x8_t {
46489 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
46490 unsafe {
46491 let ret_val: poly16x8_t = transmute(a);
46492 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46493 }
46494}
46495#[doc = "Vector reinterpret cast operation"]
46496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s64)"]
46497#[inline(always)]
46498#[cfg(target_endian = "little")]
46499#[target_feature(enable = "neon")]
46500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46501#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46502#[cfg_attr(
46503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46504 assert_instr(nop)
46505)]
46506#[cfg_attr(
46507 not(target_arch = "arm"),
46508 stable(feature = "neon_intrinsics", since = "1.59.0")
46509)]
46510#[cfg_attr(
46511 target_arch = "arm",
46512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46513)]
46514pub fn vreinterpret_f32_s64(a: int64x1_t) -> float32x2_t {
46515 unsafe { transmute(a) }
46516}
46517#[doc = "Vector reinterpret cast operation"]
46518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_s64)"]
46519#[inline(always)]
46520#[cfg(target_endian = "big")]
46521#[target_feature(enable = "neon")]
46522#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46523#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46524#[cfg_attr(
46525 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46526 assert_instr(nop)
46527)]
46528#[cfg_attr(
46529 not(target_arch = "arm"),
46530 stable(feature = "neon_intrinsics", since = "1.59.0")
46531)]
46532#[cfg_attr(
46533 target_arch = "arm",
46534 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46535)]
46536pub fn vreinterpret_f32_s64(a: int64x1_t) -> float32x2_t {
46537 unsafe {
46538 let ret_val: float32x2_t = transmute(a);
46539 simd_shuffle!(ret_val, ret_val, [1, 0])
46540 }
46541}
46542#[doc = "Vector reinterpret cast operation"]
46543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s64)"]
46544#[inline(always)]
46545#[cfg(target_endian = "little")]
46546#[target_feature(enable = "neon")]
46547#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46548#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46549#[cfg_attr(
46550 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46551 assert_instr(nop)
46552)]
46553#[cfg_attr(
46554 not(target_arch = "arm"),
46555 stable(feature = "neon_intrinsics", since = "1.59.0")
46556)]
46557#[cfg_attr(
46558 target_arch = "arm",
46559 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46560)]
46561pub fn vreinterpret_s8_s64(a: int64x1_t) -> int8x8_t {
46562 unsafe { transmute(a) }
46563}
46564#[doc = "Vector reinterpret cast operation"]
46565#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_s64)"]
46566#[inline(always)]
46567#[cfg(target_endian = "big")]
46568#[target_feature(enable = "neon")]
46569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46570#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46571#[cfg_attr(
46572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46573 assert_instr(nop)
46574)]
46575#[cfg_attr(
46576 not(target_arch = "arm"),
46577 stable(feature = "neon_intrinsics", since = "1.59.0")
46578)]
46579#[cfg_attr(
46580 target_arch = "arm",
46581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46582)]
46583pub fn vreinterpret_s8_s64(a: int64x1_t) -> int8x8_t {
46584 unsafe {
46585 let ret_val: int8x8_t = transmute(a);
46586 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46587 }
46588}
46589#[doc = "Vector reinterpret cast operation"]
46590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s64)"]
46591#[inline(always)]
46592#[cfg(target_endian = "little")]
46593#[target_feature(enable = "neon")]
46594#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46595#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46596#[cfg_attr(
46597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46598 assert_instr(nop)
46599)]
46600#[cfg_attr(
46601 not(target_arch = "arm"),
46602 stable(feature = "neon_intrinsics", since = "1.59.0")
46603)]
46604#[cfg_attr(
46605 target_arch = "arm",
46606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46607)]
46608pub fn vreinterpret_s16_s64(a: int64x1_t) -> int16x4_t {
46609 unsafe { transmute(a) }
46610}
46611#[doc = "Vector reinterpret cast operation"]
46612#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_s64)"]
46613#[inline(always)]
46614#[cfg(target_endian = "big")]
46615#[target_feature(enable = "neon")]
46616#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46617#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46618#[cfg_attr(
46619 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46620 assert_instr(nop)
46621)]
46622#[cfg_attr(
46623 not(target_arch = "arm"),
46624 stable(feature = "neon_intrinsics", since = "1.59.0")
46625)]
46626#[cfg_attr(
46627 target_arch = "arm",
46628 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46629)]
46630pub fn vreinterpret_s16_s64(a: int64x1_t) -> int16x4_t {
46631 unsafe {
46632 let ret_val: int16x4_t = transmute(a);
46633 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46634 }
46635}
46636#[doc = "Vector reinterpret cast operation"]
46637#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s64)"]
46638#[inline(always)]
46639#[cfg(target_endian = "little")]
46640#[target_feature(enable = "neon")]
46641#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46642#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46643#[cfg_attr(
46644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46645 assert_instr(nop)
46646)]
46647#[cfg_attr(
46648 not(target_arch = "arm"),
46649 stable(feature = "neon_intrinsics", since = "1.59.0")
46650)]
46651#[cfg_attr(
46652 target_arch = "arm",
46653 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46654)]
46655pub fn vreinterpret_s32_s64(a: int64x1_t) -> int32x2_t {
46656 unsafe { transmute(a) }
46657}
46658#[doc = "Vector reinterpret cast operation"]
46659#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_s64)"]
46660#[inline(always)]
46661#[cfg(target_endian = "big")]
46662#[target_feature(enable = "neon")]
46663#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46664#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46665#[cfg_attr(
46666 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46667 assert_instr(nop)
46668)]
46669#[cfg_attr(
46670 not(target_arch = "arm"),
46671 stable(feature = "neon_intrinsics", since = "1.59.0")
46672)]
46673#[cfg_attr(
46674 target_arch = "arm",
46675 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46676)]
46677pub fn vreinterpret_s32_s64(a: int64x1_t) -> int32x2_t {
46678 unsafe {
46679 let ret_val: int32x2_t = transmute(a);
46680 simd_shuffle!(ret_val, ret_val, [1, 0])
46681 }
46682}
46683#[doc = "Vector reinterpret cast operation"]
46684#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s64)"]
46685#[inline(always)]
46686#[cfg(target_endian = "little")]
46687#[target_feature(enable = "neon")]
46688#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46689#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46690#[cfg_attr(
46691 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46692 assert_instr(nop)
46693)]
46694#[cfg_attr(
46695 not(target_arch = "arm"),
46696 stable(feature = "neon_intrinsics", since = "1.59.0")
46697)]
46698#[cfg_attr(
46699 target_arch = "arm",
46700 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46701)]
46702pub fn vreinterpret_u8_s64(a: int64x1_t) -> uint8x8_t {
46703 unsafe { transmute(a) }
46704}
46705#[doc = "Vector reinterpret cast operation"]
46706#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_s64)"]
46707#[inline(always)]
46708#[cfg(target_endian = "big")]
46709#[target_feature(enable = "neon")]
46710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46711#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46712#[cfg_attr(
46713 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46714 assert_instr(nop)
46715)]
46716#[cfg_attr(
46717 not(target_arch = "arm"),
46718 stable(feature = "neon_intrinsics", since = "1.59.0")
46719)]
46720#[cfg_attr(
46721 target_arch = "arm",
46722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46723)]
46724pub fn vreinterpret_u8_s64(a: int64x1_t) -> uint8x8_t {
46725 unsafe {
46726 let ret_val: uint8x8_t = transmute(a);
46727 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46728 }
46729}
46730#[doc = "Vector reinterpret cast operation"]
46731#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s64)"]
46732#[inline(always)]
46733#[cfg(target_endian = "little")]
46734#[target_feature(enable = "neon")]
46735#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46736#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46737#[cfg_attr(
46738 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46739 assert_instr(nop)
46740)]
46741#[cfg_attr(
46742 not(target_arch = "arm"),
46743 stable(feature = "neon_intrinsics", since = "1.59.0")
46744)]
46745#[cfg_attr(
46746 target_arch = "arm",
46747 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46748)]
46749pub fn vreinterpret_u16_s64(a: int64x1_t) -> uint16x4_t {
46750 unsafe { transmute(a) }
46751}
46752#[doc = "Vector reinterpret cast operation"]
46753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_s64)"]
46754#[inline(always)]
46755#[cfg(target_endian = "big")]
46756#[target_feature(enable = "neon")]
46757#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46758#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46759#[cfg_attr(
46760 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46761 assert_instr(nop)
46762)]
46763#[cfg_attr(
46764 not(target_arch = "arm"),
46765 stable(feature = "neon_intrinsics", since = "1.59.0")
46766)]
46767#[cfg_attr(
46768 target_arch = "arm",
46769 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46770)]
46771pub fn vreinterpret_u16_s64(a: int64x1_t) -> uint16x4_t {
46772 unsafe {
46773 let ret_val: uint16x4_t = transmute(a);
46774 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46775 }
46776}
46777#[doc = "Vector reinterpret cast operation"]
46778#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s64)"]
46779#[inline(always)]
46780#[cfg(target_endian = "little")]
46781#[target_feature(enable = "neon")]
46782#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46783#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46784#[cfg_attr(
46785 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46786 assert_instr(nop)
46787)]
46788#[cfg_attr(
46789 not(target_arch = "arm"),
46790 stable(feature = "neon_intrinsics", since = "1.59.0")
46791)]
46792#[cfg_attr(
46793 target_arch = "arm",
46794 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46795)]
46796pub fn vreinterpret_u32_s64(a: int64x1_t) -> uint32x2_t {
46797 unsafe { transmute(a) }
46798}
46799#[doc = "Vector reinterpret cast operation"]
46800#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_s64)"]
46801#[inline(always)]
46802#[cfg(target_endian = "big")]
46803#[target_feature(enable = "neon")]
46804#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46805#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46806#[cfg_attr(
46807 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46808 assert_instr(nop)
46809)]
46810#[cfg_attr(
46811 not(target_arch = "arm"),
46812 stable(feature = "neon_intrinsics", since = "1.59.0")
46813)]
46814#[cfg_attr(
46815 target_arch = "arm",
46816 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46817)]
46818pub fn vreinterpret_u32_s64(a: int64x1_t) -> uint32x2_t {
46819 unsafe {
46820 let ret_val: uint32x2_t = transmute(a);
46821 simd_shuffle!(ret_val, ret_val, [1, 0])
46822 }
46823}
46824#[doc = "Vector reinterpret cast operation"]
46825#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_s64)"]
46826#[inline(always)]
46827#[target_feature(enable = "neon")]
46828#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46829#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46830#[cfg_attr(
46831 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46832 assert_instr(nop)
46833)]
46834#[cfg_attr(
46835 not(target_arch = "arm"),
46836 stable(feature = "neon_intrinsics", since = "1.59.0")
46837)]
46838#[cfg_attr(
46839 target_arch = "arm",
46840 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46841)]
46842pub fn vreinterpret_u64_s64(a: int64x1_t) -> uint64x1_t {
46843 unsafe { transmute(a) }
46844}
46845#[doc = "Vector reinterpret cast operation"]
46846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s64)"]
46847#[inline(always)]
46848#[cfg(target_endian = "little")]
46849#[target_feature(enable = "neon")]
46850#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46851#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46852#[cfg_attr(
46853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46854 assert_instr(nop)
46855)]
46856#[cfg_attr(
46857 not(target_arch = "arm"),
46858 stable(feature = "neon_intrinsics", since = "1.59.0")
46859)]
46860#[cfg_attr(
46861 target_arch = "arm",
46862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46863)]
46864pub fn vreinterpret_p8_s64(a: int64x1_t) -> poly8x8_t {
46865 unsafe { transmute(a) }
46866}
46867#[doc = "Vector reinterpret cast operation"]
46868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_s64)"]
46869#[inline(always)]
46870#[cfg(target_endian = "big")]
46871#[target_feature(enable = "neon")]
46872#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46873#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46874#[cfg_attr(
46875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46876 assert_instr(nop)
46877)]
46878#[cfg_attr(
46879 not(target_arch = "arm"),
46880 stable(feature = "neon_intrinsics", since = "1.59.0")
46881)]
46882#[cfg_attr(
46883 target_arch = "arm",
46884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46885)]
46886pub fn vreinterpret_p8_s64(a: int64x1_t) -> poly8x8_t {
46887 unsafe {
46888 let ret_val: poly8x8_t = transmute(a);
46889 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
46890 }
46891}
46892#[doc = "Vector reinterpret cast operation"]
46893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s64)"]
46894#[inline(always)]
46895#[cfg(target_endian = "little")]
46896#[target_feature(enable = "neon")]
46897#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46898#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46899#[cfg_attr(
46900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46901 assert_instr(nop)
46902)]
46903#[cfg_attr(
46904 not(target_arch = "arm"),
46905 stable(feature = "neon_intrinsics", since = "1.59.0")
46906)]
46907#[cfg_attr(
46908 target_arch = "arm",
46909 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46910)]
46911pub fn vreinterpret_p16_s64(a: int64x1_t) -> poly16x4_t {
46912 unsafe { transmute(a) }
46913}
46914#[doc = "Vector reinterpret cast operation"]
46915#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_s64)"]
46916#[inline(always)]
46917#[cfg(target_endian = "big")]
46918#[target_feature(enable = "neon")]
46919#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46921#[cfg_attr(
46922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46923 assert_instr(nop)
46924)]
46925#[cfg_attr(
46926 not(target_arch = "arm"),
46927 stable(feature = "neon_intrinsics", since = "1.59.0")
46928)]
46929#[cfg_attr(
46930 target_arch = "arm",
46931 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46932)]
46933pub fn vreinterpret_p16_s64(a: int64x1_t) -> poly16x4_t {
46934 unsafe {
46935 let ret_val: poly16x4_t = transmute(a);
46936 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46937 }
46938}
46939#[doc = "Vector reinterpret cast operation"]
46940#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s64)"]
46941#[inline(always)]
46942#[cfg(target_endian = "little")]
46943#[target_feature(enable = "neon")]
46944#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46945#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46946#[cfg_attr(
46947 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46948 assert_instr(nop)
46949)]
46950#[cfg_attr(
46951 not(target_arch = "arm"),
46952 stable(feature = "neon_intrinsics", since = "1.59.0")
46953)]
46954#[cfg_attr(
46955 target_arch = "arm",
46956 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46957)]
46958pub fn vreinterpretq_f32_s64(a: int64x2_t) -> float32x4_t {
46959 unsafe { transmute(a) }
46960}
46961#[doc = "Vector reinterpret cast operation"]
46962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_s64)"]
46963#[inline(always)]
46964#[cfg(target_endian = "big")]
46965#[target_feature(enable = "neon")]
46966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46967#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46968#[cfg_attr(
46969 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46970 assert_instr(nop)
46971)]
46972#[cfg_attr(
46973 not(target_arch = "arm"),
46974 stable(feature = "neon_intrinsics", since = "1.59.0")
46975)]
46976#[cfg_attr(
46977 target_arch = "arm",
46978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
46979)]
46980pub fn vreinterpretq_f32_s64(a: int64x2_t) -> float32x4_t {
46981 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
46982 unsafe {
46983 let ret_val: float32x4_t = transmute(a);
46984 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
46985 }
46986}
46987#[doc = "Vector reinterpret cast operation"]
46988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s64)"]
46989#[inline(always)]
46990#[cfg(target_endian = "little")]
46991#[target_feature(enable = "neon")]
46992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
46993#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
46994#[cfg_attr(
46995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
46996 assert_instr(nop)
46997)]
46998#[cfg_attr(
46999 not(target_arch = "arm"),
47000 stable(feature = "neon_intrinsics", since = "1.59.0")
47001)]
47002#[cfg_attr(
47003 target_arch = "arm",
47004 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47005)]
47006pub fn vreinterpretq_s8_s64(a: int64x2_t) -> int8x16_t {
47007 unsafe { transmute(a) }
47008}
47009#[doc = "Vector reinterpret cast operation"]
47010#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_s64)"]
47011#[inline(always)]
47012#[cfg(target_endian = "big")]
47013#[target_feature(enable = "neon")]
47014#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47015#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47016#[cfg_attr(
47017 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47018 assert_instr(nop)
47019)]
47020#[cfg_attr(
47021 not(target_arch = "arm"),
47022 stable(feature = "neon_intrinsics", since = "1.59.0")
47023)]
47024#[cfg_attr(
47025 target_arch = "arm",
47026 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47027)]
47028pub fn vreinterpretq_s8_s64(a: int64x2_t) -> int8x16_t {
47029 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47030 unsafe {
47031 let ret_val: int8x16_t = transmute(a);
47032 simd_shuffle!(
47033 ret_val,
47034 ret_val,
47035 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
47036 )
47037 }
47038}
47039#[doc = "Vector reinterpret cast operation"]
47040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s64)"]
47041#[inline(always)]
47042#[cfg(target_endian = "little")]
47043#[target_feature(enable = "neon")]
47044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47045#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47046#[cfg_attr(
47047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47048 assert_instr(nop)
47049)]
47050#[cfg_attr(
47051 not(target_arch = "arm"),
47052 stable(feature = "neon_intrinsics", since = "1.59.0")
47053)]
47054#[cfg_attr(
47055 target_arch = "arm",
47056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47057)]
47058pub fn vreinterpretq_s16_s64(a: int64x2_t) -> int16x8_t {
47059 unsafe { transmute(a) }
47060}
47061#[doc = "Vector reinterpret cast operation"]
47062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_s64)"]
47063#[inline(always)]
47064#[cfg(target_endian = "big")]
47065#[target_feature(enable = "neon")]
47066#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47067#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47068#[cfg_attr(
47069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47070 assert_instr(nop)
47071)]
47072#[cfg_attr(
47073 not(target_arch = "arm"),
47074 stable(feature = "neon_intrinsics", since = "1.59.0")
47075)]
47076#[cfg_attr(
47077 target_arch = "arm",
47078 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47079)]
47080pub fn vreinterpretq_s16_s64(a: int64x2_t) -> int16x8_t {
47081 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47082 unsafe {
47083 let ret_val: int16x8_t = transmute(a);
47084 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47085 }
47086}
47087#[doc = "Vector reinterpret cast operation"]
47088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s64)"]
47089#[inline(always)]
47090#[cfg(target_endian = "little")]
47091#[target_feature(enable = "neon")]
47092#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47093#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47094#[cfg_attr(
47095 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47096 assert_instr(nop)
47097)]
47098#[cfg_attr(
47099 not(target_arch = "arm"),
47100 stable(feature = "neon_intrinsics", since = "1.59.0")
47101)]
47102#[cfg_attr(
47103 target_arch = "arm",
47104 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47105)]
47106pub fn vreinterpretq_s32_s64(a: int64x2_t) -> int32x4_t {
47107 unsafe { transmute(a) }
47108}
47109#[doc = "Vector reinterpret cast operation"]
47110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_s64)"]
47111#[inline(always)]
47112#[cfg(target_endian = "big")]
47113#[target_feature(enable = "neon")]
47114#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47115#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47116#[cfg_attr(
47117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47118 assert_instr(nop)
47119)]
47120#[cfg_attr(
47121 not(target_arch = "arm"),
47122 stable(feature = "neon_intrinsics", since = "1.59.0")
47123)]
47124#[cfg_attr(
47125 target_arch = "arm",
47126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47127)]
47128pub fn vreinterpretq_s32_s64(a: int64x2_t) -> int32x4_t {
47129 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47130 unsafe {
47131 let ret_val: int32x4_t = transmute(a);
47132 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47133 }
47134}
47135#[doc = "Vector reinterpret cast operation"]
47136#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s64)"]
47137#[inline(always)]
47138#[cfg(target_endian = "little")]
47139#[target_feature(enable = "neon")]
47140#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47141#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47142#[cfg_attr(
47143 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47144 assert_instr(nop)
47145)]
47146#[cfg_attr(
47147 not(target_arch = "arm"),
47148 stable(feature = "neon_intrinsics", since = "1.59.0")
47149)]
47150#[cfg_attr(
47151 target_arch = "arm",
47152 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47153)]
47154pub fn vreinterpretq_u8_s64(a: int64x2_t) -> uint8x16_t {
47155 unsafe { transmute(a) }
47156}
47157#[doc = "Vector reinterpret cast operation"]
47158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_s64)"]
47159#[inline(always)]
47160#[cfg(target_endian = "big")]
47161#[target_feature(enable = "neon")]
47162#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47163#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47164#[cfg_attr(
47165 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47166 assert_instr(nop)
47167)]
47168#[cfg_attr(
47169 not(target_arch = "arm"),
47170 stable(feature = "neon_intrinsics", since = "1.59.0")
47171)]
47172#[cfg_attr(
47173 target_arch = "arm",
47174 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47175)]
47176pub fn vreinterpretq_u8_s64(a: int64x2_t) -> uint8x16_t {
47177 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47178 unsafe {
47179 let ret_val: uint8x16_t = transmute(a);
47180 simd_shuffle!(
47181 ret_val,
47182 ret_val,
47183 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
47184 )
47185 }
47186}
47187#[doc = "Vector reinterpret cast operation"]
47188#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s64)"]
47189#[inline(always)]
47190#[cfg(target_endian = "little")]
47191#[target_feature(enable = "neon")]
47192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47193#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47194#[cfg_attr(
47195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47196 assert_instr(nop)
47197)]
47198#[cfg_attr(
47199 not(target_arch = "arm"),
47200 stable(feature = "neon_intrinsics", since = "1.59.0")
47201)]
47202#[cfg_attr(
47203 target_arch = "arm",
47204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47205)]
47206pub fn vreinterpretq_u16_s64(a: int64x2_t) -> uint16x8_t {
47207 unsafe { transmute(a) }
47208}
47209#[doc = "Vector reinterpret cast operation"]
47210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_s64)"]
47211#[inline(always)]
47212#[cfg(target_endian = "big")]
47213#[target_feature(enable = "neon")]
47214#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47216#[cfg_attr(
47217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47218 assert_instr(nop)
47219)]
47220#[cfg_attr(
47221 not(target_arch = "arm"),
47222 stable(feature = "neon_intrinsics", since = "1.59.0")
47223)]
47224#[cfg_attr(
47225 target_arch = "arm",
47226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47227)]
47228pub fn vreinterpretq_u16_s64(a: int64x2_t) -> uint16x8_t {
47229 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47230 unsafe {
47231 let ret_val: uint16x8_t = transmute(a);
47232 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47233 }
47234}
47235#[doc = "Vector reinterpret cast operation"]
47236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s64)"]
47237#[inline(always)]
47238#[cfg(target_endian = "little")]
47239#[target_feature(enable = "neon")]
47240#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47241#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47242#[cfg_attr(
47243 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47244 assert_instr(nop)
47245)]
47246#[cfg_attr(
47247 not(target_arch = "arm"),
47248 stable(feature = "neon_intrinsics", since = "1.59.0")
47249)]
47250#[cfg_attr(
47251 target_arch = "arm",
47252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47253)]
47254pub fn vreinterpretq_u32_s64(a: int64x2_t) -> uint32x4_t {
47255 unsafe { transmute(a) }
47256}
47257#[doc = "Vector reinterpret cast operation"]
47258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_s64)"]
47259#[inline(always)]
47260#[cfg(target_endian = "big")]
47261#[target_feature(enable = "neon")]
47262#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47263#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47264#[cfg_attr(
47265 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47266 assert_instr(nop)
47267)]
47268#[cfg_attr(
47269 not(target_arch = "arm"),
47270 stable(feature = "neon_intrinsics", since = "1.59.0")
47271)]
47272#[cfg_attr(
47273 target_arch = "arm",
47274 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47275)]
47276pub fn vreinterpretq_u32_s64(a: int64x2_t) -> uint32x4_t {
47277 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47278 unsafe {
47279 let ret_val: uint32x4_t = transmute(a);
47280 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47281 }
47282}
47283#[doc = "Vector reinterpret cast operation"]
47284#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s64)"]
47285#[inline(always)]
47286#[cfg(target_endian = "little")]
47287#[target_feature(enable = "neon")]
47288#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47289#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47290#[cfg_attr(
47291 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47292 assert_instr(nop)
47293)]
47294#[cfg_attr(
47295 not(target_arch = "arm"),
47296 stable(feature = "neon_intrinsics", since = "1.59.0")
47297)]
47298#[cfg_attr(
47299 target_arch = "arm",
47300 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47301)]
47302pub fn vreinterpretq_u64_s64(a: int64x2_t) -> uint64x2_t {
47303 unsafe { transmute(a) }
47304}
47305#[doc = "Vector reinterpret cast operation"]
47306#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_s64)"]
47307#[inline(always)]
47308#[cfg(target_endian = "big")]
47309#[target_feature(enable = "neon")]
47310#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47311#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47312#[cfg_attr(
47313 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47314 assert_instr(nop)
47315)]
47316#[cfg_attr(
47317 not(target_arch = "arm"),
47318 stable(feature = "neon_intrinsics", since = "1.59.0")
47319)]
47320#[cfg_attr(
47321 target_arch = "arm",
47322 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47323)]
47324pub fn vreinterpretq_u64_s64(a: int64x2_t) -> uint64x2_t {
47325 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47326 unsafe {
47327 let ret_val: uint64x2_t = transmute(a);
47328 simd_shuffle!(ret_val, ret_val, [1, 0])
47329 }
47330}
47331#[doc = "Vector reinterpret cast operation"]
47332#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s64)"]
47333#[inline(always)]
47334#[cfg(target_endian = "little")]
47335#[target_feature(enable = "neon")]
47336#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47337#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47338#[cfg_attr(
47339 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47340 assert_instr(nop)
47341)]
47342#[cfg_attr(
47343 not(target_arch = "arm"),
47344 stable(feature = "neon_intrinsics", since = "1.59.0")
47345)]
47346#[cfg_attr(
47347 target_arch = "arm",
47348 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47349)]
47350pub fn vreinterpretq_p8_s64(a: int64x2_t) -> poly8x16_t {
47351 unsafe { transmute(a) }
47352}
47353#[doc = "Vector reinterpret cast operation"]
47354#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_s64)"]
47355#[inline(always)]
47356#[cfg(target_endian = "big")]
47357#[target_feature(enable = "neon")]
47358#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47359#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47360#[cfg_attr(
47361 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47362 assert_instr(nop)
47363)]
47364#[cfg_attr(
47365 not(target_arch = "arm"),
47366 stable(feature = "neon_intrinsics", since = "1.59.0")
47367)]
47368#[cfg_attr(
47369 target_arch = "arm",
47370 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47371)]
47372pub fn vreinterpretq_p8_s64(a: int64x2_t) -> poly8x16_t {
47373 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47374 unsafe {
47375 let ret_val: poly8x16_t = transmute(a);
47376 simd_shuffle!(
47377 ret_val,
47378 ret_val,
47379 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
47380 )
47381 }
47382}
47383#[doc = "Vector reinterpret cast operation"]
47384#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s64)"]
47385#[inline(always)]
47386#[cfg(target_endian = "little")]
47387#[target_feature(enable = "neon")]
47388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47389#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47390#[cfg_attr(
47391 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47392 assert_instr(nop)
47393)]
47394#[cfg_attr(
47395 not(target_arch = "arm"),
47396 stable(feature = "neon_intrinsics", since = "1.59.0")
47397)]
47398#[cfg_attr(
47399 target_arch = "arm",
47400 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47401)]
47402pub fn vreinterpretq_p16_s64(a: int64x2_t) -> poly16x8_t {
47403 unsafe { transmute(a) }
47404}
47405#[doc = "Vector reinterpret cast operation"]
47406#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_s64)"]
47407#[inline(always)]
47408#[cfg(target_endian = "big")]
47409#[target_feature(enable = "neon")]
47410#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47411#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47412#[cfg_attr(
47413 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47414 assert_instr(nop)
47415)]
47416#[cfg_attr(
47417 not(target_arch = "arm"),
47418 stable(feature = "neon_intrinsics", since = "1.59.0")
47419)]
47420#[cfg_attr(
47421 target_arch = "arm",
47422 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47423)]
47424pub fn vreinterpretq_p16_s64(a: int64x2_t) -> poly16x8_t {
47425 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
47426 unsafe {
47427 let ret_val: poly16x8_t = transmute(a);
47428 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47429 }
47430}
47431#[doc = "Vector reinterpret cast operation"]
47432#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u8)"]
47433#[inline(always)]
47434#[cfg(target_endian = "little")]
47435#[target_feature(enable = "neon")]
47436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47437#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47438#[cfg_attr(
47439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47440 assert_instr(nop)
47441)]
47442#[cfg_attr(
47443 not(target_arch = "arm"),
47444 stable(feature = "neon_intrinsics", since = "1.59.0")
47445)]
47446#[cfg_attr(
47447 target_arch = "arm",
47448 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47449)]
47450pub fn vreinterpret_f32_u8(a: uint8x8_t) -> float32x2_t {
47451 unsafe { transmute(a) }
47452}
47453#[doc = "Vector reinterpret cast operation"]
47454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u8)"]
47455#[inline(always)]
47456#[cfg(target_endian = "big")]
47457#[target_feature(enable = "neon")]
47458#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47459#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47460#[cfg_attr(
47461 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47462 assert_instr(nop)
47463)]
47464#[cfg_attr(
47465 not(target_arch = "arm"),
47466 stable(feature = "neon_intrinsics", since = "1.59.0")
47467)]
47468#[cfg_attr(
47469 target_arch = "arm",
47470 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47471)]
47472pub fn vreinterpret_f32_u8(a: uint8x8_t) -> float32x2_t {
47473 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47474 unsafe {
47475 let ret_val: float32x2_t = transmute(a);
47476 simd_shuffle!(ret_val, ret_val, [1, 0])
47477 }
47478}
47479#[doc = "Vector reinterpret cast operation"]
47480#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u8)"]
47481#[inline(always)]
47482#[cfg(target_endian = "little")]
47483#[target_feature(enable = "neon")]
47484#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47485#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47486#[cfg_attr(
47487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47488 assert_instr(nop)
47489)]
47490#[cfg_attr(
47491 not(target_arch = "arm"),
47492 stable(feature = "neon_intrinsics", since = "1.59.0")
47493)]
47494#[cfg_attr(
47495 target_arch = "arm",
47496 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47497)]
47498pub fn vreinterpret_s8_u8(a: uint8x8_t) -> int8x8_t {
47499 unsafe { transmute(a) }
47500}
47501#[doc = "Vector reinterpret cast operation"]
47502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u8)"]
47503#[inline(always)]
47504#[cfg(target_endian = "big")]
47505#[target_feature(enable = "neon")]
47506#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47507#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47508#[cfg_attr(
47509 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47510 assert_instr(nop)
47511)]
47512#[cfg_attr(
47513 not(target_arch = "arm"),
47514 stable(feature = "neon_intrinsics", since = "1.59.0")
47515)]
47516#[cfg_attr(
47517 target_arch = "arm",
47518 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47519)]
47520pub fn vreinterpret_s8_u8(a: uint8x8_t) -> int8x8_t {
47521 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47522 unsafe {
47523 let ret_val: int8x8_t = transmute(a);
47524 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47525 }
47526}
47527#[doc = "Vector reinterpret cast operation"]
47528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u8)"]
47529#[inline(always)]
47530#[cfg(target_endian = "little")]
47531#[target_feature(enable = "neon")]
47532#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47533#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47534#[cfg_attr(
47535 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47536 assert_instr(nop)
47537)]
47538#[cfg_attr(
47539 not(target_arch = "arm"),
47540 stable(feature = "neon_intrinsics", since = "1.59.0")
47541)]
47542#[cfg_attr(
47543 target_arch = "arm",
47544 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47545)]
47546pub fn vreinterpret_s16_u8(a: uint8x8_t) -> int16x4_t {
47547 unsafe { transmute(a) }
47548}
47549#[doc = "Vector reinterpret cast operation"]
47550#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u8)"]
47551#[inline(always)]
47552#[cfg(target_endian = "big")]
47553#[target_feature(enable = "neon")]
47554#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47555#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47556#[cfg_attr(
47557 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47558 assert_instr(nop)
47559)]
47560#[cfg_attr(
47561 not(target_arch = "arm"),
47562 stable(feature = "neon_intrinsics", since = "1.59.0")
47563)]
47564#[cfg_attr(
47565 target_arch = "arm",
47566 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47567)]
47568pub fn vreinterpret_s16_u8(a: uint8x8_t) -> int16x4_t {
47569 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47570 unsafe {
47571 let ret_val: int16x4_t = transmute(a);
47572 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47573 }
47574}
47575#[doc = "Vector reinterpret cast operation"]
47576#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u8)"]
47577#[inline(always)]
47578#[cfg(target_endian = "little")]
47579#[target_feature(enable = "neon")]
47580#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47581#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47582#[cfg_attr(
47583 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47584 assert_instr(nop)
47585)]
47586#[cfg_attr(
47587 not(target_arch = "arm"),
47588 stable(feature = "neon_intrinsics", since = "1.59.0")
47589)]
47590#[cfg_attr(
47591 target_arch = "arm",
47592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47593)]
47594pub fn vreinterpret_s32_u8(a: uint8x8_t) -> int32x2_t {
47595 unsafe { transmute(a) }
47596}
47597#[doc = "Vector reinterpret cast operation"]
47598#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u8)"]
47599#[inline(always)]
47600#[cfg(target_endian = "big")]
47601#[target_feature(enable = "neon")]
47602#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47603#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47604#[cfg_attr(
47605 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47606 assert_instr(nop)
47607)]
47608#[cfg_attr(
47609 not(target_arch = "arm"),
47610 stable(feature = "neon_intrinsics", since = "1.59.0")
47611)]
47612#[cfg_attr(
47613 target_arch = "arm",
47614 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47615)]
47616pub fn vreinterpret_s32_u8(a: uint8x8_t) -> int32x2_t {
47617 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47618 unsafe {
47619 let ret_val: int32x2_t = transmute(a);
47620 simd_shuffle!(ret_val, ret_val, [1, 0])
47621 }
47622}
47623#[doc = "Vector reinterpret cast operation"]
47624#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u8)"]
47625#[inline(always)]
47626#[cfg(target_endian = "little")]
47627#[target_feature(enable = "neon")]
47628#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47629#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47630#[cfg_attr(
47631 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47632 assert_instr(nop)
47633)]
47634#[cfg_attr(
47635 not(target_arch = "arm"),
47636 stable(feature = "neon_intrinsics", since = "1.59.0")
47637)]
47638#[cfg_attr(
47639 target_arch = "arm",
47640 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47641)]
47642pub fn vreinterpret_s64_u8(a: uint8x8_t) -> int64x1_t {
47643 unsafe { transmute(a) }
47644}
47645#[doc = "Vector reinterpret cast operation"]
47646#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u8)"]
47647#[inline(always)]
47648#[cfg(target_endian = "big")]
47649#[target_feature(enable = "neon")]
47650#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47651#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47652#[cfg_attr(
47653 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47654 assert_instr(nop)
47655)]
47656#[cfg_attr(
47657 not(target_arch = "arm"),
47658 stable(feature = "neon_intrinsics", since = "1.59.0")
47659)]
47660#[cfg_attr(
47661 target_arch = "arm",
47662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47663)]
47664pub fn vreinterpret_s64_u8(a: uint8x8_t) -> int64x1_t {
47665 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47666 unsafe { transmute(a) }
47667}
47668#[doc = "Vector reinterpret cast operation"]
47669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u8)"]
47670#[inline(always)]
47671#[cfg(target_endian = "little")]
47672#[target_feature(enable = "neon")]
47673#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47674#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47675#[cfg_attr(
47676 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47677 assert_instr(nop)
47678)]
47679#[cfg_attr(
47680 not(target_arch = "arm"),
47681 stable(feature = "neon_intrinsics", since = "1.59.0")
47682)]
47683#[cfg_attr(
47684 target_arch = "arm",
47685 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47686)]
47687pub fn vreinterpret_u16_u8(a: uint8x8_t) -> uint16x4_t {
47688 unsafe { transmute(a) }
47689}
47690#[doc = "Vector reinterpret cast operation"]
47691#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u8)"]
47692#[inline(always)]
47693#[cfg(target_endian = "big")]
47694#[target_feature(enable = "neon")]
47695#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47696#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47697#[cfg_attr(
47698 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47699 assert_instr(nop)
47700)]
47701#[cfg_attr(
47702 not(target_arch = "arm"),
47703 stable(feature = "neon_intrinsics", since = "1.59.0")
47704)]
47705#[cfg_attr(
47706 target_arch = "arm",
47707 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47708)]
47709pub fn vreinterpret_u16_u8(a: uint8x8_t) -> uint16x4_t {
47710 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47711 unsafe {
47712 let ret_val: uint16x4_t = transmute(a);
47713 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47714 }
47715}
47716#[doc = "Vector reinterpret cast operation"]
47717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u8)"]
47718#[inline(always)]
47719#[cfg(target_endian = "little")]
47720#[target_feature(enable = "neon")]
47721#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47722#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47723#[cfg_attr(
47724 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47725 assert_instr(nop)
47726)]
47727#[cfg_attr(
47728 not(target_arch = "arm"),
47729 stable(feature = "neon_intrinsics", since = "1.59.0")
47730)]
47731#[cfg_attr(
47732 target_arch = "arm",
47733 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47734)]
47735pub fn vreinterpret_u32_u8(a: uint8x8_t) -> uint32x2_t {
47736 unsafe { transmute(a) }
47737}
47738#[doc = "Vector reinterpret cast operation"]
47739#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u8)"]
47740#[inline(always)]
47741#[cfg(target_endian = "big")]
47742#[target_feature(enable = "neon")]
47743#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47744#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47745#[cfg_attr(
47746 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47747 assert_instr(nop)
47748)]
47749#[cfg_attr(
47750 not(target_arch = "arm"),
47751 stable(feature = "neon_intrinsics", since = "1.59.0")
47752)]
47753#[cfg_attr(
47754 target_arch = "arm",
47755 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47756)]
47757pub fn vreinterpret_u32_u8(a: uint8x8_t) -> uint32x2_t {
47758 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47759 unsafe {
47760 let ret_val: uint32x2_t = transmute(a);
47761 simd_shuffle!(ret_val, ret_val, [1, 0])
47762 }
47763}
47764#[doc = "Vector reinterpret cast operation"]
47765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u8)"]
47766#[inline(always)]
47767#[cfg(target_endian = "little")]
47768#[target_feature(enable = "neon")]
47769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47770#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47771#[cfg_attr(
47772 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47773 assert_instr(nop)
47774)]
47775#[cfg_attr(
47776 not(target_arch = "arm"),
47777 stable(feature = "neon_intrinsics", since = "1.59.0")
47778)]
47779#[cfg_attr(
47780 target_arch = "arm",
47781 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47782)]
47783pub fn vreinterpret_u64_u8(a: uint8x8_t) -> uint64x1_t {
47784 unsafe { transmute(a) }
47785}
47786#[doc = "Vector reinterpret cast operation"]
47787#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u8)"]
47788#[inline(always)]
47789#[cfg(target_endian = "big")]
47790#[target_feature(enable = "neon")]
47791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47793#[cfg_attr(
47794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47795 assert_instr(nop)
47796)]
47797#[cfg_attr(
47798 not(target_arch = "arm"),
47799 stable(feature = "neon_intrinsics", since = "1.59.0")
47800)]
47801#[cfg_attr(
47802 target_arch = "arm",
47803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47804)]
47805pub fn vreinterpret_u64_u8(a: uint8x8_t) -> uint64x1_t {
47806 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47807 unsafe { transmute(a) }
47808}
47809#[doc = "Vector reinterpret cast operation"]
47810#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u8)"]
47811#[inline(always)]
47812#[cfg(target_endian = "little")]
47813#[target_feature(enable = "neon")]
47814#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47815#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47816#[cfg_attr(
47817 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47818 assert_instr(nop)
47819)]
47820#[cfg_attr(
47821 not(target_arch = "arm"),
47822 stable(feature = "neon_intrinsics", since = "1.59.0")
47823)]
47824#[cfg_attr(
47825 target_arch = "arm",
47826 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47827)]
47828pub fn vreinterpret_p8_u8(a: uint8x8_t) -> poly8x8_t {
47829 unsafe { transmute(a) }
47830}
47831#[doc = "Vector reinterpret cast operation"]
47832#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u8)"]
47833#[inline(always)]
47834#[cfg(target_endian = "big")]
47835#[target_feature(enable = "neon")]
47836#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47837#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47838#[cfg_attr(
47839 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47840 assert_instr(nop)
47841)]
47842#[cfg_attr(
47843 not(target_arch = "arm"),
47844 stable(feature = "neon_intrinsics", since = "1.59.0")
47845)]
47846#[cfg_attr(
47847 target_arch = "arm",
47848 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47849)]
47850pub fn vreinterpret_p8_u8(a: uint8x8_t) -> poly8x8_t {
47851 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47852 unsafe {
47853 let ret_val: poly8x8_t = transmute(a);
47854 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
47855 }
47856}
47857#[doc = "Vector reinterpret cast operation"]
47858#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u8)"]
47859#[inline(always)]
47860#[cfg(target_endian = "little")]
47861#[target_feature(enable = "neon")]
47862#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47863#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47864#[cfg_attr(
47865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47866 assert_instr(nop)
47867)]
47868#[cfg_attr(
47869 not(target_arch = "arm"),
47870 stable(feature = "neon_intrinsics", since = "1.59.0")
47871)]
47872#[cfg_attr(
47873 target_arch = "arm",
47874 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47875)]
47876pub fn vreinterpret_p16_u8(a: uint8x8_t) -> poly16x4_t {
47877 unsafe { transmute(a) }
47878}
47879#[doc = "Vector reinterpret cast operation"]
47880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u8)"]
47881#[inline(always)]
47882#[cfg(target_endian = "big")]
47883#[target_feature(enable = "neon")]
47884#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47885#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47886#[cfg_attr(
47887 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47888 assert_instr(nop)
47889)]
47890#[cfg_attr(
47891 not(target_arch = "arm"),
47892 stable(feature = "neon_intrinsics", since = "1.59.0")
47893)]
47894#[cfg_attr(
47895 target_arch = "arm",
47896 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47897)]
47898pub fn vreinterpret_p16_u8(a: uint8x8_t) -> poly16x4_t {
47899 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
47900 unsafe {
47901 let ret_val: poly16x4_t = transmute(a);
47902 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47903 }
47904}
47905#[doc = "Vector reinterpret cast operation"]
47906#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u8)"]
47907#[inline(always)]
47908#[cfg(target_endian = "little")]
47909#[target_feature(enable = "neon")]
47910#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47911#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47912#[cfg_attr(
47913 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47914 assert_instr(nop)
47915)]
47916#[cfg_attr(
47917 not(target_arch = "arm"),
47918 stable(feature = "neon_intrinsics", since = "1.59.0")
47919)]
47920#[cfg_attr(
47921 target_arch = "arm",
47922 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47923)]
47924pub fn vreinterpretq_f32_u8(a: uint8x16_t) -> float32x4_t {
47925 unsafe { transmute(a) }
47926}
47927#[doc = "Vector reinterpret cast operation"]
47928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u8)"]
47929#[inline(always)]
47930#[cfg(target_endian = "big")]
47931#[target_feature(enable = "neon")]
47932#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47933#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47934#[cfg_attr(
47935 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47936 assert_instr(nop)
47937)]
47938#[cfg_attr(
47939 not(target_arch = "arm"),
47940 stable(feature = "neon_intrinsics", since = "1.59.0")
47941)]
47942#[cfg_attr(
47943 target_arch = "arm",
47944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47945)]
47946pub fn vreinterpretq_f32_u8(a: uint8x16_t) -> float32x4_t {
47947 let a: uint8x16_t =
47948 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
47949 unsafe {
47950 let ret_val: float32x4_t = transmute(a);
47951 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
47952 }
47953}
47954#[doc = "Vector reinterpret cast operation"]
47955#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u8)"]
47956#[inline(always)]
47957#[cfg(target_endian = "little")]
47958#[target_feature(enable = "neon")]
47959#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47960#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47961#[cfg_attr(
47962 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47963 assert_instr(nop)
47964)]
47965#[cfg_attr(
47966 not(target_arch = "arm"),
47967 stable(feature = "neon_intrinsics", since = "1.59.0")
47968)]
47969#[cfg_attr(
47970 target_arch = "arm",
47971 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47972)]
47973pub fn vreinterpretq_s8_u8(a: uint8x16_t) -> int8x16_t {
47974 unsafe { transmute(a) }
47975}
47976#[doc = "Vector reinterpret cast operation"]
47977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u8)"]
47978#[inline(always)]
47979#[cfg(target_endian = "big")]
47980#[target_feature(enable = "neon")]
47981#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
47982#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
47983#[cfg_attr(
47984 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
47985 assert_instr(nop)
47986)]
47987#[cfg_attr(
47988 not(target_arch = "arm"),
47989 stable(feature = "neon_intrinsics", since = "1.59.0")
47990)]
47991#[cfg_attr(
47992 target_arch = "arm",
47993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
47994)]
47995pub fn vreinterpretq_s8_u8(a: uint8x16_t) -> int8x16_t {
47996 let a: uint8x16_t =
47997 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
47998 unsafe {
47999 let ret_val: int8x16_t = transmute(a);
48000 simd_shuffle!(
48001 ret_val,
48002 ret_val,
48003 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
48004 )
48005 }
48006}
48007#[doc = "Vector reinterpret cast operation"]
48008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u8)"]
48009#[inline(always)]
48010#[cfg(target_endian = "little")]
48011#[target_feature(enable = "neon")]
48012#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48013#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48014#[cfg_attr(
48015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48016 assert_instr(nop)
48017)]
48018#[cfg_attr(
48019 not(target_arch = "arm"),
48020 stable(feature = "neon_intrinsics", since = "1.59.0")
48021)]
48022#[cfg_attr(
48023 target_arch = "arm",
48024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48025)]
48026pub fn vreinterpretq_s16_u8(a: uint8x16_t) -> int16x8_t {
48027 unsafe { transmute(a) }
48028}
48029#[doc = "Vector reinterpret cast operation"]
48030#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u8)"]
48031#[inline(always)]
48032#[cfg(target_endian = "big")]
48033#[target_feature(enable = "neon")]
48034#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48035#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48036#[cfg_attr(
48037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48038 assert_instr(nop)
48039)]
48040#[cfg_attr(
48041 not(target_arch = "arm"),
48042 stable(feature = "neon_intrinsics", since = "1.59.0")
48043)]
48044#[cfg_attr(
48045 target_arch = "arm",
48046 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48047)]
48048pub fn vreinterpretq_s16_u8(a: uint8x16_t) -> int16x8_t {
48049 let a: uint8x16_t =
48050 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48051 unsafe {
48052 let ret_val: int16x8_t = transmute(a);
48053 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48054 }
48055}
48056#[doc = "Vector reinterpret cast operation"]
48057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u8)"]
48058#[inline(always)]
48059#[cfg(target_endian = "little")]
48060#[target_feature(enable = "neon")]
48061#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48062#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48063#[cfg_attr(
48064 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48065 assert_instr(nop)
48066)]
48067#[cfg_attr(
48068 not(target_arch = "arm"),
48069 stable(feature = "neon_intrinsics", since = "1.59.0")
48070)]
48071#[cfg_attr(
48072 target_arch = "arm",
48073 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48074)]
48075pub fn vreinterpretq_s32_u8(a: uint8x16_t) -> int32x4_t {
48076 unsafe { transmute(a) }
48077}
48078#[doc = "Vector reinterpret cast operation"]
48079#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u8)"]
48080#[inline(always)]
48081#[cfg(target_endian = "big")]
48082#[target_feature(enable = "neon")]
48083#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48084#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48085#[cfg_attr(
48086 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48087 assert_instr(nop)
48088)]
48089#[cfg_attr(
48090 not(target_arch = "arm"),
48091 stable(feature = "neon_intrinsics", since = "1.59.0")
48092)]
48093#[cfg_attr(
48094 target_arch = "arm",
48095 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48096)]
48097pub fn vreinterpretq_s32_u8(a: uint8x16_t) -> int32x4_t {
48098 let a: uint8x16_t =
48099 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48100 unsafe {
48101 let ret_val: int32x4_t = transmute(a);
48102 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48103 }
48104}
48105#[doc = "Vector reinterpret cast operation"]
48106#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u8)"]
48107#[inline(always)]
48108#[cfg(target_endian = "little")]
48109#[target_feature(enable = "neon")]
48110#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48111#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48112#[cfg_attr(
48113 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48114 assert_instr(nop)
48115)]
48116#[cfg_attr(
48117 not(target_arch = "arm"),
48118 stable(feature = "neon_intrinsics", since = "1.59.0")
48119)]
48120#[cfg_attr(
48121 target_arch = "arm",
48122 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48123)]
48124pub fn vreinterpretq_s64_u8(a: uint8x16_t) -> int64x2_t {
48125 unsafe { transmute(a) }
48126}
48127#[doc = "Vector reinterpret cast operation"]
48128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u8)"]
48129#[inline(always)]
48130#[cfg(target_endian = "big")]
48131#[target_feature(enable = "neon")]
48132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48133#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48134#[cfg_attr(
48135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48136 assert_instr(nop)
48137)]
48138#[cfg_attr(
48139 not(target_arch = "arm"),
48140 stable(feature = "neon_intrinsics", since = "1.59.0")
48141)]
48142#[cfg_attr(
48143 target_arch = "arm",
48144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48145)]
48146pub fn vreinterpretq_s64_u8(a: uint8x16_t) -> int64x2_t {
48147 let a: uint8x16_t =
48148 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48149 unsafe {
48150 let ret_val: int64x2_t = transmute(a);
48151 simd_shuffle!(ret_val, ret_val, [1, 0])
48152 }
48153}
48154#[doc = "Vector reinterpret cast operation"]
48155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u8)"]
48156#[inline(always)]
48157#[cfg(target_endian = "little")]
48158#[target_feature(enable = "neon")]
48159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48161#[cfg_attr(
48162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48163 assert_instr(nop)
48164)]
48165#[cfg_attr(
48166 not(target_arch = "arm"),
48167 stable(feature = "neon_intrinsics", since = "1.59.0")
48168)]
48169#[cfg_attr(
48170 target_arch = "arm",
48171 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48172)]
48173pub fn vreinterpretq_u16_u8(a: uint8x16_t) -> uint16x8_t {
48174 unsafe { transmute(a) }
48175}
48176#[doc = "Vector reinterpret cast operation"]
48177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u8)"]
48178#[inline(always)]
48179#[cfg(target_endian = "big")]
48180#[target_feature(enable = "neon")]
48181#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48182#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48183#[cfg_attr(
48184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48185 assert_instr(nop)
48186)]
48187#[cfg_attr(
48188 not(target_arch = "arm"),
48189 stable(feature = "neon_intrinsics", since = "1.59.0")
48190)]
48191#[cfg_attr(
48192 target_arch = "arm",
48193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48194)]
48195pub fn vreinterpretq_u16_u8(a: uint8x16_t) -> uint16x8_t {
48196 let a: uint8x16_t =
48197 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48198 unsafe {
48199 let ret_val: uint16x8_t = transmute(a);
48200 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48201 }
48202}
48203#[doc = "Vector reinterpret cast operation"]
48204#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u8)"]
48205#[inline(always)]
48206#[cfg(target_endian = "little")]
48207#[target_feature(enable = "neon")]
48208#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48209#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48210#[cfg_attr(
48211 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48212 assert_instr(nop)
48213)]
48214#[cfg_attr(
48215 not(target_arch = "arm"),
48216 stable(feature = "neon_intrinsics", since = "1.59.0")
48217)]
48218#[cfg_attr(
48219 target_arch = "arm",
48220 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48221)]
48222pub fn vreinterpretq_u32_u8(a: uint8x16_t) -> uint32x4_t {
48223 unsafe { transmute(a) }
48224}
48225#[doc = "Vector reinterpret cast operation"]
48226#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u8)"]
48227#[inline(always)]
48228#[cfg(target_endian = "big")]
48229#[target_feature(enable = "neon")]
48230#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48231#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48232#[cfg_attr(
48233 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48234 assert_instr(nop)
48235)]
48236#[cfg_attr(
48237 not(target_arch = "arm"),
48238 stable(feature = "neon_intrinsics", since = "1.59.0")
48239)]
48240#[cfg_attr(
48241 target_arch = "arm",
48242 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48243)]
48244pub fn vreinterpretq_u32_u8(a: uint8x16_t) -> uint32x4_t {
48245 let a: uint8x16_t =
48246 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48247 unsafe {
48248 let ret_val: uint32x4_t = transmute(a);
48249 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48250 }
48251}
48252#[doc = "Vector reinterpret cast operation"]
48253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u8)"]
48254#[inline(always)]
48255#[cfg(target_endian = "little")]
48256#[target_feature(enable = "neon")]
48257#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48258#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48259#[cfg_attr(
48260 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48261 assert_instr(nop)
48262)]
48263#[cfg_attr(
48264 not(target_arch = "arm"),
48265 stable(feature = "neon_intrinsics", since = "1.59.0")
48266)]
48267#[cfg_attr(
48268 target_arch = "arm",
48269 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48270)]
48271pub fn vreinterpretq_u64_u8(a: uint8x16_t) -> uint64x2_t {
48272 unsafe { transmute(a) }
48273}
48274#[doc = "Vector reinterpret cast operation"]
48275#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u8)"]
48276#[inline(always)]
48277#[cfg(target_endian = "big")]
48278#[target_feature(enable = "neon")]
48279#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48280#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48281#[cfg_attr(
48282 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48283 assert_instr(nop)
48284)]
48285#[cfg_attr(
48286 not(target_arch = "arm"),
48287 stable(feature = "neon_intrinsics", since = "1.59.0")
48288)]
48289#[cfg_attr(
48290 target_arch = "arm",
48291 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48292)]
48293pub fn vreinterpretq_u64_u8(a: uint8x16_t) -> uint64x2_t {
48294 let a: uint8x16_t =
48295 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48296 unsafe {
48297 let ret_val: uint64x2_t = transmute(a);
48298 simd_shuffle!(ret_val, ret_val, [1, 0])
48299 }
48300}
48301#[doc = "Vector reinterpret cast operation"]
48302#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u8)"]
48303#[inline(always)]
48304#[cfg(target_endian = "little")]
48305#[target_feature(enable = "neon")]
48306#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48307#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48308#[cfg_attr(
48309 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48310 assert_instr(nop)
48311)]
48312#[cfg_attr(
48313 not(target_arch = "arm"),
48314 stable(feature = "neon_intrinsics", since = "1.59.0")
48315)]
48316#[cfg_attr(
48317 target_arch = "arm",
48318 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48319)]
48320pub fn vreinterpretq_p8_u8(a: uint8x16_t) -> poly8x16_t {
48321 unsafe { transmute(a) }
48322}
48323#[doc = "Vector reinterpret cast operation"]
48324#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u8)"]
48325#[inline(always)]
48326#[cfg(target_endian = "big")]
48327#[target_feature(enable = "neon")]
48328#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48329#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48330#[cfg_attr(
48331 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48332 assert_instr(nop)
48333)]
48334#[cfg_attr(
48335 not(target_arch = "arm"),
48336 stable(feature = "neon_intrinsics", since = "1.59.0")
48337)]
48338#[cfg_attr(
48339 target_arch = "arm",
48340 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48341)]
48342pub fn vreinterpretq_p8_u8(a: uint8x16_t) -> poly8x16_t {
48343 let a: uint8x16_t =
48344 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48345 unsafe {
48346 let ret_val: poly8x16_t = transmute(a);
48347 simd_shuffle!(
48348 ret_val,
48349 ret_val,
48350 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
48351 )
48352 }
48353}
48354#[doc = "Vector reinterpret cast operation"]
48355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u8)"]
48356#[inline(always)]
48357#[cfg(target_endian = "little")]
48358#[target_feature(enable = "neon")]
48359#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48360#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48361#[cfg_attr(
48362 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48363 assert_instr(nop)
48364)]
48365#[cfg_attr(
48366 not(target_arch = "arm"),
48367 stable(feature = "neon_intrinsics", since = "1.59.0")
48368)]
48369#[cfg_attr(
48370 target_arch = "arm",
48371 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48372)]
48373pub fn vreinterpretq_p16_u8(a: uint8x16_t) -> poly16x8_t {
48374 unsafe { transmute(a) }
48375}
48376#[doc = "Vector reinterpret cast operation"]
48377#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u8)"]
48378#[inline(always)]
48379#[cfg(target_endian = "big")]
48380#[target_feature(enable = "neon")]
48381#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48382#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48383#[cfg_attr(
48384 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48385 assert_instr(nop)
48386)]
48387#[cfg_attr(
48388 not(target_arch = "arm"),
48389 stable(feature = "neon_intrinsics", since = "1.59.0")
48390)]
48391#[cfg_attr(
48392 target_arch = "arm",
48393 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48394)]
48395pub fn vreinterpretq_p16_u8(a: uint8x16_t) -> poly16x8_t {
48396 let a: uint8x16_t =
48397 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
48398 unsafe {
48399 let ret_val: poly16x8_t = transmute(a);
48400 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48401 }
48402}
48403#[doc = "Vector reinterpret cast operation"]
48404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u16)"]
48405#[inline(always)]
48406#[cfg(target_endian = "little")]
48407#[target_feature(enable = "neon")]
48408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48410#[cfg_attr(
48411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48412 assert_instr(nop)
48413)]
48414#[cfg_attr(
48415 not(target_arch = "arm"),
48416 stable(feature = "neon_intrinsics", since = "1.59.0")
48417)]
48418#[cfg_attr(
48419 target_arch = "arm",
48420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48421)]
48422pub fn vreinterpret_f32_u16(a: uint16x4_t) -> float32x2_t {
48423 unsafe { transmute(a) }
48424}
48425#[doc = "Vector reinterpret cast operation"]
48426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u16)"]
48427#[inline(always)]
48428#[cfg(target_endian = "big")]
48429#[target_feature(enable = "neon")]
48430#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48431#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48432#[cfg_attr(
48433 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48434 assert_instr(nop)
48435)]
48436#[cfg_attr(
48437 not(target_arch = "arm"),
48438 stable(feature = "neon_intrinsics", since = "1.59.0")
48439)]
48440#[cfg_attr(
48441 target_arch = "arm",
48442 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48443)]
48444pub fn vreinterpret_f32_u16(a: uint16x4_t) -> float32x2_t {
48445 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48446 unsafe {
48447 let ret_val: float32x2_t = transmute(a);
48448 simd_shuffle!(ret_val, ret_val, [1, 0])
48449 }
48450}
48451#[doc = "Vector reinterpret cast operation"]
48452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u16)"]
48453#[inline(always)]
48454#[cfg(target_endian = "little")]
48455#[target_feature(enable = "neon")]
48456#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48457#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48458#[cfg_attr(
48459 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48460 assert_instr(nop)
48461)]
48462#[cfg_attr(
48463 not(target_arch = "arm"),
48464 stable(feature = "neon_intrinsics", since = "1.59.0")
48465)]
48466#[cfg_attr(
48467 target_arch = "arm",
48468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48469)]
48470pub fn vreinterpret_s8_u16(a: uint16x4_t) -> int8x8_t {
48471 unsafe { transmute(a) }
48472}
48473#[doc = "Vector reinterpret cast operation"]
48474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u16)"]
48475#[inline(always)]
48476#[cfg(target_endian = "big")]
48477#[target_feature(enable = "neon")]
48478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48479#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48480#[cfg_attr(
48481 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48482 assert_instr(nop)
48483)]
48484#[cfg_attr(
48485 not(target_arch = "arm"),
48486 stable(feature = "neon_intrinsics", since = "1.59.0")
48487)]
48488#[cfg_attr(
48489 target_arch = "arm",
48490 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48491)]
48492pub fn vreinterpret_s8_u16(a: uint16x4_t) -> int8x8_t {
48493 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48494 unsafe {
48495 let ret_val: int8x8_t = transmute(a);
48496 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48497 }
48498}
48499#[doc = "Vector reinterpret cast operation"]
48500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u16)"]
48501#[inline(always)]
48502#[cfg(target_endian = "little")]
48503#[target_feature(enable = "neon")]
48504#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48505#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48506#[cfg_attr(
48507 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48508 assert_instr(nop)
48509)]
48510#[cfg_attr(
48511 not(target_arch = "arm"),
48512 stable(feature = "neon_intrinsics", since = "1.59.0")
48513)]
48514#[cfg_attr(
48515 target_arch = "arm",
48516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48517)]
48518pub fn vreinterpret_s16_u16(a: uint16x4_t) -> int16x4_t {
48519 unsafe { transmute(a) }
48520}
48521#[doc = "Vector reinterpret cast operation"]
48522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u16)"]
48523#[inline(always)]
48524#[cfg(target_endian = "big")]
48525#[target_feature(enable = "neon")]
48526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48528#[cfg_attr(
48529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48530 assert_instr(nop)
48531)]
48532#[cfg_attr(
48533 not(target_arch = "arm"),
48534 stable(feature = "neon_intrinsics", since = "1.59.0")
48535)]
48536#[cfg_attr(
48537 target_arch = "arm",
48538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48539)]
48540pub fn vreinterpret_s16_u16(a: uint16x4_t) -> int16x4_t {
48541 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48542 unsafe {
48543 let ret_val: int16x4_t = transmute(a);
48544 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48545 }
48546}
48547#[doc = "Vector reinterpret cast operation"]
48548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u16)"]
48549#[inline(always)]
48550#[cfg(target_endian = "little")]
48551#[target_feature(enable = "neon")]
48552#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48553#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48554#[cfg_attr(
48555 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48556 assert_instr(nop)
48557)]
48558#[cfg_attr(
48559 not(target_arch = "arm"),
48560 stable(feature = "neon_intrinsics", since = "1.59.0")
48561)]
48562#[cfg_attr(
48563 target_arch = "arm",
48564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48565)]
48566pub fn vreinterpret_s32_u16(a: uint16x4_t) -> int32x2_t {
48567 unsafe { transmute(a) }
48568}
48569#[doc = "Vector reinterpret cast operation"]
48570#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u16)"]
48571#[inline(always)]
48572#[cfg(target_endian = "big")]
48573#[target_feature(enable = "neon")]
48574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48575#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48576#[cfg_attr(
48577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48578 assert_instr(nop)
48579)]
48580#[cfg_attr(
48581 not(target_arch = "arm"),
48582 stable(feature = "neon_intrinsics", since = "1.59.0")
48583)]
48584#[cfg_attr(
48585 target_arch = "arm",
48586 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48587)]
48588pub fn vreinterpret_s32_u16(a: uint16x4_t) -> int32x2_t {
48589 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48590 unsafe {
48591 let ret_val: int32x2_t = transmute(a);
48592 simd_shuffle!(ret_val, ret_val, [1, 0])
48593 }
48594}
48595#[doc = "Vector reinterpret cast operation"]
48596#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u16)"]
48597#[inline(always)]
48598#[cfg(target_endian = "little")]
48599#[target_feature(enable = "neon")]
48600#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48601#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48602#[cfg_attr(
48603 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48604 assert_instr(nop)
48605)]
48606#[cfg_attr(
48607 not(target_arch = "arm"),
48608 stable(feature = "neon_intrinsics", since = "1.59.0")
48609)]
48610#[cfg_attr(
48611 target_arch = "arm",
48612 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48613)]
48614pub fn vreinterpret_s64_u16(a: uint16x4_t) -> int64x1_t {
48615 unsafe { transmute(a) }
48616}
48617#[doc = "Vector reinterpret cast operation"]
48618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u16)"]
48619#[inline(always)]
48620#[cfg(target_endian = "big")]
48621#[target_feature(enable = "neon")]
48622#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48623#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48624#[cfg_attr(
48625 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48626 assert_instr(nop)
48627)]
48628#[cfg_attr(
48629 not(target_arch = "arm"),
48630 stable(feature = "neon_intrinsics", since = "1.59.0")
48631)]
48632#[cfg_attr(
48633 target_arch = "arm",
48634 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48635)]
48636pub fn vreinterpret_s64_u16(a: uint16x4_t) -> int64x1_t {
48637 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48638 unsafe { transmute(a) }
48639}
48640#[doc = "Vector reinterpret cast operation"]
48641#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u16)"]
48642#[inline(always)]
48643#[cfg(target_endian = "little")]
48644#[target_feature(enable = "neon")]
48645#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48646#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48647#[cfg_attr(
48648 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48649 assert_instr(nop)
48650)]
48651#[cfg_attr(
48652 not(target_arch = "arm"),
48653 stable(feature = "neon_intrinsics", since = "1.59.0")
48654)]
48655#[cfg_attr(
48656 target_arch = "arm",
48657 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48658)]
48659pub fn vreinterpret_u8_u16(a: uint16x4_t) -> uint8x8_t {
48660 unsafe { transmute(a) }
48661}
48662#[doc = "Vector reinterpret cast operation"]
48663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u16)"]
48664#[inline(always)]
48665#[cfg(target_endian = "big")]
48666#[target_feature(enable = "neon")]
48667#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48668#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48669#[cfg_attr(
48670 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48671 assert_instr(nop)
48672)]
48673#[cfg_attr(
48674 not(target_arch = "arm"),
48675 stable(feature = "neon_intrinsics", since = "1.59.0")
48676)]
48677#[cfg_attr(
48678 target_arch = "arm",
48679 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48680)]
48681pub fn vreinterpret_u8_u16(a: uint16x4_t) -> uint8x8_t {
48682 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48683 unsafe {
48684 let ret_val: uint8x8_t = transmute(a);
48685 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48686 }
48687}
48688#[doc = "Vector reinterpret cast operation"]
48689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u16)"]
48690#[inline(always)]
48691#[cfg(target_endian = "little")]
48692#[target_feature(enable = "neon")]
48693#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48694#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48695#[cfg_attr(
48696 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48697 assert_instr(nop)
48698)]
48699#[cfg_attr(
48700 not(target_arch = "arm"),
48701 stable(feature = "neon_intrinsics", since = "1.59.0")
48702)]
48703#[cfg_attr(
48704 target_arch = "arm",
48705 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48706)]
48707pub fn vreinterpret_u32_u16(a: uint16x4_t) -> uint32x2_t {
48708 unsafe { transmute(a) }
48709}
48710#[doc = "Vector reinterpret cast operation"]
48711#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u16)"]
48712#[inline(always)]
48713#[cfg(target_endian = "big")]
48714#[target_feature(enable = "neon")]
48715#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48716#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48717#[cfg_attr(
48718 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48719 assert_instr(nop)
48720)]
48721#[cfg_attr(
48722 not(target_arch = "arm"),
48723 stable(feature = "neon_intrinsics", since = "1.59.0")
48724)]
48725#[cfg_attr(
48726 target_arch = "arm",
48727 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48728)]
48729pub fn vreinterpret_u32_u16(a: uint16x4_t) -> uint32x2_t {
48730 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48731 unsafe {
48732 let ret_val: uint32x2_t = transmute(a);
48733 simd_shuffle!(ret_val, ret_val, [1, 0])
48734 }
48735}
48736#[doc = "Vector reinterpret cast operation"]
48737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u16)"]
48738#[inline(always)]
48739#[cfg(target_endian = "little")]
48740#[target_feature(enable = "neon")]
48741#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48742#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48743#[cfg_attr(
48744 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48745 assert_instr(nop)
48746)]
48747#[cfg_attr(
48748 not(target_arch = "arm"),
48749 stable(feature = "neon_intrinsics", since = "1.59.0")
48750)]
48751#[cfg_attr(
48752 target_arch = "arm",
48753 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48754)]
48755pub fn vreinterpret_u64_u16(a: uint16x4_t) -> uint64x1_t {
48756 unsafe { transmute(a) }
48757}
48758#[doc = "Vector reinterpret cast operation"]
48759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u16)"]
48760#[inline(always)]
48761#[cfg(target_endian = "big")]
48762#[target_feature(enable = "neon")]
48763#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48764#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48765#[cfg_attr(
48766 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48767 assert_instr(nop)
48768)]
48769#[cfg_attr(
48770 not(target_arch = "arm"),
48771 stable(feature = "neon_intrinsics", since = "1.59.0")
48772)]
48773#[cfg_attr(
48774 target_arch = "arm",
48775 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48776)]
48777pub fn vreinterpret_u64_u16(a: uint16x4_t) -> uint64x1_t {
48778 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48779 unsafe { transmute(a) }
48780}
48781#[doc = "Vector reinterpret cast operation"]
48782#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u16)"]
48783#[inline(always)]
48784#[cfg(target_endian = "little")]
48785#[target_feature(enable = "neon")]
48786#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48787#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48788#[cfg_attr(
48789 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48790 assert_instr(nop)
48791)]
48792#[cfg_attr(
48793 not(target_arch = "arm"),
48794 stable(feature = "neon_intrinsics", since = "1.59.0")
48795)]
48796#[cfg_attr(
48797 target_arch = "arm",
48798 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48799)]
48800pub fn vreinterpret_p8_u16(a: uint16x4_t) -> poly8x8_t {
48801 unsafe { transmute(a) }
48802}
48803#[doc = "Vector reinterpret cast operation"]
48804#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u16)"]
48805#[inline(always)]
48806#[cfg(target_endian = "big")]
48807#[target_feature(enable = "neon")]
48808#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48809#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48810#[cfg_attr(
48811 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48812 assert_instr(nop)
48813)]
48814#[cfg_attr(
48815 not(target_arch = "arm"),
48816 stable(feature = "neon_intrinsics", since = "1.59.0")
48817)]
48818#[cfg_attr(
48819 target_arch = "arm",
48820 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48821)]
48822pub fn vreinterpret_p8_u16(a: uint16x4_t) -> poly8x8_t {
48823 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48824 unsafe {
48825 let ret_val: poly8x8_t = transmute(a);
48826 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
48827 }
48828}
48829#[doc = "Vector reinterpret cast operation"]
48830#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u16)"]
48831#[inline(always)]
48832#[cfg(target_endian = "little")]
48833#[target_feature(enable = "neon")]
48834#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48835#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48836#[cfg_attr(
48837 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48838 assert_instr(nop)
48839)]
48840#[cfg_attr(
48841 not(target_arch = "arm"),
48842 stable(feature = "neon_intrinsics", since = "1.59.0")
48843)]
48844#[cfg_attr(
48845 target_arch = "arm",
48846 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48847)]
48848pub fn vreinterpret_p16_u16(a: uint16x4_t) -> poly16x4_t {
48849 unsafe { transmute(a) }
48850}
48851#[doc = "Vector reinterpret cast operation"]
48852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u16)"]
48853#[inline(always)]
48854#[cfg(target_endian = "big")]
48855#[target_feature(enable = "neon")]
48856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48858#[cfg_attr(
48859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48860 assert_instr(nop)
48861)]
48862#[cfg_attr(
48863 not(target_arch = "arm"),
48864 stable(feature = "neon_intrinsics", since = "1.59.0")
48865)]
48866#[cfg_attr(
48867 target_arch = "arm",
48868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48869)]
48870pub fn vreinterpret_p16_u16(a: uint16x4_t) -> poly16x4_t {
48871 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
48872 unsafe {
48873 let ret_val: poly16x4_t = transmute(a);
48874 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48875 }
48876}
48877#[doc = "Vector reinterpret cast operation"]
48878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u16)"]
48879#[inline(always)]
48880#[cfg(target_endian = "little")]
48881#[target_feature(enable = "neon")]
48882#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48883#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48884#[cfg_attr(
48885 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48886 assert_instr(nop)
48887)]
48888#[cfg_attr(
48889 not(target_arch = "arm"),
48890 stable(feature = "neon_intrinsics", since = "1.59.0")
48891)]
48892#[cfg_attr(
48893 target_arch = "arm",
48894 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48895)]
48896pub fn vreinterpretq_f32_u16(a: uint16x8_t) -> float32x4_t {
48897 unsafe { transmute(a) }
48898}
48899#[doc = "Vector reinterpret cast operation"]
48900#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u16)"]
48901#[inline(always)]
48902#[cfg(target_endian = "big")]
48903#[target_feature(enable = "neon")]
48904#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48905#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48906#[cfg_attr(
48907 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48908 assert_instr(nop)
48909)]
48910#[cfg_attr(
48911 not(target_arch = "arm"),
48912 stable(feature = "neon_intrinsics", since = "1.59.0")
48913)]
48914#[cfg_attr(
48915 target_arch = "arm",
48916 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48917)]
48918pub fn vreinterpretq_f32_u16(a: uint16x8_t) -> float32x4_t {
48919 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
48920 unsafe {
48921 let ret_val: float32x4_t = transmute(a);
48922 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
48923 }
48924}
48925#[doc = "Vector reinterpret cast operation"]
48926#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u16)"]
48927#[inline(always)]
48928#[cfg(target_endian = "little")]
48929#[target_feature(enable = "neon")]
48930#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48931#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48932#[cfg_attr(
48933 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48934 assert_instr(nop)
48935)]
48936#[cfg_attr(
48937 not(target_arch = "arm"),
48938 stable(feature = "neon_intrinsics", since = "1.59.0")
48939)]
48940#[cfg_attr(
48941 target_arch = "arm",
48942 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48943)]
48944pub fn vreinterpretq_s8_u16(a: uint16x8_t) -> int8x16_t {
48945 unsafe { transmute(a) }
48946}
48947#[doc = "Vector reinterpret cast operation"]
48948#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u16)"]
48949#[inline(always)]
48950#[cfg(target_endian = "big")]
48951#[target_feature(enable = "neon")]
48952#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48953#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48954#[cfg_attr(
48955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48956 assert_instr(nop)
48957)]
48958#[cfg_attr(
48959 not(target_arch = "arm"),
48960 stable(feature = "neon_intrinsics", since = "1.59.0")
48961)]
48962#[cfg_attr(
48963 target_arch = "arm",
48964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48965)]
48966pub fn vreinterpretq_s8_u16(a: uint16x8_t) -> int8x16_t {
48967 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
48968 unsafe {
48969 let ret_val: int8x16_t = transmute(a);
48970 simd_shuffle!(
48971 ret_val,
48972 ret_val,
48973 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
48974 )
48975 }
48976}
48977#[doc = "Vector reinterpret cast operation"]
48978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u16)"]
48979#[inline(always)]
48980#[cfg(target_endian = "little")]
48981#[target_feature(enable = "neon")]
48982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
48983#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
48984#[cfg_attr(
48985 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
48986 assert_instr(nop)
48987)]
48988#[cfg_attr(
48989 not(target_arch = "arm"),
48990 stable(feature = "neon_intrinsics", since = "1.59.0")
48991)]
48992#[cfg_attr(
48993 target_arch = "arm",
48994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
48995)]
48996pub fn vreinterpretq_s16_u16(a: uint16x8_t) -> int16x8_t {
48997 unsafe { transmute(a) }
48998}
48999#[doc = "Vector reinterpret cast operation"]
49000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u16)"]
49001#[inline(always)]
49002#[cfg(target_endian = "big")]
49003#[target_feature(enable = "neon")]
49004#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49005#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49006#[cfg_attr(
49007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49008 assert_instr(nop)
49009)]
49010#[cfg_attr(
49011 not(target_arch = "arm"),
49012 stable(feature = "neon_intrinsics", since = "1.59.0")
49013)]
49014#[cfg_attr(
49015 target_arch = "arm",
49016 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49017)]
49018pub fn vreinterpretq_s16_u16(a: uint16x8_t) -> int16x8_t {
49019 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49020 unsafe {
49021 let ret_val: int16x8_t = transmute(a);
49022 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49023 }
49024}
49025#[doc = "Vector reinterpret cast operation"]
49026#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u16)"]
49027#[inline(always)]
49028#[cfg(target_endian = "little")]
49029#[target_feature(enable = "neon")]
49030#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49031#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49032#[cfg_attr(
49033 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49034 assert_instr(nop)
49035)]
49036#[cfg_attr(
49037 not(target_arch = "arm"),
49038 stable(feature = "neon_intrinsics", since = "1.59.0")
49039)]
49040#[cfg_attr(
49041 target_arch = "arm",
49042 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49043)]
49044pub fn vreinterpretq_s32_u16(a: uint16x8_t) -> int32x4_t {
49045 unsafe { transmute(a) }
49046}
49047#[doc = "Vector reinterpret cast operation"]
49048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u16)"]
49049#[inline(always)]
49050#[cfg(target_endian = "big")]
49051#[target_feature(enable = "neon")]
49052#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49053#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49054#[cfg_attr(
49055 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49056 assert_instr(nop)
49057)]
49058#[cfg_attr(
49059 not(target_arch = "arm"),
49060 stable(feature = "neon_intrinsics", since = "1.59.0")
49061)]
49062#[cfg_attr(
49063 target_arch = "arm",
49064 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49065)]
49066pub fn vreinterpretq_s32_u16(a: uint16x8_t) -> int32x4_t {
49067 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49068 unsafe {
49069 let ret_val: int32x4_t = transmute(a);
49070 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49071 }
49072}
49073#[doc = "Vector reinterpret cast operation"]
49074#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u16)"]
49075#[inline(always)]
49076#[cfg(target_endian = "little")]
49077#[target_feature(enable = "neon")]
49078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49079#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49080#[cfg_attr(
49081 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49082 assert_instr(nop)
49083)]
49084#[cfg_attr(
49085 not(target_arch = "arm"),
49086 stable(feature = "neon_intrinsics", since = "1.59.0")
49087)]
49088#[cfg_attr(
49089 target_arch = "arm",
49090 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49091)]
49092pub fn vreinterpretq_s64_u16(a: uint16x8_t) -> int64x2_t {
49093 unsafe { transmute(a) }
49094}
49095#[doc = "Vector reinterpret cast operation"]
49096#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u16)"]
49097#[inline(always)]
49098#[cfg(target_endian = "big")]
49099#[target_feature(enable = "neon")]
49100#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49101#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49102#[cfg_attr(
49103 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49104 assert_instr(nop)
49105)]
49106#[cfg_attr(
49107 not(target_arch = "arm"),
49108 stable(feature = "neon_intrinsics", since = "1.59.0")
49109)]
49110#[cfg_attr(
49111 target_arch = "arm",
49112 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49113)]
49114pub fn vreinterpretq_s64_u16(a: uint16x8_t) -> int64x2_t {
49115 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49116 unsafe {
49117 let ret_val: int64x2_t = transmute(a);
49118 simd_shuffle!(ret_val, ret_val, [1, 0])
49119 }
49120}
49121#[doc = "Vector reinterpret cast operation"]
49122#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u16)"]
49123#[inline(always)]
49124#[cfg(target_endian = "little")]
49125#[target_feature(enable = "neon")]
49126#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49127#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49128#[cfg_attr(
49129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49130 assert_instr(nop)
49131)]
49132#[cfg_attr(
49133 not(target_arch = "arm"),
49134 stable(feature = "neon_intrinsics", since = "1.59.0")
49135)]
49136#[cfg_attr(
49137 target_arch = "arm",
49138 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49139)]
49140pub fn vreinterpretq_u8_u16(a: uint16x8_t) -> uint8x16_t {
49141 unsafe { transmute(a) }
49142}
49143#[doc = "Vector reinterpret cast operation"]
49144#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u16)"]
49145#[inline(always)]
49146#[cfg(target_endian = "big")]
49147#[target_feature(enable = "neon")]
49148#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49149#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49150#[cfg_attr(
49151 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49152 assert_instr(nop)
49153)]
49154#[cfg_attr(
49155 not(target_arch = "arm"),
49156 stable(feature = "neon_intrinsics", since = "1.59.0")
49157)]
49158#[cfg_attr(
49159 target_arch = "arm",
49160 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49161)]
49162pub fn vreinterpretq_u8_u16(a: uint16x8_t) -> uint8x16_t {
49163 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49164 unsafe {
49165 let ret_val: uint8x16_t = transmute(a);
49166 simd_shuffle!(
49167 ret_val,
49168 ret_val,
49169 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
49170 )
49171 }
49172}
49173#[doc = "Vector reinterpret cast operation"]
49174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u16)"]
49175#[inline(always)]
49176#[cfg(target_endian = "little")]
49177#[target_feature(enable = "neon")]
49178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49179#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49180#[cfg_attr(
49181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49182 assert_instr(nop)
49183)]
49184#[cfg_attr(
49185 not(target_arch = "arm"),
49186 stable(feature = "neon_intrinsics", since = "1.59.0")
49187)]
49188#[cfg_attr(
49189 target_arch = "arm",
49190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49191)]
49192pub fn vreinterpretq_u32_u16(a: uint16x8_t) -> uint32x4_t {
49193 unsafe { transmute(a) }
49194}
49195#[doc = "Vector reinterpret cast operation"]
49196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u16)"]
49197#[inline(always)]
49198#[cfg(target_endian = "big")]
49199#[target_feature(enable = "neon")]
49200#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49201#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49202#[cfg_attr(
49203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49204 assert_instr(nop)
49205)]
49206#[cfg_attr(
49207 not(target_arch = "arm"),
49208 stable(feature = "neon_intrinsics", since = "1.59.0")
49209)]
49210#[cfg_attr(
49211 target_arch = "arm",
49212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49213)]
49214pub fn vreinterpretq_u32_u16(a: uint16x8_t) -> uint32x4_t {
49215 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49216 unsafe {
49217 let ret_val: uint32x4_t = transmute(a);
49218 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49219 }
49220}
49221#[doc = "Vector reinterpret cast operation"]
49222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u16)"]
49223#[inline(always)]
49224#[cfg(target_endian = "little")]
49225#[target_feature(enable = "neon")]
49226#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49228#[cfg_attr(
49229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49230 assert_instr(nop)
49231)]
49232#[cfg_attr(
49233 not(target_arch = "arm"),
49234 stable(feature = "neon_intrinsics", since = "1.59.0")
49235)]
49236#[cfg_attr(
49237 target_arch = "arm",
49238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49239)]
49240pub fn vreinterpretq_u64_u16(a: uint16x8_t) -> uint64x2_t {
49241 unsafe { transmute(a) }
49242}
49243#[doc = "Vector reinterpret cast operation"]
49244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u16)"]
49245#[inline(always)]
49246#[cfg(target_endian = "big")]
49247#[target_feature(enable = "neon")]
49248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49250#[cfg_attr(
49251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49252 assert_instr(nop)
49253)]
49254#[cfg_attr(
49255 not(target_arch = "arm"),
49256 stable(feature = "neon_intrinsics", since = "1.59.0")
49257)]
49258#[cfg_attr(
49259 target_arch = "arm",
49260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49261)]
49262pub fn vreinterpretq_u64_u16(a: uint16x8_t) -> uint64x2_t {
49263 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49264 unsafe {
49265 let ret_val: uint64x2_t = transmute(a);
49266 simd_shuffle!(ret_val, ret_val, [1, 0])
49267 }
49268}
49269#[doc = "Vector reinterpret cast operation"]
49270#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u16)"]
49271#[inline(always)]
49272#[cfg(target_endian = "little")]
49273#[target_feature(enable = "neon")]
49274#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49275#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49276#[cfg_attr(
49277 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49278 assert_instr(nop)
49279)]
49280#[cfg_attr(
49281 not(target_arch = "arm"),
49282 stable(feature = "neon_intrinsics", since = "1.59.0")
49283)]
49284#[cfg_attr(
49285 target_arch = "arm",
49286 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49287)]
49288pub fn vreinterpretq_p8_u16(a: uint16x8_t) -> poly8x16_t {
49289 unsafe { transmute(a) }
49290}
49291#[doc = "Vector reinterpret cast operation"]
49292#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u16)"]
49293#[inline(always)]
49294#[cfg(target_endian = "big")]
49295#[target_feature(enable = "neon")]
49296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49298#[cfg_attr(
49299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49300 assert_instr(nop)
49301)]
49302#[cfg_attr(
49303 not(target_arch = "arm"),
49304 stable(feature = "neon_intrinsics", since = "1.59.0")
49305)]
49306#[cfg_attr(
49307 target_arch = "arm",
49308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49309)]
49310pub fn vreinterpretq_p8_u16(a: uint16x8_t) -> poly8x16_t {
49311 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49312 unsafe {
49313 let ret_val: poly8x16_t = transmute(a);
49314 simd_shuffle!(
49315 ret_val,
49316 ret_val,
49317 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
49318 )
49319 }
49320}
49321#[doc = "Vector reinterpret cast operation"]
49322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u16)"]
49323#[inline(always)]
49324#[cfg(target_endian = "little")]
49325#[target_feature(enable = "neon")]
49326#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49327#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49328#[cfg_attr(
49329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49330 assert_instr(nop)
49331)]
49332#[cfg_attr(
49333 not(target_arch = "arm"),
49334 stable(feature = "neon_intrinsics", since = "1.59.0")
49335)]
49336#[cfg_attr(
49337 target_arch = "arm",
49338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49339)]
49340pub fn vreinterpretq_p16_u16(a: uint16x8_t) -> poly16x8_t {
49341 unsafe { transmute(a) }
49342}
49343#[doc = "Vector reinterpret cast operation"]
49344#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u16)"]
49345#[inline(always)]
49346#[cfg(target_endian = "big")]
49347#[target_feature(enable = "neon")]
49348#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49349#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49350#[cfg_attr(
49351 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49352 assert_instr(nop)
49353)]
49354#[cfg_attr(
49355 not(target_arch = "arm"),
49356 stable(feature = "neon_intrinsics", since = "1.59.0")
49357)]
49358#[cfg_attr(
49359 target_arch = "arm",
49360 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49361)]
49362pub fn vreinterpretq_p16_u16(a: uint16x8_t) -> poly16x8_t {
49363 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
49364 unsafe {
49365 let ret_val: poly16x8_t = transmute(a);
49366 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49367 }
49368}
49369#[doc = "Vector reinterpret cast operation"]
49370#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u32)"]
49371#[inline(always)]
49372#[cfg(target_endian = "little")]
49373#[target_feature(enable = "neon")]
49374#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49375#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49376#[cfg_attr(
49377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49378 assert_instr(nop)
49379)]
49380#[cfg_attr(
49381 not(target_arch = "arm"),
49382 stable(feature = "neon_intrinsics", since = "1.59.0")
49383)]
49384#[cfg_attr(
49385 target_arch = "arm",
49386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49387)]
49388pub fn vreinterpret_f32_u32(a: uint32x2_t) -> float32x2_t {
49389 unsafe { transmute(a) }
49390}
49391#[doc = "Vector reinterpret cast operation"]
49392#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u32)"]
49393#[inline(always)]
49394#[cfg(target_endian = "big")]
49395#[target_feature(enable = "neon")]
49396#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49397#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49398#[cfg_attr(
49399 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49400 assert_instr(nop)
49401)]
49402#[cfg_attr(
49403 not(target_arch = "arm"),
49404 stable(feature = "neon_intrinsics", since = "1.59.0")
49405)]
49406#[cfg_attr(
49407 target_arch = "arm",
49408 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49409)]
49410pub fn vreinterpret_f32_u32(a: uint32x2_t) -> float32x2_t {
49411 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49412 unsafe {
49413 let ret_val: float32x2_t = transmute(a);
49414 simd_shuffle!(ret_val, ret_val, [1, 0])
49415 }
49416}
49417#[doc = "Vector reinterpret cast operation"]
49418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u32)"]
49419#[inline(always)]
49420#[cfg(target_endian = "little")]
49421#[target_feature(enable = "neon")]
49422#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49423#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49424#[cfg_attr(
49425 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49426 assert_instr(nop)
49427)]
49428#[cfg_attr(
49429 not(target_arch = "arm"),
49430 stable(feature = "neon_intrinsics", since = "1.59.0")
49431)]
49432#[cfg_attr(
49433 target_arch = "arm",
49434 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49435)]
49436pub fn vreinterpret_s8_u32(a: uint32x2_t) -> int8x8_t {
49437 unsafe { transmute(a) }
49438}
49439#[doc = "Vector reinterpret cast operation"]
49440#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u32)"]
49441#[inline(always)]
49442#[cfg(target_endian = "big")]
49443#[target_feature(enable = "neon")]
49444#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49445#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49446#[cfg_attr(
49447 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49448 assert_instr(nop)
49449)]
49450#[cfg_attr(
49451 not(target_arch = "arm"),
49452 stable(feature = "neon_intrinsics", since = "1.59.0")
49453)]
49454#[cfg_attr(
49455 target_arch = "arm",
49456 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49457)]
49458pub fn vreinterpret_s8_u32(a: uint32x2_t) -> int8x8_t {
49459 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49460 unsafe {
49461 let ret_val: int8x8_t = transmute(a);
49462 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49463 }
49464}
49465#[doc = "Vector reinterpret cast operation"]
49466#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u32)"]
49467#[inline(always)]
49468#[cfg(target_endian = "little")]
49469#[target_feature(enable = "neon")]
49470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49471#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49472#[cfg_attr(
49473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49474 assert_instr(nop)
49475)]
49476#[cfg_attr(
49477 not(target_arch = "arm"),
49478 stable(feature = "neon_intrinsics", since = "1.59.0")
49479)]
49480#[cfg_attr(
49481 target_arch = "arm",
49482 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49483)]
49484pub fn vreinterpret_s16_u32(a: uint32x2_t) -> int16x4_t {
49485 unsafe { transmute(a) }
49486}
49487#[doc = "Vector reinterpret cast operation"]
49488#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u32)"]
49489#[inline(always)]
49490#[cfg(target_endian = "big")]
49491#[target_feature(enable = "neon")]
49492#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49493#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49494#[cfg_attr(
49495 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49496 assert_instr(nop)
49497)]
49498#[cfg_attr(
49499 not(target_arch = "arm"),
49500 stable(feature = "neon_intrinsics", since = "1.59.0")
49501)]
49502#[cfg_attr(
49503 target_arch = "arm",
49504 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49505)]
49506pub fn vreinterpret_s16_u32(a: uint32x2_t) -> int16x4_t {
49507 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49508 unsafe {
49509 let ret_val: int16x4_t = transmute(a);
49510 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49511 }
49512}
49513#[doc = "Vector reinterpret cast operation"]
49514#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u32)"]
49515#[inline(always)]
49516#[cfg(target_endian = "little")]
49517#[target_feature(enable = "neon")]
49518#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49519#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49520#[cfg_attr(
49521 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49522 assert_instr(nop)
49523)]
49524#[cfg_attr(
49525 not(target_arch = "arm"),
49526 stable(feature = "neon_intrinsics", since = "1.59.0")
49527)]
49528#[cfg_attr(
49529 target_arch = "arm",
49530 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49531)]
49532pub fn vreinterpret_s32_u32(a: uint32x2_t) -> int32x2_t {
49533 unsafe { transmute(a) }
49534}
49535#[doc = "Vector reinterpret cast operation"]
49536#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u32)"]
49537#[inline(always)]
49538#[cfg(target_endian = "big")]
49539#[target_feature(enable = "neon")]
49540#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49541#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49542#[cfg_attr(
49543 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49544 assert_instr(nop)
49545)]
49546#[cfg_attr(
49547 not(target_arch = "arm"),
49548 stable(feature = "neon_intrinsics", since = "1.59.0")
49549)]
49550#[cfg_attr(
49551 target_arch = "arm",
49552 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49553)]
49554pub fn vreinterpret_s32_u32(a: uint32x2_t) -> int32x2_t {
49555 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49556 unsafe {
49557 let ret_val: int32x2_t = transmute(a);
49558 simd_shuffle!(ret_val, ret_val, [1, 0])
49559 }
49560}
49561#[doc = "Vector reinterpret cast operation"]
49562#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u32)"]
49563#[inline(always)]
49564#[cfg(target_endian = "little")]
49565#[target_feature(enable = "neon")]
49566#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49567#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49568#[cfg_attr(
49569 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49570 assert_instr(nop)
49571)]
49572#[cfg_attr(
49573 not(target_arch = "arm"),
49574 stable(feature = "neon_intrinsics", since = "1.59.0")
49575)]
49576#[cfg_attr(
49577 target_arch = "arm",
49578 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49579)]
49580pub fn vreinterpret_s64_u32(a: uint32x2_t) -> int64x1_t {
49581 unsafe { transmute(a) }
49582}
49583#[doc = "Vector reinterpret cast operation"]
49584#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u32)"]
49585#[inline(always)]
49586#[cfg(target_endian = "big")]
49587#[target_feature(enable = "neon")]
49588#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49589#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49590#[cfg_attr(
49591 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49592 assert_instr(nop)
49593)]
49594#[cfg_attr(
49595 not(target_arch = "arm"),
49596 stable(feature = "neon_intrinsics", since = "1.59.0")
49597)]
49598#[cfg_attr(
49599 target_arch = "arm",
49600 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49601)]
49602pub fn vreinterpret_s64_u32(a: uint32x2_t) -> int64x1_t {
49603 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49604 unsafe { transmute(a) }
49605}
49606#[doc = "Vector reinterpret cast operation"]
49607#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u32)"]
49608#[inline(always)]
49609#[cfg(target_endian = "little")]
49610#[target_feature(enable = "neon")]
49611#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49612#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49613#[cfg_attr(
49614 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49615 assert_instr(nop)
49616)]
49617#[cfg_attr(
49618 not(target_arch = "arm"),
49619 stable(feature = "neon_intrinsics", since = "1.59.0")
49620)]
49621#[cfg_attr(
49622 target_arch = "arm",
49623 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49624)]
49625pub fn vreinterpret_u8_u32(a: uint32x2_t) -> uint8x8_t {
49626 unsafe { transmute(a) }
49627}
49628#[doc = "Vector reinterpret cast operation"]
49629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u32)"]
49630#[inline(always)]
49631#[cfg(target_endian = "big")]
49632#[target_feature(enable = "neon")]
49633#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49634#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49635#[cfg_attr(
49636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49637 assert_instr(nop)
49638)]
49639#[cfg_attr(
49640 not(target_arch = "arm"),
49641 stable(feature = "neon_intrinsics", since = "1.59.0")
49642)]
49643#[cfg_attr(
49644 target_arch = "arm",
49645 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49646)]
49647pub fn vreinterpret_u8_u32(a: uint32x2_t) -> uint8x8_t {
49648 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49649 unsafe {
49650 let ret_val: uint8x8_t = transmute(a);
49651 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49652 }
49653}
49654#[doc = "Vector reinterpret cast operation"]
49655#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u32)"]
49656#[inline(always)]
49657#[cfg(target_endian = "little")]
49658#[target_feature(enable = "neon")]
49659#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49660#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49661#[cfg_attr(
49662 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49663 assert_instr(nop)
49664)]
49665#[cfg_attr(
49666 not(target_arch = "arm"),
49667 stable(feature = "neon_intrinsics", since = "1.59.0")
49668)]
49669#[cfg_attr(
49670 target_arch = "arm",
49671 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49672)]
49673pub fn vreinterpret_u16_u32(a: uint32x2_t) -> uint16x4_t {
49674 unsafe { transmute(a) }
49675}
49676#[doc = "Vector reinterpret cast operation"]
49677#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u32)"]
49678#[inline(always)]
49679#[cfg(target_endian = "big")]
49680#[target_feature(enable = "neon")]
49681#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49682#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49683#[cfg_attr(
49684 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49685 assert_instr(nop)
49686)]
49687#[cfg_attr(
49688 not(target_arch = "arm"),
49689 stable(feature = "neon_intrinsics", since = "1.59.0")
49690)]
49691#[cfg_attr(
49692 target_arch = "arm",
49693 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49694)]
49695pub fn vreinterpret_u16_u32(a: uint32x2_t) -> uint16x4_t {
49696 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49697 unsafe {
49698 let ret_val: uint16x4_t = transmute(a);
49699 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49700 }
49701}
49702#[doc = "Vector reinterpret cast operation"]
49703#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u32)"]
49704#[inline(always)]
49705#[cfg(target_endian = "little")]
49706#[target_feature(enable = "neon")]
49707#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49708#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49709#[cfg_attr(
49710 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49711 assert_instr(nop)
49712)]
49713#[cfg_attr(
49714 not(target_arch = "arm"),
49715 stable(feature = "neon_intrinsics", since = "1.59.0")
49716)]
49717#[cfg_attr(
49718 target_arch = "arm",
49719 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49720)]
49721pub fn vreinterpret_u64_u32(a: uint32x2_t) -> uint64x1_t {
49722 unsafe { transmute(a) }
49723}
49724#[doc = "Vector reinterpret cast operation"]
49725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_u32)"]
49726#[inline(always)]
49727#[cfg(target_endian = "big")]
49728#[target_feature(enable = "neon")]
49729#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49730#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49731#[cfg_attr(
49732 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49733 assert_instr(nop)
49734)]
49735#[cfg_attr(
49736 not(target_arch = "arm"),
49737 stable(feature = "neon_intrinsics", since = "1.59.0")
49738)]
49739#[cfg_attr(
49740 target_arch = "arm",
49741 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49742)]
49743pub fn vreinterpret_u64_u32(a: uint32x2_t) -> uint64x1_t {
49744 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49745 unsafe { transmute(a) }
49746}
49747#[doc = "Vector reinterpret cast operation"]
49748#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u32)"]
49749#[inline(always)]
49750#[cfg(target_endian = "little")]
49751#[target_feature(enable = "neon")]
49752#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49753#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49754#[cfg_attr(
49755 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49756 assert_instr(nop)
49757)]
49758#[cfg_attr(
49759 not(target_arch = "arm"),
49760 stable(feature = "neon_intrinsics", since = "1.59.0")
49761)]
49762#[cfg_attr(
49763 target_arch = "arm",
49764 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49765)]
49766pub fn vreinterpret_p8_u32(a: uint32x2_t) -> poly8x8_t {
49767 unsafe { transmute(a) }
49768}
49769#[doc = "Vector reinterpret cast operation"]
49770#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u32)"]
49771#[inline(always)]
49772#[cfg(target_endian = "big")]
49773#[target_feature(enable = "neon")]
49774#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49775#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49776#[cfg_attr(
49777 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49778 assert_instr(nop)
49779)]
49780#[cfg_attr(
49781 not(target_arch = "arm"),
49782 stable(feature = "neon_intrinsics", since = "1.59.0")
49783)]
49784#[cfg_attr(
49785 target_arch = "arm",
49786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49787)]
49788pub fn vreinterpret_p8_u32(a: uint32x2_t) -> poly8x8_t {
49789 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49790 unsafe {
49791 let ret_val: poly8x8_t = transmute(a);
49792 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49793 }
49794}
49795#[doc = "Vector reinterpret cast operation"]
49796#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u32)"]
49797#[inline(always)]
49798#[cfg(target_endian = "little")]
49799#[target_feature(enable = "neon")]
49800#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49801#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49802#[cfg_attr(
49803 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49804 assert_instr(nop)
49805)]
49806#[cfg_attr(
49807 not(target_arch = "arm"),
49808 stable(feature = "neon_intrinsics", since = "1.59.0")
49809)]
49810#[cfg_attr(
49811 target_arch = "arm",
49812 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49813)]
49814pub fn vreinterpret_p16_u32(a: uint32x2_t) -> poly16x4_t {
49815 unsafe { transmute(a) }
49816}
49817#[doc = "Vector reinterpret cast operation"]
49818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u32)"]
49819#[inline(always)]
49820#[cfg(target_endian = "big")]
49821#[target_feature(enable = "neon")]
49822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49823#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49824#[cfg_attr(
49825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49826 assert_instr(nop)
49827)]
49828#[cfg_attr(
49829 not(target_arch = "arm"),
49830 stable(feature = "neon_intrinsics", since = "1.59.0")
49831)]
49832#[cfg_attr(
49833 target_arch = "arm",
49834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49835)]
49836pub fn vreinterpret_p16_u32(a: uint32x2_t) -> poly16x4_t {
49837 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
49838 unsafe {
49839 let ret_val: poly16x4_t = transmute(a);
49840 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49841 }
49842}
49843#[doc = "Vector reinterpret cast operation"]
49844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u32)"]
49845#[inline(always)]
49846#[cfg(target_endian = "little")]
49847#[target_feature(enable = "neon")]
49848#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49849#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49850#[cfg_attr(
49851 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49852 assert_instr(nop)
49853)]
49854#[cfg_attr(
49855 not(target_arch = "arm"),
49856 stable(feature = "neon_intrinsics", since = "1.59.0")
49857)]
49858#[cfg_attr(
49859 target_arch = "arm",
49860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49861)]
49862pub fn vreinterpretq_f32_u32(a: uint32x4_t) -> float32x4_t {
49863 unsafe { transmute(a) }
49864}
49865#[doc = "Vector reinterpret cast operation"]
49866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u32)"]
49867#[inline(always)]
49868#[cfg(target_endian = "big")]
49869#[target_feature(enable = "neon")]
49870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49871#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49872#[cfg_attr(
49873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49874 assert_instr(nop)
49875)]
49876#[cfg_attr(
49877 not(target_arch = "arm"),
49878 stable(feature = "neon_intrinsics", since = "1.59.0")
49879)]
49880#[cfg_attr(
49881 target_arch = "arm",
49882 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49883)]
49884pub fn vreinterpretq_f32_u32(a: uint32x4_t) -> float32x4_t {
49885 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
49886 unsafe {
49887 let ret_val: float32x4_t = transmute(a);
49888 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
49889 }
49890}
49891#[doc = "Vector reinterpret cast operation"]
49892#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u32)"]
49893#[inline(always)]
49894#[cfg(target_endian = "little")]
49895#[target_feature(enable = "neon")]
49896#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49897#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49898#[cfg_attr(
49899 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49900 assert_instr(nop)
49901)]
49902#[cfg_attr(
49903 not(target_arch = "arm"),
49904 stable(feature = "neon_intrinsics", since = "1.59.0")
49905)]
49906#[cfg_attr(
49907 target_arch = "arm",
49908 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49909)]
49910pub fn vreinterpretq_s8_u32(a: uint32x4_t) -> int8x16_t {
49911 unsafe { transmute(a) }
49912}
49913#[doc = "Vector reinterpret cast operation"]
49914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u32)"]
49915#[inline(always)]
49916#[cfg(target_endian = "big")]
49917#[target_feature(enable = "neon")]
49918#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49919#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49920#[cfg_attr(
49921 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49922 assert_instr(nop)
49923)]
49924#[cfg_attr(
49925 not(target_arch = "arm"),
49926 stable(feature = "neon_intrinsics", since = "1.59.0")
49927)]
49928#[cfg_attr(
49929 target_arch = "arm",
49930 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49931)]
49932pub fn vreinterpretq_s8_u32(a: uint32x4_t) -> int8x16_t {
49933 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
49934 unsafe {
49935 let ret_val: int8x16_t = transmute(a);
49936 simd_shuffle!(
49937 ret_val,
49938 ret_val,
49939 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
49940 )
49941 }
49942}
49943#[doc = "Vector reinterpret cast operation"]
49944#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u32)"]
49945#[inline(always)]
49946#[cfg(target_endian = "little")]
49947#[target_feature(enable = "neon")]
49948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49949#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49950#[cfg_attr(
49951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49952 assert_instr(nop)
49953)]
49954#[cfg_attr(
49955 not(target_arch = "arm"),
49956 stable(feature = "neon_intrinsics", since = "1.59.0")
49957)]
49958#[cfg_attr(
49959 target_arch = "arm",
49960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49961)]
49962pub fn vreinterpretq_s16_u32(a: uint32x4_t) -> int16x8_t {
49963 unsafe { transmute(a) }
49964}
49965#[doc = "Vector reinterpret cast operation"]
49966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u32)"]
49967#[inline(always)]
49968#[cfg(target_endian = "big")]
49969#[target_feature(enable = "neon")]
49970#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49971#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49972#[cfg_attr(
49973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
49974 assert_instr(nop)
49975)]
49976#[cfg_attr(
49977 not(target_arch = "arm"),
49978 stable(feature = "neon_intrinsics", since = "1.59.0")
49979)]
49980#[cfg_attr(
49981 target_arch = "arm",
49982 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
49983)]
49984pub fn vreinterpretq_s16_u32(a: uint32x4_t) -> int16x8_t {
49985 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
49986 unsafe {
49987 let ret_val: int16x8_t = transmute(a);
49988 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
49989 }
49990}
49991#[doc = "Vector reinterpret cast operation"]
49992#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u32)"]
49993#[inline(always)]
49994#[cfg(target_endian = "little")]
49995#[target_feature(enable = "neon")]
49996#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
49997#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
49998#[cfg_attr(
49999 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50000 assert_instr(nop)
50001)]
50002#[cfg_attr(
50003 not(target_arch = "arm"),
50004 stable(feature = "neon_intrinsics", since = "1.59.0")
50005)]
50006#[cfg_attr(
50007 target_arch = "arm",
50008 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50009)]
50010pub fn vreinterpretq_s32_u32(a: uint32x4_t) -> int32x4_t {
50011 unsafe { transmute(a) }
50012}
50013#[doc = "Vector reinterpret cast operation"]
50014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u32)"]
50015#[inline(always)]
50016#[cfg(target_endian = "big")]
50017#[target_feature(enable = "neon")]
50018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50019#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50020#[cfg_attr(
50021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50022 assert_instr(nop)
50023)]
50024#[cfg_attr(
50025 not(target_arch = "arm"),
50026 stable(feature = "neon_intrinsics", since = "1.59.0")
50027)]
50028#[cfg_attr(
50029 target_arch = "arm",
50030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50031)]
50032pub fn vreinterpretq_s32_u32(a: uint32x4_t) -> int32x4_t {
50033 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50034 unsafe {
50035 let ret_val: int32x4_t = transmute(a);
50036 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50037 }
50038}
50039#[doc = "Vector reinterpret cast operation"]
50040#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u32)"]
50041#[inline(always)]
50042#[cfg(target_endian = "little")]
50043#[target_feature(enable = "neon")]
50044#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50045#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50046#[cfg_attr(
50047 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50048 assert_instr(nop)
50049)]
50050#[cfg_attr(
50051 not(target_arch = "arm"),
50052 stable(feature = "neon_intrinsics", since = "1.59.0")
50053)]
50054#[cfg_attr(
50055 target_arch = "arm",
50056 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50057)]
50058pub fn vreinterpretq_s64_u32(a: uint32x4_t) -> int64x2_t {
50059 unsafe { transmute(a) }
50060}
50061#[doc = "Vector reinterpret cast operation"]
50062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u32)"]
50063#[inline(always)]
50064#[cfg(target_endian = "big")]
50065#[target_feature(enable = "neon")]
50066#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50067#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50068#[cfg_attr(
50069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50070 assert_instr(nop)
50071)]
50072#[cfg_attr(
50073 not(target_arch = "arm"),
50074 stable(feature = "neon_intrinsics", since = "1.59.0")
50075)]
50076#[cfg_attr(
50077 target_arch = "arm",
50078 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50079)]
50080pub fn vreinterpretq_s64_u32(a: uint32x4_t) -> int64x2_t {
50081 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50082 unsafe {
50083 let ret_val: int64x2_t = transmute(a);
50084 simd_shuffle!(ret_val, ret_val, [1, 0])
50085 }
50086}
50087#[doc = "Vector reinterpret cast operation"]
50088#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u32)"]
50089#[inline(always)]
50090#[cfg(target_endian = "little")]
50091#[target_feature(enable = "neon")]
50092#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50093#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50094#[cfg_attr(
50095 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50096 assert_instr(nop)
50097)]
50098#[cfg_attr(
50099 not(target_arch = "arm"),
50100 stable(feature = "neon_intrinsics", since = "1.59.0")
50101)]
50102#[cfg_attr(
50103 target_arch = "arm",
50104 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50105)]
50106pub fn vreinterpretq_u8_u32(a: uint32x4_t) -> uint8x16_t {
50107 unsafe { transmute(a) }
50108}
50109#[doc = "Vector reinterpret cast operation"]
50110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u32)"]
50111#[inline(always)]
50112#[cfg(target_endian = "big")]
50113#[target_feature(enable = "neon")]
50114#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50115#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50116#[cfg_attr(
50117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50118 assert_instr(nop)
50119)]
50120#[cfg_attr(
50121 not(target_arch = "arm"),
50122 stable(feature = "neon_intrinsics", since = "1.59.0")
50123)]
50124#[cfg_attr(
50125 target_arch = "arm",
50126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50127)]
50128pub fn vreinterpretq_u8_u32(a: uint32x4_t) -> uint8x16_t {
50129 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50130 unsafe {
50131 let ret_val: uint8x16_t = transmute(a);
50132 simd_shuffle!(
50133 ret_val,
50134 ret_val,
50135 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
50136 )
50137 }
50138}
50139#[doc = "Vector reinterpret cast operation"]
50140#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u32)"]
50141#[inline(always)]
50142#[cfg(target_endian = "little")]
50143#[target_feature(enable = "neon")]
50144#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50145#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50146#[cfg_attr(
50147 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50148 assert_instr(nop)
50149)]
50150#[cfg_attr(
50151 not(target_arch = "arm"),
50152 stable(feature = "neon_intrinsics", since = "1.59.0")
50153)]
50154#[cfg_attr(
50155 target_arch = "arm",
50156 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50157)]
50158pub fn vreinterpretq_u16_u32(a: uint32x4_t) -> uint16x8_t {
50159 unsafe { transmute(a) }
50160}
50161#[doc = "Vector reinterpret cast operation"]
50162#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u32)"]
50163#[inline(always)]
50164#[cfg(target_endian = "big")]
50165#[target_feature(enable = "neon")]
50166#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50167#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50168#[cfg_attr(
50169 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50170 assert_instr(nop)
50171)]
50172#[cfg_attr(
50173 not(target_arch = "arm"),
50174 stable(feature = "neon_intrinsics", since = "1.59.0")
50175)]
50176#[cfg_attr(
50177 target_arch = "arm",
50178 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50179)]
50180pub fn vreinterpretq_u16_u32(a: uint32x4_t) -> uint16x8_t {
50181 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50182 unsafe {
50183 let ret_val: uint16x8_t = transmute(a);
50184 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50185 }
50186}
50187#[doc = "Vector reinterpret cast operation"]
50188#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u32)"]
50189#[inline(always)]
50190#[cfg(target_endian = "little")]
50191#[target_feature(enable = "neon")]
50192#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50193#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50194#[cfg_attr(
50195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50196 assert_instr(nop)
50197)]
50198#[cfg_attr(
50199 not(target_arch = "arm"),
50200 stable(feature = "neon_intrinsics", since = "1.59.0")
50201)]
50202#[cfg_attr(
50203 target_arch = "arm",
50204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50205)]
50206pub fn vreinterpretq_u64_u32(a: uint32x4_t) -> uint64x2_t {
50207 unsafe { transmute(a) }
50208}
50209#[doc = "Vector reinterpret cast operation"]
50210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_u32)"]
50211#[inline(always)]
50212#[cfg(target_endian = "big")]
50213#[target_feature(enable = "neon")]
50214#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50216#[cfg_attr(
50217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50218 assert_instr(nop)
50219)]
50220#[cfg_attr(
50221 not(target_arch = "arm"),
50222 stable(feature = "neon_intrinsics", since = "1.59.0")
50223)]
50224#[cfg_attr(
50225 target_arch = "arm",
50226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50227)]
50228pub fn vreinterpretq_u64_u32(a: uint32x4_t) -> uint64x2_t {
50229 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50230 unsafe {
50231 let ret_val: uint64x2_t = transmute(a);
50232 simd_shuffle!(ret_val, ret_val, [1, 0])
50233 }
50234}
50235#[doc = "Vector reinterpret cast operation"]
50236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u32)"]
50237#[inline(always)]
50238#[cfg(target_endian = "little")]
50239#[target_feature(enable = "neon")]
50240#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50241#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50242#[cfg_attr(
50243 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50244 assert_instr(nop)
50245)]
50246#[cfg_attr(
50247 not(target_arch = "arm"),
50248 stable(feature = "neon_intrinsics", since = "1.59.0")
50249)]
50250#[cfg_attr(
50251 target_arch = "arm",
50252 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50253)]
50254pub fn vreinterpretq_p8_u32(a: uint32x4_t) -> poly8x16_t {
50255 unsafe { transmute(a) }
50256}
50257#[doc = "Vector reinterpret cast operation"]
50258#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u32)"]
50259#[inline(always)]
50260#[cfg(target_endian = "big")]
50261#[target_feature(enable = "neon")]
50262#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50263#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50264#[cfg_attr(
50265 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50266 assert_instr(nop)
50267)]
50268#[cfg_attr(
50269 not(target_arch = "arm"),
50270 stable(feature = "neon_intrinsics", since = "1.59.0")
50271)]
50272#[cfg_attr(
50273 target_arch = "arm",
50274 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50275)]
50276pub fn vreinterpretq_p8_u32(a: uint32x4_t) -> poly8x16_t {
50277 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50278 unsafe {
50279 let ret_val: poly8x16_t = transmute(a);
50280 simd_shuffle!(
50281 ret_val,
50282 ret_val,
50283 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
50284 )
50285 }
50286}
50287#[doc = "Vector reinterpret cast operation"]
50288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u32)"]
50289#[inline(always)]
50290#[cfg(target_endian = "little")]
50291#[target_feature(enable = "neon")]
50292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50293#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50294#[cfg_attr(
50295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50296 assert_instr(nop)
50297)]
50298#[cfg_attr(
50299 not(target_arch = "arm"),
50300 stable(feature = "neon_intrinsics", since = "1.59.0")
50301)]
50302#[cfg_attr(
50303 target_arch = "arm",
50304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50305)]
50306pub fn vreinterpretq_p16_u32(a: uint32x4_t) -> poly16x8_t {
50307 unsafe { transmute(a) }
50308}
50309#[doc = "Vector reinterpret cast operation"]
50310#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u32)"]
50311#[inline(always)]
50312#[cfg(target_endian = "big")]
50313#[target_feature(enable = "neon")]
50314#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50315#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50316#[cfg_attr(
50317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50318 assert_instr(nop)
50319)]
50320#[cfg_attr(
50321 not(target_arch = "arm"),
50322 stable(feature = "neon_intrinsics", since = "1.59.0")
50323)]
50324#[cfg_attr(
50325 target_arch = "arm",
50326 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50327)]
50328pub fn vreinterpretq_p16_u32(a: uint32x4_t) -> poly16x8_t {
50329 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
50330 unsafe {
50331 let ret_val: poly16x8_t = transmute(a);
50332 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50333 }
50334}
50335#[doc = "Vector reinterpret cast operation"]
50336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u64)"]
50337#[inline(always)]
50338#[cfg(target_endian = "little")]
50339#[target_feature(enable = "neon")]
50340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50342#[cfg_attr(
50343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50344 assert_instr(nop)
50345)]
50346#[cfg_attr(
50347 not(target_arch = "arm"),
50348 stable(feature = "neon_intrinsics", since = "1.59.0")
50349)]
50350#[cfg_attr(
50351 target_arch = "arm",
50352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50353)]
50354pub fn vreinterpret_f32_u64(a: uint64x1_t) -> float32x2_t {
50355 unsafe { transmute(a) }
50356}
50357#[doc = "Vector reinterpret cast operation"]
50358#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_u64)"]
50359#[inline(always)]
50360#[cfg(target_endian = "big")]
50361#[target_feature(enable = "neon")]
50362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50363#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50364#[cfg_attr(
50365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50366 assert_instr(nop)
50367)]
50368#[cfg_attr(
50369 not(target_arch = "arm"),
50370 stable(feature = "neon_intrinsics", since = "1.59.0")
50371)]
50372#[cfg_attr(
50373 target_arch = "arm",
50374 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50375)]
50376pub fn vreinterpret_f32_u64(a: uint64x1_t) -> float32x2_t {
50377 unsafe {
50378 let ret_val: float32x2_t = transmute(a);
50379 simd_shuffle!(ret_val, ret_val, [1, 0])
50380 }
50381}
50382#[doc = "Vector reinterpret cast operation"]
50383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u64)"]
50384#[inline(always)]
50385#[cfg(target_endian = "little")]
50386#[target_feature(enable = "neon")]
50387#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50388#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50389#[cfg_attr(
50390 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50391 assert_instr(nop)
50392)]
50393#[cfg_attr(
50394 not(target_arch = "arm"),
50395 stable(feature = "neon_intrinsics", since = "1.59.0")
50396)]
50397#[cfg_attr(
50398 target_arch = "arm",
50399 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50400)]
50401pub fn vreinterpret_s8_u64(a: uint64x1_t) -> int8x8_t {
50402 unsafe { transmute(a) }
50403}
50404#[doc = "Vector reinterpret cast operation"]
50405#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_u64)"]
50406#[inline(always)]
50407#[cfg(target_endian = "big")]
50408#[target_feature(enable = "neon")]
50409#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50410#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50411#[cfg_attr(
50412 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50413 assert_instr(nop)
50414)]
50415#[cfg_attr(
50416 not(target_arch = "arm"),
50417 stable(feature = "neon_intrinsics", since = "1.59.0")
50418)]
50419#[cfg_attr(
50420 target_arch = "arm",
50421 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50422)]
50423pub fn vreinterpret_s8_u64(a: uint64x1_t) -> int8x8_t {
50424 unsafe {
50425 let ret_val: int8x8_t = transmute(a);
50426 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50427 }
50428}
50429#[doc = "Vector reinterpret cast operation"]
50430#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u64)"]
50431#[inline(always)]
50432#[cfg(target_endian = "little")]
50433#[target_feature(enable = "neon")]
50434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50435#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50436#[cfg_attr(
50437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50438 assert_instr(nop)
50439)]
50440#[cfg_attr(
50441 not(target_arch = "arm"),
50442 stable(feature = "neon_intrinsics", since = "1.59.0")
50443)]
50444#[cfg_attr(
50445 target_arch = "arm",
50446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50447)]
50448pub fn vreinterpret_s16_u64(a: uint64x1_t) -> int16x4_t {
50449 unsafe { transmute(a) }
50450}
50451#[doc = "Vector reinterpret cast operation"]
50452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_u64)"]
50453#[inline(always)]
50454#[cfg(target_endian = "big")]
50455#[target_feature(enable = "neon")]
50456#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50457#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50458#[cfg_attr(
50459 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50460 assert_instr(nop)
50461)]
50462#[cfg_attr(
50463 not(target_arch = "arm"),
50464 stable(feature = "neon_intrinsics", since = "1.59.0")
50465)]
50466#[cfg_attr(
50467 target_arch = "arm",
50468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50469)]
50470pub fn vreinterpret_s16_u64(a: uint64x1_t) -> int16x4_t {
50471 unsafe {
50472 let ret_val: int16x4_t = transmute(a);
50473 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50474 }
50475}
50476#[doc = "Vector reinterpret cast operation"]
50477#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u64)"]
50478#[inline(always)]
50479#[cfg(target_endian = "little")]
50480#[target_feature(enable = "neon")]
50481#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50482#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50483#[cfg_attr(
50484 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50485 assert_instr(nop)
50486)]
50487#[cfg_attr(
50488 not(target_arch = "arm"),
50489 stable(feature = "neon_intrinsics", since = "1.59.0")
50490)]
50491#[cfg_attr(
50492 target_arch = "arm",
50493 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50494)]
50495pub fn vreinterpret_s32_u64(a: uint64x1_t) -> int32x2_t {
50496 unsafe { transmute(a) }
50497}
50498#[doc = "Vector reinterpret cast operation"]
50499#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_u64)"]
50500#[inline(always)]
50501#[cfg(target_endian = "big")]
50502#[target_feature(enable = "neon")]
50503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50504#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50505#[cfg_attr(
50506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50507 assert_instr(nop)
50508)]
50509#[cfg_attr(
50510 not(target_arch = "arm"),
50511 stable(feature = "neon_intrinsics", since = "1.59.0")
50512)]
50513#[cfg_attr(
50514 target_arch = "arm",
50515 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50516)]
50517pub fn vreinterpret_s32_u64(a: uint64x1_t) -> int32x2_t {
50518 unsafe {
50519 let ret_val: int32x2_t = transmute(a);
50520 simd_shuffle!(ret_val, ret_val, [1, 0])
50521 }
50522}
50523#[doc = "Vector reinterpret cast operation"]
50524#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_u64)"]
50525#[inline(always)]
50526#[target_feature(enable = "neon")]
50527#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50528#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50529#[cfg_attr(
50530 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50531 assert_instr(nop)
50532)]
50533#[cfg_attr(
50534 not(target_arch = "arm"),
50535 stable(feature = "neon_intrinsics", since = "1.59.0")
50536)]
50537#[cfg_attr(
50538 target_arch = "arm",
50539 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50540)]
50541pub fn vreinterpret_s64_u64(a: uint64x1_t) -> int64x1_t {
50542 unsafe { transmute(a) }
50543}
50544#[doc = "Vector reinterpret cast operation"]
50545#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u64)"]
50546#[inline(always)]
50547#[cfg(target_endian = "little")]
50548#[target_feature(enable = "neon")]
50549#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50550#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50551#[cfg_attr(
50552 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50553 assert_instr(nop)
50554)]
50555#[cfg_attr(
50556 not(target_arch = "arm"),
50557 stable(feature = "neon_intrinsics", since = "1.59.0")
50558)]
50559#[cfg_attr(
50560 target_arch = "arm",
50561 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50562)]
50563pub fn vreinterpret_u8_u64(a: uint64x1_t) -> uint8x8_t {
50564 unsafe { transmute(a) }
50565}
50566#[doc = "Vector reinterpret cast operation"]
50567#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_u64)"]
50568#[inline(always)]
50569#[cfg(target_endian = "big")]
50570#[target_feature(enable = "neon")]
50571#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50572#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50573#[cfg_attr(
50574 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50575 assert_instr(nop)
50576)]
50577#[cfg_attr(
50578 not(target_arch = "arm"),
50579 stable(feature = "neon_intrinsics", since = "1.59.0")
50580)]
50581#[cfg_attr(
50582 target_arch = "arm",
50583 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50584)]
50585pub fn vreinterpret_u8_u64(a: uint64x1_t) -> uint8x8_t {
50586 unsafe {
50587 let ret_val: uint8x8_t = transmute(a);
50588 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50589 }
50590}
50591#[doc = "Vector reinterpret cast operation"]
50592#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u64)"]
50593#[inline(always)]
50594#[cfg(target_endian = "little")]
50595#[target_feature(enable = "neon")]
50596#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50597#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50598#[cfg_attr(
50599 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50600 assert_instr(nop)
50601)]
50602#[cfg_attr(
50603 not(target_arch = "arm"),
50604 stable(feature = "neon_intrinsics", since = "1.59.0")
50605)]
50606#[cfg_attr(
50607 target_arch = "arm",
50608 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50609)]
50610pub fn vreinterpret_u16_u64(a: uint64x1_t) -> uint16x4_t {
50611 unsafe { transmute(a) }
50612}
50613#[doc = "Vector reinterpret cast operation"]
50614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_u64)"]
50615#[inline(always)]
50616#[cfg(target_endian = "big")]
50617#[target_feature(enable = "neon")]
50618#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50619#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50620#[cfg_attr(
50621 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50622 assert_instr(nop)
50623)]
50624#[cfg_attr(
50625 not(target_arch = "arm"),
50626 stable(feature = "neon_intrinsics", since = "1.59.0")
50627)]
50628#[cfg_attr(
50629 target_arch = "arm",
50630 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50631)]
50632pub fn vreinterpret_u16_u64(a: uint64x1_t) -> uint16x4_t {
50633 unsafe {
50634 let ret_val: uint16x4_t = transmute(a);
50635 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50636 }
50637}
50638#[doc = "Vector reinterpret cast operation"]
50639#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u64)"]
50640#[inline(always)]
50641#[cfg(target_endian = "little")]
50642#[target_feature(enable = "neon")]
50643#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50644#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50645#[cfg_attr(
50646 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50647 assert_instr(nop)
50648)]
50649#[cfg_attr(
50650 not(target_arch = "arm"),
50651 stable(feature = "neon_intrinsics", since = "1.59.0")
50652)]
50653#[cfg_attr(
50654 target_arch = "arm",
50655 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50656)]
50657pub fn vreinterpret_u32_u64(a: uint64x1_t) -> uint32x2_t {
50658 unsafe { transmute(a) }
50659}
50660#[doc = "Vector reinterpret cast operation"]
50661#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_u64)"]
50662#[inline(always)]
50663#[cfg(target_endian = "big")]
50664#[target_feature(enable = "neon")]
50665#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50666#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50667#[cfg_attr(
50668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50669 assert_instr(nop)
50670)]
50671#[cfg_attr(
50672 not(target_arch = "arm"),
50673 stable(feature = "neon_intrinsics", since = "1.59.0")
50674)]
50675#[cfg_attr(
50676 target_arch = "arm",
50677 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50678)]
50679pub fn vreinterpret_u32_u64(a: uint64x1_t) -> uint32x2_t {
50680 unsafe {
50681 let ret_val: uint32x2_t = transmute(a);
50682 simd_shuffle!(ret_val, ret_val, [1, 0])
50683 }
50684}
50685#[doc = "Vector reinterpret cast operation"]
50686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u64)"]
50687#[inline(always)]
50688#[cfg(target_endian = "little")]
50689#[target_feature(enable = "neon")]
50690#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50691#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50692#[cfg_attr(
50693 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50694 assert_instr(nop)
50695)]
50696#[cfg_attr(
50697 not(target_arch = "arm"),
50698 stable(feature = "neon_intrinsics", since = "1.59.0")
50699)]
50700#[cfg_attr(
50701 target_arch = "arm",
50702 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50703)]
50704pub fn vreinterpret_p8_u64(a: uint64x1_t) -> poly8x8_t {
50705 unsafe { transmute(a) }
50706}
50707#[doc = "Vector reinterpret cast operation"]
50708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_u64)"]
50709#[inline(always)]
50710#[cfg(target_endian = "big")]
50711#[target_feature(enable = "neon")]
50712#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50713#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50714#[cfg_attr(
50715 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50716 assert_instr(nop)
50717)]
50718#[cfg_attr(
50719 not(target_arch = "arm"),
50720 stable(feature = "neon_intrinsics", since = "1.59.0")
50721)]
50722#[cfg_attr(
50723 target_arch = "arm",
50724 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50725)]
50726pub fn vreinterpret_p8_u64(a: uint64x1_t) -> poly8x8_t {
50727 unsafe {
50728 let ret_val: poly8x8_t = transmute(a);
50729 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50730 }
50731}
50732#[doc = "Vector reinterpret cast operation"]
50733#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u64)"]
50734#[inline(always)]
50735#[cfg(target_endian = "little")]
50736#[target_feature(enable = "neon")]
50737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50738#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50739#[cfg_attr(
50740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50741 assert_instr(nop)
50742)]
50743#[cfg_attr(
50744 not(target_arch = "arm"),
50745 stable(feature = "neon_intrinsics", since = "1.59.0")
50746)]
50747#[cfg_attr(
50748 target_arch = "arm",
50749 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50750)]
50751pub fn vreinterpret_p16_u64(a: uint64x1_t) -> poly16x4_t {
50752 unsafe { transmute(a) }
50753}
50754#[doc = "Vector reinterpret cast operation"]
50755#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_u64)"]
50756#[inline(always)]
50757#[cfg(target_endian = "big")]
50758#[target_feature(enable = "neon")]
50759#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50760#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50761#[cfg_attr(
50762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50763 assert_instr(nop)
50764)]
50765#[cfg_attr(
50766 not(target_arch = "arm"),
50767 stable(feature = "neon_intrinsics", since = "1.59.0")
50768)]
50769#[cfg_attr(
50770 target_arch = "arm",
50771 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50772)]
50773pub fn vreinterpret_p16_u64(a: uint64x1_t) -> poly16x4_t {
50774 unsafe {
50775 let ret_val: poly16x4_t = transmute(a);
50776 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50777 }
50778}
50779#[doc = "Vector reinterpret cast operation"]
50780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u64)"]
50781#[inline(always)]
50782#[cfg(target_endian = "little")]
50783#[target_feature(enable = "neon")]
50784#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50785#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50786#[cfg_attr(
50787 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50788 assert_instr(nop)
50789)]
50790#[cfg_attr(
50791 not(target_arch = "arm"),
50792 stable(feature = "neon_intrinsics", since = "1.59.0")
50793)]
50794#[cfg_attr(
50795 target_arch = "arm",
50796 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50797)]
50798pub fn vreinterpretq_f32_u64(a: uint64x2_t) -> float32x4_t {
50799 unsafe { transmute(a) }
50800}
50801#[doc = "Vector reinterpret cast operation"]
50802#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_u64)"]
50803#[inline(always)]
50804#[cfg(target_endian = "big")]
50805#[target_feature(enable = "neon")]
50806#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50807#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50808#[cfg_attr(
50809 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50810 assert_instr(nop)
50811)]
50812#[cfg_attr(
50813 not(target_arch = "arm"),
50814 stable(feature = "neon_intrinsics", since = "1.59.0")
50815)]
50816#[cfg_attr(
50817 target_arch = "arm",
50818 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50819)]
50820pub fn vreinterpretq_f32_u64(a: uint64x2_t) -> float32x4_t {
50821 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
50822 unsafe {
50823 let ret_val: float32x4_t = transmute(a);
50824 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50825 }
50826}
50827#[doc = "Vector reinterpret cast operation"]
50828#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u64)"]
50829#[inline(always)]
50830#[cfg(target_endian = "little")]
50831#[target_feature(enable = "neon")]
50832#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50833#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50834#[cfg_attr(
50835 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50836 assert_instr(nop)
50837)]
50838#[cfg_attr(
50839 not(target_arch = "arm"),
50840 stable(feature = "neon_intrinsics", since = "1.59.0")
50841)]
50842#[cfg_attr(
50843 target_arch = "arm",
50844 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50845)]
50846pub fn vreinterpretq_s8_u64(a: uint64x2_t) -> int8x16_t {
50847 unsafe { transmute(a) }
50848}
50849#[doc = "Vector reinterpret cast operation"]
50850#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_u64)"]
50851#[inline(always)]
50852#[cfg(target_endian = "big")]
50853#[target_feature(enable = "neon")]
50854#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50855#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50856#[cfg_attr(
50857 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50858 assert_instr(nop)
50859)]
50860#[cfg_attr(
50861 not(target_arch = "arm"),
50862 stable(feature = "neon_intrinsics", since = "1.59.0")
50863)]
50864#[cfg_attr(
50865 target_arch = "arm",
50866 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50867)]
50868pub fn vreinterpretq_s8_u64(a: uint64x2_t) -> int8x16_t {
50869 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
50870 unsafe {
50871 let ret_val: int8x16_t = transmute(a);
50872 simd_shuffle!(
50873 ret_val,
50874 ret_val,
50875 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
50876 )
50877 }
50878}
50879#[doc = "Vector reinterpret cast operation"]
50880#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u64)"]
50881#[inline(always)]
50882#[cfg(target_endian = "little")]
50883#[target_feature(enable = "neon")]
50884#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50885#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50886#[cfg_attr(
50887 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50888 assert_instr(nop)
50889)]
50890#[cfg_attr(
50891 not(target_arch = "arm"),
50892 stable(feature = "neon_intrinsics", since = "1.59.0")
50893)]
50894#[cfg_attr(
50895 target_arch = "arm",
50896 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50897)]
50898pub fn vreinterpretq_s16_u64(a: uint64x2_t) -> int16x8_t {
50899 unsafe { transmute(a) }
50900}
50901#[doc = "Vector reinterpret cast operation"]
50902#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_u64)"]
50903#[inline(always)]
50904#[cfg(target_endian = "big")]
50905#[target_feature(enable = "neon")]
50906#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50907#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50908#[cfg_attr(
50909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50910 assert_instr(nop)
50911)]
50912#[cfg_attr(
50913 not(target_arch = "arm"),
50914 stable(feature = "neon_intrinsics", since = "1.59.0")
50915)]
50916#[cfg_attr(
50917 target_arch = "arm",
50918 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50919)]
50920pub fn vreinterpretq_s16_u64(a: uint64x2_t) -> int16x8_t {
50921 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
50922 unsafe {
50923 let ret_val: int16x8_t = transmute(a);
50924 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
50925 }
50926}
50927#[doc = "Vector reinterpret cast operation"]
50928#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u64)"]
50929#[inline(always)]
50930#[cfg(target_endian = "little")]
50931#[target_feature(enable = "neon")]
50932#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50933#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50934#[cfg_attr(
50935 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50936 assert_instr(nop)
50937)]
50938#[cfg_attr(
50939 not(target_arch = "arm"),
50940 stable(feature = "neon_intrinsics", since = "1.59.0")
50941)]
50942#[cfg_attr(
50943 target_arch = "arm",
50944 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50945)]
50946pub fn vreinterpretq_s32_u64(a: uint64x2_t) -> int32x4_t {
50947 unsafe { transmute(a) }
50948}
50949#[doc = "Vector reinterpret cast operation"]
50950#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_u64)"]
50951#[inline(always)]
50952#[cfg(target_endian = "big")]
50953#[target_feature(enable = "neon")]
50954#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50955#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50956#[cfg_attr(
50957 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50958 assert_instr(nop)
50959)]
50960#[cfg_attr(
50961 not(target_arch = "arm"),
50962 stable(feature = "neon_intrinsics", since = "1.59.0")
50963)]
50964#[cfg_attr(
50965 target_arch = "arm",
50966 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50967)]
50968pub fn vreinterpretq_s32_u64(a: uint64x2_t) -> int32x4_t {
50969 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
50970 unsafe {
50971 let ret_val: int32x4_t = transmute(a);
50972 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
50973 }
50974}
50975#[doc = "Vector reinterpret cast operation"]
50976#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u64)"]
50977#[inline(always)]
50978#[cfg(target_endian = "little")]
50979#[target_feature(enable = "neon")]
50980#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
50981#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
50982#[cfg_attr(
50983 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
50984 assert_instr(nop)
50985)]
50986#[cfg_attr(
50987 not(target_arch = "arm"),
50988 stable(feature = "neon_intrinsics", since = "1.59.0")
50989)]
50990#[cfg_attr(
50991 target_arch = "arm",
50992 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
50993)]
50994pub fn vreinterpretq_s64_u64(a: uint64x2_t) -> int64x2_t {
50995 unsafe { transmute(a) }
50996}
50997#[doc = "Vector reinterpret cast operation"]
50998#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_u64)"]
50999#[inline(always)]
51000#[cfg(target_endian = "big")]
51001#[target_feature(enable = "neon")]
51002#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51003#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51004#[cfg_attr(
51005 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51006 assert_instr(nop)
51007)]
51008#[cfg_attr(
51009 not(target_arch = "arm"),
51010 stable(feature = "neon_intrinsics", since = "1.59.0")
51011)]
51012#[cfg_attr(
51013 target_arch = "arm",
51014 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51015)]
51016pub fn vreinterpretq_s64_u64(a: uint64x2_t) -> int64x2_t {
51017 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51018 unsafe {
51019 let ret_val: int64x2_t = transmute(a);
51020 simd_shuffle!(ret_val, ret_val, [1, 0])
51021 }
51022}
51023#[doc = "Vector reinterpret cast operation"]
51024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u64)"]
51025#[inline(always)]
51026#[cfg(target_endian = "little")]
51027#[target_feature(enable = "neon")]
51028#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51029#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51030#[cfg_attr(
51031 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51032 assert_instr(nop)
51033)]
51034#[cfg_attr(
51035 not(target_arch = "arm"),
51036 stable(feature = "neon_intrinsics", since = "1.59.0")
51037)]
51038#[cfg_attr(
51039 target_arch = "arm",
51040 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51041)]
51042pub fn vreinterpretq_u8_u64(a: uint64x2_t) -> uint8x16_t {
51043 unsafe { transmute(a) }
51044}
51045#[doc = "Vector reinterpret cast operation"]
51046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_u64)"]
51047#[inline(always)]
51048#[cfg(target_endian = "big")]
51049#[target_feature(enable = "neon")]
51050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51051#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51052#[cfg_attr(
51053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51054 assert_instr(nop)
51055)]
51056#[cfg_attr(
51057 not(target_arch = "arm"),
51058 stable(feature = "neon_intrinsics", since = "1.59.0")
51059)]
51060#[cfg_attr(
51061 target_arch = "arm",
51062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51063)]
51064pub fn vreinterpretq_u8_u64(a: uint64x2_t) -> uint8x16_t {
51065 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51066 unsafe {
51067 let ret_val: uint8x16_t = transmute(a);
51068 simd_shuffle!(
51069 ret_val,
51070 ret_val,
51071 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
51072 )
51073 }
51074}
51075#[doc = "Vector reinterpret cast operation"]
51076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u64)"]
51077#[inline(always)]
51078#[cfg(target_endian = "little")]
51079#[target_feature(enable = "neon")]
51080#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51081#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51082#[cfg_attr(
51083 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51084 assert_instr(nop)
51085)]
51086#[cfg_attr(
51087 not(target_arch = "arm"),
51088 stable(feature = "neon_intrinsics", since = "1.59.0")
51089)]
51090#[cfg_attr(
51091 target_arch = "arm",
51092 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51093)]
51094pub fn vreinterpretq_u16_u64(a: uint64x2_t) -> uint16x8_t {
51095 unsafe { transmute(a) }
51096}
51097#[doc = "Vector reinterpret cast operation"]
51098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_u64)"]
51099#[inline(always)]
51100#[cfg(target_endian = "big")]
51101#[target_feature(enable = "neon")]
51102#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51103#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51104#[cfg_attr(
51105 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51106 assert_instr(nop)
51107)]
51108#[cfg_attr(
51109 not(target_arch = "arm"),
51110 stable(feature = "neon_intrinsics", since = "1.59.0")
51111)]
51112#[cfg_attr(
51113 target_arch = "arm",
51114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51115)]
51116pub fn vreinterpretq_u16_u64(a: uint64x2_t) -> uint16x8_t {
51117 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51118 unsafe {
51119 let ret_val: uint16x8_t = transmute(a);
51120 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51121 }
51122}
51123#[doc = "Vector reinterpret cast operation"]
51124#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u64)"]
51125#[inline(always)]
51126#[cfg(target_endian = "little")]
51127#[target_feature(enable = "neon")]
51128#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51129#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51130#[cfg_attr(
51131 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51132 assert_instr(nop)
51133)]
51134#[cfg_attr(
51135 not(target_arch = "arm"),
51136 stable(feature = "neon_intrinsics", since = "1.59.0")
51137)]
51138#[cfg_attr(
51139 target_arch = "arm",
51140 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51141)]
51142pub fn vreinterpretq_u32_u64(a: uint64x2_t) -> uint32x4_t {
51143 unsafe { transmute(a) }
51144}
51145#[doc = "Vector reinterpret cast operation"]
51146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_u64)"]
51147#[inline(always)]
51148#[cfg(target_endian = "big")]
51149#[target_feature(enable = "neon")]
51150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51151#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51152#[cfg_attr(
51153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51154 assert_instr(nop)
51155)]
51156#[cfg_attr(
51157 not(target_arch = "arm"),
51158 stable(feature = "neon_intrinsics", since = "1.59.0")
51159)]
51160#[cfg_attr(
51161 target_arch = "arm",
51162 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51163)]
51164pub fn vreinterpretq_u32_u64(a: uint64x2_t) -> uint32x4_t {
51165 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51166 unsafe {
51167 let ret_val: uint32x4_t = transmute(a);
51168 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51169 }
51170}
51171#[doc = "Vector reinterpret cast operation"]
51172#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u64)"]
51173#[inline(always)]
51174#[cfg(target_endian = "little")]
51175#[target_feature(enable = "neon")]
51176#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51177#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51178#[cfg_attr(
51179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51180 assert_instr(nop)
51181)]
51182#[cfg_attr(
51183 not(target_arch = "arm"),
51184 stable(feature = "neon_intrinsics", since = "1.59.0")
51185)]
51186#[cfg_attr(
51187 target_arch = "arm",
51188 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51189)]
51190pub fn vreinterpretq_p8_u64(a: uint64x2_t) -> poly8x16_t {
51191 unsafe { transmute(a) }
51192}
51193#[doc = "Vector reinterpret cast operation"]
51194#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_u64)"]
51195#[inline(always)]
51196#[cfg(target_endian = "big")]
51197#[target_feature(enable = "neon")]
51198#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51199#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51200#[cfg_attr(
51201 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51202 assert_instr(nop)
51203)]
51204#[cfg_attr(
51205 not(target_arch = "arm"),
51206 stable(feature = "neon_intrinsics", since = "1.59.0")
51207)]
51208#[cfg_attr(
51209 target_arch = "arm",
51210 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51211)]
51212pub fn vreinterpretq_p8_u64(a: uint64x2_t) -> poly8x16_t {
51213 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51214 unsafe {
51215 let ret_val: poly8x16_t = transmute(a);
51216 simd_shuffle!(
51217 ret_val,
51218 ret_val,
51219 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
51220 )
51221 }
51222}
51223#[doc = "Vector reinterpret cast operation"]
51224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u64)"]
51225#[inline(always)]
51226#[cfg(target_endian = "little")]
51227#[target_feature(enable = "neon")]
51228#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51229#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51230#[cfg_attr(
51231 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51232 assert_instr(nop)
51233)]
51234#[cfg_attr(
51235 not(target_arch = "arm"),
51236 stable(feature = "neon_intrinsics", since = "1.59.0")
51237)]
51238#[cfg_attr(
51239 target_arch = "arm",
51240 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51241)]
51242pub fn vreinterpretq_p16_u64(a: uint64x2_t) -> poly16x8_t {
51243 unsafe { transmute(a) }
51244}
51245#[doc = "Vector reinterpret cast operation"]
51246#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_u64)"]
51247#[inline(always)]
51248#[cfg(target_endian = "big")]
51249#[target_feature(enable = "neon")]
51250#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51251#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51252#[cfg_attr(
51253 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51254 assert_instr(nop)
51255)]
51256#[cfg_attr(
51257 not(target_arch = "arm"),
51258 stable(feature = "neon_intrinsics", since = "1.59.0")
51259)]
51260#[cfg_attr(
51261 target_arch = "arm",
51262 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51263)]
51264pub fn vreinterpretq_p16_u64(a: uint64x2_t) -> poly16x8_t {
51265 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
51266 unsafe {
51267 let ret_val: poly16x8_t = transmute(a);
51268 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51269 }
51270}
51271#[doc = "Vector reinterpret cast operation"]
51272#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p8)"]
51273#[inline(always)]
51274#[cfg(target_endian = "little")]
51275#[target_feature(enable = "neon")]
51276#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51277#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51278#[cfg_attr(
51279 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51280 assert_instr(nop)
51281)]
51282#[cfg_attr(
51283 not(target_arch = "arm"),
51284 stable(feature = "neon_intrinsics", since = "1.59.0")
51285)]
51286#[cfg_attr(
51287 target_arch = "arm",
51288 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51289)]
51290pub fn vreinterpret_f32_p8(a: poly8x8_t) -> float32x2_t {
51291 unsafe { transmute(a) }
51292}
51293#[doc = "Vector reinterpret cast operation"]
51294#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p8)"]
51295#[inline(always)]
51296#[cfg(target_endian = "big")]
51297#[target_feature(enable = "neon")]
51298#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51299#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51300#[cfg_attr(
51301 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51302 assert_instr(nop)
51303)]
51304#[cfg_attr(
51305 not(target_arch = "arm"),
51306 stable(feature = "neon_intrinsics", since = "1.59.0")
51307)]
51308#[cfg_attr(
51309 target_arch = "arm",
51310 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51311)]
51312pub fn vreinterpret_f32_p8(a: poly8x8_t) -> float32x2_t {
51313 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51314 unsafe {
51315 let ret_val: float32x2_t = transmute(a);
51316 simd_shuffle!(ret_val, ret_val, [1, 0])
51317 }
51318}
51319#[doc = "Vector reinterpret cast operation"]
51320#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p8)"]
51321#[inline(always)]
51322#[cfg(target_endian = "little")]
51323#[target_feature(enable = "neon")]
51324#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51325#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51326#[cfg_attr(
51327 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51328 assert_instr(nop)
51329)]
51330#[cfg_attr(
51331 not(target_arch = "arm"),
51332 stable(feature = "neon_intrinsics", since = "1.59.0")
51333)]
51334#[cfg_attr(
51335 target_arch = "arm",
51336 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51337)]
51338pub fn vreinterpret_s8_p8(a: poly8x8_t) -> int8x8_t {
51339 unsafe { transmute(a) }
51340}
51341#[doc = "Vector reinterpret cast operation"]
51342#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p8)"]
51343#[inline(always)]
51344#[cfg(target_endian = "big")]
51345#[target_feature(enable = "neon")]
51346#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51347#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51348#[cfg_attr(
51349 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51350 assert_instr(nop)
51351)]
51352#[cfg_attr(
51353 not(target_arch = "arm"),
51354 stable(feature = "neon_intrinsics", since = "1.59.0")
51355)]
51356#[cfg_attr(
51357 target_arch = "arm",
51358 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51359)]
51360pub fn vreinterpret_s8_p8(a: poly8x8_t) -> int8x8_t {
51361 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51362 unsafe {
51363 let ret_val: int8x8_t = transmute(a);
51364 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51365 }
51366}
51367#[doc = "Vector reinterpret cast operation"]
51368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p8)"]
51369#[inline(always)]
51370#[cfg(target_endian = "little")]
51371#[target_feature(enable = "neon")]
51372#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51373#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51374#[cfg_attr(
51375 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51376 assert_instr(nop)
51377)]
51378#[cfg_attr(
51379 not(target_arch = "arm"),
51380 stable(feature = "neon_intrinsics", since = "1.59.0")
51381)]
51382#[cfg_attr(
51383 target_arch = "arm",
51384 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51385)]
51386pub fn vreinterpret_s16_p8(a: poly8x8_t) -> int16x4_t {
51387 unsafe { transmute(a) }
51388}
51389#[doc = "Vector reinterpret cast operation"]
51390#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p8)"]
51391#[inline(always)]
51392#[cfg(target_endian = "big")]
51393#[target_feature(enable = "neon")]
51394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51395#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51396#[cfg_attr(
51397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51398 assert_instr(nop)
51399)]
51400#[cfg_attr(
51401 not(target_arch = "arm"),
51402 stable(feature = "neon_intrinsics", since = "1.59.0")
51403)]
51404#[cfg_attr(
51405 target_arch = "arm",
51406 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51407)]
51408pub fn vreinterpret_s16_p8(a: poly8x8_t) -> int16x4_t {
51409 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51410 unsafe {
51411 let ret_val: int16x4_t = transmute(a);
51412 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51413 }
51414}
51415#[doc = "Vector reinterpret cast operation"]
51416#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p8)"]
51417#[inline(always)]
51418#[cfg(target_endian = "little")]
51419#[target_feature(enable = "neon")]
51420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51421#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51422#[cfg_attr(
51423 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51424 assert_instr(nop)
51425)]
51426#[cfg_attr(
51427 not(target_arch = "arm"),
51428 stable(feature = "neon_intrinsics", since = "1.59.0")
51429)]
51430#[cfg_attr(
51431 target_arch = "arm",
51432 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51433)]
51434pub fn vreinterpret_s32_p8(a: poly8x8_t) -> int32x2_t {
51435 unsafe { transmute(a) }
51436}
51437#[doc = "Vector reinterpret cast operation"]
51438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p8)"]
51439#[inline(always)]
51440#[cfg(target_endian = "big")]
51441#[target_feature(enable = "neon")]
51442#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51443#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51444#[cfg_attr(
51445 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51446 assert_instr(nop)
51447)]
51448#[cfg_attr(
51449 not(target_arch = "arm"),
51450 stable(feature = "neon_intrinsics", since = "1.59.0")
51451)]
51452#[cfg_attr(
51453 target_arch = "arm",
51454 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51455)]
51456pub fn vreinterpret_s32_p8(a: poly8x8_t) -> int32x2_t {
51457 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51458 unsafe {
51459 let ret_val: int32x2_t = transmute(a);
51460 simd_shuffle!(ret_val, ret_val, [1, 0])
51461 }
51462}
51463#[doc = "Vector reinterpret cast operation"]
51464#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p8)"]
51465#[inline(always)]
51466#[cfg(target_endian = "little")]
51467#[target_feature(enable = "neon")]
51468#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51469#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51470#[cfg_attr(
51471 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51472 assert_instr(nop)
51473)]
51474#[cfg_attr(
51475 not(target_arch = "arm"),
51476 stable(feature = "neon_intrinsics", since = "1.59.0")
51477)]
51478#[cfg_attr(
51479 target_arch = "arm",
51480 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51481)]
51482pub fn vreinterpret_s64_p8(a: poly8x8_t) -> int64x1_t {
51483 unsafe { transmute(a) }
51484}
51485#[doc = "Vector reinterpret cast operation"]
51486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p8)"]
51487#[inline(always)]
51488#[cfg(target_endian = "big")]
51489#[target_feature(enable = "neon")]
51490#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51491#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51492#[cfg_attr(
51493 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51494 assert_instr(nop)
51495)]
51496#[cfg_attr(
51497 not(target_arch = "arm"),
51498 stable(feature = "neon_intrinsics", since = "1.59.0")
51499)]
51500#[cfg_attr(
51501 target_arch = "arm",
51502 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51503)]
51504pub fn vreinterpret_s64_p8(a: poly8x8_t) -> int64x1_t {
51505 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51506 unsafe { transmute(a) }
51507}
51508#[doc = "Vector reinterpret cast operation"]
51509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p8)"]
51510#[inline(always)]
51511#[cfg(target_endian = "little")]
51512#[target_feature(enable = "neon")]
51513#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51514#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51515#[cfg_attr(
51516 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51517 assert_instr(nop)
51518)]
51519#[cfg_attr(
51520 not(target_arch = "arm"),
51521 stable(feature = "neon_intrinsics", since = "1.59.0")
51522)]
51523#[cfg_attr(
51524 target_arch = "arm",
51525 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51526)]
51527pub fn vreinterpret_u8_p8(a: poly8x8_t) -> uint8x8_t {
51528 unsafe { transmute(a) }
51529}
51530#[doc = "Vector reinterpret cast operation"]
51531#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p8)"]
51532#[inline(always)]
51533#[cfg(target_endian = "big")]
51534#[target_feature(enable = "neon")]
51535#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51536#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51537#[cfg_attr(
51538 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51539 assert_instr(nop)
51540)]
51541#[cfg_attr(
51542 not(target_arch = "arm"),
51543 stable(feature = "neon_intrinsics", since = "1.59.0")
51544)]
51545#[cfg_attr(
51546 target_arch = "arm",
51547 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51548)]
51549pub fn vreinterpret_u8_p8(a: poly8x8_t) -> uint8x8_t {
51550 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51551 unsafe {
51552 let ret_val: uint8x8_t = transmute(a);
51553 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51554 }
51555}
51556#[doc = "Vector reinterpret cast operation"]
51557#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p8)"]
51558#[inline(always)]
51559#[cfg(target_endian = "little")]
51560#[target_feature(enable = "neon")]
51561#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51562#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51563#[cfg_attr(
51564 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51565 assert_instr(nop)
51566)]
51567#[cfg_attr(
51568 not(target_arch = "arm"),
51569 stable(feature = "neon_intrinsics", since = "1.59.0")
51570)]
51571#[cfg_attr(
51572 target_arch = "arm",
51573 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51574)]
51575pub fn vreinterpret_u16_p8(a: poly8x8_t) -> uint16x4_t {
51576 unsafe { transmute(a) }
51577}
51578#[doc = "Vector reinterpret cast operation"]
51579#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p8)"]
51580#[inline(always)]
51581#[cfg(target_endian = "big")]
51582#[target_feature(enable = "neon")]
51583#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51584#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51585#[cfg_attr(
51586 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51587 assert_instr(nop)
51588)]
51589#[cfg_attr(
51590 not(target_arch = "arm"),
51591 stable(feature = "neon_intrinsics", since = "1.59.0")
51592)]
51593#[cfg_attr(
51594 target_arch = "arm",
51595 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51596)]
51597pub fn vreinterpret_u16_p8(a: poly8x8_t) -> uint16x4_t {
51598 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51599 unsafe {
51600 let ret_val: uint16x4_t = transmute(a);
51601 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51602 }
51603}
51604#[doc = "Vector reinterpret cast operation"]
51605#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p8)"]
51606#[inline(always)]
51607#[cfg(target_endian = "little")]
51608#[target_feature(enable = "neon")]
51609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51611#[cfg_attr(
51612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51613 assert_instr(nop)
51614)]
51615#[cfg_attr(
51616 not(target_arch = "arm"),
51617 stable(feature = "neon_intrinsics", since = "1.59.0")
51618)]
51619#[cfg_attr(
51620 target_arch = "arm",
51621 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51622)]
51623pub fn vreinterpret_u32_p8(a: poly8x8_t) -> uint32x2_t {
51624 unsafe { transmute(a) }
51625}
51626#[doc = "Vector reinterpret cast operation"]
51627#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p8)"]
51628#[inline(always)]
51629#[cfg(target_endian = "big")]
51630#[target_feature(enable = "neon")]
51631#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51633#[cfg_attr(
51634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51635 assert_instr(nop)
51636)]
51637#[cfg_attr(
51638 not(target_arch = "arm"),
51639 stable(feature = "neon_intrinsics", since = "1.59.0")
51640)]
51641#[cfg_attr(
51642 target_arch = "arm",
51643 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51644)]
51645pub fn vreinterpret_u32_p8(a: poly8x8_t) -> uint32x2_t {
51646 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51647 unsafe {
51648 let ret_val: uint32x2_t = transmute(a);
51649 simd_shuffle!(ret_val, ret_val, [1, 0])
51650 }
51651}
51652#[doc = "Vector reinterpret cast operation"]
51653#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p8)"]
51654#[inline(always)]
51655#[cfg(target_endian = "little")]
51656#[target_feature(enable = "neon")]
51657#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51658#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51659#[cfg_attr(
51660 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51661 assert_instr(nop)
51662)]
51663#[cfg_attr(
51664 not(target_arch = "arm"),
51665 stable(feature = "neon_intrinsics", since = "1.59.0")
51666)]
51667#[cfg_attr(
51668 target_arch = "arm",
51669 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51670)]
51671pub fn vreinterpret_u64_p8(a: poly8x8_t) -> uint64x1_t {
51672 unsafe { transmute(a) }
51673}
51674#[doc = "Vector reinterpret cast operation"]
51675#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p8)"]
51676#[inline(always)]
51677#[cfg(target_endian = "big")]
51678#[target_feature(enable = "neon")]
51679#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51680#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51681#[cfg_attr(
51682 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51683 assert_instr(nop)
51684)]
51685#[cfg_attr(
51686 not(target_arch = "arm"),
51687 stable(feature = "neon_intrinsics", since = "1.59.0")
51688)]
51689#[cfg_attr(
51690 target_arch = "arm",
51691 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51692)]
51693pub fn vreinterpret_u64_p8(a: poly8x8_t) -> uint64x1_t {
51694 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51695 unsafe { transmute(a) }
51696}
51697#[doc = "Vector reinterpret cast operation"]
51698#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p8)"]
51699#[inline(always)]
51700#[cfg(target_endian = "little")]
51701#[target_feature(enable = "neon")]
51702#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51703#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51704#[cfg_attr(
51705 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51706 assert_instr(nop)
51707)]
51708#[cfg_attr(
51709 not(target_arch = "arm"),
51710 stable(feature = "neon_intrinsics", since = "1.59.0")
51711)]
51712#[cfg_attr(
51713 target_arch = "arm",
51714 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51715)]
51716pub fn vreinterpret_p16_p8(a: poly8x8_t) -> poly16x4_t {
51717 unsafe { transmute(a) }
51718}
51719#[doc = "Vector reinterpret cast operation"]
51720#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p8)"]
51721#[inline(always)]
51722#[cfg(target_endian = "big")]
51723#[target_feature(enable = "neon")]
51724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51725#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51726#[cfg_attr(
51727 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51728 assert_instr(nop)
51729)]
51730#[cfg_attr(
51731 not(target_arch = "arm"),
51732 stable(feature = "neon_intrinsics", since = "1.59.0")
51733)]
51734#[cfg_attr(
51735 target_arch = "arm",
51736 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51737)]
51738pub fn vreinterpret_p16_p8(a: poly8x8_t) -> poly16x4_t {
51739 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
51740 unsafe {
51741 let ret_val: poly16x4_t = transmute(a);
51742 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51743 }
51744}
51745#[doc = "Vector reinterpret cast operation"]
51746#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p8)"]
51747#[inline(always)]
51748#[cfg(target_endian = "little")]
51749#[target_feature(enable = "neon")]
51750#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51751#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51752#[cfg_attr(
51753 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51754 assert_instr(nop)
51755)]
51756#[cfg_attr(
51757 not(target_arch = "arm"),
51758 stable(feature = "neon_intrinsics", since = "1.59.0")
51759)]
51760#[cfg_attr(
51761 target_arch = "arm",
51762 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51763)]
51764pub fn vreinterpretq_f32_p8(a: poly8x16_t) -> float32x4_t {
51765 unsafe { transmute(a) }
51766}
51767#[doc = "Vector reinterpret cast operation"]
51768#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p8)"]
51769#[inline(always)]
51770#[cfg(target_endian = "big")]
51771#[target_feature(enable = "neon")]
51772#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51773#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51774#[cfg_attr(
51775 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51776 assert_instr(nop)
51777)]
51778#[cfg_attr(
51779 not(target_arch = "arm"),
51780 stable(feature = "neon_intrinsics", since = "1.59.0")
51781)]
51782#[cfg_attr(
51783 target_arch = "arm",
51784 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51785)]
51786pub fn vreinterpretq_f32_p8(a: poly8x16_t) -> float32x4_t {
51787 let a: poly8x16_t =
51788 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
51789 unsafe {
51790 let ret_val: float32x4_t = transmute(a);
51791 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51792 }
51793}
51794#[doc = "Vector reinterpret cast operation"]
51795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p8)"]
51796#[inline(always)]
51797#[cfg(target_endian = "little")]
51798#[target_feature(enable = "neon")]
51799#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51800#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51801#[cfg_attr(
51802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51803 assert_instr(nop)
51804)]
51805#[cfg_attr(
51806 not(target_arch = "arm"),
51807 stable(feature = "neon_intrinsics", since = "1.59.0")
51808)]
51809#[cfg_attr(
51810 target_arch = "arm",
51811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51812)]
51813pub fn vreinterpretq_s8_p8(a: poly8x16_t) -> int8x16_t {
51814 unsafe { transmute(a) }
51815}
51816#[doc = "Vector reinterpret cast operation"]
51817#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p8)"]
51818#[inline(always)]
51819#[cfg(target_endian = "big")]
51820#[target_feature(enable = "neon")]
51821#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51822#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51823#[cfg_attr(
51824 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51825 assert_instr(nop)
51826)]
51827#[cfg_attr(
51828 not(target_arch = "arm"),
51829 stable(feature = "neon_intrinsics", since = "1.59.0")
51830)]
51831#[cfg_attr(
51832 target_arch = "arm",
51833 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51834)]
51835pub fn vreinterpretq_s8_p8(a: poly8x16_t) -> int8x16_t {
51836 let a: poly8x16_t =
51837 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
51838 unsafe {
51839 let ret_val: int8x16_t = transmute(a);
51840 simd_shuffle!(
51841 ret_val,
51842 ret_val,
51843 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
51844 )
51845 }
51846}
51847#[doc = "Vector reinterpret cast operation"]
51848#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p8)"]
51849#[inline(always)]
51850#[cfg(target_endian = "little")]
51851#[target_feature(enable = "neon")]
51852#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51853#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51854#[cfg_attr(
51855 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51856 assert_instr(nop)
51857)]
51858#[cfg_attr(
51859 not(target_arch = "arm"),
51860 stable(feature = "neon_intrinsics", since = "1.59.0")
51861)]
51862#[cfg_attr(
51863 target_arch = "arm",
51864 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51865)]
51866pub fn vreinterpretq_s16_p8(a: poly8x16_t) -> int16x8_t {
51867 unsafe { transmute(a) }
51868}
51869#[doc = "Vector reinterpret cast operation"]
51870#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p8)"]
51871#[inline(always)]
51872#[cfg(target_endian = "big")]
51873#[target_feature(enable = "neon")]
51874#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51875#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51876#[cfg_attr(
51877 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51878 assert_instr(nop)
51879)]
51880#[cfg_attr(
51881 not(target_arch = "arm"),
51882 stable(feature = "neon_intrinsics", since = "1.59.0")
51883)]
51884#[cfg_attr(
51885 target_arch = "arm",
51886 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51887)]
51888pub fn vreinterpretq_s16_p8(a: poly8x16_t) -> int16x8_t {
51889 let a: poly8x16_t =
51890 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
51891 unsafe {
51892 let ret_val: int16x8_t = transmute(a);
51893 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
51894 }
51895}
51896#[doc = "Vector reinterpret cast operation"]
51897#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p8)"]
51898#[inline(always)]
51899#[cfg(target_endian = "little")]
51900#[target_feature(enable = "neon")]
51901#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51902#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51903#[cfg_attr(
51904 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51905 assert_instr(nop)
51906)]
51907#[cfg_attr(
51908 not(target_arch = "arm"),
51909 stable(feature = "neon_intrinsics", since = "1.59.0")
51910)]
51911#[cfg_attr(
51912 target_arch = "arm",
51913 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51914)]
51915pub fn vreinterpretq_s32_p8(a: poly8x16_t) -> int32x4_t {
51916 unsafe { transmute(a) }
51917}
51918#[doc = "Vector reinterpret cast operation"]
51919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p8)"]
51920#[inline(always)]
51921#[cfg(target_endian = "big")]
51922#[target_feature(enable = "neon")]
51923#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51924#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51925#[cfg_attr(
51926 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51927 assert_instr(nop)
51928)]
51929#[cfg_attr(
51930 not(target_arch = "arm"),
51931 stable(feature = "neon_intrinsics", since = "1.59.0")
51932)]
51933#[cfg_attr(
51934 target_arch = "arm",
51935 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51936)]
51937pub fn vreinterpretq_s32_p8(a: poly8x16_t) -> int32x4_t {
51938 let a: poly8x16_t =
51939 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
51940 unsafe {
51941 let ret_val: int32x4_t = transmute(a);
51942 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
51943 }
51944}
51945#[doc = "Vector reinterpret cast operation"]
51946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p8)"]
51947#[inline(always)]
51948#[cfg(target_endian = "little")]
51949#[target_feature(enable = "neon")]
51950#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51951#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51952#[cfg_attr(
51953 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51954 assert_instr(nop)
51955)]
51956#[cfg_attr(
51957 not(target_arch = "arm"),
51958 stable(feature = "neon_intrinsics", since = "1.59.0")
51959)]
51960#[cfg_attr(
51961 target_arch = "arm",
51962 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51963)]
51964pub fn vreinterpretq_s64_p8(a: poly8x16_t) -> int64x2_t {
51965 unsafe { transmute(a) }
51966}
51967#[doc = "Vector reinterpret cast operation"]
51968#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p8)"]
51969#[inline(always)]
51970#[cfg(target_endian = "big")]
51971#[target_feature(enable = "neon")]
51972#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
51973#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
51974#[cfg_attr(
51975 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
51976 assert_instr(nop)
51977)]
51978#[cfg_attr(
51979 not(target_arch = "arm"),
51980 stable(feature = "neon_intrinsics", since = "1.59.0")
51981)]
51982#[cfg_attr(
51983 target_arch = "arm",
51984 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
51985)]
51986pub fn vreinterpretq_s64_p8(a: poly8x16_t) -> int64x2_t {
51987 let a: poly8x16_t =
51988 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
51989 unsafe {
51990 let ret_val: int64x2_t = transmute(a);
51991 simd_shuffle!(ret_val, ret_val, [1, 0])
51992 }
51993}
51994#[doc = "Vector reinterpret cast operation"]
51995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p8)"]
51996#[inline(always)]
51997#[cfg(target_endian = "little")]
51998#[target_feature(enable = "neon")]
51999#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52000#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52001#[cfg_attr(
52002 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52003 assert_instr(nop)
52004)]
52005#[cfg_attr(
52006 not(target_arch = "arm"),
52007 stable(feature = "neon_intrinsics", since = "1.59.0")
52008)]
52009#[cfg_attr(
52010 target_arch = "arm",
52011 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52012)]
52013pub fn vreinterpretq_u8_p8(a: poly8x16_t) -> uint8x16_t {
52014 unsafe { transmute(a) }
52015}
52016#[doc = "Vector reinterpret cast operation"]
52017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p8)"]
52018#[inline(always)]
52019#[cfg(target_endian = "big")]
52020#[target_feature(enable = "neon")]
52021#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52022#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52023#[cfg_attr(
52024 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52025 assert_instr(nop)
52026)]
52027#[cfg_attr(
52028 not(target_arch = "arm"),
52029 stable(feature = "neon_intrinsics", since = "1.59.0")
52030)]
52031#[cfg_attr(
52032 target_arch = "arm",
52033 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52034)]
52035pub fn vreinterpretq_u8_p8(a: poly8x16_t) -> uint8x16_t {
52036 let a: poly8x16_t =
52037 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52038 unsafe {
52039 let ret_val: uint8x16_t = transmute(a);
52040 simd_shuffle!(
52041 ret_val,
52042 ret_val,
52043 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
52044 )
52045 }
52046}
52047#[doc = "Vector reinterpret cast operation"]
52048#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p8)"]
52049#[inline(always)]
52050#[cfg(target_endian = "little")]
52051#[target_feature(enable = "neon")]
52052#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52053#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52054#[cfg_attr(
52055 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52056 assert_instr(nop)
52057)]
52058#[cfg_attr(
52059 not(target_arch = "arm"),
52060 stable(feature = "neon_intrinsics", since = "1.59.0")
52061)]
52062#[cfg_attr(
52063 target_arch = "arm",
52064 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52065)]
52066pub fn vreinterpretq_u16_p8(a: poly8x16_t) -> uint16x8_t {
52067 unsafe { transmute(a) }
52068}
52069#[doc = "Vector reinterpret cast operation"]
52070#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p8)"]
52071#[inline(always)]
52072#[cfg(target_endian = "big")]
52073#[target_feature(enable = "neon")]
52074#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52075#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52076#[cfg_attr(
52077 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52078 assert_instr(nop)
52079)]
52080#[cfg_attr(
52081 not(target_arch = "arm"),
52082 stable(feature = "neon_intrinsics", since = "1.59.0")
52083)]
52084#[cfg_attr(
52085 target_arch = "arm",
52086 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52087)]
52088pub fn vreinterpretq_u16_p8(a: poly8x16_t) -> uint16x8_t {
52089 let a: poly8x16_t =
52090 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52091 unsafe {
52092 let ret_val: uint16x8_t = transmute(a);
52093 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52094 }
52095}
52096#[doc = "Vector reinterpret cast operation"]
52097#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p8)"]
52098#[inline(always)]
52099#[cfg(target_endian = "little")]
52100#[target_feature(enable = "neon")]
52101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52103#[cfg_attr(
52104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52105 assert_instr(nop)
52106)]
52107#[cfg_attr(
52108 not(target_arch = "arm"),
52109 stable(feature = "neon_intrinsics", since = "1.59.0")
52110)]
52111#[cfg_attr(
52112 target_arch = "arm",
52113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52114)]
52115pub fn vreinterpretq_u32_p8(a: poly8x16_t) -> uint32x4_t {
52116 unsafe { transmute(a) }
52117}
52118#[doc = "Vector reinterpret cast operation"]
52119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p8)"]
52120#[inline(always)]
52121#[cfg(target_endian = "big")]
52122#[target_feature(enable = "neon")]
52123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52124#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52125#[cfg_attr(
52126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52127 assert_instr(nop)
52128)]
52129#[cfg_attr(
52130 not(target_arch = "arm"),
52131 stable(feature = "neon_intrinsics", since = "1.59.0")
52132)]
52133#[cfg_attr(
52134 target_arch = "arm",
52135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52136)]
52137pub fn vreinterpretq_u32_p8(a: poly8x16_t) -> uint32x4_t {
52138 let a: poly8x16_t =
52139 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52140 unsafe {
52141 let ret_val: uint32x4_t = transmute(a);
52142 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52143 }
52144}
52145#[doc = "Vector reinterpret cast operation"]
52146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p8)"]
52147#[inline(always)]
52148#[cfg(target_endian = "little")]
52149#[target_feature(enable = "neon")]
52150#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52151#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52152#[cfg_attr(
52153 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52154 assert_instr(nop)
52155)]
52156#[cfg_attr(
52157 not(target_arch = "arm"),
52158 stable(feature = "neon_intrinsics", since = "1.59.0")
52159)]
52160#[cfg_attr(
52161 target_arch = "arm",
52162 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52163)]
52164pub fn vreinterpretq_u64_p8(a: poly8x16_t) -> uint64x2_t {
52165 unsafe { transmute(a) }
52166}
52167#[doc = "Vector reinterpret cast operation"]
52168#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p8)"]
52169#[inline(always)]
52170#[cfg(target_endian = "big")]
52171#[target_feature(enable = "neon")]
52172#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52173#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52174#[cfg_attr(
52175 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52176 assert_instr(nop)
52177)]
52178#[cfg_attr(
52179 not(target_arch = "arm"),
52180 stable(feature = "neon_intrinsics", since = "1.59.0")
52181)]
52182#[cfg_attr(
52183 target_arch = "arm",
52184 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52185)]
52186pub fn vreinterpretq_u64_p8(a: poly8x16_t) -> uint64x2_t {
52187 let a: poly8x16_t =
52188 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52189 unsafe {
52190 let ret_val: uint64x2_t = transmute(a);
52191 simd_shuffle!(ret_val, ret_val, [1, 0])
52192 }
52193}
52194#[doc = "Vector reinterpret cast operation"]
52195#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p8)"]
52196#[inline(always)]
52197#[cfg(target_endian = "little")]
52198#[target_feature(enable = "neon")]
52199#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52200#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52201#[cfg_attr(
52202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52203 assert_instr(nop)
52204)]
52205#[cfg_attr(
52206 not(target_arch = "arm"),
52207 stable(feature = "neon_intrinsics", since = "1.59.0")
52208)]
52209#[cfg_attr(
52210 target_arch = "arm",
52211 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52212)]
52213pub fn vreinterpretq_p16_p8(a: poly8x16_t) -> poly16x8_t {
52214 unsafe { transmute(a) }
52215}
52216#[doc = "Vector reinterpret cast operation"]
52217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p8)"]
52218#[inline(always)]
52219#[cfg(target_endian = "big")]
52220#[target_feature(enable = "neon")]
52221#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52222#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52223#[cfg_attr(
52224 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52225 assert_instr(nop)
52226)]
52227#[cfg_attr(
52228 not(target_arch = "arm"),
52229 stable(feature = "neon_intrinsics", since = "1.59.0")
52230)]
52231#[cfg_attr(
52232 target_arch = "arm",
52233 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52234)]
52235pub fn vreinterpretq_p16_p8(a: poly8x16_t) -> poly16x8_t {
52236 let a: poly8x16_t =
52237 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
52238 unsafe {
52239 let ret_val: poly16x8_t = transmute(a);
52240 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52241 }
52242}
52243#[doc = "Vector reinterpret cast operation"]
52244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p16)"]
52245#[inline(always)]
52246#[cfg(target_endian = "little")]
52247#[target_feature(enable = "neon")]
52248#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52249#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52250#[cfg_attr(
52251 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52252 assert_instr(nop)
52253)]
52254#[cfg_attr(
52255 not(target_arch = "arm"),
52256 stable(feature = "neon_intrinsics", since = "1.59.0")
52257)]
52258#[cfg_attr(
52259 target_arch = "arm",
52260 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52261)]
52262pub fn vreinterpret_f32_p16(a: poly16x4_t) -> float32x2_t {
52263 unsafe { transmute(a) }
52264}
52265#[doc = "Vector reinterpret cast operation"]
52266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_f32_p16)"]
52267#[inline(always)]
52268#[cfg(target_endian = "big")]
52269#[target_feature(enable = "neon")]
52270#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52271#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52272#[cfg_attr(
52273 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52274 assert_instr(nop)
52275)]
52276#[cfg_attr(
52277 not(target_arch = "arm"),
52278 stable(feature = "neon_intrinsics", since = "1.59.0")
52279)]
52280#[cfg_attr(
52281 target_arch = "arm",
52282 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52283)]
52284pub fn vreinterpret_f32_p16(a: poly16x4_t) -> float32x2_t {
52285 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52286 unsafe {
52287 let ret_val: float32x2_t = transmute(a);
52288 simd_shuffle!(ret_val, ret_val, [1, 0])
52289 }
52290}
52291#[doc = "Vector reinterpret cast operation"]
52292#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p16)"]
52293#[inline(always)]
52294#[cfg(target_endian = "little")]
52295#[target_feature(enable = "neon")]
52296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52298#[cfg_attr(
52299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52300 assert_instr(nop)
52301)]
52302#[cfg_attr(
52303 not(target_arch = "arm"),
52304 stable(feature = "neon_intrinsics", since = "1.59.0")
52305)]
52306#[cfg_attr(
52307 target_arch = "arm",
52308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52309)]
52310pub fn vreinterpret_s8_p16(a: poly16x4_t) -> int8x8_t {
52311 unsafe { transmute(a) }
52312}
52313#[doc = "Vector reinterpret cast operation"]
52314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p16)"]
52315#[inline(always)]
52316#[cfg(target_endian = "big")]
52317#[target_feature(enable = "neon")]
52318#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52319#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52320#[cfg_attr(
52321 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52322 assert_instr(nop)
52323)]
52324#[cfg_attr(
52325 not(target_arch = "arm"),
52326 stable(feature = "neon_intrinsics", since = "1.59.0")
52327)]
52328#[cfg_attr(
52329 target_arch = "arm",
52330 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52331)]
52332pub fn vreinterpret_s8_p16(a: poly16x4_t) -> int8x8_t {
52333 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52334 unsafe {
52335 let ret_val: int8x8_t = transmute(a);
52336 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52337 }
52338}
52339#[doc = "Vector reinterpret cast operation"]
52340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p16)"]
52341#[inline(always)]
52342#[cfg(target_endian = "little")]
52343#[target_feature(enable = "neon")]
52344#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52345#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52346#[cfg_attr(
52347 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52348 assert_instr(nop)
52349)]
52350#[cfg_attr(
52351 not(target_arch = "arm"),
52352 stable(feature = "neon_intrinsics", since = "1.59.0")
52353)]
52354#[cfg_attr(
52355 target_arch = "arm",
52356 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52357)]
52358pub fn vreinterpret_s16_p16(a: poly16x4_t) -> int16x4_t {
52359 unsafe { transmute(a) }
52360}
52361#[doc = "Vector reinterpret cast operation"]
52362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p16)"]
52363#[inline(always)]
52364#[cfg(target_endian = "big")]
52365#[target_feature(enable = "neon")]
52366#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52367#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52368#[cfg_attr(
52369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52370 assert_instr(nop)
52371)]
52372#[cfg_attr(
52373 not(target_arch = "arm"),
52374 stable(feature = "neon_intrinsics", since = "1.59.0")
52375)]
52376#[cfg_attr(
52377 target_arch = "arm",
52378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52379)]
52380pub fn vreinterpret_s16_p16(a: poly16x4_t) -> int16x4_t {
52381 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52382 unsafe {
52383 let ret_val: int16x4_t = transmute(a);
52384 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52385 }
52386}
52387#[doc = "Vector reinterpret cast operation"]
52388#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p16)"]
52389#[inline(always)]
52390#[cfg(target_endian = "little")]
52391#[target_feature(enable = "neon")]
52392#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52393#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52394#[cfg_attr(
52395 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52396 assert_instr(nop)
52397)]
52398#[cfg_attr(
52399 not(target_arch = "arm"),
52400 stable(feature = "neon_intrinsics", since = "1.59.0")
52401)]
52402#[cfg_attr(
52403 target_arch = "arm",
52404 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52405)]
52406pub fn vreinterpret_s32_p16(a: poly16x4_t) -> int32x2_t {
52407 unsafe { transmute(a) }
52408}
52409#[doc = "Vector reinterpret cast operation"]
52410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p16)"]
52411#[inline(always)]
52412#[cfg(target_endian = "big")]
52413#[target_feature(enable = "neon")]
52414#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52415#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52416#[cfg_attr(
52417 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52418 assert_instr(nop)
52419)]
52420#[cfg_attr(
52421 not(target_arch = "arm"),
52422 stable(feature = "neon_intrinsics", since = "1.59.0")
52423)]
52424#[cfg_attr(
52425 target_arch = "arm",
52426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52427)]
52428pub fn vreinterpret_s32_p16(a: poly16x4_t) -> int32x2_t {
52429 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52430 unsafe {
52431 let ret_val: int32x2_t = transmute(a);
52432 simd_shuffle!(ret_val, ret_val, [1, 0])
52433 }
52434}
52435#[doc = "Vector reinterpret cast operation"]
52436#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p16)"]
52437#[inline(always)]
52438#[cfg(target_endian = "little")]
52439#[target_feature(enable = "neon")]
52440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52442#[cfg_attr(
52443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52444 assert_instr(nop)
52445)]
52446#[cfg_attr(
52447 not(target_arch = "arm"),
52448 stable(feature = "neon_intrinsics", since = "1.59.0")
52449)]
52450#[cfg_attr(
52451 target_arch = "arm",
52452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52453)]
52454pub fn vreinterpret_s64_p16(a: poly16x4_t) -> int64x1_t {
52455 unsafe { transmute(a) }
52456}
52457#[doc = "Vector reinterpret cast operation"]
52458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s64_p16)"]
52459#[inline(always)]
52460#[cfg(target_endian = "big")]
52461#[target_feature(enable = "neon")]
52462#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52463#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52464#[cfg_attr(
52465 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52466 assert_instr(nop)
52467)]
52468#[cfg_attr(
52469 not(target_arch = "arm"),
52470 stable(feature = "neon_intrinsics", since = "1.59.0")
52471)]
52472#[cfg_attr(
52473 target_arch = "arm",
52474 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52475)]
52476pub fn vreinterpret_s64_p16(a: poly16x4_t) -> int64x1_t {
52477 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52478 unsafe { transmute(a) }
52479}
52480#[doc = "Vector reinterpret cast operation"]
52481#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p16)"]
52482#[inline(always)]
52483#[cfg(target_endian = "little")]
52484#[target_feature(enable = "neon")]
52485#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52486#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52487#[cfg_attr(
52488 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52489 assert_instr(nop)
52490)]
52491#[cfg_attr(
52492 not(target_arch = "arm"),
52493 stable(feature = "neon_intrinsics", since = "1.59.0")
52494)]
52495#[cfg_attr(
52496 target_arch = "arm",
52497 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52498)]
52499pub fn vreinterpret_u8_p16(a: poly16x4_t) -> uint8x8_t {
52500 unsafe { transmute(a) }
52501}
52502#[doc = "Vector reinterpret cast operation"]
52503#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p16)"]
52504#[inline(always)]
52505#[cfg(target_endian = "big")]
52506#[target_feature(enable = "neon")]
52507#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52508#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52509#[cfg_attr(
52510 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52511 assert_instr(nop)
52512)]
52513#[cfg_attr(
52514 not(target_arch = "arm"),
52515 stable(feature = "neon_intrinsics", since = "1.59.0")
52516)]
52517#[cfg_attr(
52518 target_arch = "arm",
52519 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52520)]
52521pub fn vreinterpret_u8_p16(a: poly16x4_t) -> uint8x8_t {
52522 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52523 unsafe {
52524 let ret_val: uint8x8_t = transmute(a);
52525 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52526 }
52527}
52528#[doc = "Vector reinterpret cast operation"]
52529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p16)"]
52530#[inline(always)]
52531#[cfg(target_endian = "little")]
52532#[target_feature(enable = "neon")]
52533#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52534#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52535#[cfg_attr(
52536 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52537 assert_instr(nop)
52538)]
52539#[cfg_attr(
52540 not(target_arch = "arm"),
52541 stable(feature = "neon_intrinsics", since = "1.59.0")
52542)]
52543#[cfg_attr(
52544 target_arch = "arm",
52545 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52546)]
52547pub fn vreinterpret_u16_p16(a: poly16x4_t) -> uint16x4_t {
52548 unsafe { transmute(a) }
52549}
52550#[doc = "Vector reinterpret cast operation"]
52551#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p16)"]
52552#[inline(always)]
52553#[cfg(target_endian = "big")]
52554#[target_feature(enable = "neon")]
52555#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52556#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52557#[cfg_attr(
52558 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52559 assert_instr(nop)
52560)]
52561#[cfg_attr(
52562 not(target_arch = "arm"),
52563 stable(feature = "neon_intrinsics", since = "1.59.0")
52564)]
52565#[cfg_attr(
52566 target_arch = "arm",
52567 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52568)]
52569pub fn vreinterpret_u16_p16(a: poly16x4_t) -> uint16x4_t {
52570 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52571 unsafe {
52572 let ret_val: uint16x4_t = transmute(a);
52573 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52574 }
52575}
52576#[doc = "Vector reinterpret cast operation"]
52577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p16)"]
52578#[inline(always)]
52579#[cfg(target_endian = "little")]
52580#[target_feature(enable = "neon")]
52581#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52582#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52583#[cfg_attr(
52584 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52585 assert_instr(nop)
52586)]
52587#[cfg_attr(
52588 not(target_arch = "arm"),
52589 stable(feature = "neon_intrinsics", since = "1.59.0")
52590)]
52591#[cfg_attr(
52592 target_arch = "arm",
52593 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52594)]
52595pub fn vreinterpret_u32_p16(a: poly16x4_t) -> uint32x2_t {
52596 unsafe { transmute(a) }
52597}
52598#[doc = "Vector reinterpret cast operation"]
52599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p16)"]
52600#[inline(always)]
52601#[cfg(target_endian = "big")]
52602#[target_feature(enable = "neon")]
52603#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52604#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52605#[cfg_attr(
52606 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52607 assert_instr(nop)
52608)]
52609#[cfg_attr(
52610 not(target_arch = "arm"),
52611 stable(feature = "neon_intrinsics", since = "1.59.0")
52612)]
52613#[cfg_attr(
52614 target_arch = "arm",
52615 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52616)]
52617pub fn vreinterpret_u32_p16(a: poly16x4_t) -> uint32x2_t {
52618 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52619 unsafe {
52620 let ret_val: uint32x2_t = transmute(a);
52621 simd_shuffle!(ret_val, ret_val, [1, 0])
52622 }
52623}
52624#[doc = "Vector reinterpret cast operation"]
52625#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p16)"]
52626#[inline(always)]
52627#[cfg(target_endian = "little")]
52628#[target_feature(enable = "neon")]
52629#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52630#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52631#[cfg_attr(
52632 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52633 assert_instr(nop)
52634)]
52635#[cfg_attr(
52636 not(target_arch = "arm"),
52637 stable(feature = "neon_intrinsics", since = "1.59.0")
52638)]
52639#[cfg_attr(
52640 target_arch = "arm",
52641 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52642)]
52643pub fn vreinterpret_u64_p16(a: poly16x4_t) -> uint64x1_t {
52644 unsafe { transmute(a) }
52645}
52646#[doc = "Vector reinterpret cast operation"]
52647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u64_p16)"]
52648#[inline(always)]
52649#[cfg(target_endian = "big")]
52650#[target_feature(enable = "neon")]
52651#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52652#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52653#[cfg_attr(
52654 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52655 assert_instr(nop)
52656)]
52657#[cfg_attr(
52658 not(target_arch = "arm"),
52659 stable(feature = "neon_intrinsics", since = "1.59.0")
52660)]
52661#[cfg_attr(
52662 target_arch = "arm",
52663 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52664)]
52665pub fn vreinterpret_u64_p16(a: poly16x4_t) -> uint64x1_t {
52666 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52667 unsafe { transmute(a) }
52668}
52669#[doc = "Vector reinterpret cast operation"]
52670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p16)"]
52671#[inline(always)]
52672#[cfg(target_endian = "little")]
52673#[target_feature(enable = "neon")]
52674#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52675#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52676#[cfg_attr(
52677 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52678 assert_instr(nop)
52679)]
52680#[cfg_attr(
52681 not(target_arch = "arm"),
52682 stable(feature = "neon_intrinsics", since = "1.59.0")
52683)]
52684#[cfg_attr(
52685 target_arch = "arm",
52686 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52687)]
52688pub fn vreinterpret_p8_p16(a: poly16x4_t) -> poly8x8_t {
52689 unsafe { transmute(a) }
52690}
52691#[doc = "Vector reinterpret cast operation"]
52692#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p16)"]
52693#[inline(always)]
52694#[cfg(target_endian = "big")]
52695#[target_feature(enable = "neon")]
52696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52697#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52698#[cfg_attr(
52699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52700 assert_instr(nop)
52701)]
52702#[cfg_attr(
52703 not(target_arch = "arm"),
52704 stable(feature = "neon_intrinsics", since = "1.59.0")
52705)]
52706#[cfg_attr(
52707 target_arch = "arm",
52708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52709)]
52710pub fn vreinterpret_p8_p16(a: poly16x4_t) -> poly8x8_t {
52711 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
52712 unsafe {
52713 let ret_val: poly8x8_t = transmute(a);
52714 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52715 }
52716}
52717#[doc = "Vector reinterpret cast operation"]
52718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p16)"]
52719#[inline(always)]
52720#[cfg(target_endian = "little")]
52721#[target_feature(enable = "neon")]
52722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52724#[cfg_attr(
52725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52726 assert_instr(nop)
52727)]
52728#[cfg_attr(
52729 not(target_arch = "arm"),
52730 stable(feature = "neon_intrinsics", since = "1.59.0")
52731)]
52732#[cfg_attr(
52733 target_arch = "arm",
52734 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52735)]
52736pub fn vreinterpretq_f32_p16(a: poly16x8_t) -> float32x4_t {
52737 unsafe { transmute(a) }
52738}
52739#[doc = "Vector reinterpret cast operation"]
52740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_f32_p16)"]
52741#[inline(always)]
52742#[cfg(target_endian = "big")]
52743#[target_feature(enable = "neon")]
52744#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52745#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52746#[cfg_attr(
52747 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52748 assert_instr(nop)
52749)]
52750#[cfg_attr(
52751 not(target_arch = "arm"),
52752 stable(feature = "neon_intrinsics", since = "1.59.0")
52753)]
52754#[cfg_attr(
52755 target_arch = "arm",
52756 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52757)]
52758pub fn vreinterpretq_f32_p16(a: poly16x8_t) -> float32x4_t {
52759 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
52760 unsafe {
52761 let ret_val: float32x4_t = transmute(a);
52762 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52763 }
52764}
52765#[doc = "Vector reinterpret cast operation"]
52766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p16)"]
52767#[inline(always)]
52768#[cfg(target_endian = "little")]
52769#[target_feature(enable = "neon")]
52770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52772#[cfg_attr(
52773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52774 assert_instr(nop)
52775)]
52776#[cfg_attr(
52777 not(target_arch = "arm"),
52778 stable(feature = "neon_intrinsics", since = "1.59.0")
52779)]
52780#[cfg_attr(
52781 target_arch = "arm",
52782 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52783)]
52784pub fn vreinterpretq_s8_p16(a: poly16x8_t) -> int8x16_t {
52785 unsafe { transmute(a) }
52786}
52787#[doc = "Vector reinterpret cast operation"]
52788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p16)"]
52789#[inline(always)]
52790#[cfg(target_endian = "big")]
52791#[target_feature(enable = "neon")]
52792#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52793#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52794#[cfg_attr(
52795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52796 assert_instr(nop)
52797)]
52798#[cfg_attr(
52799 not(target_arch = "arm"),
52800 stable(feature = "neon_intrinsics", since = "1.59.0")
52801)]
52802#[cfg_attr(
52803 target_arch = "arm",
52804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52805)]
52806pub fn vreinterpretq_s8_p16(a: poly16x8_t) -> int8x16_t {
52807 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
52808 unsafe {
52809 let ret_val: int8x16_t = transmute(a);
52810 simd_shuffle!(
52811 ret_val,
52812 ret_val,
52813 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
52814 )
52815 }
52816}
52817#[doc = "Vector reinterpret cast operation"]
52818#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p16)"]
52819#[inline(always)]
52820#[cfg(target_endian = "little")]
52821#[target_feature(enable = "neon")]
52822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52823#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52824#[cfg_attr(
52825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52826 assert_instr(nop)
52827)]
52828#[cfg_attr(
52829 not(target_arch = "arm"),
52830 stable(feature = "neon_intrinsics", since = "1.59.0")
52831)]
52832#[cfg_attr(
52833 target_arch = "arm",
52834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52835)]
52836pub fn vreinterpretq_s16_p16(a: poly16x8_t) -> int16x8_t {
52837 unsafe { transmute(a) }
52838}
52839#[doc = "Vector reinterpret cast operation"]
52840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p16)"]
52841#[inline(always)]
52842#[cfg(target_endian = "big")]
52843#[target_feature(enable = "neon")]
52844#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52845#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52846#[cfg_attr(
52847 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52848 assert_instr(nop)
52849)]
52850#[cfg_attr(
52851 not(target_arch = "arm"),
52852 stable(feature = "neon_intrinsics", since = "1.59.0")
52853)]
52854#[cfg_attr(
52855 target_arch = "arm",
52856 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52857)]
52858pub fn vreinterpretq_s16_p16(a: poly16x8_t) -> int16x8_t {
52859 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
52860 unsafe {
52861 let ret_val: int16x8_t = transmute(a);
52862 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
52863 }
52864}
52865#[doc = "Vector reinterpret cast operation"]
52866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p16)"]
52867#[inline(always)]
52868#[cfg(target_endian = "little")]
52869#[target_feature(enable = "neon")]
52870#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52871#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52872#[cfg_attr(
52873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52874 assert_instr(nop)
52875)]
52876#[cfg_attr(
52877 not(target_arch = "arm"),
52878 stable(feature = "neon_intrinsics", since = "1.59.0")
52879)]
52880#[cfg_attr(
52881 target_arch = "arm",
52882 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52883)]
52884pub fn vreinterpretq_s32_p16(a: poly16x8_t) -> int32x4_t {
52885 unsafe { transmute(a) }
52886}
52887#[doc = "Vector reinterpret cast operation"]
52888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p16)"]
52889#[inline(always)]
52890#[cfg(target_endian = "big")]
52891#[target_feature(enable = "neon")]
52892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52893#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52894#[cfg_attr(
52895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52896 assert_instr(nop)
52897)]
52898#[cfg_attr(
52899 not(target_arch = "arm"),
52900 stable(feature = "neon_intrinsics", since = "1.59.0")
52901)]
52902#[cfg_attr(
52903 target_arch = "arm",
52904 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52905)]
52906pub fn vreinterpretq_s32_p16(a: poly16x8_t) -> int32x4_t {
52907 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
52908 unsafe {
52909 let ret_val: int32x4_t = transmute(a);
52910 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
52911 }
52912}
52913#[doc = "Vector reinterpret cast operation"]
52914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p16)"]
52915#[inline(always)]
52916#[cfg(target_endian = "little")]
52917#[target_feature(enable = "neon")]
52918#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52919#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52920#[cfg_attr(
52921 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52922 assert_instr(nop)
52923)]
52924#[cfg_attr(
52925 not(target_arch = "arm"),
52926 stable(feature = "neon_intrinsics", since = "1.59.0")
52927)]
52928#[cfg_attr(
52929 target_arch = "arm",
52930 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52931)]
52932pub fn vreinterpretq_s64_p16(a: poly16x8_t) -> int64x2_t {
52933 unsafe { transmute(a) }
52934}
52935#[doc = "Vector reinterpret cast operation"]
52936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p16)"]
52937#[inline(always)]
52938#[cfg(target_endian = "big")]
52939#[target_feature(enable = "neon")]
52940#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52941#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52942#[cfg_attr(
52943 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52944 assert_instr(nop)
52945)]
52946#[cfg_attr(
52947 not(target_arch = "arm"),
52948 stable(feature = "neon_intrinsics", since = "1.59.0")
52949)]
52950#[cfg_attr(
52951 target_arch = "arm",
52952 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52953)]
52954pub fn vreinterpretq_s64_p16(a: poly16x8_t) -> int64x2_t {
52955 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
52956 unsafe {
52957 let ret_val: int64x2_t = transmute(a);
52958 simd_shuffle!(ret_val, ret_val, [1, 0])
52959 }
52960}
52961#[doc = "Vector reinterpret cast operation"]
52962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p16)"]
52963#[inline(always)]
52964#[cfg(target_endian = "little")]
52965#[target_feature(enable = "neon")]
52966#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52967#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52968#[cfg_attr(
52969 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52970 assert_instr(nop)
52971)]
52972#[cfg_attr(
52973 not(target_arch = "arm"),
52974 stable(feature = "neon_intrinsics", since = "1.59.0")
52975)]
52976#[cfg_attr(
52977 target_arch = "arm",
52978 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
52979)]
52980pub fn vreinterpretq_u8_p16(a: poly16x8_t) -> uint8x16_t {
52981 unsafe { transmute(a) }
52982}
52983#[doc = "Vector reinterpret cast operation"]
52984#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p16)"]
52985#[inline(always)]
52986#[cfg(target_endian = "big")]
52987#[target_feature(enable = "neon")]
52988#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
52989#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
52990#[cfg_attr(
52991 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
52992 assert_instr(nop)
52993)]
52994#[cfg_attr(
52995 not(target_arch = "arm"),
52996 stable(feature = "neon_intrinsics", since = "1.59.0")
52997)]
52998#[cfg_attr(
52999 target_arch = "arm",
53000 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53001)]
53002pub fn vreinterpretq_u8_p16(a: poly16x8_t) -> uint8x16_t {
53003 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53004 unsafe {
53005 let ret_val: uint8x16_t = transmute(a);
53006 simd_shuffle!(
53007 ret_val,
53008 ret_val,
53009 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53010 )
53011 }
53012}
53013#[doc = "Vector reinterpret cast operation"]
53014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p16)"]
53015#[inline(always)]
53016#[cfg(target_endian = "little")]
53017#[target_feature(enable = "neon")]
53018#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53019#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53020#[cfg_attr(
53021 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53022 assert_instr(nop)
53023)]
53024#[cfg_attr(
53025 not(target_arch = "arm"),
53026 stable(feature = "neon_intrinsics", since = "1.59.0")
53027)]
53028#[cfg_attr(
53029 target_arch = "arm",
53030 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53031)]
53032pub fn vreinterpretq_u16_p16(a: poly16x8_t) -> uint16x8_t {
53033 unsafe { transmute(a) }
53034}
53035#[doc = "Vector reinterpret cast operation"]
53036#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p16)"]
53037#[inline(always)]
53038#[cfg(target_endian = "big")]
53039#[target_feature(enable = "neon")]
53040#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53041#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53042#[cfg_attr(
53043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53044 assert_instr(nop)
53045)]
53046#[cfg_attr(
53047 not(target_arch = "arm"),
53048 stable(feature = "neon_intrinsics", since = "1.59.0")
53049)]
53050#[cfg_attr(
53051 target_arch = "arm",
53052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53053)]
53054pub fn vreinterpretq_u16_p16(a: poly16x8_t) -> uint16x8_t {
53055 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53056 unsafe {
53057 let ret_val: uint16x8_t = transmute(a);
53058 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53059 }
53060}
53061#[doc = "Vector reinterpret cast operation"]
53062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p16)"]
53063#[inline(always)]
53064#[cfg(target_endian = "little")]
53065#[target_feature(enable = "neon")]
53066#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53067#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53068#[cfg_attr(
53069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53070 assert_instr(nop)
53071)]
53072#[cfg_attr(
53073 not(target_arch = "arm"),
53074 stable(feature = "neon_intrinsics", since = "1.59.0")
53075)]
53076#[cfg_attr(
53077 target_arch = "arm",
53078 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53079)]
53080pub fn vreinterpretq_u32_p16(a: poly16x8_t) -> uint32x4_t {
53081 unsafe { transmute(a) }
53082}
53083#[doc = "Vector reinterpret cast operation"]
53084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p16)"]
53085#[inline(always)]
53086#[cfg(target_endian = "big")]
53087#[target_feature(enable = "neon")]
53088#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53089#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53090#[cfg_attr(
53091 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53092 assert_instr(nop)
53093)]
53094#[cfg_attr(
53095 not(target_arch = "arm"),
53096 stable(feature = "neon_intrinsics", since = "1.59.0")
53097)]
53098#[cfg_attr(
53099 target_arch = "arm",
53100 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53101)]
53102pub fn vreinterpretq_u32_p16(a: poly16x8_t) -> uint32x4_t {
53103 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53104 unsafe {
53105 let ret_val: uint32x4_t = transmute(a);
53106 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53107 }
53108}
53109#[doc = "Vector reinterpret cast operation"]
53110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p16)"]
53111#[inline(always)]
53112#[cfg(target_endian = "little")]
53113#[target_feature(enable = "neon")]
53114#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53115#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53116#[cfg_attr(
53117 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53118 assert_instr(nop)
53119)]
53120#[cfg_attr(
53121 not(target_arch = "arm"),
53122 stable(feature = "neon_intrinsics", since = "1.59.0")
53123)]
53124#[cfg_attr(
53125 target_arch = "arm",
53126 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53127)]
53128pub fn vreinterpretq_u64_p16(a: poly16x8_t) -> uint64x2_t {
53129 unsafe { transmute(a) }
53130}
53131#[doc = "Vector reinterpret cast operation"]
53132#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p16)"]
53133#[inline(always)]
53134#[cfg(target_endian = "big")]
53135#[target_feature(enable = "neon")]
53136#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53137#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53138#[cfg_attr(
53139 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53140 assert_instr(nop)
53141)]
53142#[cfg_attr(
53143 not(target_arch = "arm"),
53144 stable(feature = "neon_intrinsics", since = "1.59.0")
53145)]
53146#[cfg_attr(
53147 target_arch = "arm",
53148 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53149)]
53150pub fn vreinterpretq_u64_p16(a: poly16x8_t) -> uint64x2_t {
53151 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53152 unsafe {
53153 let ret_val: uint64x2_t = transmute(a);
53154 simd_shuffle!(ret_val, ret_val, [1, 0])
53155 }
53156}
53157#[doc = "Vector reinterpret cast operation"]
53158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p16)"]
53159#[inline(always)]
53160#[cfg(target_endian = "little")]
53161#[target_feature(enable = "neon")]
53162#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53163#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53164#[cfg_attr(
53165 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53166 assert_instr(nop)
53167)]
53168#[cfg_attr(
53169 not(target_arch = "arm"),
53170 stable(feature = "neon_intrinsics", since = "1.59.0")
53171)]
53172#[cfg_attr(
53173 target_arch = "arm",
53174 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53175)]
53176pub fn vreinterpretq_p8_p16(a: poly16x8_t) -> poly8x16_t {
53177 unsafe { transmute(a) }
53178}
53179#[doc = "Vector reinterpret cast operation"]
53180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p16)"]
53181#[inline(always)]
53182#[cfg(target_endian = "big")]
53183#[target_feature(enable = "neon")]
53184#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
53185#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53186#[cfg_attr(
53187 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53188 assert_instr(nop)
53189)]
53190#[cfg_attr(
53191 not(target_arch = "arm"),
53192 stable(feature = "neon_intrinsics", since = "1.59.0")
53193)]
53194#[cfg_attr(
53195 target_arch = "arm",
53196 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53197)]
53198pub fn vreinterpretq_p8_p16(a: poly16x8_t) -> poly8x16_t {
53199 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53200 unsafe {
53201 let ret_val: poly8x16_t = transmute(a);
53202 simd_shuffle!(
53203 ret_val,
53204 ret_val,
53205 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53206 )
53207 }
53208}
53209#[doc = "Vector reinterpret cast operation"]
53210#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p128)"]
53211#[inline(always)]
53212#[cfg(target_endian = "little")]
53213#[target_feature(enable = "neon,aes")]
53214#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53216#[cfg_attr(
53217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53218 assert_instr(nop)
53219)]
53220#[cfg_attr(
53221 not(target_arch = "arm"),
53222 stable(feature = "neon_intrinsics", since = "1.59.0")
53223)]
53224#[cfg_attr(
53225 target_arch = "arm",
53226 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53227)]
53228pub fn vreinterpretq_s8_p128(a: p128) -> int8x16_t {
53229 unsafe { transmute(a) }
53230}
53231#[doc = "Vector reinterpret cast operation"]
53232#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p128)"]
53233#[inline(always)]
53234#[cfg(target_endian = "big")]
53235#[target_feature(enable = "neon,aes")]
53236#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53237#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53238#[cfg_attr(
53239 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53240 assert_instr(nop)
53241)]
53242#[cfg_attr(
53243 not(target_arch = "arm"),
53244 stable(feature = "neon_intrinsics", since = "1.59.0")
53245)]
53246#[cfg_attr(
53247 target_arch = "arm",
53248 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53249)]
53250pub fn vreinterpretq_s8_p128(a: p128) -> int8x16_t {
53251 unsafe {
53252 let ret_val: int8x16_t = transmute(a);
53253 simd_shuffle!(
53254 ret_val,
53255 ret_val,
53256 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53257 )
53258 }
53259}
53260#[doc = "Vector reinterpret cast operation"]
53261#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p128)"]
53262#[inline(always)]
53263#[cfg(target_endian = "little")]
53264#[target_feature(enable = "neon,aes")]
53265#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53266#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53267#[cfg_attr(
53268 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53269 assert_instr(nop)
53270)]
53271#[cfg_attr(
53272 not(target_arch = "arm"),
53273 stable(feature = "neon_intrinsics", since = "1.59.0")
53274)]
53275#[cfg_attr(
53276 target_arch = "arm",
53277 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53278)]
53279pub fn vreinterpretq_s16_p128(a: p128) -> int16x8_t {
53280 unsafe { transmute(a) }
53281}
53282#[doc = "Vector reinterpret cast operation"]
53283#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p128)"]
53284#[inline(always)]
53285#[cfg(target_endian = "big")]
53286#[target_feature(enable = "neon,aes")]
53287#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53288#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53289#[cfg_attr(
53290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53291 assert_instr(nop)
53292)]
53293#[cfg_attr(
53294 not(target_arch = "arm"),
53295 stable(feature = "neon_intrinsics", since = "1.59.0")
53296)]
53297#[cfg_attr(
53298 target_arch = "arm",
53299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53300)]
53301pub fn vreinterpretq_s16_p128(a: p128) -> int16x8_t {
53302 unsafe {
53303 let ret_val: int16x8_t = transmute(a);
53304 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53305 }
53306}
53307#[doc = "Vector reinterpret cast operation"]
53308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p128)"]
53309#[inline(always)]
53310#[cfg(target_endian = "little")]
53311#[target_feature(enable = "neon,aes")]
53312#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53313#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53314#[cfg_attr(
53315 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53316 assert_instr(nop)
53317)]
53318#[cfg_attr(
53319 not(target_arch = "arm"),
53320 stable(feature = "neon_intrinsics", since = "1.59.0")
53321)]
53322#[cfg_attr(
53323 target_arch = "arm",
53324 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53325)]
53326pub fn vreinterpretq_s32_p128(a: p128) -> int32x4_t {
53327 unsafe { transmute(a) }
53328}
53329#[doc = "Vector reinterpret cast operation"]
53330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p128)"]
53331#[inline(always)]
53332#[cfg(target_endian = "big")]
53333#[target_feature(enable = "neon,aes")]
53334#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53335#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53336#[cfg_attr(
53337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53338 assert_instr(nop)
53339)]
53340#[cfg_attr(
53341 not(target_arch = "arm"),
53342 stable(feature = "neon_intrinsics", since = "1.59.0")
53343)]
53344#[cfg_attr(
53345 target_arch = "arm",
53346 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53347)]
53348pub fn vreinterpretq_s32_p128(a: p128) -> int32x4_t {
53349 unsafe {
53350 let ret_val: int32x4_t = transmute(a);
53351 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53352 }
53353}
53354#[doc = "Vector reinterpret cast operation"]
53355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p128)"]
53356#[inline(always)]
53357#[cfg(target_endian = "little")]
53358#[target_feature(enable = "neon,aes")]
53359#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53360#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53361#[cfg_attr(
53362 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53363 assert_instr(nop)
53364)]
53365#[cfg_attr(
53366 not(target_arch = "arm"),
53367 stable(feature = "neon_intrinsics", since = "1.59.0")
53368)]
53369#[cfg_attr(
53370 target_arch = "arm",
53371 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53372)]
53373pub fn vreinterpretq_s64_p128(a: p128) -> int64x2_t {
53374 unsafe { transmute(a) }
53375}
53376#[doc = "Vector reinterpret cast operation"]
53377#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s64_p128)"]
53378#[inline(always)]
53379#[cfg(target_endian = "big")]
53380#[target_feature(enable = "neon,aes")]
53381#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53382#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53383#[cfg_attr(
53384 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53385 assert_instr(nop)
53386)]
53387#[cfg_attr(
53388 not(target_arch = "arm"),
53389 stable(feature = "neon_intrinsics", since = "1.59.0")
53390)]
53391#[cfg_attr(
53392 target_arch = "arm",
53393 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53394)]
53395pub fn vreinterpretq_s64_p128(a: p128) -> int64x2_t {
53396 unsafe {
53397 let ret_val: int64x2_t = transmute(a);
53398 simd_shuffle!(ret_val, ret_val, [1, 0])
53399 }
53400}
53401#[doc = "Vector reinterpret cast operation"]
53402#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p128)"]
53403#[inline(always)]
53404#[cfg(target_endian = "little")]
53405#[target_feature(enable = "neon,aes")]
53406#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53407#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53408#[cfg_attr(
53409 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53410 assert_instr(nop)
53411)]
53412#[cfg_attr(
53413 not(target_arch = "arm"),
53414 stable(feature = "neon_intrinsics", since = "1.59.0")
53415)]
53416#[cfg_attr(
53417 target_arch = "arm",
53418 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53419)]
53420pub fn vreinterpretq_u8_p128(a: p128) -> uint8x16_t {
53421 unsafe { transmute(a) }
53422}
53423#[doc = "Vector reinterpret cast operation"]
53424#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p128)"]
53425#[inline(always)]
53426#[cfg(target_endian = "big")]
53427#[target_feature(enable = "neon,aes")]
53428#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53429#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53430#[cfg_attr(
53431 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53432 assert_instr(nop)
53433)]
53434#[cfg_attr(
53435 not(target_arch = "arm"),
53436 stable(feature = "neon_intrinsics", since = "1.59.0")
53437)]
53438#[cfg_attr(
53439 target_arch = "arm",
53440 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53441)]
53442pub fn vreinterpretq_u8_p128(a: p128) -> uint8x16_t {
53443 unsafe {
53444 let ret_val: uint8x16_t = transmute(a);
53445 simd_shuffle!(
53446 ret_val,
53447 ret_val,
53448 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53449 )
53450 }
53451}
53452#[doc = "Vector reinterpret cast operation"]
53453#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p128)"]
53454#[inline(always)]
53455#[cfg(target_endian = "little")]
53456#[target_feature(enable = "neon,aes")]
53457#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53458#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53459#[cfg_attr(
53460 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53461 assert_instr(nop)
53462)]
53463#[cfg_attr(
53464 not(target_arch = "arm"),
53465 stable(feature = "neon_intrinsics", since = "1.59.0")
53466)]
53467#[cfg_attr(
53468 target_arch = "arm",
53469 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53470)]
53471pub fn vreinterpretq_u16_p128(a: p128) -> uint16x8_t {
53472 unsafe { transmute(a) }
53473}
53474#[doc = "Vector reinterpret cast operation"]
53475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p128)"]
53476#[inline(always)]
53477#[cfg(target_endian = "big")]
53478#[target_feature(enable = "neon,aes")]
53479#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53480#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53481#[cfg_attr(
53482 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53483 assert_instr(nop)
53484)]
53485#[cfg_attr(
53486 not(target_arch = "arm"),
53487 stable(feature = "neon_intrinsics", since = "1.59.0")
53488)]
53489#[cfg_attr(
53490 target_arch = "arm",
53491 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53492)]
53493pub fn vreinterpretq_u16_p128(a: p128) -> uint16x8_t {
53494 unsafe {
53495 let ret_val: uint16x8_t = transmute(a);
53496 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53497 }
53498}
53499#[doc = "Vector reinterpret cast operation"]
53500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p128)"]
53501#[inline(always)]
53502#[cfg(target_endian = "little")]
53503#[target_feature(enable = "neon,aes")]
53504#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53505#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53506#[cfg_attr(
53507 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53508 assert_instr(nop)
53509)]
53510#[cfg_attr(
53511 not(target_arch = "arm"),
53512 stable(feature = "neon_intrinsics", since = "1.59.0")
53513)]
53514#[cfg_attr(
53515 target_arch = "arm",
53516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53517)]
53518pub fn vreinterpretq_u32_p128(a: p128) -> uint32x4_t {
53519 unsafe { transmute(a) }
53520}
53521#[doc = "Vector reinterpret cast operation"]
53522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p128)"]
53523#[inline(always)]
53524#[cfg(target_endian = "big")]
53525#[target_feature(enable = "neon,aes")]
53526#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53528#[cfg_attr(
53529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53530 assert_instr(nop)
53531)]
53532#[cfg_attr(
53533 not(target_arch = "arm"),
53534 stable(feature = "neon_intrinsics", since = "1.59.0")
53535)]
53536#[cfg_attr(
53537 target_arch = "arm",
53538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53539)]
53540pub fn vreinterpretq_u32_p128(a: p128) -> uint32x4_t {
53541 unsafe {
53542 let ret_val: uint32x4_t = transmute(a);
53543 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
53544 }
53545}
53546#[doc = "Vector reinterpret cast operation"]
53547#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p128)"]
53548#[inline(always)]
53549#[cfg(target_endian = "little")]
53550#[target_feature(enable = "neon,aes")]
53551#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53553#[cfg_attr(
53554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53555 assert_instr(nop)
53556)]
53557#[cfg_attr(
53558 not(target_arch = "arm"),
53559 stable(feature = "neon_intrinsics", since = "1.59.0")
53560)]
53561#[cfg_attr(
53562 target_arch = "arm",
53563 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53564)]
53565pub fn vreinterpretq_u64_p128(a: p128) -> uint64x2_t {
53566 unsafe { transmute(a) }
53567}
53568#[doc = "Vector reinterpret cast operation"]
53569#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u64_p128)"]
53570#[inline(always)]
53571#[cfg(target_endian = "big")]
53572#[target_feature(enable = "neon,aes")]
53573#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53574#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53575#[cfg_attr(
53576 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53577 assert_instr(nop)
53578)]
53579#[cfg_attr(
53580 not(target_arch = "arm"),
53581 stable(feature = "neon_intrinsics", since = "1.59.0")
53582)]
53583#[cfg_attr(
53584 target_arch = "arm",
53585 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53586)]
53587pub fn vreinterpretq_u64_p128(a: p128) -> uint64x2_t {
53588 unsafe {
53589 let ret_val: uint64x2_t = transmute(a);
53590 simd_shuffle!(ret_val, ret_val, [1, 0])
53591 }
53592}
53593#[doc = "Vector reinterpret cast operation"]
53594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p128)"]
53595#[inline(always)]
53596#[cfg(target_endian = "little")]
53597#[target_feature(enable = "neon,aes")]
53598#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53599#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53600#[cfg_attr(
53601 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53602 assert_instr(nop)
53603)]
53604#[cfg_attr(
53605 not(target_arch = "arm"),
53606 stable(feature = "neon_intrinsics", since = "1.59.0")
53607)]
53608#[cfg_attr(
53609 target_arch = "arm",
53610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53611)]
53612pub fn vreinterpretq_p8_p128(a: p128) -> poly8x16_t {
53613 unsafe { transmute(a) }
53614}
53615#[doc = "Vector reinterpret cast operation"]
53616#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p128)"]
53617#[inline(always)]
53618#[cfg(target_endian = "big")]
53619#[target_feature(enable = "neon,aes")]
53620#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53621#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53622#[cfg_attr(
53623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53624 assert_instr(nop)
53625)]
53626#[cfg_attr(
53627 not(target_arch = "arm"),
53628 stable(feature = "neon_intrinsics", since = "1.59.0")
53629)]
53630#[cfg_attr(
53631 target_arch = "arm",
53632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53633)]
53634pub fn vreinterpretq_p8_p128(a: p128) -> poly8x16_t {
53635 unsafe {
53636 let ret_val: poly8x16_t = transmute(a);
53637 simd_shuffle!(
53638 ret_val,
53639 ret_val,
53640 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
53641 )
53642 }
53643}
53644#[doc = "Vector reinterpret cast operation"]
53645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p128)"]
53646#[inline(always)]
53647#[cfg(target_endian = "little")]
53648#[target_feature(enable = "neon,aes")]
53649#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53650#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53651#[cfg_attr(
53652 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53653 assert_instr(nop)
53654)]
53655#[cfg_attr(
53656 not(target_arch = "arm"),
53657 stable(feature = "neon_intrinsics", since = "1.59.0")
53658)]
53659#[cfg_attr(
53660 target_arch = "arm",
53661 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53662)]
53663pub fn vreinterpretq_p16_p128(a: p128) -> poly16x8_t {
53664 unsafe { transmute(a) }
53665}
53666#[doc = "Vector reinterpret cast operation"]
53667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p128)"]
53668#[inline(always)]
53669#[cfg(target_endian = "big")]
53670#[target_feature(enable = "neon,aes")]
53671#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53672#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53673#[cfg_attr(
53674 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53675 assert_instr(nop)
53676)]
53677#[cfg_attr(
53678 not(target_arch = "arm"),
53679 stable(feature = "neon_intrinsics", since = "1.59.0")
53680)]
53681#[cfg_attr(
53682 target_arch = "arm",
53683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53684)]
53685pub fn vreinterpretq_p16_p128(a: p128) -> poly16x8_t {
53686 unsafe {
53687 let ret_val: poly16x8_t = transmute(a);
53688 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
53689 }
53690}
53691#[doc = "Vector reinterpret cast operation"]
53692#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p128)"]
53693#[inline(always)]
53694#[cfg(target_endian = "little")]
53695#[target_feature(enable = "neon,aes")]
53696#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53697#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53698#[cfg_attr(
53699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53700 assert_instr(nop)
53701)]
53702#[cfg_attr(
53703 not(target_arch = "arm"),
53704 stable(feature = "neon_intrinsics", since = "1.59.0")
53705)]
53706#[cfg_attr(
53707 target_arch = "arm",
53708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53709)]
53710pub fn vreinterpretq_p64_p128(a: p128) -> poly64x2_t {
53711 unsafe { transmute(a) }
53712}
53713#[doc = "Vector reinterpret cast operation"]
53714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p128)"]
53715#[inline(always)]
53716#[cfg(target_endian = "big")]
53717#[target_feature(enable = "neon,aes")]
53718#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53720#[cfg_attr(
53721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53722 assert_instr(nop)
53723)]
53724#[cfg_attr(
53725 not(target_arch = "arm"),
53726 stable(feature = "neon_intrinsics", since = "1.59.0")
53727)]
53728#[cfg_attr(
53729 target_arch = "arm",
53730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53731)]
53732pub fn vreinterpretq_p64_p128(a: p128) -> poly64x2_t {
53733 unsafe {
53734 let ret_val: poly64x2_t = transmute(a);
53735 simd_shuffle!(ret_val, ret_val, [1, 0])
53736 }
53737}
53738#[doc = "Vector reinterpret cast operation"]
53739#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s8)"]
53740#[inline(always)]
53741#[cfg(target_endian = "little")]
53742#[target_feature(enable = "neon,aes")]
53743#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53744#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53745#[cfg_attr(
53746 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53747 assert_instr(nop)
53748)]
53749#[cfg_attr(
53750 not(target_arch = "arm"),
53751 stable(feature = "neon_intrinsics", since = "1.59.0")
53752)]
53753#[cfg_attr(
53754 target_arch = "arm",
53755 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53756)]
53757pub fn vreinterpret_p64_s8(a: int8x8_t) -> poly64x1_t {
53758 unsafe { transmute(a) }
53759}
53760#[doc = "Vector reinterpret cast operation"]
53761#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s8)"]
53762#[inline(always)]
53763#[cfg(target_endian = "big")]
53764#[target_feature(enable = "neon,aes")]
53765#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53766#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53767#[cfg_attr(
53768 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53769 assert_instr(nop)
53770)]
53771#[cfg_attr(
53772 not(target_arch = "arm"),
53773 stable(feature = "neon_intrinsics", since = "1.59.0")
53774)]
53775#[cfg_attr(
53776 target_arch = "arm",
53777 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53778)]
53779pub fn vreinterpret_p64_s8(a: int8x8_t) -> poly64x1_t {
53780 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53781 unsafe { transmute(a) }
53782}
53783#[doc = "Vector reinterpret cast operation"]
53784#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s8)"]
53785#[inline(always)]
53786#[cfg(target_endian = "little")]
53787#[target_feature(enable = "neon,aes")]
53788#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53789#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53790#[cfg_attr(
53791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53792 assert_instr(nop)
53793)]
53794#[cfg_attr(
53795 not(target_arch = "arm"),
53796 stable(feature = "neon_intrinsics", since = "1.59.0")
53797)]
53798#[cfg_attr(
53799 target_arch = "arm",
53800 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53801)]
53802pub fn vreinterpretq_p128_s8(a: int8x16_t) -> p128 {
53803 unsafe { transmute(a) }
53804}
53805#[doc = "Vector reinterpret cast operation"]
53806#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s8)"]
53807#[inline(always)]
53808#[cfg(target_endian = "big")]
53809#[target_feature(enable = "neon,aes")]
53810#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53811#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53812#[cfg_attr(
53813 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53814 assert_instr(nop)
53815)]
53816#[cfg_attr(
53817 not(target_arch = "arm"),
53818 stable(feature = "neon_intrinsics", since = "1.59.0")
53819)]
53820#[cfg_attr(
53821 target_arch = "arm",
53822 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53823)]
53824pub fn vreinterpretq_p128_s8(a: int8x16_t) -> p128 {
53825 let a: int8x16_t =
53826 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
53827 unsafe { transmute(a) }
53828}
53829#[doc = "Vector reinterpret cast operation"]
53830#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s8)"]
53831#[inline(always)]
53832#[cfg(target_endian = "little")]
53833#[target_feature(enable = "neon,aes")]
53834#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53835#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53836#[cfg_attr(
53837 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53838 assert_instr(nop)
53839)]
53840#[cfg_attr(
53841 not(target_arch = "arm"),
53842 stable(feature = "neon_intrinsics", since = "1.59.0")
53843)]
53844#[cfg_attr(
53845 target_arch = "arm",
53846 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53847)]
53848pub fn vreinterpretq_p64_s8(a: int8x16_t) -> poly64x2_t {
53849 unsafe { transmute(a) }
53850}
53851#[doc = "Vector reinterpret cast operation"]
53852#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s8)"]
53853#[inline(always)]
53854#[cfg(target_endian = "big")]
53855#[target_feature(enable = "neon,aes")]
53856#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53858#[cfg_attr(
53859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53860 assert_instr(nop)
53861)]
53862#[cfg_attr(
53863 not(target_arch = "arm"),
53864 stable(feature = "neon_intrinsics", since = "1.59.0")
53865)]
53866#[cfg_attr(
53867 target_arch = "arm",
53868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53869)]
53870pub fn vreinterpretq_p64_s8(a: int8x16_t) -> poly64x2_t {
53871 let a: int8x16_t =
53872 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
53873 unsafe {
53874 let ret_val: poly64x2_t = transmute(a);
53875 simd_shuffle!(ret_val, ret_val, [1, 0])
53876 }
53877}
53878#[doc = "Vector reinterpret cast operation"]
53879#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s16)"]
53880#[inline(always)]
53881#[cfg(target_endian = "little")]
53882#[target_feature(enable = "neon,aes")]
53883#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53884#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53885#[cfg_attr(
53886 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53887 assert_instr(nop)
53888)]
53889#[cfg_attr(
53890 not(target_arch = "arm"),
53891 stable(feature = "neon_intrinsics", since = "1.59.0")
53892)]
53893#[cfg_attr(
53894 target_arch = "arm",
53895 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53896)]
53897pub fn vreinterpret_p64_s16(a: int16x4_t) -> poly64x1_t {
53898 unsafe { transmute(a) }
53899}
53900#[doc = "Vector reinterpret cast operation"]
53901#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s16)"]
53902#[inline(always)]
53903#[cfg(target_endian = "big")]
53904#[target_feature(enable = "neon,aes")]
53905#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53906#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53907#[cfg_attr(
53908 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53909 assert_instr(nop)
53910)]
53911#[cfg_attr(
53912 not(target_arch = "arm"),
53913 stable(feature = "neon_intrinsics", since = "1.59.0")
53914)]
53915#[cfg_attr(
53916 target_arch = "arm",
53917 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53918)]
53919pub fn vreinterpret_p64_s16(a: int16x4_t) -> poly64x1_t {
53920 let a: int16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
53921 unsafe { transmute(a) }
53922}
53923#[doc = "Vector reinterpret cast operation"]
53924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s16)"]
53925#[inline(always)]
53926#[cfg(target_endian = "little")]
53927#[target_feature(enable = "neon,aes")]
53928#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53929#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53930#[cfg_attr(
53931 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53932 assert_instr(nop)
53933)]
53934#[cfg_attr(
53935 not(target_arch = "arm"),
53936 stable(feature = "neon_intrinsics", since = "1.59.0")
53937)]
53938#[cfg_attr(
53939 target_arch = "arm",
53940 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53941)]
53942pub fn vreinterpretq_p128_s16(a: int16x8_t) -> p128 {
53943 unsafe { transmute(a) }
53944}
53945#[doc = "Vector reinterpret cast operation"]
53946#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s16)"]
53947#[inline(always)]
53948#[cfg(target_endian = "big")]
53949#[target_feature(enable = "neon,aes")]
53950#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53951#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53952#[cfg_attr(
53953 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53954 assert_instr(nop)
53955)]
53956#[cfg_attr(
53957 not(target_arch = "arm"),
53958 stable(feature = "neon_intrinsics", since = "1.59.0")
53959)]
53960#[cfg_attr(
53961 target_arch = "arm",
53962 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53963)]
53964pub fn vreinterpretq_p128_s16(a: int16x8_t) -> p128 {
53965 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
53966 unsafe { transmute(a) }
53967}
53968#[doc = "Vector reinterpret cast operation"]
53969#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s16)"]
53970#[inline(always)]
53971#[cfg(target_endian = "little")]
53972#[target_feature(enable = "neon,aes")]
53973#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53974#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53975#[cfg_attr(
53976 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53977 assert_instr(nop)
53978)]
53979#[cfg_attr(
53980 not(target_arch = "arm"),
53981 stable(feature = "neon_intrinsics", since = "1.59.0")
53982)]
53983#[cfg_attr(
53984 target_arch = "arm",
53985 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
53986)]
53987pub fn vreinterpretq_p64_s16(a: int16x8_t) -> poly64x2_t {
53988 unsafe { transmute(a) }
53989}
53990#[doc = "Vector reinterpret cast operation"]
53991#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s16)"]
53992#[inline(always)]
53993#[cfg(target_endian = "big")]
53994#[target_feature(enable = "neon,aes")]
53995#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
53996#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
53997#[cfg_attr(
53998 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
53999 assert_instr(nop)
54000)]
54001#[cfg_attr(
54002 not(target_arch = "arm"),
54003 stable(feature = "neon_intrinsics", since = "1.59.0")
54004)]
54005#[cfg_attr(
54006 target_arch = "arm",
54007 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54008)]
54009pub fn vreinterpretq_p64_s16(a: int16x8_t) -> poly64x2_t {
54010 let a: int16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54011 unsafe {
54012 let ret_val: poly64x2_t = transmute(a);
54013 simd_shuffle!(ret_val, ret_val, [1, 0])
54014 }
54015}
54016#[doc = "Vector reinterpret cast operation"]
54017#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s32)"]
54018#[inline(always)]
54019#[cfg(target_endian = "little")]
54020#[target_feature(enable = "neon,aes")]
54021#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54022#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54023#[cfg_attr(
54024 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54025 assert_instr(nop)
54026)]
54027#[cfg_attr(
54028 not(target_arch = "arm"),
54029 stable(feature = "neon_intrinsics", since = "1.59.0")
54030)]
54031#[cfg_attr(
54032 target_arch = "arm",
54033 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54034)]
54035pub fn vreinterpret_p64_s32(a: int32x2_t) -> poly64x1_t {
54036 unsafe { transmute(a) }
54037}
54038#[doc = "Vector reinterpret cast operation"]
54039#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_s32)"]
54040#[inline(always)]
54041#[cfg(target_endian = "big")]
54042#[target_feature(enable = "neon,aes")]
54043#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54044#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54045#[cfg_attr(
54046 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54047 assert_instr(nop)
54048)]
54049#[cfg_attr(
54050 not(target_arch = "arm"),
54051 stable(feature = "neon_intrinsics", since = "1.59.0")
54052)]
54053#[cfg_attr(
54054 target_arch = "arm",
54055 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54056)]
54057pub fn vreinterpret_p64_s32(a: int32x2_t) -> poly64x1_t {
54058 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
54059 unsafe { transmute(a) }
54060}
54061#[doc = "Vector reinterpret cast operation"]
54062#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s32)"]
54063#[inline(always)]
54064#[cfg(target_endian = "little")]
54065#[target_feature(enable = "neon,aes")]
54066#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54067#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54068#[cfg_attr(
54069 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54070 assert_instr(nop)
54071)]
54072#[cfg_attr(
54073 not(target_arch = "arm"),
54074 stable(feature = "neon_intrinsics", since = "1.59.0")
54075)]
54076#[cfg_attr(
54077 target_arch = "arm",
54078 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54079)]
54080pub fn vreinterpretq_p128_s32(a: int32x4_t) -> p128 {
54081 unsafe { transmute(a) }
54082}
54083#[doc = "Vector reinterpret cast operation"]
54084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s32)"]
54085#[inline(always)]
54086#[cfg(target_endian = "big")]
54087#[target_feature(enable = "neon,aes")]
54088#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54089#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54090#[cfg_attr(
54091 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54092 assert_instr(nop)
54093)]
54094#[cfg_attr(
54095 not(target_arch = "arm"),
54096 stable(feature = "neon_intrinsics", since = "1.59.0")
54097)]
54098#[cfg_attr(
54099 target_arch = "arm",
54100 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54101)]
54102pub fn vreinterpretq_p128_s32(a: int32x4_t) -> p128 {
54103 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54104 unsafe { transmute(a) }
54105}
54106#[doc = "Vector reinterpret cast operation"]
54107#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s32)"]
54108#[inline(always)]
54109#[cfg(target_endian = "little")]
54110#[target_feature(enable = "neon,aes")]
54111#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54112#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54113#[cfg_attr(
54114 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54115 assert_instr(nop)
54116)]
54117#[cfg_attr(
54118 not(target_arch = "arm"),
54119 stable(feature = "neon_intrinsics", since = "1.59.0")
54120)]
54121#[cfg_attr(
54122 target_arch = "arm",
54123 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54124)]
54125pub fn vreinterpretq_p64_s32(a: int32x4_t) -> poly64x2_t {
54126 unsafe { transmute(a) }
54127}
54128#[doc = "Vector reinterpret cast operation"]
54129#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_s32)"]
54130#[inline(always)]
54131#[cfg(target_endian = "big")]
54132#[target_feature(enable = "neon,aes")]
54133#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54134#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54135#[cfg_attr(
54136 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54137 assert_instr(nop)
54138)]
54139#[cfg_attr(
54140 not(target_arch = "arm"),
54141 stable(feature = "neon_intrinsics", since = "1.59.0")
54142)]
54143#[cfg_attr(
54144 target_arch = "arm",
54145 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54146)]
54147pub fn vreinterpretq_p64_s32(a: int32x4_t) -> poly64x2_t {
54148 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54149 unsafe {
54150 let ret_val: poly64x2_t = transmute(a);
54151 simd_shuffle!(ret_val, ret_val, [1, 0])
54152 }
54153}
54154#[doc = "Vector reinterpret cast operation"]
54155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s64)"]
54156#[inline(always)]
54157#[cfg(target_endian = "little")]
54158#[target_feature(enable = "neon,aes")]
54159#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54161#[cfg_attr(
54162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54163 assert_instr(nop)
54164)]
54165#[cfg_attr(
54166 not(target_arch = "arm"),
54167 stable(feature = "neon_intrinsics", since = "1.59.0")
54168)]
54169#[cfg_attr(
54170 target_arch = "arm",
54171 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54172)]
54173pub fn vreinterpretq_p128_s64(a: int64x2_t) -> p128 {
54174 unsafe { transmute(a) }
54175}
54176#[doc = "Vector reinterpret cast operation"]
54177#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_s64)"]
54178#[inline(always)]
54179#[cfg(target_endian = "big")]
54180#[target_feature(enable = "neon,aes")]
54181#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54182#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54183#[cfg_attr(
54184 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54185 assert_instr(nop)
54186)]
54187#[cfg_attr(
54188 not(target_arch = "arm"),
54189 stable(feature = "neon_intrinsics", since = "1.59.0")
54190)]
54191#[cfg_attr(
54192 target_arch = "arm",
54193 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54194)]
54195pub fn vreinterpretq_p128_s64(a: int64x2_t) -> p128 {
54196 let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
54197 unsafe { transmute(a) }
54198}
54199#[doc = "Vector reinterpret cast operation"]
54200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u8)"]
54201#[inline(always)]
54202#[cfg(target_endian = "little")]
54203#[target_feature(enable = "neon,aes")]
54204#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54205#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54206#[cfg_attr(
54207 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54208 assert_instr(nop)
54209)]
54210#[cfg_attr(
54211 not(target_arch = "arm"),
54212 stable(feature = "neon_intrinsics", since = "1.59.0")
54213)]
54214#[cfg_attr(
54215 target_arch = "arm",
54216 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54217)]
54218pub fn vreinterpret_p64_u8(a: uint8x8_t) -> poly64x1_t {
54219 unsafe { transmute(a) }
54220}
54221#[doc = "Vector reinterpret cast operation"]
54222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u8)"]
54223#[inline(always)]
54224#[cfg(target_endian = "big")]
54225#[target_feature(enable = "neon,aes")]
54226#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54228#[cfg_attr(
54229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54230 assert_instr(nop)
54231)]
54232#[cfg_attr(
54233 not(target_arch = "arm"),
54234 stable(feature = "neon_intrinsics", since = "1.59.0")
54235)]
54236#[cfg_attr(
54237 target_arch = "arm",
54238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54239)]
54240pub fn vreinterpret_p64_u8(a: uint8x8_t) -> poly64x1_t {
54241 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54242 unsafe { transmute(a) }
54243}
54244#[doc = "Vector reinterpret cast operation"]
54245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u8)"]
54246#[inline(always)]
54247#[cfg(target_endian = "little")]
54248#[target_feature(enable = "neon,aes")]
54249#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54250#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54251#[cfg_attr(
54252 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54253 assert_instr(nop)
54254)]
54255#[cfg_attr(
54256 not(target_arch = "arm"),
54257 stable(feature = "neon_intrinsics", since = "1.59.0")
54258)]
54259#[cfg_attr(
54260 target_arch = "arm",
54261 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54262)]
54263pub fn vreinterpretq_p128_u8(a: uint8x16_t) -> p128 {
54264 unsafe { transmute(a) }
54265}
54266#[doc = "Vector reinterpret cast operation"]
54267#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u8)"]
54268#[inline(always)]
54269#[cfg(target_endian = "big")]
54270#[target_feature(enable = "neon,aes")]
54271#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54272#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54273#[cfg_attr(
54274 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54275 assert_instr(nop)
54276)]
54277#[cfg_attr(
54278 not(target_arch = "arm"),
54279 stable(feature = "neon_intrinsics", since = "1.59.0")
54280)]
54281#[cfg_attr(
54282 target_arch = "arm",
54283 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54284)]
54285pub fn vreinterpretq_p128_u8(a: uint8x16_t) -> p128 {
54286 let a: uint8x16_t =
54287 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54288 unsafe { transmute(a) }
54289}
54290#[doc = "Vector reinterpret cast operation"]
54291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u8)"]
54292#[inline(always)]
54293#[cfg(target_endian = "little")]
54294#[target_feature(enable = "neon,aes")]
54295#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54296#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54297#[cfg_attr(
54298 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54299 assert_instr(nop)
54300)]
54301#[cfg_attr(
54302 not(target_arch = "arm"),
54303 stable(feature = "neon_intrinsics", since = "1.59.0")
54304)]
54305#[cfg_attr(
54306 target_arch = "arm",
54307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54308)]
54309pub fn vreinterpretq_p64_u8(a: uint8x16_t) -> poly64x2_t {
54310 unsafe { transmute(a) }
54311}
54312#[doc = "Vector reinterpret cast operation"]
54313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u8)"]
54314#[inline(always)]
54315#[cfg(target_endian = "big")]
54316#[target_feature(enable = "neon,aes")]
54317#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54318#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54319#[cfg_attr(
54320 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54321 assert_instr(nop)
54322)]
54323#[cfg_attr(
54324 not(target_arch = "arm"),
54325 stable(feature = "neon_intrinsics", since = "1.59.0")
54326)]
54327#[cfg_attr(
54328 target_arch = "arm",
54329 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54330)]
54331pub fn vreinterpretq_p64_u8(a: uint8x16_t) -> poly64x2_t {
54332 let a: uint8x16_t =
54333 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54334 unsafe {
54335 let ret_val: poly64x2_t = transmute(a);
54336 simd_shuffle!(ret_val, ret_val, [1, 0])
54337 }
54338}
54339#[doc = "Vector reinterpret cast operation"]
54340#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u16)"]
54341#[inline(always)]
54342#[cfg(target_endian = "little")]
54343#[target_feature(enable = "neon,aes")]
54344#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54345#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54346#[cfg_attr(
54347 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54348 assert_instr(nop)
54349)]
54350#[cfg_attr(
54351 not(target_arch = "arm"),
54352 stable(feature = "neon_intrinsics", since = "1.59.0")
54353)]
54354#[cfg_attr(
54355 target_arch = "arm",
54356 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54357)]
54358pub fn vreinterpret_p64_u16(a: uint16x4_t) -> poly64x1_t {
54359 unsafe { transmute(a) }
54360}
54361#[doc = "Vector reinterpret cast operation"]
54362#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u16)"]
54363#[inline(always)]
54364#[cfg(target_endian = "big")]
54365#[target_feature(enable = "neon,aes")]
54366#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54367#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54368#[cfg_attr(
54369 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54370 assert_instr(nop)
54371)]
54372#[cfg_attr(
54373 not(target_arch = "arm"),
54374 stable(feature = "neon_intrinsics", since = "1.59.0")
54375)]
54376#[cfg_attr(
54377 target_arch = "arm",
54378 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54379)]
54380pub fn vreinterpret_p64_u16(a: uint16x4_t) -> poly64x1_t {
54381 let a: uint16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54382 unsafe { transmute(a) }
54383}
54384#[doc = "Vector reinterpret cast operation"]
54385#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u16)"]
54386#[inline(always)]
54387#[cfg(target_endian = "little")]
54388#[target_feature(enable = "neon,aes")]
54389#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54390#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54391#[cfg_attr(
54392 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54393 assert_instr(nop)
54394)]
54395#[cfg_attr(
54396 not(target_arch = "arm"),
54397 stable(feature = "neon_intrinsics", since = "1.59.0")
54398)]
54399#[cfg_attr(
54400 target_arch = "arm",
54401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54402)]
54403pub fn vreinterpretq_p128_u16(a: uint16x8_t) -> p128 {
54404 unsafe { transmute(a) }
54405}
54406#[doc = "Vector reinterpret cast operation"]
54407#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u16)"]
54408#[inline(always)]
54409#[cfg(target_endian = "big")]
54410#[target_feature(enable = "neon,aes")]
54411#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54412#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54413#[cfg_attr(
54414 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54415 assert_instr(nop)
54416)]
54417#[cfg_attr(
54418 not(target_arch = "arm"),
54419 stable(feature = "neon_intrinsics", since = "1.59.0")
54420)]
54421#[cfg_attr(
54422 target_arch = "arm",
54423 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54424)]
54425pub fn vreinterpretq_p128_u16(a: uint16x8_t) -> p128 {
54426 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54427 unsafe { transmute(a) }
54428}
54429#[doc = "Vector reinterpret cast operation"]
54430#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u16)"]
54431#[inline(always)]
54432#[cfg(target_endian = "little")]
54433#[target_feature(enable = "neon,aes")]
54434#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54435#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54436#[cfg_attr(
54437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54438 assert_instr(nop)
54439)]
54440#[cfg_attr(
54441 not(target_arch = "arm"),
54442 stable(feature = "neon_intrinsics", since = "1.59.0")
54443)]
54444#[cfg_attr(
54445 target_arch = "arm",
54446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54447)]
54448pub fn vreinterpretq_p64_u16(a: uint16x8_t) -> poly64x2_t {
54449 unsafe { transmute(a) }
54450}
54451#[doc = "Vector reinterpret cast operation"]
54452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u16)"]
54453#[inline(always)]
54454#[cfg(target_endian = "big")]
54455#[target_feature(enable = "neon,aes")]
54456#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54457#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54458#[cfg_attr(
54459 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54460 assert_instr(nop)
54461)]
54462#[cfg_attr(
54463 not(target_arch = "arm"),
54464 stable(feature = "neon_intrinsics", since = "1.59.0")
54465)]
54466#[cfg_attr(
54467 target_arch = "arm",
54468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54469)]
54470pub fn vreinterpretq_p64_u16(a: uint16x8_t) -> poly64x2_t {
54471 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54472 unsafe {
54473 let ret_val: poly64x2_t = transmute(a);
54474 simd_shuffle!(ret_val, ret_val, [1, 0])
54475 }
54476}
54477#[doc = "Vector reinterpret cast operation"]
54478#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u32)"]
54479#[inline(always)]
54480#[cfg(target_endian = "little")]
54481#[target_feature(enable = "neon,aes")]
54482#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54483#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54484#[cfg_attr(
54485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54486 assert_instr(nop)
54487)]
54488#[cfg_attr(
54489 not(target_arch = "arm"),
54490 stable(feature = "neon_intrinsics", since = "1.59.0")
54491)]
54492#[cfg_attr(
54493 target_arch = "arm",
54494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54495)]
54496pub fn vreinterpret_p64_u32(a: uint32x2_t) -> poly64x1_t {
54497 unsafe { transmute(a) }
54498}
54499#[doc = "Vector reinterpret cast operation"]
54500#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_u32)"]
54501#[inline(always)]
54502#[cfg(target_endian = "big")]
54503#[target_feature(enable = "neon,aes")]
54504#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54505#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54506#[cfg_attr(
54507 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54508 assert_instr(nop)
54509)]
54510#[cfg_attr(
54511 not(target_arch = "arm"),
54512 stable(feature = "neon_intrinsics", since = "1.59.0")
54513)]
54514#[cfg_attr(
54515 target_arch = "arm",
54516 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54517)]
54518pub fn vreinterpret_p64_u32(a: uint32x2_t) -> poly64x1_t {
54519 let a: uint32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
54520 unsafe { transmute(a) }
54521}
54522#[doc = "Vector reinterpret cast operation"]
54523#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u32)"]
54524#[inline(always)]
54525#[cfg(target_endian = "little")]
54526#[target_feature(enable = "neon,aes")]
54527#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54528#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54529#[cfg_attr(
54530 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54531 assert_instr(nop)
54532)]
54533#[cfg_attr(
54534 not(target_arch = "arm"),
54535 stable(feature = "neon_intrinsics", since = "1.59.0")
54536)]
54537#[cfg_attr(
54538 target_arch = "arm",
54539 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54540)]
54541pub fn vreinterpretq_p128_u32(a: uint32x4_t) -> p128 {
54542 unsafe { transmute(a) }
54543}
54544#[doc = "Vector reinterpret cast operation"]
54545#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u32)"]
54546#[inline(always)]
54547#[cfg(target_endian = "big")]
54548#[target_feature(enable = "neon,aes")]
54549#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54550#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54551#[cfg_attr(
54552 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54553 assert_instr(nop)
54554)]
54555#[cfg_attr(
54556 not(target_arch = "arm"),
54557 stable(feature = "neon_intrinsics", since = "1.59.0")
54558)]
54559#[cfg_attr(
54560 target_arch = "arm",
54561 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54562)]
54563pub fn vreinterpretq_p128_u32(a: uint32x4_t) -> p128 {
54564 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54565 unsafe { transmute(a) }
54566}
54567#[doc = "Vector reinterpret cast operation"]
54568#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u32)"]
54569#[inline(always)]
54570#[cfg(target_endian = "little")]
54571#[target_feature(enable = "neon,aes")]
54572#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54573#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54574#[cfg_attr(
54575 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54576 assert_instr(nop)
54577)]
54578#[cfg_attr(
54579 not(target_arch = "arm"),
54580 stable(feature = "neon_intrinsics", since = "1.59.0")
54581)]
54582#[cfg_attr(
54583 target_arch = "arm",
54584 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54585)]
54586pub fn vreinterpretq_p64_u32(a: uint32x4_t) -> poly64x2_t {
54587 unsafe { transmute(a) }
54588}
54589#[doc = "Vector reinterpret cast operation"]
54590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_u32)"]
54591#[inline(always)]
54592#[cfg(target_endian = "big")]
54593#[target_feature(enable = "neon,aes")]
54594#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54595#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54596#[cfg_attr(
54597 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54598 assert_instr(nop)
54599)]
54600#[cfg_attr(
54601 not(target_arch = "arm"),
54602 stable(feature = "neon_intrinsics", since = "1.59.0")
54603)]
54604#[cfg_attr(
54605 target_arch = "arm",
54606 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54607)]
54608pub fn vreinterpretq_p64_u32(a: uint32x4_t) -> poly64x2_t {
54609 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54610 unsafe {
54611 let ret_val: poly64x2_t = transmute(a);
54612 simd_shuffle!(ret_val, ret_val, [1, 0])
54613 }
54614}
54615#[doc = "Vector reinterpret cast operation"]
54616#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u64)"]
54617#[inline(always)]
54618#[cfg(target_endian = "little")]
54619#[target_feature(enable = "neon,aes")]
54620#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54621#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54622#[cfg_attr(
54623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54624 assert_instr(nop)
54625)]
54626#[cfg_attr(
54627 not(target_arch = "arm"),
54628 stable(feature = "neon_intrinsics", since = "1.59.0")
54629)]
54630#[cfg_attr(
54631 target_arch = "arm",
54632 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54633)]
54634pub fn vreinterpretq_p128_u64(a: uint64x2_t) -> p128 {
54635 unsafe { transmute(a) }
54636}
54637#[doc = "Vector reinterpret cast operation"]
54638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_u64)"]
54639#[inline(always)]
54640#[cfg(target_endian = "big")]
54641#[target_feature(enable = "neon,aes")]
54642#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54643#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54644#[cfg_attr(
54645 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54646 assert_instr(nop)
54647)]
54648#[cfg_attr(
54649 not(target_arch = "arm"),
54650 stable(feature = "neon_intrinsics", since = "1.59.0")
54651)]
54652#[cfg_attr(
54653 target_arch = "arm",
54654 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54655)]
54656pub fn vreinterpretq_p128_u64(a: uint64x2_t) -> p128 {
54657 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
54658 unsafe { transmute(a) }
54659}
54660#[doc = "Vector reinterpret cast operation"]
54661#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p8)"]
54662#[inline(always)]
54663#[cfg(target_endian = "little")]
54664#[target_feature(enable = "neon,aes")]
54665#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54666#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54667#[cfg_attr(
54668 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54669 assert_instr(nop)
54670)]
54671#[cfg_attr(
54672 not(target_arch = "arm"),
54673 stable(feature = "neon_intrinsics", since = "1.59.0")
54674)]
54675#[cfg_attr(
54676 target_arch = "arm",
54677 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54678)]
54679pub fn vreinterpret_p64_p8(a: poly8x8_t) -> poly64x1_t {
54680 unsafe { transmute(a) }
54681}
54682#[doc = "Vector reinterpret cast operation"]
54683#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p8)"]
54684#[inline(always)]
54685#[cfg(target_endian = "big")]
54686#[target_feature(enable = "neon,aes")]
54687#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54688#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54689#[cfg_attr(
54690 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54691 assert_instr(nop)
54692)]
54693#[cfg_attr(
54694 not(target_arch = "arm"),
54695 stable(feature = "neon_intrinsics", since = "1.59.0")
54696)]
54697#[cfg_attr(
54698 target_arch = "arm",
54699 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54700)]
54701pub fn vreinterpret_p64_p8(a: poly8x8_t) -> poly64x1_t {
54702 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54703 unsafe { transmute(a) }
54704}
54705#[doc = "Vector reinterpret cast operation"]
54706#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p8)"]
54707#[inline(always)]
54708#[cfg(target_endian = "little")]
54709#[target_feature(enable = "neon,aes")]
54710#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54711#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54712#[cfg_attr(
54713 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54714 assert_instr(nop)
54715)]
54716#[cfg_attr(
54717 not(target_arch = "arm"),
54718 stable(feature = "neon_intrinsics", since = "1.59.0")
54719)]
54720#[cfg_attr(
54721 target_arch = "arm",
54722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54723)]
54724pub fn vreinterpretq_p128_p8(a: poly8x16_t) -> p128 {
54725 unsafe { transmute(a) }
54726}
54727#[doc = "Vector reinterpret cast operation"]
54728#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p8)"]
54729#[inline(always)]
54730#[cfg(target_endian = "big")]
54731#[target_feature(enable = "neon,aes")]
54732#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54733#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54734#[cfg_attr(
54735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54736 assert_instr(nop)
54737)]
54738#[cfg_attr(
54739 not(target_arch = "arm"),
54740 stable(feature = "neon_intrinsics", since = "1.59.0")
54741)]
54742#[cfg_attr(
54743 target_arch = "arm",
54744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54745)]
54746pub fn vreinterpretq_p128_p8(a: poly8x16_t) -> p128 {
54747 let a: poly8x16_t =
54748 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54749 unsafe { transmute(a) }
54750}
54751#[doc = "Vector reinterpret cast operation"]
54752#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p8)"]
54753#[inline(always)]
54754#[cfg(target_endian = "little")]
54755#[target_feature(enable = "neon,aes")]
54756#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54757#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54758#[cfg_attr(
54759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54760 assert_instr(nop)
54761)]
54762#[cfg_attr(
54763 not(target_arch = "arm"),
54764 stable(feature = "neon_intrinsics", since = "1.59.0")
54765)]
54766#[cfg_attr(
54767 target_arch = "arm",
54768 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54769)]
54770pub fn vreinterpretq_p64_p8(a: poly8x16_t) -> poly64x2_t {
54771 unsafe { transmute(a) }
54772}
54773#[doc = "Vector reinterpret cast operation"]
54774#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p8)"]
54775#[inline(always)]
54776#[cfg(target_endian = "big")]
54777#[target_feature(enable = "neon,aes")]
54778#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54779#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54780#[cfg_attr(
54781 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54782 assert_instr(nop)
54783)]
54784#[cfg_attr(
54785 not(target_arch = "arm"),
54786 stable(feature = "neon_intrinsics", since = "1.59.0")
54787)]
54788#[cfg_attr(
54789 target_arch = "arm",
54790 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54791)]
54792pub fn vreinterpretq_p64_p8(a: poly8x16_t) -> poly64x2_t {
54793 let a: poly8x16_t =
54794 unsafe { simd_shuffle!(a, a, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
54795 unsafe {
54796 let ret_val: poly64x2_t = transmute(a);
54797 simd_shuffle!(ret_val, ret_val, [1, 0])
54798 }
54799}
54800#[doc = "Vector reinterpret cast operation"]
54801#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p16)"]
54802#[inline(always)]
54803#[cfg(target_endian = "little")]
54804#[target_feature(enable = "neon,aes")]
54805#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54806#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54807#[cfg_attr(
54808 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54809 assert_instr(nop)
54810)]
54811#[cfg_attr(
54812 not(target_arch = "arm"),
54813 stable(feature = "neon_intrinsics", since = "1.59.0")
54814)]
54815#[cfg_attr(
54816 target_arch = "arm",
54817 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54818)]
54819pub fn vreinterpret_p64_p16(a: poly16x4_t) -> poly64x1_t {
54820 unsafe { transmute(a) }
54821}
54822#[doc = "Vector reinterpret cast operation"]
54823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p64_p16)"]
54824#[inline(always)]
54825#[cfg(target_endian = "big")]
54826#[target_feature(enable = "neon,aes")]
54827#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54828#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54829#[cfg_attr(
54830 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54831 assert_instr(nop)
54832)]
54833#[cfg_attr(
54834 not(target_arch = "arm"),
54835 stable(feature = "neon_intrinsics", since = "1.59.0")
54836)]
54837#[cfg_attr(
54838 target_arch = "arm",
54839 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54840)]
54841pub fn vreinterpret_p64_p16(a: poly16x4_t) -> poly64x1_t {
54842 let a: poly16x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
54843 unsafe { transmute(a) }
54844}
54845#[doc = "Vector reinterpret cast operation"]
54846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p16)"]
54847#[inline(always)]
54848#[cfg(target_endian = "little")]
54849#[target_feature(enable = "neon,aes")]
54850#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54851#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54852#[cfg_attr(
54853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54854 assert_instr(nop)
54855)]
54856#[cfg_attr(
54857 not(target_arch = "arm"),
54858 stable(feature = "neon_intrinsics", since = "1.59.0")
54859)]
54860#[cfg_attr(
54861 target_arch = "arm",
54862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54863)]
54864pub fn vreinterpretq_p128_p16(a: poly16x8_t) -> p128 {
54865 unsafe { transmute(a) }
54866}
54867#[doc = "Vector reinterpret cast operation"]
54868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p16)"]
54869#[inline(always)]
54870#[cfg(target_endian = "big")]
54871#[target_feature(enable = "neon,aes")]
54872#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54873#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54874#[cfg_attr(
54875 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54876 assert_instr(nop)
54877)]
54878#[cfg_attr(
54879 not(target_arch = "arm"),
54880 stable(feature = "neon_intrinsics", since = "1.59.0")
54881)]
54882#[cfg_attr(
54883 target_arch = "arm",
54884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54885)]
54886pub fn vreinterpretq_p128_p16(a: poly16x8_t) -> p128 {
54887 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54888 unsafe { transmute(a) }
54889}
54890#[doc = "Vector reinterpret cast operation"]
54891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p16)"]
54892#[inline(always)]
54893#[cfg(target_endian = "little")]
54894#[target_feature(enable = "neon,aes")]
54895#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54896#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54897#[cfg_attr(
54898 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54899 assert_instr(nop)
54900)]
54901#[cfg_attr(
54902 not(target_arch = "arm"),
54903 stable(feature = "neon_intrinsics", since = "1.59.0")
54904)]
54905#[cfg_attr(
54906 target_arch = "arm",
54907 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54908)]
54909pub fn vreinterpretq_p64_p16(a: poly16x8_t) -> poly64x2_t {
54910 unsafe { transmute(a) }
54911}
54912#[doc = "Vector reinterpret cast operation"]
54913#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p64_p16)"]
54914#[inline(always)]
54915#[cfg(target_endian = "big")]
54916#[target_feature(enable = "neon,aes")]
54917#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54918#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54919#[cfg_attr(
54920 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54921 assert_instr(nop)
54922)]
54923#[cfg_attr(
54924 not(target_arch = "arm"),
54925 stable(feature = "neon_intrinsics", since = "1.59.0")
54926)]
54927#[cfg_attr(
54928 target_arch = "arm",
54929 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54930)]
54931pub fn vreinterpretq_p64_p16(a: poly16x8_t) -> poly64x2_t {
54932 let a: poly16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
54933 unsafe {
54934 let ret_val: poly64x2_t = transmute(a);
54935 simd_shuffle!(ret_val, ret_val, [1, 0])
54936 }
54937}
54938#[doc = "Vector reinterpret cast operation"]
54939#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p64)"]
54940#[inline(always)]
54941#[cfg(target_endian = "little")]
54942#[target_feature(enable = "neon,aes")]
54943#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54944#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54945#[cfg_attr(
54946 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54947 assert_instr(nop)
54948)]
54949#[cfg_attr(
54950 not(target_arch = "arm"),
54951 stable(feature = "neon_intrinsics", since = "1.59.0")
54952)]
54953#[cfg_attr(
54954 target_arch = "arm",
54955 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54956)]
54957pub fn vreinterpret_s8_p64(a: poly64x1_t) -> int8x8_t {
54958 unsafe { transmute(a) }
54959}
54960#[doc = "Vector reinterpret cast operation"]
54961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s8_p64)"]
54962#[inline(always)]
54963#[cfg(target_endian = "big")]
54964#[target_feature(enable = "neon,aes")]
54965#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54966#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54967#[cfg_attr(
54968 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54969 assert_instr(nop)
54970)]
54971#[cfg_attr(
54972 not(target_arch = "arm"),
54973 stable(feature = "neon_intrinsics", since = "1.59.0")
54974)]
54975#[cfg_attr(
54976 target_arch = "arm",
54977 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
54978)]
54979pub fn vreinterpret_s8_p64(a: poly64x1_t) -> int8x8_t {
54980 unsafe {
54981 let ret_val: int8x8_t = transmute(a);
54982 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
54983 }
54984}
54985#[doc = "Vector reinterpret cast operation"]
54986#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p64)"]
54987#[inline(always)]
54988#[cfg(target_endian = "little")]
54989#[target_feature(enable = "neon,aes")]
54990#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
54991#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
54992#[cfg_attr(
54993 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
54994 assert_instr(nop)
54995)]
54996#[cfg_attr(
54997 not(target_arch = "arm"),
54998 stable(feature = "neon_intrinsics", since = "1.59.0")
54999)]
55000#[cfg_attr(
55001 target_arch = "arm",
55002 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55003)]
55004pub fn vreinterpret_s16_p64(a: poly64x1_t) -> int16x4_t {
55005 unsafe { transmute(a) }
55006}
55007#[doc = "Vector reinterpret cast operation"]
55008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s16_p64)"]
55009#[inline(always)]
55010#[cfg(target_endian = "big")]
55011#[target_feature(enable = "neon,aes")]
55012#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55013#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55014#[cfg_attr(
55015 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55016 assert_instr(nop)
55017)]
55018#[cfg_attr(
55019 not(target_arch = "arm"),
55020 stable(feature = "neon_intrinsics", since = "1.59.0")
55021)]
55022#[cfg_attr(
55023 target_arch = "arm",
55024 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55025)]
55026pub fn vreinterpret_s16_p64(a: poly64x1_t) -> int16x4_t {
55027 unsafe {
55028 let ret_val: int16x4_t = transmute(a);
55029 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55030 }
55031}
55032#[doc = "Vector reinterpret cast operation"]
55033#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p64)"]
55034#[inline(always)]
55035#[cfg(target_endian = "little")]
55036#[target_feature(enable = "neon,aes")]
55037#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55038#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55039#[cfg_attr(
55040 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55041 assert_instr(nop)
55042)]
55043#[cfg_attr(
55044 not(target_arch = "arm"),
55045 stable(feature = "neon_intrinsics", since = "1.59.0")
55046)]
55047#[cfg_attr(
55048 target_arch = "arm",
55049 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55050)]
55051pub fn vreinterpret_s32_p64(a: poly64x1_t) -> int32x2_t {
55052 unsafe { transmute(a) }
55053}
55054#[doc = "Vector reinterpret cast operation"]
55055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_s32_p64)"]
55056#[inline(always)]
55057#[cfg(target_endian = "big")]
55058#[target_feature(enable = "neon,aes")]
55059#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55060#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55061#[cfg_attr(
55062 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55063 assert_instr(nop)
55064)]
55065#[cfg_attr(
55066 not(target_arch = "arm"),
55067 stable(feature = "neon_intrinsics", since = "1.59.0")
55068)]
55069#[cfg_attr(
55070 target_arch = "arm",
55071 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55072)]
55073pub fn vreinterpret_s32_p64(a: poly64x1_t) -> int32x2_t {
55074 unsafe {
55075 let ret_val: int32x2_t = transmute(a);
55076 simd_shuffle!(ret_val, ret_val, [1, 0])
55077 }
55078}
55079#[doc = "Vector reinterpret cast operation"]
55080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p64)"]
55081#[inline(always)]
55082#[cfg(target_endian = "little")]
55083#[target_feature(enable = "neon,aes")]
55084#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55085#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55086#[cfg_attr(
55087 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55088 assert_instr(nop)
55089)]
55090#[cfg_attr(
55091 not(target_arch = "arm"),
55092 stable(feature = "neon_intrinsics", since = "1.59.0")
55093)]
55094#[cfg_attr(
55095 target_arch = "arm",
55096 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55097)]
55098pub fn vreinterpret_u8_p64(a: poly64x1_t) -> uint8x8_t {
55099 unsafe { transmute(a) }
55100}
55101#[doc = "Vector reinterpret cast operation"]
55102#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u8_p64)"]
55103#[inline(always)]
55104#[cfg(target_endian = "big")]
55105#[target_feature(enable = "neon,aes")]
55106#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55107#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55108#[cfg_attr(
55109 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55110 assert_instr(nop)
55111)]
55112#[cfg_attr(
55113 not(target_arch = "arm"),
55114 stable(feature = "neon_intrinsics", since = "1.59.0")
55115)]
55116#[cfg_attr(
55117 target_arch = "arm",
55118 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55119)]
55120pub fn vreinterpret_u8_p64(a: poly64x1_t) -> uint8x8_t {
55121 unsafe {
55122 let ret_val: uint8x8_t = transmute(a);
55123 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55124 }
55125}
55126#[doc = "Vector reinterpret cast operation"]
55127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p64)"]
55128#[inline(always)]
55129#[cfg(target_endian = "little")]
55130#[target_feature(enable = "neon,aes")]
55131#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55132#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55133#[cfg_attr(
55134 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55135 assert_instr(nop)
55136)]
55137#[cfg_attr(
55138 not(target_arch = "arm"),
55139 stable(feature = "neon_intrinsics", since = "1.59.0")
55140)]
55141#[cfg_attr(
55142 target_arch = "arm",
55143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55144)]
55145pub fn vreinterpret_u16_p64(a: poly64x1_t) -> uint16x4_t {
55146 unsafe { transmute(a) }
55147}
55148#[doc = "Vector reinterpret cast operation"]
55149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u16_p64)"]
55150#[inline(always)]
55151#[cfg(target_endian = "big")]
55152#[target_feature(enable = "neon,aes")]
55153#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55154#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55155#[cfg_attr(
55156 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55157 assert_instr(nop)
55158)]
55159#[cfg_attr(
55160 not(target_arch = "arm"),
55161 stable(feature = "neon_intrinsics", since = "1.59.0")
55162)]
55163#[cfg_attr(
55164 target_arch = "arm",
55165 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55166)]
55167pub fn vreinterpret_u16_p64(a: poly64x1_t) -> uint16x4_t {
55168 unsafe {
55169 let ret_val: uint16x4_t = transmute(a);
55170 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55171 }
55172}
55173#[doc = "Vector reinterpret cast operation"]
55174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p64)"]
55175#[inline(always)]
55176#[cfg(target_endian = "little")]
55177#[target_feature(enable = "neon,aes")]
55178#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55179#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55180#[cfg_attr(
55181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55182 assert_instr(nop)
55183)]
55184#[cfg_attr(
55185 not(target_arch = "arm"),
55186 stable(feature = "neon_intrinsics", since = "1.59.0")
55187)]
55188#[cfg_attr(
55189 target_arch = "arm",
55190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55191)]
55192pub fn vreinterpret_u32_p64(a: poly64x1_t) -> uint32x2_t {
55193 unsafe { transmute(a) }
55194}
55195#[doc = "Vector reinterpret cast operation"]
55196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_u32_p64)"]
55197#[inline(always)]
55198#[cfg(target_endian = "big")]
55199#[target_feature(enable = "neon,aes")]
55200#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55201#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55202#[cfg_attr(
55203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55204 assert_instr(nop)
55205)]
55206#[cfg_attr(
55207 not(target_arch = "arm"),
55208 stable(feature = "neon_intrinsics", since = "1.59.0")
55209)]
55210#[cfg_attr(
55211 target_arch = "arm",
55212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55213)]
55214pub fn vreinterpret_u32_p64(a: poly64x1_t) -> uint32x2_t {
55215 unsafe {
55216 let ret_val: uint32x2_t = transmute(a);
55217 simd_shuffle!(ret_val, ret_val, [1, 0])
55218 }
55219}
55220#[doc = "Vector reinterpret cast operation"]
55221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p64)"]
55222#[inline(always)]
55223#[cfg(target_endian = "little")]
55224#[target_feature(enable = "neon,aes")]
55225#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55226#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55227#[cfg_attr(
55228 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55229 assert_instr(nop)
55230)]
55231#[cfg_attr(
55232 not(target_arch = "arm"),
55233 stable(feature = "neon_intrinsics", since = "1.59.0")
55234)]
55235#[cfg_attr(
55236 target_arch = "arm",
55237 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55238)]
55239pub fn vreinterpret_p8_p64(a: poly64x1_t) -> poly8x8_t {
55240 unsafe { transmute(a) }
55241}
55242#[doc = "Vector reinterpret cast operation"]
55243#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p8_p64)"]
55244#[inline(always)]
55245#[cfg(target_endian = "big")]
55246#[target_feature(enable = "neon,aes")]
55247#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55248#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55249#[cfg_attr(
55250 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55251 assert_instr(nop)
55252)]
55253#[cfg_attr(
55254 not(target_arch = "arm"),
55255 stable(feature = "neon_intrinsics", since = "1.59.0")
55256)]
55257#[cfg_attr(
55258 target_arch = "arm",
55259 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55260)]
55261pub fn vreinterpret_p8_p64(a: poly64x1_t) -> poly8x8_t {
55262 unsafe {
55263 let ret_val: poly8x8_t = transmute(a);
55264 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55265 }
55266}
55267#[doc = "Vector reinterpret cast operation"]
55268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p64)"]
55269#[inline(always)]
55270#[cfg(target_endian = "little")]
55271#[target_feature(enable = "neon,aes")]
55272#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55273#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55274#[cfg_attr(
55275 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55276 assert_instr(nop)
55277)]
55278#[cfg_attr(
55279 not(target_arch = "arm"),
55280 stable(feature = "neon_intrinsics", since = "1.59.0")
55281)]
55282#[cfg_attr(
55283 target_arch = "arm",
55284 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55285)]
55286pub fn vreinterpret_p16_p64(a: poly64x1_t) -> poly16x4_t {
55287 unsafe { transmute(a) }
55288}
55289#[doc = "Vector reinterpret cast operation"]
55290#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpret_p16_p64)"]
55291#[inline(always)]
55292#[cfg(target_endian = "big")]
55293#[target_feature(enable = "neon,aes")]
55294#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55295#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55296#[cfg_attr(
55297 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55298 assert_instr(nop)
55299)]
55300#[cfg_attr(
55301 not(target_arch = "arm"),
55302 stable(feature = "neon_intrinsics", since = "1.59.0")
55303)]
55304#[cfg_attr(
55305 target_arch = "arm",
55306 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55307)]
55308pub fn vreinterpret_p16_p64(a: poly64x1_t) -> poly16x4_t {
55309 unsafe {
55310 let ret_val: poly16x4_t = transmute(a);
55311 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55312 }
55313}
55314#[doc = "Vector reinterpret cast operation"]
55315#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p64)"]
55316#[inline(always)]
55317#[cfg(target_endian = "little")]
55318#[target_feature(enable = "neon,aes")]
55319#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55320#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55321#[cfg_attr(
55322 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55323 assert_instr(nop)
55324)]
55325#[cfg_attr(
55326 not(target_arch = "arm"),
55327 stable(feature = "neon_intrinsics", since = "1.59.0")
55328)]
55329#[cfg_attr(
55330 target_arch = "arm",
55331 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55332)]
55333pub fn vreinterpretq_p128_p64(a: poly64x2_t) -> p128 {
55334 unsafe { transmute(a) }
55335}
55336#[doc = "Vector reinterpret cast operation"]
55337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p128_p64)"]
55338#[inline(always)]
55339#[cfg(target_endian = "big")]
55340#[target_feature(enable = "neon,aes")]
55341#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55342#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55343#[cfg_attr(
55344 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55345 assert_instr(nop)
55346)]
55347#[cfg_attr(
55348 not(target_arch = "arm"),
55349 stable(feature = "neon_intrinsics", since = "1.59.0")
55350)]
55351#[cfg_attr(
55352 target_arch = "arm",
55353 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55354)]
55355pub fn vreinterpretq_p128_p64(a: poly64x2_t) -> p128 {
55356 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55357 unsafe { transmute(a) }
55358}
55359#[doc = "Vector reinterpret cast operation"]
55360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p64)"]
55361#[inline(always)]
55362#[cfg(target_endian = "little")]
55363#[target_feature(enable = "neon,aes")]
55364#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55365#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55366#[cfg_attr(
55367 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55368 assert_instr(nop)
55369)]
55370#[cfg_attr(
55371 not(target_arch = "arm"),
55372 stable(feature = "neon_intrinsics", since = "1.59.0")
55373)]
55374#[cfg_attr(
55375 target_arch = "arm",
55376 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55377)]
55378pub fn vreinterpretq_s8_p64(a: poly64x2_t) -> int8x16_t {
55379 unsafe { transmute(a) }
55380}
55381#[doc = "Vector reinterpret cast operation"]
55382#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s8_p64)"]
55383#[inline(always)]
55384#[cfg(target_endian = "big")]
55385#[target_feature(enable = "neon,aes")]
55386#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55387#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55388#[cfg_attr(
55389 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55390 assert_instr(nop)
55391)]
55392#[cfg_attr(
55393 not(target_arch = "arm"),
55394 stable(feature = "neon_intrinsics", since = "1.59.0")
55395)]
55396#[cfg_attr(
55397 target_arch = "arm",
55398 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55399)]
55400pub fn vreinterpretq_s8_p64(a: poly64x2_t) -> int8x16_t {
55401 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55402 unsafe {
55403 let ret_val: int8x16_t = transmute(a);
55404 simd_shuffle!(
55405 ret_val,
55406 ret_val,
55407 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55408 )
55409 }
55410}
55411#[doc = "Vector reinterpret cast operation"]
55412#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p64)"]
55413#[inline(always)]
55414#[cfg(target_endian = "little")]
55415#[target_feature(enable = "neon,aes")]
55416#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55417#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55418#[cfg_attr(
55419 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55420 assert_instr(nop)
55421)]
55422#[cfg_attr(
55423 not(target_arch = "arm"),
55424 stable(feature = "neon_intrinsics", since = "1.59.0")
55425)]
55426#[cfg_attr(
55427 target_arch = "arm",
55428 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55429)]
55430pub fn vreinterpretq_s16_p64(a: poly64x2_t) -> int16x8_t {
55431 unsafe { transmute(a) }
55432}
55433#[doc = "Vector reinterpret cast operation"]
55434#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s16_p64)"]
55435#[inline(always)]
55436#[cfg(target_endian = "big")]
55437#[target_feature(enable = "neon,aes")]
55438#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55439#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55440#[cfg_attr(
55441 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55442 assert_instr(nop)
55443)]
55444#[cfg_attr(
55445 not(target_arch = "arm"),
55446 stable(feature = "neon_intrinsics", since = "1.59.0")
55447)]
55448#[cfg_attr(
55449 target_arch = "arm",
55450 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55451)]
55452pub fn vreinterpretq_s16_p64(a: poly64x2_t) -> int16x8_t {
55453 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55454 unsafe {
55455 let ret_val: int16x8_t = transmute(a);
55456 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55457 }
55458}
55459#[doc = "Vector reinterpret cast operation"]
55460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p64)"]
55461#[inline(always)]
55462#[cfg(target_endian = "little")]
55463#[target_feature(enable = "neon,aes")]
55464#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55465#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55466#[cfg_attr(
55467 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55468 assert_instr(nop)
55469)]
55470#[cfg_attr(
55471 not(target_arch = "arm"),
55472 stable(feature = "neon_intrinsics", since = "1.59.0")
55473)]
55474#[cfg_attr(
55475 target_arch = "arm",
55476 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55477)]
55478pub fn vreinterpretq_s32_p64(a: poly64x2_t) -> int32x4_t {
55479 unsafe { transmute(a) }
55480}
55481#[doc = "Vector reinterpret cast operation"]
55482#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_s32_p64)"]
55483#[inline(always)]
55484#[cfg(target_endian = "big")]
55485#[target_feature(enable = "neon,aes")]
55486#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55487#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55488#[cfg_attr(
55489 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55490 assert_instr(nop)
55491)]
55492#[cfg_attr(
55493 not(target_arch = "arm"),
55494 stable(feature = "neon_intrinsics", since = "1.59.0")
55495)]
55496#[cfg_attr(
55497 target_arch = "arm",
55498 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55499)]
55500pub fn vreinterpretq_s32_p64(a: poly64x2_t) -> int32x4_t {
55501 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55502 unsafe {
55503 let ret_val: int32x4_t = transmute(a);
55504 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55505 }
55506}
55507#[doc = "Vector reinterpret cast operation"]
55508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p64)"]
55509#[inline(always)]
55510#[cfg(target_endian = "little")]
55511#[target_feature(enable = "neon,aes")]
55512#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55513#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55514#[cfg_attr(
55515 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55516 assert_instr(nop)
55517)]
55518#[cfg_attr(
55519 not(target_arch = "arm"),
55520 stable(feature = "neon_intrinsics", since = "1.59.0")
55521)]
55522#[cfg_attr(
55523 target_arch = "arm",
55524 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55525)]
55526pub fn vreinterpretq_u8_p64(a: poly64x2_t) -> uint8x16_t {
55527 unsafe { transmute(a) }
55528}
55529#[doc = "Vector reinterpret cast operation"]
55530#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u8_p64)"]
55531#[inline(always)]
55532#[cfg(target_endian = "big")]
55533#[target_feature(enable = "neon,aes")]
55534#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55536#[cfg_attr(
55537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55538 assert_instr(nop)
55539)]
55540#[cfg_attr(
55541 not(target_arch = "arm"),
55542 stable(feature = "neon_intrinsics", since = "1.59.0")
55543)]
55544#[cfg_attr(
55545 target_arch = "arm",
55546 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55547)]
55548pub fn vreinterpretq_u8_p64(a: poly64x2_t) -> uint8x16_t {
55549 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55550 unsafe {
55551 let ret_val: uint8x16_t = transmute(a);
55552 simd_shuffle!(
55553 ret_val,
55554 ret_val,
55555 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55556 )
55557 }
55558}
55559#[doc = "Vector reinterpret cast operation"]
55560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p64)"]
55561#[inline(always)]
55562#[cfg(target_endian = "little")]
55563#[target_feature(enable = "neon,aes")]
55564#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55565#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55566#[cfg_attr(
55567 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55568 assert_instr(nop)
55569)]
55570#[cfg_attr(
55571 not(target_arch = "arm"),
55572 stable(feature = "neon_intrinsics", since = "1.59.0")
55573)]
55574#[cfg_attr(
55575 target_arch = "arm",
55576 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55577)]
55578pub fn vreinterpretq_u16_p64(a: poly64x2_t) -> uint16x8_t {
55579 unsafe { transmute(a) }
55580}
55581#[doc = "Vector reinterpret cast operation"]
55582#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u16_p64)"]
55583#[inline(always)]
55584#[cfg(target_endian = "big")]
55585#[target_feature(enable = "neon,aes")]
55586#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55587#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55588#[cfg_attr(
55589 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55590 assert_instr(nop)
55591)]
55592#[cfg_attr(
55593 not(target_arch = "arm"),
55594 stable(feature = "neon_intrinsics", since = "1.59.0")
55595)]
55596#[cfg_attr(
55597 target_arch = "arm",
55598 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55599)]
55600pub fn vreinterpretq_u16_p64(a: poly64x2_t) -> uint16x8_t {
55601 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55602 unsafe {
55603 let ret_val: uint16x8_t = transmute(a);
55604 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55605 }
55606}
55607#[doc = "Vector reinterpret cast operation"]
55608#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p64)"]
55609#[inline(always)]
55610#[cfg(target_endian = "little")]
55611#[target_feature(enable = "neon,aes")]
55612#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55613#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55614#[cfg_attr(
55615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55616 assert_instr(nop)
55617)]
55618#[cfg_attr(
55619 not(target_arch = "arm"),
55620 stable(feature = "neon_intrinsics", since = "1.59.0")
55621)]
55622#[cfg_attr(
55623 target_arch = "arm",
55624 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55625)]
55626pub fn vreinterpretq_u32_p64(a: poly64x2_t) -> uint32x4_t {
55627 unsafe { transmute(a) }
55628}
55629#[doc = "Vector reinterpret cast operation"]
55630#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_u32_p64)"]
55631#[inline(always)]
55632#[cfg(target_endian = "big")]
55633#[target_feature(enable = "neon,aes")]
55634#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55635#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55636#[cfg_attr(
55637 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55638 assert_instr(nop)
55639)]
55640#[cfg_attr(
55641 not(target_arch = "arm"),
55642 stable(feature = "neon_intrinsics", since = "1.59.0")
55643)]
55644#[cfg_attr(
55645 target_arch = "arm",
55646 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55647)]
55648pub fn vreinterpretq_u32_p64(a: poly64x2_t) -> uint32x4_t {
55649 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55650 unsafe {
55651 let ret_val: uint32x4_t = transmute(a);
55652 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
55653 }
55654}
55655#[doc = "Vector reinterpret cast operation"]
55656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p64)"]
55657#[inline(always)]
55658#[cfg(target_endian = "little")]
55659#[target_feature(enable = "neon,aes")]
55660#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55661#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55662#[cfg_attr(
55663 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55664 assert_instr(nop)
55665)]
55666#[cfg_attr(
55667 not(target_arch = "arm"),
55668 stable(feature = "neon_intrinsics", since = "1.59.0")
55669)]
55670#[cfg_attr(
55671 target_arch = "arm",
55672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55673)]
55674pub fn vreinterpretq_p8_p64(a: poly64x2_t) -> poly8x16_t {
55675 unsafe { transmute(a) }
55676}
55677#[doc = "Vector reinterpret cast operation"]
55678#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p8_p64)"]
55679#[inline(always)]
55680#[cfg(target_endian = "big")]
55681#[target_feature(enable = "neon,aes")]
55682#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55683#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55684#[cfg_attr(
55685 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55686 assert_instr(nop)
55687)]
55688#[cfg_attr(
55689 not(target_arch = "arm"),
55690 stable(feature = "neon_intrinsics", since = "1.59.0")
55691)]
55692#[cfg_attr(
55693 target_arch = "arm",
55694 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55695)]
55696pub fn vreinterpretq_p8_p64(a: poly64x2_t) -> poly8x16_t {
55697 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55698 unsafe {
55699 let ret_val: poly8x16_t = transmute(a);
55700 simd_shuffle!(
55701 ret_val,
55702 ret_val,
55703 [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
55704 )
55705 }
55706}
55707#[doc = "Vector reinterpret cast operation"]
55708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p64)"]
55709#[inline(always)]
55710#[cfg(target_endian = "little")]
55711#[target_feature(enable = "neon,aes")]
55712#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55713#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55714#[cfg_attr(
55715 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55716 assert_instr(nop)
55717)]
55718#[cfg_attr(
55719 not(target_arch = "arm"),
55720 stable(feature = "neon_intrinsics", since = "1.59.0")
55721)]
55722#[cfg_attr(
55723 target_arch = "arm",
55724 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55725)]
55726pub fn vreinterpretq_p16_p64(a: poly64x2_t) -> poly16x8_t {
55727 unsafe { transmute(a) }
55728}
55729#[doc = "Vector reinterpret cast operation"]
55730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vreinterpretq_p16_p64)"]
55731#[inline(always)]
55732#[cfg(target_endian = "big")]
55733#[target_feature(enable = "neon,aes")]
55734#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
55735#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
55736#[cfg_attr(
55737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55738 assert_instr(nop)
55739)]
55740#[cfg_attr(
55741 not(target_arch = "arm"),
55742 stable(feature = "neon_intrinsics", since = "1.59.0")
55743)]
55744#[cfg_attr(
55745 target_arch = "arm",
55746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55747)]
55748pub fn vreinterpretq_p16_p64(a: poly64x2_t) -> poly16x8_t {
55749 let a: poly64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
55750 unsafe {
55751 let ret_val: poly16x8_t = transmute(a);
55752 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
55753 }
55754}
55755#[doc = "Reversing vector elements (swap endianness)"]
55756#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_p8)"]
55757#[inline(always)]
55758#[target_feature(enable = "neon")]
55759#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55760#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55761#[cfg_attr(
55762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55763 assert_instr(rev16)
55764)]
55765#[cfg_attr(
55766 not(target_arch = "arm"),
55767 stable(feature = "neon_intrinsics", since = "1.59.0")
55768)]
55769#[cfg_attr(
55770 target_arch = "arm",
55771 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55772)]
55773pub fn vrev16_p8(a: poly8x8_t) -> poly8x8_t {
55774 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
55775}
55776#[doc = "Reversing vector elements (swap endianness)"]
55777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_s8)"]
55778#[inline(always)]
55779#[target_feature(enable = "neon")]
55780#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55781#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55782#[cfg_attr(
55783 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55784 assert_instr(rev16)
55785)]
55786#[cfg_attr(
55787 not(target_arch = "arm"),
55788 stable(feature = "neon_intrinsics", since = "1.59.0")
55789)]
55790#[cfg_attr(
55791 target_arch = "arm",
55792 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55793)]
55794pub fn vrev16_s8(a: int8x8_t) -> int8x8_t {
55795 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
55796}
55797#[doc = "Reversing vector elements (swap endianness)"]
55798#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16_u8)"]
55799#[inline(always)]
55800#[target_feature(enable = "neon")]
55801#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55802#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55803#[cfg_attr(
55804 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55805 assert_instr(rev16)
55806)]
55807#[cfg_attr(
55808 not(target_arch = "arm"),
55809 stable(feature = "neon_intrinsics", since = "1.59.0")
55810)]
55811#[cfg_attr(
55812 target_arch = "arm",
55813 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55814)]
55815pub fn vrev16_u8(a: uint8x8_t) -> uint8x8_t {
55816 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
55817}
55818#[doc = "Reversing vector elements (swap endianness)"]
55819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_p8)"]
55820#[inline(always)]
55821#[target_feature(enable = "neon")]
55822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55823#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55824#[cfg_attr(
55825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55826 assert_instr(rev16)
55827)]
55828#[cfg_attr(
55829 not(target_arch = "arm"),
55830 stable(feature = "neon_intrinsics", since = "1.59.0")
55831)]
55832#[cfg_attr(
55833 target_arch = "arm",
55834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55835)]
55836pub fn vrev16q_p8(a: poly8x16_t) -> poly8x16_t {
55837 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
55838}
55839#[doc = "Reversing vector elements (swap endianness)"]
55840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_s8)"]
55841#[inline(always)]
55842#[target_feature(enable = "neon")]
55843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55844#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55845#[cfg_attr(
55846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55847 assert_instr(rev16)
55848)]
55849#[cfg_attr(
55850 not(target_arch = "arm"),
55851 stable(feature = "neon_intrinsics", since = "1.59.0")
55852)]
55853#[cfg_attr(
55854 target_arch = "arm",
55855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55856)]
55857pub fn vrev16q_s8(a: int8x16_t) -> int8x16_t {
55858 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
55859}
55860#[doc = "Reversing vector elements (swap endianness)"]
55861#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev16q_u8)"]
55862#[inline(always)]
55863#[target_feature(enable = "neon")]
55864#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55865#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev16.8"))]
55866#[cfg_attr(
55867 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55868 assert_instr(rev16)
55869)]
55870#[cfg_attr(
55871 not(target_arch = "arm"),
55872 stable(feature = "neon_intrinsics", since = "1.59.0")
55873)]
55874#[cfg_attr(
55875 target_arch = "arm",
55876 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55877)]
55878pub fn vrev16q_u8(a: uint8x16_t) -> uint8x16_t {
55879 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14]) }
55880}
55881#[doc = "Reversing vector elements (swap endianness)"]
55882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_p16)"]
55883#[inline(always)]
55884#[target_feature(enable = "neon")]
55885#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55886#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
55887#[cfg_attr(
55888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55889 assert_instr(rev32)
55890)]
55891#[cfg_attr(
55892 not(target_arch = "arm"),
55893 stable(feature = "neon_intrinsics", since = "1.59.0")
55894)]
55895#[cfg_attr(
55896 target_arch = "arm",
55897 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55898)]
55899pub fn vrev32_p16(a: poly16x4_t) -> poly16x4_t {
55900 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
55901}
55902#[doc = "Reversing vector elements (swap endianness)"]
55903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_p8)"]
55904#[inline(always)]
55905#[target_feature(enable = "neon")]
55906#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55907#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
55908#[cfg_attr(
55909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55910 assert_instr(rev32)
55911)]
55912#[cfg_attr(
55913 not(target_arch = "arm"),
55914 stable(feature = "neon_intrinsics", since = "1.59.0")
55915)]
55916#[cfg_attr(
55917 target_arch = "arm",
55918 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55919)]
55920pub fn vrev32_p8(a: poly8x8_t) -> poly8x8_t {
55921 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
55922}
55923#[doc = "Reversing vector elements (swap endianness)"]
55924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_s16)"]
55925#[inline(always)]
55926#[target_feature(enable = "neon")]
55927#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55928#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
55929#[cfg_attr(
55930 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55931 assert_instr(rev32)
55932)]
55933#[cfg_attr(
55934 not(target_arch = "arm"),
55935 stable(feature = "neon_intrinsics", since = "1.59.0")
55936)]
55937#[cfg_attr(
55938 target_arch = "arm",
55939 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55940)]
55941pub fn vrev32_s16(a: int16x4_t) -> int16x4_t {
55942 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
55943}
55944#[doc = "Reversing vector elements (swap endianness)"]
55945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_s8)"]
55946#[inline(always)]
55947#[target_feature(enable = "neon")]
55948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55949#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
55950#[cfg_attr(
55951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55952 assert_instr(rev32)
55953)]
55954#[cfg_attr(
55955 not(target_arch = "arm"),
55956 stable(feature = "neon_intrinsics", since = "1.59.0")
55957)]
55958#[cfg_attr(
55959 target_arch = "arm",
55960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55961)]
55962pub fn vrev32_s8(a: int8x8_t) -> int8x8_t {
55963 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
55964}
55965#[doc = "Reversing vector elements (swap endianness)"]
55966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_u16)"]
55967#[inline(always)]
55968#[target_feature(enable = "neon")]
55969#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55970#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
55971#[cfg_attr(
55972 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55973 assert_instr(rev32)
55974)]
55975#[cfg_attr(
55976 not(target_arch = "arm"),
55977 stable(feature = "neon_intrinsics", since = "1.59.0")
55978)]
55979#[cfg_attr(
55980 target_arch = "arm",
55981 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
55982)]
55983pub fn vrev32_u16(a: uint16x4_t) -> uint16x4_t {
55984 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
55985}
55986#[doc = "Reversing vector elements (swap endianness)"]
55987#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32_u8)"]
55988#[inline(always)]
55989#[target_feature(enable = "neon")]
55990#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
55991#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
55992#[cfg_attr(
55993 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
55994 assert_instr(rev32)
55995)]
55996#[cfg_attr(
55997 not(target_arch = "arm"),
55998 stable(feature = "neon_intrinsics", since = "1.59.0")
55999)]
56000#[cfg_attr(
56001 target_arch = "arm",
56002 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56003)]
56004pub fn vrev32_u8(a: uint8x8_t) -> uint8x8_t {
56005 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56006}
56007#[doc = "Reversing vector elements (swap endianness)"]
56008#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_p16)"]
56009#[inline(always)]
56010#[target_feature(enable = "neon")]
56011#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56012#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
56013#[cfg_attr(
56014 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56015 assert_instr(rev32)
56016)]
56017#[cfg_attr(
56018 not(target_arch = "arm"),
56019 stable(feature = "neon_intrinsics", since = "1.59.0")
56020)]
56021#[cfg_attr(
56022 target_arch = "arm",
56023 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56024)]
56025pub fn vrev32q_p16(a: poly16x8_t) -> poly16x8_t {
56026 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
56027}
56028#[doc = "Reversing vector elements (swap endianness)"]
56029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_p8)"]
56030#[inline(always)]
56031#[target_feature(enable = "neon")]
56032#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56033#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
56034#[cfg_attr(
56035 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56036 assert_instr(rev32)
56037)]
56038#[cfg_attr(
56039 not(target_arch = "arm"),
56040 stable(feature = "neon_intrinsics", since = "1.59.0")
56041)]
56042#[cfg_attr(
56043 target_arch = "arm",
56044 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56045)]
56046pub fn vrev32q_p8(a: poly8x16_t) -> poly8x16_t {
56047 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
56048}
56049#[doc = "Reversing vector elements (swap endianness)"]
56050#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_s16)"]
56051#[inline(always)]
56052#[target_feature(enable = "neon")]
56053#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56054#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
56055#[cfg_attr(
56056 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56057 assert_instr(rev32)
56058)]
56059#[cfg_attr(
56060 not(target_arch = "arm"),
56061 stable(feature = "neon_intrinsics", since = "1.59.0")
56062)]
56063#[cfg_attr(
56064 target_arch = "arm",
56065 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56066)]
56067pub fn vrev32q_s16(a: int16x8_t) -> int16x8_t {
56068 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
56069}
56070#[doc = "Reversing vector elements (swap endianness)"]
56071#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_s8)"]
56072#[inline(always)]
56073#[target_feature(enable = "neon")]
56074#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56075#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
56076#[cfg_attr(
56077 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56078 assert_instr(rev32)
56079)]
56080#[cfg_attr(
56081 not(target_arch = "arm"),
56082 stable(feature = "neon_intrinsics", since = "1.59.0")
56083)]
56084#[cfg_attr(
56085 target_arch = "arm",
56086 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56087)]
56088pub fn vrev32q_s8(a: int8x16_t) -> int8x16_t {
56089 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
56090}
56091#[doc = "Reversing vector elements (swap endianness)"]
56092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_u16)"]
56093#[inline(always)]
56094#[target_feature(enable = "neon")]
56095#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56096#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.16"))]
56097#[cfg_attr(
56098 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56099 assert_instr(rev32)
56100)]
56101#[cfg_attr(
56102 not(target_arch = "arm"),
56103 stable(feature = "neon_intrinsics", since = "1.59.0")
56104)]
56105#[cfg_attr(
56106 target_arch = "arm",
56107 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56108)]
56109pub fn vrev32q_u16(a: uint16x8_t) -> uint16x8_t {
56110 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2, 5, 4, 7, 6]) }
56111}
56112#[doc = "Reversing vector elements (swap endianness)"]
56113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev32q_u8)"]
56114#[inline(always)]
56115#[target_feature(enable = "neon")]
56116#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56117#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev32.8"))]
56118#[cfg_attr(
56119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56120 assert_instr(rev32)
56121)]
56122#[cfg_attr(
56123 not(target_arch = "arm"),
56124 stable(feature = "neon_intrinsics", since = "1.59.0")
56125)]
56126#[cfg_attr(
56127 target_arch = "arm",
56128 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56129)]
56130pub fn vrev32q_u8(a: uint8x16_t) -> uint8x16_t {
56131 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12]) }
56132}
56133#[doc = "Reversing vector elements (swap endianness)"]
56134#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_f32)"]
56135#[inline(always)]
56136#[target_feature(enable = "neon")]
56137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56138#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56139#[cfg_attr(
56140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56141 assert_instr(rev64)
56142)]
56143#[cfg_attr(
56144 not(target_arch = "arm"),
56145 stable(feature = "neon_intrinsics", since = "1.59.0")
56146)]
56147#[cfg_attr(
56148 target_arch = "arm",
56149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56150)]
56151pub fn vrev64_f32(a: float32x2_t) -> float32x2_t {
56152 unsafe { simd_shuffle!(a, a, [1, 0]) }
56153}
56154#[doc = "Reversing vector elements (swap endianness)"]
56155#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_p16)"]
56156#[inline(always)]
56157#[target_feature(enable = "neon")]
56158#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56159#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56160#[cfg_attr(
56161 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56162 assert_instr(rev64)
56163)]
56164#[cfg_attr(
56165 not(target_arch = "arm"),
56166 stable(feature = "neon_intrinsics", since = "1.59.0")
56167)]
56168#[cfg_attr(
56169 target_arch = "arm",
56170 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56171)]
56172pub fn vrev64_p16(a: poly16x4_t) -> poly16x4_t {
56173 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
56174}
56175#[doc = "Reversing vector elements (swap endianness)"]
56176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_p8)"]
56177#[inline(always)]
56178#[target_feature(enable = "neon")]
56179#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56180#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56181#[cfg_attr(
56182 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56183 assert_instr(rev64)
56184)]
56185#[cfg_attr(
56186 not(target_arch = "arm"),
56187 stable(feature = "neon_intrinsics", since = "1.59.0")
56188)]
56189#[cfg_attr(
56190 target_arch = "arm",
56191 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56192)]
56193pub fn vrev64_p8(a: poly8x8_t) -> poly8x8_t {
56194 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
56195}
56196#[doc = "Reversing vector elements (swap endianness)"]
56197#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s16)"]
56198#[inline(always)]
56199#[target_feature(enable = "neon")]
56200#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56201#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56202#[cfg_attr(
56203 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56204 assert_instr(rev64)
56205)]
56206#[cfg_attr(
56207 not(target_arch = "arm"),
56208 stable(feature = "neon_intrinsics", since = "1.59.0")
56209)]
56210#[cfg_attr(
56211 target_arch = "arm",
56212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56213)]
56214pub fn vrev64_s16(a: int16x4_t) -> int16x4_t {
56215 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
56216}
56217#[doc = "Reversing vector elements (swap endianness)"]
56218#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s32)"]
56219#[inline(always)]
56220#[target_feature(enable = "neon")]
56221#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56222#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56223#[cfg_attr(
56224 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56225 assert_instr(rev64)
56226)]
56227#[cfg_attr(
56228 not(target_arch = "arm"),
56229 stable(feature = "neon_intrinsics", since = "1.59.0")
56230)]
56231#[cfg_attr(
56232 target_arch = "arm",
56233 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56234)]
56235pub fn vrev64_s32(a: int32x2_t) -> int32x2_t {
56236 unsafe { simd_shuffle!(a, a, [1, 0]) }
56237}
56238#[doc = "Reversing vector elements (swap endianness)"]
56239#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_s8)"]
56240#[inline(always)]
56241#[target_feature(enable = "neon")]
56242#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56243#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56244#[cfg_attr(
56245 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56246 assert_instr(rev64)
56247)]
56248#[cfg_attr(
56249 not(target_arch = "arm"),
56250 stable(feature = "neon_intrinsics", since = "1.59.0")
56251)]
56252#[cfg_attr(
56253 target_arch = "arm",
56254 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56255)]
56256pub fn vrev64_s8(a: int8x8_t) -> int8x8_t {
56257 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
56258}
56259#[doc = "Reversing vector elements (swap endianness)"]
56260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u16)"]
56261#[inline(always)]
56262#[target_feature(enable = "neon")]
56263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56264#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56265#[cfg_attr(
56266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56267 assert_instr(rev64)
56268)]
56269#[cfg_attr(
56270 not(target_arch = "arm"),
56271 stable(feature = "neon_intrinsics", since = "1.59.0")
56272)]
56273#[cfg_attr(
56274 target_arch = "arm",
56275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56276)]
56277pub fn vrev64_u16(a: uint16x4_t) -> uint16x4_t {
56278 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
56279}
56280#[doc = "Reversing vector elements (swap endianness)"]
56281#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u32)"]
56282#[inline(always)]
56283#[target_feature(enable = "neon")]
56284#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56285#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56286#[cfg_attr(
56287 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56288 assert_instr(rev64)
56289)]
56290#[cfg_attr(
56291 not(target_arch = "arm"),
56292 stable(feature = "neon_intrinsics", since = "1.59.0")
56293)]
56294#[cfg_attr(
56295 target_arch = "arm",
56296 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56297)]
56298pub fn vrev64_u32(a: uint32x2_t) -> uint32x2_t {
56299 unsafe { simd_shuffle!(a, a, [1, 0]) }
56300}
56301#[doc = "Reversing vector elements (swap endianness)"]
56302#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_u8)"]
56303#[inline(always)]
56304#[target_feature(enable = "neon")]
56305#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56306#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56307#[cfg_attr(
56308 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56309 assert_instr(rev64)
56310)]
56311#[cfg_attr(
56312 not(target_arch = "arm"),
56313 stable(feature = "neon_intrinsics", since = "1.59.0")
56314)]
56315#[cfg_attr(
56316 target_arch = "arm",
56317 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56318)]
56319pub fn vrev64_u8(a: uint8x8_t) -> uint8x8_t {
56320 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) }
56321}
56322#[doc = "Reversing vector elements (swap endianness)"]
56323#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_f32)"]
56324#[inline(always)]
56325#[target_feature(enable = "neon")]
56326#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56327#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56328#[cfg_attr(
56329 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56330 assert_instr(rev64)
56331)]
56332#[cfg_attr(
56333 not(target_arch = "arm"),
56334 stable(feature = "neon_intrinsics", since = "1.59.0")
56335)]
56336#[cfg_attr(
56337 target_arch = "arm",
56338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56339)]
56340pub fn vrev64q_f32(a: float32x4_t) -> float32x4_t {
56341 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
56342}
56343#[doc = "Reversing vector elements (swap endianness)"]
56344#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_p16)"]
56345#[inline(always)]
56346#[target_feature(enable = "neon")]
56347#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56348#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56349#[cfg_attr(
56350 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56351 assert_instr(rev64)
56352)]
56353#[cfg_attr(
56354 not(target_arch = "arm"),
56355 stable(feature = "neon_intrinsics", since = "1.59.0")
56356)]
56357#[cfg_attr(
56358 target_arch = "arm",
56359 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56360)]
56361pub fn vrev64q_p16(a: poly16x8_t) -> poly16x8_t {
56362 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56363}
56364#[doc = "Reversing vector elements (swap endianness)"]
56365#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_p8)"]
56366#[inline(always)]
56367#[target_feature(enable = "neon")]
56368#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56369#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56370#[cfg_attr(
56371 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56372 assert_instr(rev64)
56373)]
56374#[cfg_attr(
56375 not(target_arch = "arm"),
56376 stable(feature = "neon_intrinsics", since = "1.59.0")
56377)]
56378#[cfg_attr(
56379 target_arch = "arm",
56380 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56381)]
56382pub fn vrev64q_p8(a: poly8x16_t) -> poly8x16_t {
56383 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
56384}
56385#[doc = "Reversing vector elements (swap endianness)"]
56386#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s16)"]
56387#[inline(always)]
56388#[target_feature(enable = "neon")]
56389#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56390#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56391#[cfg_attr(
56392 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56393 assert_instr(rev64)
56394)]
56395#[cfg_attr(
56396 not(target_arch = "arm"),
56397 stable(feature = "neon_intrinsics", since = "1.59.0")
56398)]
56399#[cfg_attr(
56400 target_arch = "arm",
56401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56402)]
56403pub fn vrev64q_s16(a: int16x8_t) -> int16x8_t {
56404 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56405}
56406#[doc = "Reversing vector elements (swap endianness)"]
56407#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s32)"]
56408#[inline(always)]
56409#[target_feature(enable = "neon")]
56410#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56411#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56412#[cfg_attr(
56413 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56414 assert_instr(rev64)
56415)]
56416#[cfg_attr(
56417 not(target_arch = "arm"),
56418 stable(feature = "neon_intrinsics", since = "1.59.0")
56419)]
56420#[cfg_attr(
56421 target_arch = "arm",
56422 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56423)]
56424pub fn vrev64q_s32(a: int32x4_t) -> int32x4_t {
56425 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
56426}
56427#[doc = "Reversing vector elements (swap endianness)"]
56428#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_s8)"]
56429#[inline(always)]
56430#[target_feature(enable = "neon")]
56431#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56432#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56433#[cfg_attr(
56434 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56435 assert_instr(rev64)
56436)]
56437#[cfg_attr(
56438 not(target_arch = "arm"),
56439 stable(feature = "neon_intrinsics", since = "1.59.0")
56440)]
56441#[cfg_attr(
56442 target_arch = "arm",
56443 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56444)]
56445pub fn vrev64q_s8(a: int8x16_t) -> int8x16_t {
56446 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
56447}
56448#[doc = "Reversing vector elements (swap endianness)"]
56449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u16)"]
56450#[inline(always)]
56451#[target_feature(enable = "neon")]
56452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56453#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.16"))]
56454#[cfg_attr(
56455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56456 assert_instr(rev64)
56457)]
56458#[cfg_attr(
56459 not(target_arch = "arm"),
56460 stable(feature = "neon_intrinsics", since = "1.59.0")
56461)]
56462#[cfg_attr(
56463 target_arch = "arm",
56464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56465)]
56466pub fn vrev64q_u16(a: uint16x8_t) -> uint16x8_t {
56467 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56468}
56469#[doc = "Reversing vector elements (swap endianness)"]
56470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u32)"]
56471#[inline(always)]
56472#[target_feature(enable = "neon")]
56473#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56474#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.32"))]
56475#[cfg_attr(
56476 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56477 assert_instr(rev64)
56478)]
56479#[cfg_attr(
56480 not(target_arch = "arm"),
56481 stable(feature = "neon_intrinsics", since = "1.59.0")
56482)]
56483#[cfg_attr(
56484 target_arch = "arm",
56485 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56486)]
56487pub fn vrev64q_u32(a: uint32x4_t) -> uint32x4_t {
56488 unsafe { simd_shuffle!(a, a, [1, 0, 3, 2]) }
56489}
56490#[doc = "Reversing vector elements (swap endianness)"]
56491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_u8)"]
56492#[inline(always)]
56493#[target_feature(enable = "neon")]
56494#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56495#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrev64.8"))]
56496#[cfg_attr(
56497 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56498 assert_instr(rev64)
56499)]
56500#[cfg_attr(
56501 not(target_arch = "arm"),
56502 stable(feature = "neon_intrinsics", since = "1.59.0")
56503)]
56504#[cfg_attr(
56505 target_arch = "arm",
56506 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56507)]
56508pub fn vrev64q_u8(a: uint8x16_t) -> uint8x16_t {
56509 unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8]) }
56510}
56511#[doc = "Reverse elements in 64-bit doublewords"]
56512#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64_f16)"]
56513#[inline(always)]
56514#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56515#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrev64))]
56516#[cfg_attr(
56517 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56518 assert_instr(rev64)
56519)]
56520#[target_feature(enable = "neon,fp16")]
56521#[cfg_attr(
56522 not(target_arch = "arm"),
56523 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
56524)]
56525#[cfg_attr(
56526 target_arch = "arm",
56527 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56528)]
56529#[cfg(not(target_arch = "arm64ec"))]
56530pub fn vrev64_f16(a: float16x4_t) -> float16x4_t {
56531 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) }
56532}
56533#[doc = "Reverse elements in 64-bit doublewords"]
56534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrev64q_f16)"]
56535#[inline(always)]
56536#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56537#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrev64))]
56538#[cfg_attr(
56539 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56540 assert_instr(rev64)
56541)]
56542#[target_feature(enable = "neon,fp16")]
56543#[cfg_attr(
56544 not(target_arch = "arm"),
56545 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
56546)]
56547#[cfg_attr(
56548 target_arch = "arm",
56549 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56550)]
56551#[cfg(not(target_arch = "arm64ec"))]
56552pub fn vrev64q_f16(a: float16x8_t) -> float16x8_t {
56553 unsafe { simd_shuffle!(a, a, [3, 2, 1, 0, 7, 6, 5, 4]) }
56554}
56555#[doc = "Rounding halving add"]
56556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s8)"]
56557#[inline(always)]
56558#[target_feature(enable = "neon")]
56559#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56560#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s8"))]
56561#[cfg_attr(
56562 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56563 assert_instr(srhadd)
56564)]
56565#[cfg_attr(
56566 not(target_arch = "arm"),
56567 stable(feature = "neon_intrinsics", since = "1.59.0")
56568)]
56569#[cfg_attr(
56570 target_arch = "arm",
56571 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56572)]
56573pub fn vrhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
56574 unsafe extern "unadjusted" {
56575 #[cfg_attr(
56576 any(target_arch = "aarch64", target_arch = "arm64ec"),
56577 link_name = "llvm.aarch64.neon.srhadd.v8i8"
56578 )]
56579 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v8i8")]
56580 fn _vrhadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
56581 }
56582 unsafe { _vrhadd_s8(a, b) }
56583}
56584#[doc = "Rounding halving add"]
56585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s8)"]
56586#[inline(always)]
56587#[target_feature(enable = "neon")]
56588#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56589#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s8"))]
56590#[cfg_attr(
56591 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56592 assert_instr(srhadd)
56593)]
56594#[cfg_attr(
56595 not(target_arch = "arm"),
56596 stable(feature = "neon_intrinsics", since = "1.59.0")
56597)]
56598#[cfg_attr(
56599 target_arch = "arm",
56600 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56601)]
56602pub fn vrhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
56603 unsafe extern "unadjusted" {
56604 #[cfg_attr(
56605 any(target_arch = "aarch64", target_arch = "arm64ec"),
56606 link_name = "llvm.aarch64.neon.srhadd.v16i8"
56607 )]
56608 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v16i8")]
56609 fn _vrhaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
56610 }
56611 unsafe { _vrhaddq_s8(a, b) }
56612}
56613#[doc = "Rounding halving add"]
56614#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s16)"]
56615#[inline(always)]
56616#[target_feature(enable = "neon")]
56617#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56618#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s16"))]
56619#[cfg_attr(
56620 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56621 assert_instr(srhadd)
56622)]
56623#[cfg_attr(
56624 not(target_arch = "arm"),
56625 stable(feature = "neon_intrinsics", since = "1.59.0")
56626)]
56627#[cfg_attr(
56628 target_arch = "arm",
56629 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56630)]
56631pub fn vrhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
56632 unsafe extern "unadjusted" {
56633 #[cfg_attr(
56634 any(target_arch = "aarch64", target_arch = "arm64ec"),
56635 link_name = "llvm.aarch64.neon.srhadd.v4i16"
56636 )]
56637 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v4i16")]
56638 fn _vrhadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
56639 }
56640 unsafe { _vrhadd_s16(a, b) }
56641}
56642#[doc = "Rounding halving add"]
56643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s16)"]
56644#[inline(always)]
56645#[target_feature(enable = "neon")]
56646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56647#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s16"))]
56648#[cfg_attr(
56649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56650 assert_instr(srhadd)
56651)]
56652#[cfg_attr(
56653 not(target_arch = "arm"),
56654 stable(feature = "neon_intrinsics", since = "1.59.0")
56655)]
56656#[cfg_attr(
56657 target_arch = "arm",
56658 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56659)]
56660pub fn vrhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
56661 unsafe extern "unadjusted" {
56662 #[cfg_attr(
56663 any(target_arch = "aarch64", target_arch = "arm64ec"),
56664 link_name = "llvm.aarch64.neon.srhadd.v8i16"
56665 )]
56666 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v8i16")]
56667 fn _vrhaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
56668 }
56669 unsafe { _vrhaddq_s16(a, b) }
56670}
56671#[doc = "Rounding halving add"]
56672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_s32)"]
56673#[inline(always)]
56674#[target_feature(enable = "neon")]
56675#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56676#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s32"))]
56677#[cfg_attr(
56678 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56679 assert_instr(srhadd)
56680)]
56681#[cfg_attr(
56682 not(target_arch = "arm"),
56683 stable(feature = "neon_intrinsics", since = "1.59.0")
56684)]
56685#[cfg_attr(
56686 target_arch = "arm",
56687 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56688)]
56689pub fn vrhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
56690 unsafe extern "unadjusted" {
56691 #[cfg_attr(
56692 any(target_arch = "aarch64", target_arch = "arm64ec"),
56693 link_name = "llvm.aarch64.neon.srhadd.v2i32"
56694 )]
56695 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v2i32")]
56696 fn _vrhadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
56697 }
56698 unsafe { _vrhadd_s32(a, b) }
56699}
56700#[doc = "Rounding halving add"]
56701#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_s32)"]
56702#[inline(always)]
56703#[target_feature(enable = "neon")]
56704#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56705#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.s32"))]
56706#[cfg_attr(
56707 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56708 assert_instr(srhadd)
56709)]
56710#[cfg_attr(
56711 not(target_arch = "arm"),
56712 stable(feature = "neon_intrinsics", since = "1.59.0")
56713)]
56714#[cfg_attr(
56715 target_arch = "arm",
56716 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56717)]
56718pub fn vrhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
56719 unsafe extern "unadjusted" {
56720 #[cfg_attr(
56721 any(target_arch = "aarch64", target_arch = "arm64ec"),
56722 link_name = "llvm.aarch64.neon.srhadd.v4i32"
56723 )]
56724 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhadds.v4i32")]
56725 fn _vrhaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
56726 }
56727 unsafe { _vrhaddq_s32(a, b) }
56728}
56729#[doc = "Rounding halving add"]
56730#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u8)"]
56731#[inline(always)]
56732#[target_feature(enable = "neon")]
56733#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56734#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u8"))]
56735#[cfg_attr(
56736 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56737 assert_instr(urhadd)
56738)]
56739#[cfg_attr(
56740 not(target_arch = "arm"),
56741 stable(feature = "neon_intrinsics", since = "1.59.0")
56742)]
56743#[cfg_attr(
56744 target_arch = "arm",
56745 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56746)]
56747pub fn vrhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
56748 unsafe extern "unadjusted" {
56749 #[cfg_attr(
56750 any(target_arch = "aarch64", target_arch = "arm64ec"),
56751 link_name = "llvm.aarch64.neon.urhadd.v8i8"
56752 )]
56753 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v8i8")]
56754 fn _vrhadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
56755 }
56756 unsafe { _vrhadd_u8(a, b) }
56757}
56758#[doc = "Rounding halving add"]
56759#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u8)"]
56760#[inline(always)]
56761#[target_feature(enable = "neon")]
56762#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56763#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u8"))]
56764#[cfg_attr(
56765 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56766 assert_instr(urhadd)
56767)]
56768#[cfg_attr(
56769 not(target_arch = "arm"),
56770 stable(feature = "neon_intrinsics", since = "1.59.0")
56771)]
56772#[cfg_attr(
56773 target_arch = "arm",
56774 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56775)]
56776pub fn vrhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
56777 unsafe extern "unadjusted" {
56778 #[cfg_attr(
56779 any(target_arch = "aarch64", target_arch = "arm64ec"),
56780 link_name = "llvm.aarch64.neon.urhadd.v16i8"
56781 )]
56782 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v16i8")]
56783 fn _vrhaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
56784 }
56785 unsafe { _vrhaddq_u8(a, b) }
56786}
56787#[doc = "Rounding halving add"]
56788#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u16)"]
56789#[inline(always)]
56790#[target_feature(enable = "neon")]
56791#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56792#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u16"))]
56793#[cfg_attr(
56794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56795 assert_instr(urhadd)
56796)]
56797#[cfg_attr(
56798 not(target_arch = "arm"),
56799 stable(feature = "neon_intrinsics", since = "1.59.0")
56800)]
56801#[cfg_attr(
56802 target_arch = "arm",
56803 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56804)]
56805pub fn vrhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
56806 unsafe extern "unadjusted" {
56807 #[cfg_attr(
56808 any(target_arch = "aarch64", target_arch = "arm64ec"),
56809 link_name = "llvm.aarch64.neon.urhadd.v4i16"
56810 )]
56811 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v4i16")]
56812 fn _vrhadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
56813 }
56814 unsafe { _vrhadd_u16(a, b) }
56815}
56816#[doc = "Rounding halving add"]
56817#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u16)"]
56818#[inline(always)]
56819#[target_feature(enable = "neon")]
56820#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56821#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u16"))]
56822#[cfg_attr(
56823 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56824 assert_instr(urhadd)
56825)]
56826#[cfg_attr(
56827 not(target_arch = "arm"),
56828 stable(feature = "neon_intrinsics", since = "1.59.0")
56829)]
56830#[cfg_attr(
56831 target_arch = "arm",
56832 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56833)]
56834pub fn vrhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
56835 unsafe extern "unadjusted" {
56836 #[cfg_attr(
56837 any(target_arch = "aarch64", target_arch = "arm64ec"),
56838 link_name = "llvm.aarch64.neon.urhadd.v8i16"
56839 )]
56840 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v8i16")]
56841 fn _vrhaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
56842 }
56843 unsafe { _vrhaddq_u16(a, b) }
56844}
56845#[doc = "Rounding halving add"]
56846#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhadd_u32)"]
56847#[inline(always)]
56848#[target_feature(enable = "neon")]
56849#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56850#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u32"))]
56851#[cfg_attr(
56852 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56853 assert_instr(urhadd)
56854)]
56855#[cfg_attr(
56856 not(target_arch = "arm"),
56857 stable(feature = "neon_intrinsics", since = "1.59.0")
56858)]
56859#[cfg_attr(
56860 target_arch = "arm",
56861 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56862)]
56863pub fn vrhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
56864 unsafe extern "unadjusted" {
56865 #[cfg_attr(
56866 any(target_arch = "aarch64", target_arch = "arm64ec"),
56867 link_name = "llvm.aarch64.neon.urhadd.v2i32"
56868 )]
56869 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v2i32")]
56870 fn _vrhadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
56871 }
56872 unsafe { _vrhadd_u32(a, b) }
56873}
56874#[doc = "Rounding halving add"]
56875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrhaddq_u32)"]
56876#[inline(always)]
56877#[target_feature(enable = "neon")]
56878#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
56879#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vrhadd.u32"))]
56880#[cfg_attr(
56881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56882 assert_instr(urhadd)
56883)]
56884#[cfg_attr(
56885 not(target_arch = "arm"),
56886 stable(feature = "neon_intrinsics", since = "1.59.0")
56887)]
56888#[cfg_attr(
56889 target_arch = "arm",
56890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56891)]
56892pub fn vrhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
56893 unsafe extern "unadjusted" {
56894 #[cfg_attr(
56895 any(target_arch = "aarch64", target_arch = "arm64ec"),
56896 link_name = "llvm.aarch64.neon.urhadd.v4i32"
56897 )]
56898 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrhaddu.v4i32")]
56899 fn _vrhaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
56900 }
56901 unsafe { _vrhaddq_u32(a, b) }
56902}
56903#[doc = "Floating-point round to integral, to nearest with ties to even"]
56904#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndn_f16)"]
56905#[inline(always)]
56906#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
56907#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
56908#[cfg_attr(
56909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56910 assert_instr(frintn)
56911)]
56912#[target_feature(enable = "neon,fp16")]
56913#[cfg_attr(
56914 not(target_arch = "arm"),
56915 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
56916)]
56917#[cfg_attr(
56918 target_arch = "arm",
56919 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56920)]
56921#[cfg(not(target_arch = "arm64ec"))]
56922pub fn vrndn_f16(a: float16x4_t) -> float16x4_t {
56923 unsafe extern "unadjusted" {
56924 #[cfg_attr(
56925 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
56926 link_name = "llvm.roundeven.v4f16"
56927 )]
56928 fn _vrndn_f16(a: float16x4_t) -> float16x4_t;
56929 }
56930 unsafe { _vrndn_f16(a) }
56931}
56932#[doc = "Floating-point round to integral, to nearest with ties to even"]
56933#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndnq_f16)"]
56934#[inline(always)]
56935#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
56936#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
56937#[cfg_attr(
56938 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56939 assert_instr(frintn)
56940)]
56941#[target_feature(enable = "neon,fp16")]
56942#[cfg_attr(
56943 not(target_arch = "arm"),
56944 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
56945)]
56946#[cfg_attr(
56947 target_arch = "arm",
56948 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56949)]
56950#[cfg(not(target_arch = "arm64ec"))]
56951pub fn vrndnq_f16(a: float16x8_t) -> float16x8_t {
56952 unsafe extern "unadjusted" {
56953 #[cfg_attr(
56954 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
56955 link_name = "llvm.roundeven.v8f16"
56956 )]
56957 fn _vrndnq_f16(a: float16x8_t) -> float16x8_t;
56958 }
56959 unsafe { _vrndnq_f16(a) }
56960}
56961#[doc = "Floating-point round to integral, to nearest with ties to even"]
56962#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndn_f32)"]
56963#[inline(always)]
56964#[target_feature(enable = "neon")]
56965#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
56966#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
56967#[cfg_attr(
56968 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56969 assert_instr(frintn)
56970)]
56971#[cfg_attr(
56972 not(target_arch = "arm"),
56973 stable(feature = "neon_intrinsics", since = "1.59.0")
56974)]
56975#[cfg_attr(
56976 target_arch = "arm",
56977 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
56978)]
56979pub fn vrndn_f32(a: float32x2_t) -> float32x2_t {
56980 unsafe extern "unadjusted" {
56981 #[cfg_attr(
56982 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
56983 link_name = "llvm.roundeven.v2f32"
56984 )]
56985 fn _vrndn_f32(a: float32x2_t) -> float32x2_t;
56986 }
56987 unsafe { _vrndn_f32(a) }
56988}
56989#[doc = "Floating-point round to integral, to nearest with ties to even"]
56990#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrndnq_f32)"]
56991#[inline(always)]
56992#[target_feature(enable = "neon")]
56993#[cfg_attr(target_arch = "arm", target_feature(enable = "fp-armv8,v8"))]
56994#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrintn))]
56995#[cfg_attr(
56996 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
56997 assert_instr(frintn)
56998)]
56999#[cfg_attr(
57000 not(target_arch = "arm"),
57001 stable(feature = "neon_intrinsics", since = "1.59.0")
57002)]
57003#[cfg_attr(
57004 target_arch = "arm",
57005 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57006)]
57007pub fn vrndnq_f32(a: float32x4_t) -> float32x4_t {
57008 unsafe extern "unadjusted" {
57009 #[cfg_attr(
57010 any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "arm"),
57011 link_name = "llvm.roundeven.v4f32"
57012 )]
57013 fn _vrndnq_f32(a: float32x4_t) -> float32x4_t;
57014 }
57015 unsafe { _vrndnq_f32(a) }
57016}
57017#[doc = "Signed rounding shift left"]
57018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s8)"]
57019#[inline(always)]
57020#[target_feature(enable = "neon")]
57021#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57022#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57023#[cfg_attr(
57024 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57025 assert_instr(srshl)
57026)]
57027#[cfg_attr(
57028 not(target_arch = "arm"),
57029 stable(feature = "neon_intrinsics", since = "1.59.0")
57030)]
57031#[cfg_attr(
57032 target_arch = "arm",
57033 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57034)]
57035pub fn vrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
57036 unsafe extern "unadjusted" {
57037 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v8i8")]
57038 #[cfg_attr(
57039 any(target_arch = "aarch64", target_arch = "arm64ec"),
57040 link_name = "llvm.aarch64.neon.srshl.v8i8"
57041 )]
57042 fn _vrshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
57043 }
57044 unsafe { _vrshl_s8(a, b) }
57045}
57046#[doc = "Signed rounding shift left"]
57047#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s8)"]
57048#[inline(always)]
57049#[target_feature(enable = "neon")]
57050#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57051#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57052#[cfg_attr(
57053 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57054 assert_instr(srshl)
57055)]
57056#[cfg_attr(
57057 not(target_arch = "arm"),
57058 stable(feature = "neon_intrinsics", since = "1.59.0")
57059)]
57060#[cfg_attr(
57061 target_arch = "arm",
57062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57063)]
57064pub fn vrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
57065 unsafe extern "unadjusted" {
57066 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v16i8")]
57067 #[cfg_attr(
57068 any(target_arch = "aarch64", target_arch = "arm64ec"),
57069 link_name = "llvm.aarch64.neon.srshl.v16i8"
57070 )]
57071 fn _vrshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
57072 }
57073 unsafe { _vrshlq_s8(a, b) }
57074}
57075#[doc = "Signed rounding shift left"]
57076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s16)"]
57077#[inline(always)]
57078#[target_feature(enable = "neon")]
57079#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57080#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57081#[cfg_attr(
57082 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57083 assert_instr(srshl)
57084)]
57085#[cfg_attr(
57086 not(target_arch = "arm"),
57087 stable(feature = "neon_intrinsics", since = "1.59.0")
57088)]
57089#[cfg_attr(
57090 target_arch = "arm",
57091 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57092)]
57093pub fn vrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
57094 unsafe extern "unadjusted" {
57095 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v4i16")]
57096 #[cfg_attr(
57097 any(target_arch = "aarch64", target_arch = "arm64ec"),
57098 link_name = "llvm.aarch64.neon.srshl.v4i16"
57099 )]
57100 fn _vrshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
57101 }
57102 unsafe { _vrshl_s16(a, b) }
57103}
57104#[doc = "Signed rounding shift left"]
57105#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s16)"]
57106#[inline(always)]
57107#[target_feature(enable = "neon")]
57108#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57109#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57110#[cfg_attr(
57111 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57112 assert_instr(srshl)
57113)]
57114#[cfg_attr(
57115 not(target_arch = "arm"),
57116 stable(feature = "neon_intrinsics", since = "1.59.0")
57117)]
57118#[cfg_attr(
57119 target_arch = "arm",
57120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57121)]
57122pub fn vrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
57123 unsafe extern "unadjusted" {
57124 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v8i16")]
57125 #[cfg_attr(
57126 any(target_arch = "aarch64", target_arch = "arm64ec"),
57127 link_name = "llvm.aarch64.neon.srshl.v8i16"
57128 )]
57129 fn _vrshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
57130 }
57131 unsafe { _vrshlq_s16(a, b) }
57132}
57133#[doc = "Signed rounding shift left"]
57134#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s32)"]
57135#[inline(always)]
57136#[target_feature(enable = "neon")]
57137#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57138#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57139#[cfg_attr(
57140 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57141 assert_instr(srshl)
57142)]
57143#[cfg_attr(
57144 not(target_arch = "arm"),
57145 stable(feature = "neon_intrinsics", since = "1.59.0")
57146)]
57147#[cfg_attr(
57148 target_arch = "arm",
57149 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57150)]
57151pub fn vrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
57152 unsafe extern "unadjusted" {
57153 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v2i32")]
57154 #[cfg_attr(
57155 any(target_arch = "aarch64", target_arch = "arm64ec"),
57156 link_name = "llvm.aarch64.neon.srshl.v2i32"
57157 )]
57158 fn _vrshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
57159 }
57160 unsafe { _vrshl_s32(a, b) }
57161}
57162#[doc = "Signed rounding shift left"]
57163#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s32)"]
57164#[inline(always)]
57165#[target_feature(enable = "neon")]
57166#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57167#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57168#[cfg_attr(
57169 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57170 assert_instr(srshl)
57171)]
57172#[cfg_attr(
57173 not(target_arch = "arm"),
57174 stable(feature = "neon_intrinsics", since = "1.59.0")
57175)]
57176#[cfg_attr(
57177 target_arch = "arm",
57178 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57179)]
57180pub fn vrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
57181 unsafe extern "unadjusted" {
57182 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v4i32")]
57183 #[cfg_attr(
57184 any(target_arch = "aarch64", target_arch = "arm64ec"),
57185 link_name = "llvm.aarch64.neon.srshl.v4i32"
57186 )]
57187 fn _vrshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
57188 }
57189 unsafe { _vrshlq_s32(a, b) }
57190}
57191#[doc = "Signed rounding shift left"]
57192#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_s64)"]
57193#[inline(always)]
57194#[target_feature(enable = "neon")]
57195#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57196#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57197#[cfg_attr(
57198 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57199 assert_instr(srshl)
57200)]
57201#[cfg_attr(
57202 not(target_arch = "arm"),
57203 stable(feature = "neon_intrinsics", since = "1.59.0")
57204)]
57205#[cfg_attr(
57206 target_arch = "arm",
57207 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57208)]
57209pub fn vrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
57210 unsafe extern "unadjusted" {
57211 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v1i64")]
57212 #[cfg_attr(
57213 any(target_arch = "aarch64", target_arch = "arm64ec"),
57214 link_name = "llvm.aarch64.neon.srshl.v1i64"
57215 )]
57216 fn _vrshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
57217 }
57218 unsafe { _vrshl_s64(a, b) }
57219}
57220#[doc = "Signed rounding shift left"]
57221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_s64)"]
57222#[inline(always)]
57223#[target_feature(enable = "neon")]
57224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57225#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57226#[cfg_attr(
57227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57228 assert_instr(srshl)
57229)]
57230#[cfg_attr(
57231 not(target_arch = "arm"),
57232 stable(feature = "neon_intrinsics", since = "1.59.0")
57233)]
57234#[cfg_attr(
57235 target_arch = "arm",
57236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57237)]
57238pub fn vrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
57239 unsafe extern "unadjusted" {
57240 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshifts.v2i64")]
57241 #[cfg_attr(
57242 any(target_arch = "aarch64", target_arch = "arm64ec"),
57243 link_name = "llvm.aarch64.neon.srshl.v2i64"
57244 )]
57245 fn _vrshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
57246 }
57247 unsafe { _vrshlq_s64(a, b) }
57248}
57249#[doc = "Unsigned rounding shift left"]
57250#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u8)"]
57251#[inline(always)]
57252#[target_feature(enable = "neon")]
57253#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57254#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57255#[cfg_attr(
57256 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57257 assert_instr(urshl)
57258)]
57259#[cfg_attr(
57260 not(target_arch = "arm"),
57261 stable(feature = "neon_intrinsics", since = "1.59.0")
57262)]
57263#[cfg_attr(
57264 target_arch = "arm",
57265 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57266)]
57267pub fn vrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
57268 unsafe extern "unadjusted" {
57269 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v8i8")]
57270 #[cfg_attr(
57271 any(target_arch = "aarch64", target_arch = "arm64ec"),
57272 link_name = "llvm.aarch64.neon.urshl.v8i8"
57273 )]
57274 fn _vrshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
57275 }
57276 unsafe { _vrshl_u8(a, b) }
57277}
57278#[doc = "Unsigned rounding shift left"]
57279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u8)"]
57280#[inline(always)]
57281#[target_feature(enable = "neon")]
57282#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57283#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57284#[cfg_attr(
57285 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57286 assert_instr(urshl)
57287)]
57288#[cfg_attr(
57289 not(target_arch = "arm"),
57290 stable(feature = "neon_intrinsics", since = "1.59.0")
57291)]
57292#[cfg_attr(
57293 target_arch = "arm",
57294 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57295)]
57296pub fn vrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
57297 unsafe extern "unadjusted" {
57298 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v16i8")]
57299 #[cfg_attr(
57300 any(target_arch = "aarch64", target_arch = "arm64ec"),
57301 link_name = "llvm.aarch64.neon.urshl.v16i8"
57302 )]
57303 fn _vrshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
57304 }
57305 unsafe { _vrshlq_u8(a, b) }
57306}
57307#[doc = "Unsigned rounding shift left"]
57308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u16)"]
57309#[inline(always)]
57310#[target_feature(enable = "neon")]
57311#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57312#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57313#[cfg_attr(
57314 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57315 assert_instr(urshl)
57316)]
57317#[cfg_attr(
57318 not(target_arch = "arm"),
57319 stable(feature = "neon_intrinsics", since = "1.59.0")
57320)]
57321#[cfg_attr(
57322 target_arch = "arm",
57323 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57324)]
57325pub fn vrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
57326 unsafe extern "unadjusted" {
57327 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v4i16")]
57328 #[cfg_attr(
57329 any(target_arch = "aarch64", target_arch = "arm64ec"),
57330 link_name = "llvm.aarch64.neon.urshl.v4i16"
57331 )]
57332 fn _vrshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
57333 }
57334 unsafe { _vrshl_u16(a, b) }
57335}
57336#[doc = "Unsigned rounding shift left"]
57337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u16)"]
57338#[inline(always)]
57339#[target_feature(enable = "neon")]
57340#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57341#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57342#[cfg_attr(
57343 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57344 assert_instr(urshl)
57345)]
57346#[cfg_attr(
57347 not(target_arch = "arm"),
57348 stable(feature = "neon_intrinsics", since = "1.59.0")
57349)]
57350#[cfg_attr(
57351 target_arch = "arm",
57352 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57353)]
57354pub fn vrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
57355 unsafe extern "unadjusted" {
57356 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v8i16")]
57357 #[cfg_attr(
57358 any(target_arch = "aarch64", target_arch = "arm64ec"),
57359 link_name = "llvm.aarch64.neon.urshl.v8i16"
57360 )]
57361 fn _vrshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
57362 }
57363 unsafe { _vrshlq_u16(a, b) }
57364}
57365#[doc = "Unsigned rounding shift left"]
57366#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u32)"]
57367#[inline(always)]
57368#[target_feature(enable = "neon")]
57369#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57370#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57371#[cfg_attr(
57372 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57373 assert_instr(urshl)
57374)]
57375#[cfg_attr(
57376 not(target_arch = "arm"),
57377 stable(feature = "neon_intrinsics", since = "1.59.0")
57378)]
57379#[cfg_attr(
57380 target_arch = "arm",
57381 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57382)]
57383pub fn vrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
57384 unsafe extern "unadjusted" {
57385 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v2i32")]
57386 #[cfg_attr(
57387 any(target_arch = "aarch64", target_arch = "arm64ec"),
57388 link_name = "llvm.aarch64.neon.urshl.v2i32"
57389 )]
57390 fn _vrshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
57391 }
57392 unsafe { _vrshl_u32(a, b) }
57393}
57394#[doc = "Unsigned rounding shift left"]
57395#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u32)"]
57396#[inline(always)]
57397#[target_feature(enable = "neon")]
57398#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57399#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57400#[cfg_attr(
57401 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57402 assert_instr(urshl)
57403)]
57404#[cfg_attr(
57405 not(target_arch = "arm"),
57406 stable(feature = "neon_intrinsics", since = "1.59.0")
57407)]
57408#[cfg_attr(
57409 target_arch = "arm",
57410 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57411)]
57412pub fn vrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
57413 unsafe extern "unadjusted" {
57414 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v4i32")]
57415 #[cfg_attr(
57416 any(target_arch = "aarch64", target_arch = "arm64ec"),
57417 link_name = "llvm.aarch64.neon.urshl.v4i32"
57418 )]
57419 fn _vrshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
57420 }
57421 unsafe { _vrshlq_u32(a, b) }
57422}
57423#[doc = "Unsigned rounding shift left"]
57424#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshl_u64)"]
57425#[inline(always)]
57426#[target_feature(enable = "neon")]
57427#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57428#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57429#[cfg_attr(
57430 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57431 assert_instr(urshl)
57432)]
57433#[cfg_attr(
57434 not(target_arch = "arm"),
57435 stable(feature = "neon_intrinsics", since = "1.59.0")
57436)]
57437#[cfg_attr(
57438 target_arch = "arm",
57439 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57440)]
57441pub fn vrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
57442 unsafe extern "unadjusted" {
57443 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v1i64")]
57444 #[cfg_attr(
57445 any(target_arch = "aarch64", target_arch = "arm64ec"),
57446 link_name = "llvm.aarch64.neon.urshl.v1i64"
57447 )]
57448 fn _vrshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
57449 }
57450 unsafe { _vrshl_u64(a, b) }
57451}
57452#[doc = "Unsigned rounding shift left"]
57453#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshlq_u64)"]
57454#[inline(always)]
57455#[target_feature(enable = "neon")]
57456#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57457#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshl))]
57458#[cfg_attr(
57459 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57460 assert_instr(urshl)
57461)]
57462#[cfg_attr(
57463 not(target_arch = "arm"),
57464 stable(feature = "neon_intrinsics", since = "1.59.0")
57465)]
57466#[cfg_attr(
57467 target_arch = "arm",
57468 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57469)]
57470pub fn vrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
57471 unsafe extern "unadjusted" {
57472 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftu.v2i64")]
57473 #[cfg_attr(
57474 any(target_arch = "aarch64", target_arch = "arm64ec"),
57475 link_name = "llvm.aarch64.neon.urshl.v2i64"
57476 )]
57477 fn _vrshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
57478 }
57479 unsafe { _vrshlq_u64(a, b) }
57480}
57481#[doc = "Signed rounding shift right"]
57482#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s8)"]
57483#[inline(always)]
57484#[target_feature(enable = "neon")]
57485#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57486#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57487#[cfg_attr(
57488 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57489 assert_instr(srshr, N = 2)
57490)]
57491#[rustc_legacy_const_generics(1)]
57492#[cfg_attr(
57493 not(target_arch = "arm"),
57494 stable(feature = "neon_intrinsics", since = "1.59.0")
57495)]
57496#[cfg_attr(
57497 target_arch = "arm",
57498 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57499)]
57500pub fn vrshr_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
57501 static_assert!(N >= 1 && N <= 8);
57502 vrshl_s8(a, vdup_n_s8(-N as _))
57503}
57504#[doc = "Signed rounding shift right"]
57505#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s8)"]
57506#[inline(always)]
57507#[target_feature(enable = "neon")]
57508#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57509#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57510#[cfg_attr(
57511 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57512 assert_instr(srshr, N = 2)
57513)]
57514#[rustc_legacy_const_generics(1)]
57515#[cfg_attr(
57516 not(target_arch = "arm"),
57517 stable(feature = "neon_intrinsics", since = "1.59.0")
57518)]
57519#[cfg_attr(
57520 target_arch = "arm",
57521 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57522)]
57523pub fn vrshrq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
57524 static_assert!(N >= 1 && N <= 8);
57525 vrshlq_s8(a, vdupq_n_s8(-N as _))
57526}
57527#[doc = "Signed rounding shift right"]
57528#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s16)"]
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(vrshr, N = 2))]
57533#[cfg_attr(
57534 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57535 assert_instr(srshr, N = 2)
57536)]
57537#[rustc_legacy_const_generics(1)]
57538#[cfg_attr(
57539 not(target_arch = "arm"),
57540 stable(feature = "neon_intrinsics", since = "1.59.0")
57541)]
57542#[cfg_attr(
57543 target_arch = "arm",
57544 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57545)]
57546pub fn vrshr_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
57547 static_assert!(N >= 1 && N <= 16);
57548 vrshl_s16(a, vdup_n_s16(-N as _))
57549}
57550#[doc = "Signed rounding shift right"]
57551#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s16)"]
57552#[inline(always)]
57553#[target_feature(enable = "neon")]
57554#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57555#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57556#[cfg_attr(
57557 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57558 assert_instr(srshr, N = 2)
57559)]
57560#[rustc_legacy_const_generics(1)]
57561#[cfg_attr(
57562 not(target_arch = "arm"),
57563 stable(feature = "neon_intrinsics", since = "1.59.0")
57564)]
57565#[cfg_attr(
57566 target_arch = "arm",
57567 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57568)]
57569pub fn vrshrq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
57570 static_assert!(N >= 1 && N <= 16);
57571 vrshlq_s16(a, vdupq_n_s16(-N as _))
57572}
57573#[doc = "Signed rounding shift right"]
57574#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s32)"]
57575#[inline(always)]
57576#[target_feature(enable = "neon")]
57577#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57578#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57579#[cfg_attr(
57580 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57581 assert_instr(srshr, N = 2)
57582)]
57583#[rustc_legacy_const_generics(1)]
57584#[cfg_attr(
57585 not(target_arch = "arm"),
57586 stable(feature = "neon_intrinsics", since = "1.59.0")
57587)]
57588#[cfg_attr(
57589 target_arch = "arm",
57590 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57591)]
57592pub fn vrshr_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
57593 static_assert!(N >= 1 && N <= 32);
57594 vrshl_s32(a, vdup_n_s32(-N as _))
57595}
57596#[doc = "Signed rounding shift right"]
57597#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s32)"]
57598#[inline(always)]
57599#[target_feature(enable = "neon")]
57600#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57601#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57602#[cfg_attr(
57603 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57604 assert_instr(srshr, N = 2)
57605)]
57606#[rustc_legacy_const_generics(1)]
57607#[cfg_attr(
57608 not(target_arch = "arm"),
57609 stable(feature = "neon_intrinsics", since = "1.59.0")
57610)]
57611#[cfg_attr(
57612 target_arch = "arm",
57613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57614)]
57615pub fn vrshrq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
57616 static_assert!(N >= 1 && N <= 32);
57617 vrshlq_s32(a, vdupq_n_s32(-N as _))
57618}
57619#[doc = "Signed rounding shift right"]
57620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_s64)"]
57621#[inline(always)]
57622#[target_feature(enable = "neon")]
57623#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57624#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57625#[cfg_attr(
57626 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57627 assert_instr(srshr, N = 2)
57628)]
57629#[rustc_legacy_const_generics(1)]
57630#[cfg_attr(
57631 not(target_arch = "arm"),
57632 stable(feature = "neon_intrinsics", since = "1.59.0")
57633)]
57634#[cfg_attr(
57635 target_arch = "arm",
57636 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57637)]
57638pub fn vrshr_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
57639 static_assert!(N >= 1 && N <= 64);
57640 vrshl_s64(a, vdup_n_s64(-N as _))
57641}
57642#[doc = "Signed rounding shift right"]
57643#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_s64)"]
57644#[inline(always)]
57645#[target_feature(enable = "neon")]
57646#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57647#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57648#[cfg_attr(
57649 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57650 assert_instr(srshr, N = 2)
57651)]
57652#[rustc_legacy_const_generics(1)]
57653#[cfg_attr(
57654 not(target_arch = "arm"),
57655 stable(feature = "neon_intrinsics", since = "1.59.0")
57656)]
57657#[cfg_attr(
57658 target_arch = "arm",
57659 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57660)]
57661pub fn vrshrq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
57662 static_assert!(N >= 1 && N <= 64);
57663 vrshlq_s64(a, vdupq_n_s64(-N as _))
57664}
57665#[doc = "Unsigned rounding shift right"]
57666#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u8)"]
57667#[inline(always)]
57668#[target_feature(enable = "neon")]
57669#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57670#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57671#[cfg_attr(
57672 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57673 assert_instr(urshr, N = 2)
57674)]
57675#[rustc_legacy_const_generics(1)]
57676#[cfg_attr(
57677 not(target_arch = "arm"),
57678 stable(feature = "neon_intrinsics", since = "1.59.0")
57679)]
57680#[cfg_attr(
57681 target_arch = "arm",
57682 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57683)]
57684pub fn vrshr_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
57685 static_assert!(N >= 1 && N <= 8);
57686 vrshl_u8(a, vdup_n_s8(-N as _))
57687}
57688#[doc = "Unsigned rounding shift right"]
57689#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u8)"]
57690#[inline(always)]
57691#[target_feature(enable = "neon")]
57692#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57693#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57694#[cfg_attr(
57695 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57696 assert_instr(urshr, N = 2)
57697)]
57698#[rustc_legacy_const_generics(1)]
57699#[cfg_attr(
57700 not(target_arch = "arm"),
57701 stable(feature = "neon_intrinsics", since = "1.59.0")
57702)]
57703#[cfg_attr(
57704 target_arch = "arm",
57705 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57706)]
57707pub fn vrshrq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
57708 static_assert!(N >= 1 && N <= 8);
57709 vrshlq_u8(a, vdupq_n_s8(-N as _))
57710}
57711#[doc = "Unsigned rounding shift right"]
57712#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u16)"]
57713#[inline(always)]
57714#[target_feature(enable = "neon")]
57715#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57716#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57717#[cfg_attr(
57718 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57719 assert_instr(urshr, N = 2)
57720)]
57721#[rustc_legacy_const_generics(1)]
57722#[cfg_attr(
57723 not(target_arch = "arm"),
57724 stable(feature = "neon_intrinsics", since = "1.59.0")
57725)]
57726#[cfg_attr(
57727 target_arch = "arm",
57728 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57729)]
57730pub fn vrshr_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
57731 static_assert!(N >= 1 && N <= 16);
57732 vrshl_u16(a, vdup_n_s16(-N as _))
57733}
57734#[doc = "Unsigned rounding shift right"]
57735#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u16)"]
57736#[inline(always)]
57737#[target_feature(enable = "neon")]
57738#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57739#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57740#[cfg_attr(
57741 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57742 assert_instr(urshr, N = 2)
57743)]
57744#[rustc_legacy_const_generics(1)]
57745#[cfg_attr(
57746 not(target_arch = "arm"),
57747 stable(feature = "neon_intrinsics", since = "1.59.0")
57748)]
57749#[cfg_attr(
57750 target_arch = "arm",
57751 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57752)]
57753pub fn vrshrq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
57754 static_assert!(N >= 1 && N <= 16);
57755 vrshlq_u16(a, vdupq_n_s16(-N as _))
57756}
57757#[doc = "Unsigned rounding shift right"]
57758#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u32)"]
57759#[inline(always)]
57760#[target_feature(enable = "neon")]
57761#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57762#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57763#[cfg_attr(
57764 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57765 assert_instr(urshr, N = 2)
57766)]
57767#[rustc_legacy_const_generics(1)]
57768#[cfg_attr(
57769 not(target_arch = "arm"),
57770 stable(feature = "neon_intrinsics", since = "1.59.0")
57771)]
57772#[cfg_attr(
57773 target_arch = "arm",
57774 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57775)]
57776pub fn vrshr_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
57777 static_assert!(N >= 1 && N <= 32);
57778 vrshl_u32(a, vdup_n_s32(-N as _))
57779}
57780#[doc = "Unsigned rounding shift right"]
57781#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u32)"]
57782#[inline(always)]
57783#[target_feature(enable = "neon")]
57784#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57785#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57786#[cfg_attr(
57787 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57788 assert_instr(urshr, N = 2)
57789)]
57790#[rustc_legacy_const_generics(1)]
57791#[cfg_attr(
57792 not(target_arch = "arm"),
57793 stable(feature = "neon_intrinsics", since = "1.59.0")
57794)]
57795#[cfg_attr(
57796 target_arch = "arm",
57797 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57798)]
57799pub fn vrshrq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
57800 static_assert!(N >= 1 && N <= 32);
57801 vrshlq_u32(a, vdupq_n_s32(-N as _))
57802}
57803#[doc = "Unsigned rounding shift right"]
57804#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshr_n_u64)"]
57805#[inline(always)]
57806#[target_feature(enable = "neon")]
57807#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57808#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57809#[cfg_attr(
57810 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57811 assert_instr(urshr, N = 2)
57812)]
57813#[rustc_legacy_const_generics(1)]
57814#[cfg_attr(
57815 not(target_arch = "arm"),
57816 stable(feature = "neon_intrinsics", since = "1.59.0")
57817)]
57818#[cfg_attr(
57819 target_arch = "arm",
57820 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57821)]
57822pub fn vrshr_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
57823 static_assert!(N >= 1 && N <= 64);
57824 vrshl_u64(a, vdup_n_s64(-N as _))
57825}
57826#[doc = "Unsigned rounding shift right"]
57827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrq_n_u64)"]
57828#[inline(always)]
57829#[target_feature(enable = "neon")]
57830#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57831#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshr, N = 2))]
57832#[cfg_attr(
57833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57834 assert_instr(urshr, N = 2)
57835)]
57836#[rustc_legacy_const_generics(1)]
57837#[cfg_attr(
57838 not(target_arch = "arm"),
57839 stable(feature = "neon_intrinsics", since = "1.59.0")
57840)]
57841#[cfg_attr(
57842 target_arch = "arm",
57843 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57844)]
57845pub fn vrshrq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
57846 static_assert!(N >= 1 && N <= 64);
57847 vrshlq_u64(a, vdupq_n_s64(-N as _))
57848}
57849#[doc = "Rounding shift right narrow"]
57850#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]
57851#[inline(always)]
57852#[cfg(target_arch = "arm")]
57853#[target_feature(enable = "neon,v7")]
57854#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
57855#[rustc_legacy_const_generics(1)]
57856#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57857pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
57858 static_assert!(N >= 1 && N <= 8);
57859 unsafe extern "unadjusted" {
57860 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v8i8")]
57861 fn _vrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
57862 }
57863 unsafe { _vrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
57864}
57865#[doc = "Rounding shift right narrow"]
57866#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]
57867#[inline(always)]
57868#[cfg(target_arch = "arm")]
57869#[target_feature(enable = "neon,v7")]
57870#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
57871#[rustc_legacy_const_generics(1)]
57872#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57873pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
57874 static_assert!(N >= 1 && N <= 16);
57875 unsafe extern "unadjusted" {
57876 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v4i16")]
57877 fn _vrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
57878 }
57879 unsafe { _vrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
57880}
57881#[doc = "Rounding shift right narrow"]
57882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]
57883#[inline(always)]
57884#[cfg(target_arch = "arm")]
57885#[target_feature(enable = "neon,v7")]
57886#[cfg_attr(test, assert_instr(vrshrn, N = 2))]
57887#[rustc_legacy_const_generics(1)]
57888#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
57889pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
57890 static_assert!(N >= 1 && N <= 32);
57891 unsafe extern "unadjusted" {
57892 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v2i32")]
57893 fn _vrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
57894 }
57895 unsafe { _vrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
57896}
57897#[doc = "Rounding shift right narrow"]
57898#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]
57899#[inline(always)]
57900#[target_feature(enable = "neon")]
57901#[cfg(not(target_arch = "arm"))]
57902#[cfg_attr(test, assert_instr(rshrn, N = 2))]
57903#[rustc_legacy_const_generics(1)]
57904#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57905pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
57906 static_assert!(N >= 1 && N <= 8);
57907 unsafe extern "unadjusted" {
57908 #[cfg_attr(
57909 any(target_arch = "aarch64", target_arch = "arm64ec"),
57910 link_name = "llvm.aarch64.neon.rshrn.v8i8"
57911 )]
57912 fn _vrshrn_n_s16(a: int16x8_t, n: i32) -> int8x8_t;
57913 }
57914 unsafe { _vrshrn_n_s16(a, N) }
57915}
57916#[doc = "Rounding shift right narrow"]
57917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]
57918#[inline(always)]
57919#[target_feature(enable = "neon")]
57920#[cfg(not(target_arch = "arm"))]
57921#[cfg_attr(test, assert_instr(rshrn, N = 2))]
57922#[rustc_legacy_const_generics(1)]
57923#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57924pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
57925 static_assert!(N >= 1 && N <= 16);
57926 unsafe extern "unadjusted" {
57927 #[cfg_attr(
57928 any(target_arch = "aarch64", target_arch = "arm64ec"),
57929 link_name = "llvm.aarch64.neon.rshrn.v4i16"
57930 )]
57931 fn _vrshrn_n_s32(a: int32x4_t, n: i32) -> int16x4_t;
57932 }
57933 unsafe { _vrshrn_n_s32(a, N) }
57934}
57935#[doc = "Rounding shift right narrow"]
57936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]
57937#[inline(always)]
57938#[target_feature(enable = "neon")]
57939#[cfg(not(target_arch = "arm"))]
57940#[cfg_attr(test, assert_instr(rshrn, N = 2))]
57941#[rustc_legacy_const_generics(1)]
57942#[stable(feature = "neon_intrinsics", since = "1.59.0")]
57943pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
57944 static_assert!(N >= 1 && N <= 32);
57945 unsafe extern "unadjusted" {
57946 #[cfg_attr(
57947 any(target_arch = "aarch64", target_arch = "arm64ec"),
57948 link_name = "llvm.aarch64.neon.rshrn.v2i32"
57949 )]
57950 fn _vrshrn_n_s64(a: int64x2_t, n: i32) -> int32x2_t;
57951 }
57952 unsafe { _vrshrn_n_s64(a, N) }
57953}
57954#[doc = "Rounding shift right narrow"]
57955#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u16)"]
57956#[inline(always)]
57957#[target_feature(enable = "neon")]
57958#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57959#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
57960#[cfg_attr(
57961 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57962 assert_instr(rshrn, N = 2)
57963)]
57964#[rustc_legacy_const_generics(1)]
57965#[cfg_attr(
57966 not(target_arch = "arm"),
57967 stable(feature = "neon_intrinsics", since = "1.59.0")
57968)]
57969#[cfg_attr(
57970 target_arch = "arm",
57971 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57972)]
57973pub fn vrshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
57974 static_assert!(N >= 1 && N <= 8);
57975 unsafe { transmute(vrshrn_n_s16::<N>(transmute(a))) }
57976}
57977#[doc = "Rounding shift right narrow"]
57978#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u32)"]
57979#[inline(always)]
57980#[target_feature(enable = "neon")]
57981#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
57982#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
57983#[cfg_attr(
57984 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
57985 assert_instr(rshrn, N = 2)
57986)]
57987#[rustc_legacy_const_generics(1)]
57988#[cfg_attr(
57989 not(target_arch = "arm"),
57990 stable(feature = "neon_intrinsics", since = "1.59.0")
57991)]
57992#[cfg_attr(
57993 target_arch = "arm",
57994 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
57995)]
57996pub fn vrshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
57997 static_assert!(N >= 1 && N <= 16);
57998 unsafe { transmute(vrshrn_n_s32::<N>(transmute(a))) }
57999}
58000#[doc = "Rounding shift right narrow"]
58001#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_u64)"]
58002#[inline(always)]
58003#[target_feature(enable = "neon")]
58004#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58005#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrshrn, N = 2))]
58006#[cfg_attr(
58007 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58008 assert_instr(rshrn, N = 2)
58009)]
58010#[rustc_legacy_const_generics(1)]
58011#[cfg_attr(
58012 not(target_arch = "arm"),
58013 stable(feature = "neon_intrinsics", since = "1.59.0")
58014)]
58015#[cfg_attr(
58016 target_arch = "arm",
58017 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58018)]
58019pub fn vrshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
58020 static_assert!(N >= 1 && N <= 32);
58021 unsafe { transmute(vrshrn_n_s64::<N>(transmute(a))) }
58022}
58023#[doc = "Reciprocal square-root estimate."]
58024#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_f16)"]
58025#[inline(always)]
58026#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58027#[target_feature(enable = "neon,fp16")]
58028#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58029#[cfg_attr(
58030 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58031 assert_instr(frsqrte)
58032)]
58033#[cfg_attr(
58034 not(target_arch = "arm"),
58035 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
58036)]
58037#[cfg_attr(
58038 target_arch = "arm",
58039 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58040)]
58041#[cfg(not(target_arch = "arm64ec"))]
58042pub fn vrsqrte_f16(a: float16x4_t) -> float16x4_t {
58043 unsafe extern "unadjusted" {
58044 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4f16")]
58045 #[cfg_attr(
58046 any(target_arch = "aarch64", target_arch = "arm64ec"),
58047 link_name = "llvm.aarch64.neon.frsqrte.v4f16"
58048 )]
58049 fn _vrsqrte_f16(a: float16x4_t) -> float16x4_t;
58050 }
58051 unsafe { _vrsqrte_f16(a) }
58052}
58053#[doc = "Reciprocal square-root estimate."]
58054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_f16)"]
58055#[inline(always)]
58056#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58057#[target_feature(enable = "neon,fp16")]
58058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58059#[cfg_attr(
58060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58061 assert_instr(frsqrte)
58062)]
58063#[cfg_attr(
58064 not(target_arch = "arm"),
58065 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
58066)]
58067#[cfg_attr(
58068 target_arch = "arm",
58069 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58070)]
58071#[cfg(not(target_arch = "arm64ec"))]
58072pub fn vrsqrteq_f16(a: float16x8_t) -> float16x8_t {
58073 unsafe extern "unadjusted" {
58074 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v8f16")]
58075 #[cfg_attr(
58076 any(target_arch = "aarch64", target_arch = "arm64ec"),
58077 link_name = "llvm.aarch64.neon.frsqrte.v8f16"
58078 )]
58079 fn _vrsqrteq_f16(a: float16x8_t) -> float16x8_t;
58080 }
58081 unsafe { _vrsqrteq_f16(a) }
58082}
58083#[doc = "Reciprocal square-root estimate."]
58084#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_f32)"]
58085#[inline(always)]
58086#[target_feature(enable = "neon")]
58087#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58088#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58089#[cfg_attr(
58090 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58091 assert_instr(frsqrte)
58092)]
58093#[cfg_attr(
58094 not(target_arch = "arm"),
58095 stable(feature = "neon_intrinsics", since = "1.59.0")
58096)]
58097#[cfg_attr(
58098 target_arch = "arm",
58099 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58100)]
58101pub fn vrsqrte_f32(a: float32x2_t) -> float32x2_t {
58102 unsafe extern "unadjusted" {
58103 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v2f32")]
58104 #[cfg_attr(
58105 any(target_arch = "aarch64", target_arch = "arm64ec"),
58106 link_name = "llvm.aarch64.neon.frsqrte.v2f32"
58107 )]
58108 fn _vrsqrte_f32(a: float32x2_t) -> float32x2_t;
58109 }
58110 unsafe { _vrsqrte_f32(a) }
58111}
58112#[doc = "Reciprocal square-root estimate."]
58113#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_f32)"]
58114#[inline(always)]
58115#[target_feature(enable = "neon")]
58116#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58117#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58118#[cfg_attr(
58119 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58120 assert_instr(frsqrte)
58121)]
58122#[cfg_attr(
58123 not(target_arch = "arm"),
58124 stable(feature = "neon_intrinsics", since = "1.59.0")
58125)]
58126#[cfg_attr(
58127 target_arch = "arm",
58128 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58129)]
58130pub fn vrsqrteq_f32(a: float32x4_t) -> float32x4_t {
58131 unsafe extern "unadjusted" {
58132 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4f32")]
58133 #[cfg_attr(
58134 any(target_arch = "aarch64", target_arch = "arm64ec"),
58135 link_name = "llvm.aarch64.neon.frsqrte.v4f32"
58136 )]
58137 fn _vrsqrteq_f32(a: float32x4_t) -> float32x4_t;
58138 }
58139 unsafe { _vrsqrteq_f32(a) }
58140}
58141#[doc = "Unsigned reciprocal square root estimate"]
58142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrte_u32)"]
58143#[inline(always)]
58144#[target_feature(enable = "neon")]
58145#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58146#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58147#[cfg_attr(
58148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58149 assert_instr(ursqrte)
58150)]
58151#[cfg_attr(
58152 not(target_arch = "arm"),
58153 stable(feature = "neon_intrinsics", since = "1.59.0")
58154)]
58155#[cfg_attr(
58156 target_arch = "arm",
58157 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58158)]
58159pub fn vrsqrte_u32(a: uint32x2_t) -> uint32x2_t {
58160 unsafe extern "unadjusted" {
58161 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v2i32")]
58162 #[cfg_attr(
58163 any(target_arch = "aarch64", target_arch = "arm64ec"),
58164 link_name = "llvm.aarch64.neon.ursqrte.v2i32"
58165 )]
58166 fn _vrsqrte_u32(a: uint32x2_t) -> uint32x2_t;
58167 }
58168 unsafe { _vrsqrte_u32(a) }
58169}
58170#[doc = "Unsigned reciprocal square root estimate"]
58171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrteq_u32)"]
58172#[inline(always)]
58173#[target_feature(enable = "neon")]
58174#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58175#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrte))]
58176#[cfg_attr(
58177 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58178 assert_instr(ursqrte)
58179)]
58180#[cfg_attr(
58181 not(target_arch = "arm"),
58182 stable(feature = "neon_intrinsics", since = "1.59.0")
58183)]
58184#[cfg_attr(
58185 target_arch = "arm",
58186 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58187)]
58188pub fn vrsqrteq_u32(a: uint32x4_t) -> uint32x4_t {
58189 unsafe extern "unadjusted" {
58190 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrte.v4i32")]
58191 #[cfg_attr(
58192 any(target_arch = "aarch64", target_arch = "arm64ec"),
58193 link_name = "llvm.aarch64.neon.ursqrte.v4i32"
58194 )]
58195 fn _vrsqrteq_u32(a: uint32x4_t) -> uint32x4_t;
58196 }
58197 unsafe { _vrsqrteq_u32(a) }
58198}
58199#[doc = "Floating-point reciprocal square root step"]
58200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrts_f16)"]
58201#[inline(always)]
58202#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58203#[target_feature(enable = "neon,fp16")]
58204#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
58205#[cfg_attr(
58206 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58207 assert_instr(frsqrts)
58208)]
58209#[cfg_attr(
58210 not(target_arch = "arm"),
58211 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
58212)]
58213#[cfg_attr(
58214 target_arch = "arm",
58215 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58216)]
58217#[cfg(not(target_arch = "arm64ec"))]
58218pub fn vrsqrts_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
58219 unsafe extern "unadjusted" {
58220 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v4f16")]
58221 #[cfg_attr(
58222 any(target_arch = "aarch64", target_arch = "arm64ec"),
58223 link_name = "llvm.aarch64.neon.frsqrts.v4f16"
58224 )]
58225 fn _vrsqrts_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
58226 }
58227 unsafe { _vrsqrts_f16(a, b) }
58228}
58229#[doc = "Floating-point reciprocal square root step"]
58230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrtsq_f16)"]
58231#[inline(always)]
58232#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58233#[target_feature(enable = "neon,fp16")]
58234#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
58235#[cfg_attr(
58236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58237 assert_instr(frsqrts)
58238)]
58239#[cfg_attr(
58240 not(target_arch = "arm"),
58241 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
58242)]
58243#[cfg_attr(
58244 target_arch = "arm",
58245 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58246)]
58247#[cfg(not(target_arch = "arm64ec"))]
58248pub fn vrsqrtsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
58249 unsafe extern "unadjusted" {
58250 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v8f16")]
58251 #[cfg_attr(
58252 any(target_arch = "aarch64", target_arch = "arm64ec"),
58253 link_name = "llvm.aarch64.neon.frsqrts.v8f16"
58254 )]
58255 fn _vrsqrtsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
58256 }
58257 unsafe { _vrsqrtsq_f16(a, b) }
58258}
58259#[doc = "Floating-point reciprocal square root step"]
58260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrts_f32)"]
58261#[inline(always)]
58262#[target_feature(enable = "neon")]
58263#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58264#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
58265#[cfg_attr(
58266 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58267 assert_instr(frsqrts)
58268)]
58269#[cfg_attr(
58270 not(target_arch = "arm"),
58271 stable(feature = "neon_intrinsics", since = "1.59.0")
58272)]
58273#[cfg_attr(
58274 target_arch = "arm",
58275 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58276)]
58277pub fn vrsqrts_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
58278 unsafe extern "unadjusted" {
58279 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v2f32")]
58280 #[cfg_attr(
58281 any(target_arch = "aarch64", target_arch = "arm64ec"),
58282 link_name = "llvm.aarch64.neon.frsqrts.v2f32"
58283 )]
58284 fn _vrsqrts_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
58285 }
58286 unsafe { _vrsqrts_f32(a, b) }
58287}
58288#[doc = "Floating-point reciprocal square root step"]
58289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsqrtsq_f32)"]
58290#[inline(always)]
58291#[target_feature(enable = "neon")]
58292#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58293#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsqrts))]
58294#[cfg_attr(
58295 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58296 assert_instr(frsqrts)
58297)]
58298#[cfg_attr(
58299 not(target_arch = "arm"),
58300 stable(feature = "neon_intrinsics", since = "1.59.0")
58301)]
58302#[cfg_attr(
58303 target_arch = "arm",
58304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58305)]
58306pub fn vrsqrtsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
58307 unsafe extern "unadjusted" {
58308 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsqrts.v4f32")]
58309 #[cfg_attr(
58310 any(target_arch = "aarch64", target_arch = "arm64ec"),
58311 link_name = "llvm.aarch64.neon.frsqrts.v4f32"
58312 )]
58313 fn _vrsqrtsq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
58314 }
58315 unsafe { _vrsqrtsq_f32(a, b) }
58316}
58317#[doc = "Signed rounding shift right and accumulate"]
58318#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s8)"]
58319#[inline(always)]
58320#[target_feature(enable = "neon")]
58321#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58322#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58323#[cfg_attr(
58324 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58325 assert_instr(srsra, N = 2)
58326)]
58327#[rustc_legacy_const_generics(2)]
58328#[cfg_attr(
58329 not(target_arch = "arm"),
58330 stable(feature = "neon_intrinsics", since = "1.59.0")
58331)]
58332#[cfg_attr(
58333 target_arch = "arm",
58334 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58335)]
58336pub fn vrsra_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
58337 static_assert!(N >= 1 && N <= 8);
58338 unsafe { simd_add(a, vrshr_n_s8::<N>(b)) }
58339}
58340#[doc = "Signed rounding shift right and accumulate"]
58341#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s8)"]
58342#[inline(always)]
58343#[target_feature(enable = "neon")]
58344#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58345#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58346#[cfg_attr(
58347 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58348 assert_instr(srsra, N = 2)
58349)]
58350#[rustc_legacy_const_generics(2)]
58351#[cfg_attr(
58352 not(target_arch = "arm"),
58353 stable(feature = "neon_intrinsics", since = "1.59.0")
58354)]
58355#[cfg_attr(
58356 target_arch = "arm",
58357 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58358)]
58359pub fn vrsraq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
58360 static_assert!(N >= 1 && N <= 8);
58361 unsafe { simd_add(a, vrshrq_n_s8::<N>(b)) }
58362}
58363#[doc = "Signed rounding shift right and accumulate"]
58364#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s16)"]
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(vrsra, N = 2))]
58369#[cfg_attr(
58370 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58371 assert_instr(srsra, N = 2)
58372)]
58373#[rustc_legacy_const_generics(2)]
58374#[cfg_attr(
58375 not(target_arch = "arm"),
58376 stable(feature = "neon_intrinsics", since = "1.59.0")
58377)]
58378#[cfg_attr(
58379 target_arch = "arm",
58380 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58381)]
58382pub fn vrsra_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
58383 static_assert!(N >= 1 && N <= 16);
58384 unsafe { simd_add(a, vrshr_n_s16::<N>(b)) }
58385}
58386#[doc = "Signed rounding shift right and accumulate"]
58387#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s16)"]
58388#[inline(always)]
58389#[target_feature(enable = "neon")]
58390#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58391#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58392#[cfg_attr(
58393 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58394 assert_instr(srsra, N = 2)
58395)]
58396#[rustc_legacy_const_generics(2)]
58397#[cfg_attr(
58398 not(target_arch = "arm"),
58399 stable(feature = "neon_intrinsics", since = "1.59.0")
58400)]
58401#[cfg_attr(
58402 target_arch = "arm",
58403 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58404)]
58405pub fn vrsraq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
58406 static_assert!(N >= 1 && N <= 16);
58407 unsafe { simd_add(a, vrshrq_n_s16::<N>(b)) }
58408}
58409#[doc = "Signed rounding shift right and accumulate"]
58410#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s32)"]
58411#[inline(always)]
58412#[target_feature(enable = "neon")]
58413#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58414#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58415#[cfg_attr(
58416 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58417 assert_instr(srsra, N = 2)
58418)]
58419#[rustc_legacy_const_generics(2)]
58420#[cfg_attr(
58421 not(target_arch = "arm"),
58422 stable(feature = "neon_intrinsics", since = "1.59.0")
58423)]
58424#[cfg_attr(
58425 target_arch = "arm",
58426 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58427)]
58428pub fn vrsra_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
58429 static_assert!(N >= 1 && N <= 32);
58430 unsafe { simd_add(a, vrshr_n_s32::<N>(b)) }
58431}
58432#[doc = "Signed rounding shift right and accumulate"]
58433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s32)"]
58434#[inline(always)]
58435#[target_feature(enable = "neon")]
58436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58437#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58438#[cfg_attr(
58439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58440 assert_instr(srsra, N = 2)
58441)]
58442#[rustc_legacy_const_generics(2)]
58443#[cfg_attr(
58444 not(target_arch = "arm"),
58445 stable(feature = "neon_intrinsics", since = "1.59.0")
58446)]
58447#[cfg_attr(
58448 target_arch = "arm",
58449 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58450)]
58451pub fn vrsraq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
58452 static_assert!(N >= 1 && N <= 32);
58453 unsafe { simd_add(a, vrshrq_n_s32::<N>(b)) }
58454}
58455#[doc = "Signed rounding shift right and accumulate"]
58456#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_s64)"]
58457#[inline(always)]
58458#[target_feature(enable = "neon")]
58459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58460#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58461#[cfg_attr(
58462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58463 assert_instr(srsra, N = 2)
58464)]
58465#[rustc_legacy_const_generics(2)]
58466#[cfg_attr(
58467 not(target_arch = "arm"),
58468 stable(feature = "neon_intrinsics", since = "1.59.0")
58469)]
58470#[cfg_attr(
58471 target_arch = "arm",
58472 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58473)]
58474pub fn vrsra_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
58475 static_assert!(N >= 1 && N <= 64);
58476 unsafe { simd_add(a, vrshr_n_s64::<N>(b)) }
58477}
58478#[doc = "Signed rounding shift right and accumulate"]
58479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_s64)"]
58480#[inline(always)]
58481#[target_feature(enable = "neon")]
58482#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58483#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58484#[cfg_attr(
58485 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58486 assert_instr(srsra, N = 2)
58487)]
58488#[rustc_legacy_const_generics(2)]
58489#[cfg_attr(
58490 not(target_arch = "arm"),
58491 stable(feature = "neon_intrinsics", since = "1.59.0")
58492)]
58493#[cfg_attr(
58494 target_arch = "arm",
58495 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58496)]
58497pub fn vrsraq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
58498 static_assert!(N >= 1 && N <= 64);
58499 unsafe { simd_add(a, vrshrq_n_s64::<N>(b)) }
58500}
58501#[doc = "Unsigned rounding shift right and accumulate"]
58502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u8)"]
58503#[inline(always)]
58504#[target_feature(enable = "neon")]
58505#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58506#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58507#[cfg_attr(
58508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58509 assert_instr(ursra, N = 2)
58510)]
58511#[rustc_legacy_const_generics(2)]
58512#[cfg_attr(
58513 not(target_arch = "arm"),
58514 stable(feature = "neon_intrinsics", since = "1.59.0")
58515)]
58516#[cfg_attr(
58517 target_arch = "arm",
58518 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58519)]
58520pub fn vrsra_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
58521 static_assert!(N >= 1 && N <= 8);
58522 unsafe { simd_add(a, vrshr_n_u8::<N>(b)) }
58523}
58524#[doc = "Unsigned rounding shift right and accumulate"]
58525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u8)"]
58526#[inline(always)]
58527#[target_feature(enable = "neon")]
58528#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58529#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58530#[cfg_attr(
58531 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58532 assert_instr(ursra, N = 2)
58533)]
58534#[rustc_legacy_const_generics(2)]
58535#[cfg_attr(
58536 not(target_arch = "arm"),
58537 stable(feature = "neon_intrinsics", since = "1.59.0")
58538)]
58539#[cfg_attr(
58540 target_arch = "arm",
58541 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58542)]
58543pub fn vrsraq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
58544 static_assert!(N >= 1 && N <= 8);
58545 unsafe { simd_add(a, vrshrq_n_u8::<N>(b)) }
58546}
58547#[doc = "Unsigned rounding shift right and accumulate"]
58548#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u16)"]
58549#[inline(always)]
58550#[target_feature(enable = "neon")]
58551#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58552#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58553#[cfg_attr(
58554 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58555 assert_instr(ursra, N = 2)
58556)]
58557#[rustc_legacy_const_generics(2)]
58558#[cfg_attr(
58559 not(target_arch = "arm"),
58560 stable(feature = "neon_intrinsics", since = "1.59.0")
58561)]
58562#[cfg_attr(
58563 target_arch = "arm",
58564 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58565)]
58566pub fn vrsra_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
58567 static_assert!(N >= 1 && N <= 16);
58568 unsafe { simd_add(a, vrshr_n_u16::<N>(b)) }
58569}
58570#[doc = "Unsigned rounding shift right and accumulate"]
58571#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u16)"]
58572#[inline(always)]
58573#[target_feature(enable = "neon")]
58574#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58575#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58576#[cfg_attr(
58577 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58578 assert_instr(ursra, N = 2)
58579)]
58580#[rustc_legacy_const_generics(2)]
58581#[cfg_attr(
58582 not(target_arch = "arm"),
58583 stable(feature = "neon_intrinsics", since = "1.59.0")
58584)]
58585#[cfg_attr(
58586 target_arch = "arm",
58587 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58588)]
58589pub fn vrsraq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
58590 static_assert!(N >= 1 && N <= 16);
58591 unsafe { simd_add(a, vrshrq_n_u16::<N>(b)) }
58592}
58593#[doc = "Unsigned rounding shift right and accumulate"]
58594#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u32)"]
58595#[inline(always)]
58596#[target_feature(enable = "neon")]
58597#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58598#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58599#[cfg_attr(
58600 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58601 assert_instr(ursra, N = 2)
58602)]
58603#[rustc_legacy_const_generics(2)]
58604#[cfg_attr(
58605 not(target_arch = "arm"),
58606 stable(feature = "neon_intrinsics", since = "1.59.0")
58607)]
58608#[cfg_attr(
58609 target_arch = "arm",
58610 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58611)]
58612pub fn vrsra_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
58613 static_assert!(N >= 1 && N <= 32);
58614 unsafe { simd_add(a, vrshr_n_u32::<N>(b)) }
58615}
58616#[doc = "Unsigned rounding shift right and accumulate"]
58617#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u32)"]
58618#[inline(always)]
58619#[target_feature(enable = "neon")]
58620#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58621#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58622#[cfg_attr(
58623 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58624 assert_instr(ursra, N = 2)
58625)]
58626#[rustc_legacy_const_generics(2)]
58627#[cfg_attr(
58628 not(target_arch = "arm"),
58629 stable(feature = "neon_intrinsics", since = "1.59.0")
58630)]
58631#[cfg_attr(
58632 target_arch = "arm",
58633 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58634)]
58635pub fn vrsraq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
58636 static_assert!(N >= 1 && N <= 32);
58637 unsafe { simd_add(a, vrshrq_n_u32::<N>(b)) }
58638}
58639#[doc = "Unsigned rounding shift right and accumulate"]
58640#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsra_n_u64)"]
58641#[inline(always)]
58642#[target_feature(enable = "neon")]
58643#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58644#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58645#[cfg_attr(
58646 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58647 assert_instr(ursra, N = 2)
58648)]
58649#[rustc_legacy_const_generics(2)]
58650#[cfg_attr(
58651 not(target_arch = "arm"),
58652 stable(feature = "neon_intrinsics", since = "1.59.0")
58653)]
58654#[cfg_attr(
58655 target_arch = "arm",
58656 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58657)]
58658pub fn vrsra_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
58659 static_assert!(N >= 1 && N <= 64);
58660 unsafe { simd_add(a, vrshr_n_u64::<N>(b)) }
58661}
58662#[doc = "Unsigned rounding shift right and accumulate"]
58663#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsraq_n_u64)"]
58664#[inline(always)]
58665#[target_feature(enable = "neon")]
58666#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58667#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsra, N = 2))]
58668#[cfg_attr(
58669 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58670 assert_instr(ursra, N = 2)
58671)]
58672#[rustc_legacy_const_generics(2)]
58673#[cfg_attr(
58674 not(target_arch = "arm"),
58675 stable(feature = "neon_intrinsics", since = "1.59.0")
58676)]
58677#[cfg_attr(
58678 target_arch = "arm",
58679 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58680)]
58681pub fn vrsraq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
58682 static_assert!(N >= 1 && N <= 64);
58683 unsafe { simd_add(a, vrshrq_n_u64::<N>(b)) }
58684}
58685#[doc = "Rounding subtract returning high narrow"]
58686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s16)"]
58687#[inline(always)]
58688#[target_feature(enable = "neon")]
58689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58690#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58691#[cfg_attr(
58692 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58693 assert_instr(rsubhn)
58694)]
58695#[cfg_attr(
58696 not(target_arch = "arm"),
58697 stable(feature = "neon_intrinsics", since = "1.59.0")
58698)]
58699#[cfg_attr(
58700 target_arch = "arm",
58701 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58702)]
58703pub fn vrsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
58704 unsafe extern "unadjusted" {
58705 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v8i8")]
58706 #[cfg_attr(
58707 any(target_arch = "aarch64", target_arch = "arm64ec"),
58708 link_name = "llvm.aarch64.neon.rsubhn.v8i8"
58709 )]
58710 fn _vrsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t;
58711 }
58712 unsafe { _vrsubhn_s16(a, b) }
58713}
58714#[doc = "Rounding subtract returning high narrow"]
58715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s32)"]
58716#[inline(always)]
58717#[target_feature(enable = "neon")]
58718#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58719#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58720#[cfg_attr(
58721 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58722 assert_instr(rsubhn)
58723)]
58724#[cfg_attr(
58725 not(target_arch = "arm"),
58726 stable(feature = "neon_intrinsics", since = "1.59.0")
58727)]
58728#[cfg_attr(
58729 target_arch = "arm",
58730 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58731)]
58732pub fn vrsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
58733 unsafe extern "unadjusted" {
58734 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v4i16")]
58735 #[cfg_attr(
58736 any(target_arch = "aarch64", target_arch = "arm64ec"),
58737 link_name = "llvm.aarch64.neon.rsubhn.v4i16"
58738 )]
58739 fn _vrsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t;
58740 }
58741 unsafe { _vrsubhn_s32(a, b) }
58742}
58743#[doc = "Rounding subtract returning high narrow"]
58744#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_s64)"]
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(vrsubhn))]
58749#[cfg_attr(
58750 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58751 assert_instr(rsubhn)
58752)]
58753#[cfg_attr(
58754 not(target_arch = "arm"),
58755 stable(feature = "neon_intrinsics", since = "1.59.0")
58756)]
58757#[cfg_attr(
58758 target_arch = "arm",
58759 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58760)]
58761pub fn vrsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
58762 unsafe extern "unadjusted" {
58763 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrsubhn.v2i32")]
58764 #[cfg_attr(
58765 any(target_arch = "aarch64", target_arch = "arm64ec"),
58766 link_name = "llvm.aarch64.neon.rsubhn.v2i32"
58767 )]
58768 fn _vrsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t;
58769 }
58770 unsafe { _vrsubhn_s64(a, b) }
58771}
58772#[doc = "Rounding subtract returning high narrow"]
58773#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u16)"]
58774#[inline(always)]
58775#[cfg(target_endian = "little")]
58776#[target_feature(enable = "neon")]
58777#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58778#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58779#[cfg_attr(
58780 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58781 assert_instr(rsubhn)
58782)]
58783#[cfg_attr(
58784 not(target_arch = "arm"),
58785 stable(feature = "neon_intrinsics", since = "1.59.0")
58786)]
58787#[cfg_attr(
58788 target_arch = "arm",
58789 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58790)]
58791pub fn vrsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
58792 unsafe { transmute(vrsubhn_s16(transmute(a), transmute(b))) }
58793}
58794#[doc = "Rounding subtract returning high narrow"]
58795#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u16)"]
58796#[inline(always)]
58797#[cfg(target_endian = "big")]
58798#[target_feature(enable = "neon")]
58799#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58800#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58801#[cfg_attr(
58802 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58803 assert_instr(rsubhn)
58804)]
58805#[cfg_attr(
58806 not(target_arch = "arm"),
58807 stable(feature = "neon_intrinsics", since = "1.59.0")
58808)]
58809#[cfg_attr(
58810 target_arch = "arm",
58811 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58812)]
58813pub fn vrsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
58814 let a: uint16x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
58815 let b: uint16x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
58816 unsafe {
58817 let ret_val: uint8x8_t = transmute(vrsubhn_s16(transmute(a), transmute(b)));
58818 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
58819 }
58820}
58821#[doc = "Rounding subtract returning high narrow"]
58822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u32)"]
58823#[inline(always)]
58824#[cfg(target_endian = "little")]
58825#[target_feature(enable = "neon")]
58826#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58827#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58828#[cfg_attr(
58829 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58830 assert_instr(rsubhn)
58831)]
58832#[cfg_attr(
58833 not(target_arch = "arm"),
58834 stable(feature = "neon_intrinsics", since = "1.59.0")
58835)]
58836#[cfg_attr(
58837 target_arch = "arm",
58838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58839)]
58840pub fn vrsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
58841 unsafe { transmute(vrsubhn_s32(transmute(a), transmute(b))) }
58842}
58843#[doc = "Rounding subtract returning high narrow"]
58844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u32)"]
58845#[inline(always)]
58846#[cfg(target_endian = "big")]
58847#[target_feature(enable = "neon")]
58848#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58849#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58850#[cfg_attr(
58851 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58852 assert_instr(rsubhn)
58853)]
58854#[cfg_attr(
58855 not(target_arch = "arm"),
58856 stable(feature = "neon_intrinsics", since = "1.59.0")
58857)]
58858#[cfg_attr(
58859 target_arch = "arm",
58860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58861)]
58862pub fn vrsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
58863 let a: uint32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
58864 let b: uint32x4_t = unsafe { simd_shuffle!(b, b, [3, 2, 1, 0]) };
58865 unsafe {
58866 let ret_val: uint16x4_t = transmute(vrsubhn_s32(transmute(a), transmute(b)));
58867 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
58868 }
58869}
58870#[doc = "Rounding subtract returning high narrow"]
58871#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u64)"]
58872#[inline(always)]
58873#[cfg(target_endian = "little")]
58874#[target_feature(enable = "neon")]
58875#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58876#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58877#[cfg_attr(
58878 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58879 assert_instr(rsubhn)
58880)]
58881#[cfg_attr(
58882 not(target_arch = "arm"),
58883 stable(feature = "neon_intrinsics", since = "1.59.0")
58884)]
58885#[cfg_attr(
58886 target_arch = "arm",
58887 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58888)]
58889pub fn vrsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
58890 unsafe { transmute(vrsubhn_s64(transmute(a), transmute(b))) }
58891}
58892#[doc = "Rounding subtract returning high narrow"]
58893#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrsubhn_u64)"]
58894#[inline(always)]
58895#[cfg(target_endian = "big")]
58896#[target_feature(enable = "neon")]
58897#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58898#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vrsubhn))]
58899#[cfg_attr(
58900 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58901 assert_instr(rsubhn)
58902)]
58903#[cfg_attr(
58904 not(target_arch = "arm"),
58905 stable(feature = "neon_intrinsics", since = "1.59.0")
58906)]
58907#[cfg_attr(
58908 target_arch = "arm",
58909 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58910)]
58911pub fn vrsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
58912 let a: uint64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
58913 let b: uint64x2_t = unsafe { simd_shuffle!(b, b, [1, 0]) };
58914 unsafe {
58915 let ret_val: uint32x2_t = transmute(vrsubhn_s64(transmute(a), transmute(b)));
58916 simd_shuffle!(ret_val, ret_val, [1, 0])
58917 }
58918}
58919#[doc = "Insert vector element from another vector element"]
58920#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_f16)"]
58921#[inline(always)]
58922#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58923#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
58924#[cfg_attr(
58925 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58926 assert_instr(nop, LANE = 0)
58927)]
58928#[rustc_legacy_const_generics(2)]
58929#[target_feature(enable = "neon,fp16")]
58930#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
58931#[cfg(not(target_arch = "arm64ec"))]
58932pub fn vset_lane_f16<const LANE: i32>(a: f16, b: float16x4_t) -> float16x4_t {
58933 static_assert_uimm_bits!(LANE, 2);
58934 unsafe { simd_insert!(b, LANE as u32, a) }
58935}
58936#[doc = "Insert vector element from another vector element"]
58937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_f16)"]
58938#[inline(always)]
58939#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
58940#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
58941#[cfg_attr(
58942 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58943 assert_instr(nop, LANE = 0)
58944)]
58945#[rustc_legacy_const_generics(2)]
58946#[target_feature(enable = "neon,fp16")]
58947#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
58948#[cfg(not(target_arch = "arm64ec"))]
58949pub fn vsetq_lane_f16<const LANE: i32>(a: f16, b: float16x8_t) -> float16x8_t {
58950 static_assert_uimm_bits!(LANE, 3);
58951 unsafe { simd_insert!(b, LANE as u32, a) }
58952}
58953#[doc = "Insert vector element from another vector element"]
58954#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_f32)"]
58955#[inline(always)]
58956#[target_feature(enable = "neon")]
58957#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58958#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
58959#[cfg_attr(
58960 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58961 assert_instr(nop, LANE = 0)
58962)]
58963#[rustc_legacy_const_generics(2)]
58964#[cfg_attr(
58965 not(target_arch = "arm"),
58966 stable(feature = "neon_intrinsics", since = "1.59.0")
58967)]
58968#[cfg_attr(
58969 target_arch = "arm",
58970 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58971)]
58972pub fn vset_lane_f32<const LANE: i32>(a: f32, b: float32x2_t) -> float32x2_t {
58973 static_assert_uimm_bits!(LANE, 1);
58974 unsafe { simd_insert!(b, LANE as u32, a) }
58975}
58976#[doc = "Insert vector element from another vector element"]
58977#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_f32)"]
58978#[inline(always)]
58979#[target_feature(enable = "neon")]
58980#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
58981#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
58982#[cfg_attr(
58983 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
58984 assert_instr(nop, LANE = 0)
58985)]
58986#[rustc_legacy_const_generics(2)]
58987#[cfg_attr(
58988 not(target_arch = "arm"),
58989 stable(feature = "neon_intrinsics", since = "1.59.0")
58990)]
58991#[cfg_attr(
58992 target_arch = "arm",
58993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
58994)]
58995pub fn vsetq_lane_f32<const LANE: i32>(a: f32, b: float32x4_t) -> float32x4_t {
58996 static_assert_uimm_bits!(LANE, 2);
58997 unsafe { simd_insert!(b, LANE as u32, a) }
58998}
58999#[doc = "Insert vector element from another vector element"]
59000#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s8)"]
59001#[inline(always)]
59002#[target_feature(enable = "neon")]
59003#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59004#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59005#[cfg_attr(
59006 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59007 assert_instr(nop, LANE = 0)
59008)]
59009#[rustc_legacy_const_generics(2)]
59010#[cfg_attr(
59011 not(target_arch = "arm"),
59012 stable(feature = "neon_intrinsics", since = "1.59.0")
59013)]
59014#[cfg_attr(
59015 target_arch = "arm",
59016 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59017)]
59018pub fn vset_lane_s8<const LANE: i32>(a: i8, b: int8x8_t) -> int8x8_t {
59019 static_assert_uimm_bits!(LANE, 3);
59020 unsafe { simd_insert!(b, LANE as u32, a) }
59021}
59022#[doc = "Insert vector element from another vector element"]
59023#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s8)"]
59024#[inline(always)]
59025#[target_feature(enable = "neon")]
59026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
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#[cfg_attr(
59034 not(target_arch = "arm"),
59035 stable(feature = "neon_intrinsics", since = "1.59.0")
59036)]
59037#[cfg_attr(
59038 target_arch = "arm",
59039 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59040)]
59041pub fn vsetq_lane_s8<const LANE: i32>(a: i8, b: int8x16_t) -> int8x16_t {
59042 static_assert_uimm_bits!(LANE, 4);
59043 unsafe { simd_insert!(b, LANE as u32, a) }
59044}
59045#[doc = "Insert vector element from another vector element"]
59046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s16)"]
59047#[inline(always)]
59048#[target_feature(enable = "neon")]
59049#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59050#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59051#[cfg_attr(
59052 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59053 assert_instr(nop, LANE = 0)
59054)]
59055#[rustc_legacy_const_generics(2)]
59056#[cfg_attr(
59057 not(target_arch = "arm"),
59058 stable(feature = "neon_intrinsics", since = "1.59.0")
59059)]
59060#[cfg_attr(
59061 target_arch = "arm",
59062 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59063)]
59064pub fn vset_lane_s16<const LANE: i32>(a: i16, b: int16x4_t) -> int16x4_t {
59065 static_assert_uimm_bits!(LANE, 2);
59066 unsafe { simd_insert!(b, LANE as u32, a) }
59067}
59068#[doc = "Insert vector element from another vector element"]
59069#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s16)"]
59070#[inline(always)]
59071#[target_feature(enable = "neon")]
59072#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59073#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59074#[cfg_attr(
59075 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59076 assert_instr(nop, LANE = 0)
59077)]
59078#[rustc_legacy_const_generics(2)]
59079#[cfg_attr(
59080 not(target_arch = "arm"),
59081 stable(feature = "neon_intrinsics", since = "1.59.0")
59082)]
59083#[cfg_attr(
59084 target_arch = "arm",
59085 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59086)]
59087pub fn vsetq_lane_s16<const LANE: i32>(a: i16, b: int16x8_t) -> int16x8_t {
59088 static_assert_uimm_bits!(LANE, 3);
59089 unsafe { simd_insert!(b, LANE as u32, a) }
59090}
59091#[doc = "Insert vector element from another vector element"]
59092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s32)"]
59093#[inline(always)]
59094#[target_feature(enable = "neon")]
59095#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59096#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59097#[cfg_attr(
59098 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59099 assert_instr(nop, LANE = 0)
59100)]
59101#[rustc_legacy_const_generics(2)]
59102#[cfg_attr(
59103 not(target_arch = "arm"),
59104 stable(feature = "neon_intrinsics", since = "1.59.0")
59105)]
59106#[cfg_attr(
59107 target_arch = "arm",
59108 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59109)]
59110pub fn vset_lane_s32<const LANE: i32>(a: i32, b: int32x2_t) -> int32x2_t {
59111 static_assert_uimm_bits!(LANE, 1);
59112 unsafe { simd_insert!(b, LANE as u32, a) }
59113}
59114#[doc = "Insert vector element from another vector element"]
59115#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s32)"]
59116#[inline(always)]
59117#[target_feature(enable = "neon")]
59118#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59119#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59120#[cfg_attr(
59121 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59122 assert_instr(nop, LANE = 0)
59123)]
59124#[rustc_legacy_const_generics(2)]
59125#[cfg_attr(
59126 not(target_arch = "arm"),
59127 stable(feature = "neon_intrinsics", since = "1.59.0")
59128)]
59129#[cfg_attr(
59130 target_arch = "arm",
59131 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59132)]
59133pub fn vsetq_lane_s32<const LANE: i32>(a: i32, b: int32x4_t) -> int32x4_t {
59134 static_assert_uimm_bits!(LANE, 2);
59135 unsafe { simd_insert!(b, LANE as u32, a) }
59136}
59137#[doc = "Insert vector element from another vector element"]
59138#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_s64)"]
59139#[inline(always)]
59140#[target_feature(enable = "neon")]
59141#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59142#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59143#[cfg_attr(
59144 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59145 assert_instr(nop, LANE = 0)
59146)]
59147#[rustc_legacy_const_generics(2)]
59148#[cfg_attr(
59149 not(target_arch = "arm"),
59150 stable(feature = "neon_intrinsics", since = "1.59.0")
59151)]
59152#[cfg_attr(
59153 target_arch = "arm",
59154 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59155)]
59156pub fn vsetq_lane_s64<const LANE: i32>(a: i64, b: int64x2_t) -> int64x2_t {
59157 static_assert_uimm_bits!(LANE, 1);
59158 unsafe { simd_insert!(b, LANE as u32, a) }
59159}
59160#[doc = "Insert vector element from another vector element"]
59161#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u8)"]
59162#[inline(always)]
59163#[target_feature(enable = "neon")]
59164#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59165#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59166#[cfg_attr(
59167 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59168 assert_instr(nop, LANE = 0)
59169)]
59170#[rustc_legacy_const_generics(2)]
59171#[cfg_attr(
59172 not(target_arch = "arm"),
59173 stable(feature = "neon_intrinsics", since = "1.59.0")
59174)]
59175#[cfg_attr(
59176 target_arch = "arm",
59177 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59178)]
59179pub fn vset_lane_u8<const LANE: i32>(a: u8, b: uint8x8_t) -> uint8x8_t {
59180 static_assert_uimm_bits!(LANE, 3);
59181 unsafe { simd_insert!(b, LANE as u32, a) }
59182}
59183#[doc = "Insert vector element from another vector element"]
59184#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u8)"]
59185#[inline(always)]
59186#[target_feature(enable = "neon")]
59187#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59188#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59189#[cfg_attr(
59190 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59191 assert_instr(nop, LANE = 0)
59192)]
59193#[rustc_legacy_const_generics(2)]
59194#[cfg_attr(
59195 not(target_arch = "arm"),
59196 stable(feature = "neon_intrinsics", since = "1.59.0")
59197)]
59198#[cfg_attr(
59199 target_arch = "arm",
59200 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59201)]
59202pub fn vsetq_lane_u8<const LANE: i32>(a: u8, b: uint8x16_t) -> uint8x16_t {
59203 static_assert_uimm_bits!(LANE, 4);
59204 unsafe { simd_insert!(b, LANE as u32, a) }
59205}
59206#[doc = "Insert vector element from another vector element"]
59207#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u16)"]
59208#[inline(always)]
59209#[target_feature(enable = "neon")]
59210#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59211#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59212#[cfg_attr(
59213 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59214 assert_instr(nop, LANE = 0)
59215)]
59216#[rustc_legacy_const_generics(2)]
59217#[cfg_attr(
59218 not(target_arch = "arm"),
59219 stable(feature = "neon_intrinsics", since = "1.59.0")
59220)]
59221#[cfg_attr(
59222 target_arch = "arm",
59223 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59224)]
59225pub fn vset_lane_u16<const LANE: i32>(a: u16, b: uint16x4_t) -> uint16x4_t {
59226 static_assert_uimm_bits!(LANE, 2);
59227 unsafe { simd_insert!(b, LANE as u32, a) }
59228}
59229#[doc = "Insert vector element from another vector element"]
59230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u16)"]
59231#[inline(always)]
59232#[target_feature(enable = "neon")]
59233#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59234#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59235#[cfg_attr(
59236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59237 assert_instr(nop, LANE = 0)
59238)]
59239#[rustc_legacy_const_generics(2)]
59240#[cfg_attr(
59241 not(target_arch = "arm"),
59242 stable(feature = "neon_intrinsics", since = "1.59.0")
59243)]
59244#[cfg_attr(
59245 target_arch = "arm",
59246 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59247)]
59248pub fn vsetq_lane_u16<const LANE: i32>(a: u16, b: uint16x8_t) -> uint16x8_t {
59249 static_assert_uimm_bits!(LANE, 3);
59250 unsafe { simd_insert!(b, LANE as u32, a) }
59251}
59252#[doc = "Insert vector element from another vector element"]
59253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u32)"]
59254#[inline(always)]
59255#[target_feature(enable = "neon")]
59256#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59257#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59258#[cfg_attr(
59259 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59260 assert_instr(nop, LANE = 0)
59261)]
59262#[rustc_legacy_const_generics(2)]
59263#[cfg_attr(
59264 not(target_arch = "arm"),
59265 stable(feature = "neon_intrinsics", since = "1.59.0")
59266)]
59267#[cfg_attr(
59268 target_arch = "arm",
59269 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59270)]
59271pub fn vset_lane_u32<const LANE: i32>(a: u32, b: uint32x2_t) -> uint32x2_t {
59272 static_assert_uimm_bits!(LANE, 1);
59273 unsafe { simd_insert!(b, LANE as u32, a) }
59274}
59275#[doc = "Insert vector element from another vector element"]
59276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u32)"]
59277#[inline(always)]
59278#[target_feature(enable = "neon")]
59279#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59280#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59281#[cfg_attr(
59282 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59283 assert_instr(nop, LANE = 0)
59284)]
59285#[rustc_legacy_const_generics(2)]
59286#[cfg_attr(
59287 not(target_arch = "arm"),
59288 stable(feature = "neon_intrinsics", since = "1.59.0")
59289)]
59290#[cfg_attr(
59291 target_arch = "arm",
59292 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59293)]
59294pub fn vsetq_lane_u32<const LANE: i32>(a: u32, b: uint32x4_t) -> uint32x4_t {
59295 static_assert_uimm_bits!(LANE, 2);
59296 unsafe { simd_insert!(b, LANE as u32, a) }
59297}
59298#[doc = "Insert vector element from another vector element"]
59299#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_u64)"]
59300#[inline(always)]
59301#[target_feature(enable = "neon")]
59302#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59303#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59304#[cfg_attr(
59305 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59306 assert_instr(nop, LANE = 0)
59307)]
59308#[rustc_legacy_const_generics(2)]
59309#[cfg_attr(
59310 not(target_arch = "arm"),
59311 stable(feature = "neon_intrinsics", since = "1.59.0")
59312)]
59313#[cfg_attr(
59314 target_arch = "arm",
59315 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59316)]
59317pub fn vsetq_lane_u64<const LANE: i32>(a: u64, b: uint64x2_t) -> uint64x2_t {
59318 static_assert_uimm_bits!(LANE, 1);
59319 unsafe { simd_insert!(b, LANE as u32, a) }
59320}
59321#[doc = "Insert vector element from another vector element"]
59322#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p8)"]
59323#[inline(always)]
59324#[target_feature(enable = "neon")]
59325#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59326#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59327#[cfg_attr(
59328 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59329 assert_instr(nop, LANE = 0)
59330)]
59331#[rustc_legacy_const_generics(2)]
59332#[cfg_attr(
59333 not(target_arch = "arm"),
59334 stable(feature = "neon_intrinsics", since = "1.59.0")
59335)]
59336#[cfg_attr(
59337 target_arch = "arm",
59338 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59339)]
59340pub fn vset_lane_p8<const LANE: i32>(a: p8, b: poly8x8_t) -> poly8x8_t {
59341 static_assert_uimm_bits!(LANE, 3);
59342 unsafe { simd_insert!(b, LANE as u32, a) }
59343}
59344#[doc = "Insert vector element from another vector element"]
59345#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p8)"]
59346#[inline(always)]
59347#[target_feature(enable = "neon")]
59348#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59349#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59350#[cfg_attr(
59351 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59352 assert_instr(nop, LANE = 0)
59353)]
59354#[rustc_legacy_const_generics(2)]
59355#[cfg_attr(
59356 not(target_arch = "arm"),
59357 stable(feature = "neon_intrinsics", since = "1.59.0")
59358)]
59359#[cfg_attr(
59360 target_arch = "arm",
59361 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59362)]
59363pub fn vsetq_lane_p8<const LANE: i32>(a: p8, b: poly8x16_t) -> poly8x16_t {
59364 static_assert_uimm_bits!(LANE, 4);
59365 unsafe { simd_insert!(b, LANE as u32, a) }
59366}
59367#[doc = "Insert vector element from another vector element"]
59368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p16)"]
59369#[inline(always)]
59370#[target_feature(enable = "neon")]
59371#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59372#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59373#[cfg_attr(
59374 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59375 assert_instr(nop, LANE = 0)
59376)]
59377#[rustc_legacy_const_generics(2)]
59378#[cfg_attr(
59379 not(target_arch = "arm"),
59380 stable(feature = "neon_intrinsics", since = "1.59.0")
59381)]
59382#[cfg_attr(
59383 target_arch = "arm",
59384 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59385)]
59386pub fn vset_lane_p16<const LANE: i32>(a: p16, b: poly16x4_t) -> poly16x4_t {
59387 static_assert_uimm_bits!(LANE, 2);
59388 unsafe { simd_insert!(b, LANE as u32, a) }
59389}
59390#[doc = "Insert vector element from another vector element"]
59391#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p16)"]
59392#[inline(always)]
59393#[target_feature(enable = "neon")]
59394#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59395#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59396#[cfg_attr(
59397 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59398 assert_instr(nop, LANE = 0)
59399)]
59400#[rustc_legacy_const_generics(2)]
59401#[cfg_attr(
59402 not(target_arch = "arm"),
59403 stable(feature = "neon_intrinsics", since = "1.59.0")
59404)]
59405#[cfg_attr(
59406 target_arch = "arm",
59407 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59408)]
59409pub fn vsetq_lane_p16<const LANE: i32>(a: p16, b: poly16x8_t) -> poly16x8_t {
59410 static_assert_uimm_bits!(LANE, 3);
59411 unsafe { simd_insert!(b, LANE as u32, a) }
59412}
59413#[doc = "Insert vector element from another vector element"]
59414#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_p64)"]
59415#[inline(always)]
59416#[target_feature(enable = "neon,aes")]
59417#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59418#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59419#[cfg_attr(
59420 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59421 assert_instr(nop, LANE = 0)
59422)]
59423#[rustc_legacy_const_generics(2)]
59424#[cfg_attr(
59425 not(target_arch = "arm"),
59426 stable(feature = "neon_intrinsics", since = "1.59.0")
59427)]
59428#[cfg_attr(
59429 target_arch = "arm",
59430 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59431)]
59432pub fn vset_lane_p64<const LANE: i32>(a: p64, b: poly64x1_t) -> poly64x1_t {
59433 static_assert!(LANE == 0);
59434 unsafe { simd_insert!(b, LANE as u32, a) }
59435}
59436#[doc = "Insert vector element from another vector element"]
59437#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_s64)"]
59438#[inline(always)]
59439#[target_feature(enable = "neon")]
59440#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59441#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59442#[cfg_attr(
59443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59444 assert_instr(nop, LANE = 0)
59445)]
59446#[rustc_legacy_const_generics(2)]
59447#[cfg_attr(
59448 not(target_arch = "arm"),
59449 stable(feature = "neon_intrinsics", since = "1.59.0")
59450)]
59451#[cfg_attr(
59452 target_arch = "arm",
59453 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59454)]
59455pub fn vset_lane_s64<const LANE: i32>(a: i64, b: int64x1_t) -> int64x1_t {
59456 static_assert!(LANE == 0);
59457 unsafe { simd_insert!(b, LANE as u32, a) }
59458}
59459#[doc = "Insert vector element from another vector element"]
59460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vset_lane_u64)"]
59461#[inline(always)]
59462#[target_feature(enable = "neon")]
59463#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59464#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59465#[cfg_attr(
59466 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59467 assert_instr(nop, LANE = 0)
59468)]
59469#[rustc_legacy_const_generics(2)]
59470#[cfg_attr(
59471 not(target_arch = "arm"),
59472 stable(feature = "neon_intrinsics", since = "1.59.0")
59473)]
59474#[cfg_attr(
59475 target_arch = "arm",
59476 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59477)]
59478pub fn vset_lane_u64<const LANE: i32>(a: u64, b: uint64x1_t) -> uint64x1_t {
59479 static_assert!(LANE == 0);
59480 unsafe { simd_insert!(b, LANE as u32, a) }
59481}
59482#[doc = "Insert vector element from another vector element"]
59483#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsetq_lane_p64)"]
59484#[inline(always)]
59485#[target_feature(enable = "neon,aes")]
59486#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59487#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
59488#[cfg_attr(
59489 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59490 assert_instr(nop, LANE = 0)
59491)]
59492#[rustc_legacy_const_generics(2)]
59493#[cfg_attr(
59494 not(target_arch = "arm"),
59495 stable(feature = "neon_intrinsics", since = "1.59.0")
59496)]
59497#[cfg_attr(
59498 target_arch = "arm",
59499 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59500)]
59501pub fn vsetq_lane_p64<const LANE: i32>(a: p64, b: poly64x2_t) -> poly64x2_t {
59502 static_assert_uimm_bits!(LANE, 1);
59503 unsafe { simd_insert!(b, LANE as u32, a) }
59504}
59505#[doc = "SHA1 hash update accelerator, choose."]
59506#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1cq_u32)"]
59507#[inline(always)]
59508#[target_feature(enable = "sha2")]
59509#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59510#[cfg_attr(test, assert_instr(sha1c))]
59511#[cfg_attr(
59512 target_arch = "arm",
59513 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59514)]
59515#[cfg_attr(
59516 not(target_arch = "arm"),
59517 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59518)]
59519pub fn vsha1cq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
59520 unsafe extern "unadjusted" {
59521 #[cfg_attr(
59522 any(target_arch = "aarch64", target_arch = "arm64ec"),
59523 link_name = "llvm.aarch64.crypto.sha1c"
59524 )]
59525 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1c")]
59526 fn _vsha1cq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
59527 }
59528 unsafe { _vsha1cq_u32(hash_abcd, hash_e, wk) }
59529}
59530#[doc = "SHA1 fixed rotate."]
59531#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1h_u32)"]
59532#[inline(always)]
59533#[target_feature(enable = "sha2")]
59534#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59535#[cfg_attr(test, assert_instr(sha1h))]
59536#[cfg_attr(
59537 target_arch = "arm",
59538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59539)]
59540#[cfg_attr(
59541 not(target_arch = "arm"),
59542 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59543)]
59544pub fn vsha1h_u32(hash_e: u32) -> u32 {
59545 unsafe extern "unadjusted" {
59546 #[cfg_attr(
59547 any(target_arch = "aarch64", target_arch = "arm64ec"),
59548 link_name = "llvm.aarch64.crypto.sha1h"
59549 )]
59550 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1h")]
59551 fn _vsha1h_u32(hash_e: u32) -> u32;
59552 }
59553 unsafe { _vsha1h_u32(hash_e) }
59554}
59555#[doc = "SHA1 hash update accelerator, majority"]
59556#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1mq_u32)"]
59557#[inline(always)]
59558#[target_feature(enable = "sha2")]
59559#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59560#[cfg_attr(test, assert_instr(sha1m))]
59561#[cfg_attr(
59562 target_arch = "arm",
59563 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59564)]
59565#[cfg_attr(
59566 not(target_arch = "arm"),
59567 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59568)]
59569pub fn vsha1mq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
59570 unsafe extern "unadjusted" {
59571 #[cfg_attr(
59572 any(target_arch = "aarch64", target_arch = "arm64ec"),
59573 link_name = "llvm.aarch64.crypto.sha1m"
59574 )]
59575 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1m")]
59576 fn _vsha1mq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
59577 }
59578 unsafe { _vsha1mq_u32(hash_abcd, hash_e, wk) }
59579}
59580#[doc = "SHA1 hash update accelerator, parity"]
59581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1pq_u32)"]
59582#[inline(always)]
59583#[target_feature(enable = "sha2")]
59584#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59585#[cfg_attr(test, assert_instr(sha1p))]
59586#[cfg_attr(
59587 target_arch = "arm",
59588 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59589)]
59590#[cfg_attr(
59591 not(target_arch = "arm"),
59592 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59593)]
59594pub fn vsha1pq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t {
59595 unsafe extern "unadjusted" {
59596 #[cfg_attr(
59597 any(target_arch = "aarch64", target_arch = "arm64ec"),
59598 link_name = "llvm.aarch64.crypto.sha1p"
59599 )]
59600 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1p")]
59601 fn _vsha1pq_u32(hash_abcd: uint32x4_t, hash_e: u32, wk: uint32x4_t) -> uint32x4_t;
59602 }
59603 unsafe { _vsha1pq_u32(hash_abcd, hash_e, wk) }
59604}
59605#[doc = "SHA1 schedule update accelerator, first part."]
59606#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1su0q_u32)"]
59607#[inline(always)]
59608#[target_feature(enable = "sha2")]
59609#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59610#[cfg_attr(test, assert_instr(sha1su0))]
59611#[cfg_attr(
59612 target_arch = "arm",
59613 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59614)]
59615#[cfg_attr(
59616 not(target_arch = "arm"),
59617 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59618)]
59619pub fn vsha1su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t, w8_11: uint32x4_t) -> uint32x4_t {
59620 unsafe extern "unadjusted" {
59621 #[cfg_attr(
59622 any(target_arch = "aarch64", target_arch = "arm64ec"),
59623 link_name = "llvm.aarch64.crypto.sha1su0"
59624 )]
59625 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1su0")]
59626 fn _vsha1su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t, w8_11: uint32x4_t) -> uint32x4_t;
59627 }
59628 unsafe { _vsha1su0q_u32(w0_3, w4_7, w8_11) }
59629}
59630#[doc = "SHA1 schedule update accelerator, second part."]
59631#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha1su1q_u32)"]
59632#[inline(always)]
59633#[target_feature(enable = "sha2")]
59634#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59635#[cfg_attr(test, assert_instr(sha1su1))]
59636#[cfg_attr(
59637 target_arch = "arm",
59638 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59639)]
59640#[cfg_attr(
59641 not(target_arch = "arm"),
59642 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59643)]
59644pub fn vsha1su1q_u32(tw0_3: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t {
59645 unsafe extern "unadjusted" {
59646 #[cfg_attr(
59647 any(target_arch = "aarch64", target_arch = "arm64ec"),
59648 link_name = "llvm.aarch64.crypto.sha1su1"
59649 )]
59650 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha1su1")]
59651 fn _vsha1su1q_u32(tw0_3: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t;
59652 }
59653 unsafe { _vsha1su1q_u32(tw0_3, w12_15) }
59654}
59655#[doc = "SHA1 schedule update accelerator, upper part."]
59656#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256h2q_u32)"]
59657#[inline(always)]
59658#[target_feature(enable = "sha2")]
59659#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59660#[cfg_attr(test, assert_instr(sha256h2))]
59661#[cfg_attr(
59662 target_arch = "arm",
59663 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59664)]
59665#[cfg_attr(
59666 not(target_arch = "arm"),
59667 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59668)]
59669pub fn vsha256h2q_u32(hash_abcd: uint32x4_t, hash_efgh: uint32x4_t, wk: uint32x4_t) -> uint32x4_t {
59670 unsafe extern "unadjusted" {
59671 #[cfg_attr(
59672 any(target_arch = "aarch64", target_arch = "arm64ec"),
59673 link_name = "llvm.aarch64.crypto.sha256h2"
59674 )]
59675 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256h2")]
59676 fn _vsha256h2q_u32(
59677 hash_abcd: uint32x4_t,
59678 hash_efgh: uint32x4_t,
59679 wk: uint32x4_t,
59680 ) -> uint32x4_t;
59681 }
59682 unsafe { _vsha256h2q_u32(hash_abcd, hash_efgh, wk) }
59683}
59684#[doc = "SHA1 schedule update accelerator, first part."]
59685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256hq_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(sha256h))]
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 vsha256hq_u32(hash_abcd: uint32x4_t, hash_efgh: uint32x4_t, 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.sha256h"
59703 )]
59704 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256h")]
59705 fn _vsha256hq_u32(
59706 hash_abcd: uint32x4_t,
59707 hash_efgh: uint32x4_t,
59708 wk: uint32x4_t,
59709 ) -> uint32x4_t;
59710 }
59711 unsafe { _vsha256hq_u32(hash_abcd, hash_efgh, wk) }
59712}
59713#[doc = "SHA256 schedule update accelerator, first part."]
59714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256su0q_u32)"]
59715#[inline(always)]
59716#[target_feature(enable = "sha2")]
59717#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59718#[cfg_attr(test, assert_instr(sha256su0))]
59719#[cfg_attr(
59720 target_arch = "arm",
59721 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59722)]
59723#[cfg_attr(
59724 not(target_arch = "arm"),
59725 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59726)]
59727pub fn vsha256su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t) -> uint32x4_t {
59728 unsafe extern "unadjusted" {
59729 #[cfg_attr(
59730 any(target_arch = "aarch64", target_arch = "arm64ec"),
59731 link_name = "llvm.aarch64.crypto.sha256su0"
59732 )]
59733 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256su0")]
59734 fn _vsha256su0q_u32(w0_3: uint32x4_t, w4_7: uint32x4_t) -> uint32x4_t;
59735 }
59736 unsafe { _vsha256su0q_u32(w0_3, w4_7) }
59737}
59738#[doc = "SHA256 schedule update accelerator, second part."]
59739#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsha256su1q_u32)"]
59740#[inline(always)]
59741#[target_feature(enable = "sha2")]
59742#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
59743#[cfg_attr(test, assert_instr(sha256su1))]
59744#[cfg_attr(
59745 target_arch = "arm",
59746 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
59747)]
59748#[cfg_attr(
59749 not(target_arch = "arm"),
59750 stable(feature = "aarch64_neon_crypto_intrinsics", since = "1.72.0")
59751)]
59752pub fn vsha256su1q_u32(tw0_3: uint32x4_t, w8_11: uint32x4_t, w12_15: uint32x4_t) -> uint32x4_t {
59753 unsafe extern "unadjusted" {
59754 #[cfg_attr(
59755 any(target_arch = "aarch64", target_arch = "arm64ec"),
59756 link_name = "llvm.aarch64.crypto.sha256su1"
59757 )]
59758 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.sha256su1")]
59759 fn _vsha256su1q_u32(tw0_3: uint32x4_t, w8_11: uint32x4_t, w12_15: uint32x4_t)
59760 -> uint32x4_t;
59761 }
59762 unsafe { _vsha256su1q_u32(tw0_3, w8_11, w12_15) }
59763}
59764#[inline(always)]
59765#[target_feature(enable = "neon")]
59766#[cfg(target_arch = "arm")]
59767#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59768#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59769#[rustc_legacy_const_generics(2)]
59770fn vshiftlins_v16i8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
59771 unsafe extern "unadjusted" {
59772 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v16i8")]
59773 fn _vshiftlins_v16i8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t;
59774 }
59775 unsafe { _vshiftlins_v16i8(a, b, const { int8x16_t([N as i8; 16]) }) }
59776}
59777#[inline(always)]
59778#[target_feature(enable = "neon")]
59779#[cfg(target_arch = "arm")]
59780#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59781#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59782#[rustc_legacy_const_generics(2)]
59783fn vshiftlins_v1i64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
59784 unsafe extern "unadjusted" {
59785 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v1i64")]
59786 fn _vshiftlins_v1i64(a: int64x1_t, b: int64x1_t, c: int64x1_t) -> int64x1_t;
59787 }
59788 unsafe { _vshiftlins_v1i64(a, b, const { int64x1_t([N as i64; 1]) }) }
59789}
59790#[inline(always)]
59791#[target_feature(enable = "neon")]
59792#[cfg(target_arch = "arm")]
59793#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59794#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59795#[rustc_legacy_const_generics(2)]
59796fn vshiftlins_v2i32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
59797 unsafe extern "unadjusted" {
59798 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i32")]
59799 fn _vshiftlins_v2i32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t;
59800 }
59801 unsafe { _vshiftlins_v2i32(a, b, const { int32x2_t([N; 2]) }) }
59802}
59803#[inline(always)]
59804#[target_feature(enable = "neon")]
59805#[cfg(target_arch = "arm")]
59806#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59807#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59808#[rustc_legacy_const_generics(2)]
59809fn vshiftlins_v2i64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
59810 unsafe extern "unadjusted" {
59811 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i64")]
59812 fn _vshiftlins_v2i64(a: int64x2_t, b: int64x2_t, c: int64x2_t) -> int64x2_t;
59813 }
59814 unsafe { _vshiftlins_v2i64(a, b, const { int64x2_t([N as i64; 2]) }) }
59815}
59816#[inline(always)]
59817#[target_feature(enable = "neon")]
59818#[cfg(target_arch = "arm")]
59819#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59820#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59821#[rustc_legacy_const_generics(2)]
59822fn vshiftlins_v4i16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
59823 unsafe extern "unadjusted" {
59824 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i16")]
59825 fn _vshiftlins_v4i16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t;
59826 }
59827 unsafe { _vshiftlins_v4i16(a, b, const { int16x4_t([N as i16; 4]) }) }
59828}
59829#[inline(always)]
59830#[target_feature(enable = "neon")]
59831#[cfg(target_arch = "arm")]
59832#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59833#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59834#[rustc_legacy_const_generics(2)]
59835fn vshiftlins_v4i32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
59836 unsafe extern "unadjusted" {
59837 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i32")]
59838 fn _vshiftlins_v4i32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t;
59839 }
59840 unsafe { _vshiftlins_v4i32(a, b, const { int32x4_t([N; 4]) }) }
59841}
59842#[inline(always)]
59843#[target_feature(enable = "neon")]
59844#[cfg(target_arch = "arm")]
59845#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59846#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59847#[rustc_legacy_const_generics(2)]
59848fn vshiftlins_v8i16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
59849 unsafe extern "unadjusted" {
59850 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i16")]
59851 fn _vshiftlins_v8i16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t;
59852 }
59853 unsafe { _vshiftlins_v8i16(a, b, const { int16x8_t([N as i16; 8]) }) }
59854}
59855#[inline(always)]
59856#[target_feature(enable = "neon")]
59857#[cfg(target_arch = "arm")]
59858#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59859#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59860#[rustc_legacy_const_generics(2)]
59861fn vshiftlins_v8i8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
59862 unsafe extern "unadjusted" {
59863 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i8")]
59864 fn _vshiftlins_v8i8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
59865 }
59866 unsafe { _vshiftlins_v8i8(a, b, const { int8x8_t([N as i8; 8]) }) }
59867}
59868#[doc = "Shift Right and Insert (immediate)"]
59869#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v16i8)"]
59870#[inline(always)]
59871#[target_feature(enable = "neon")]
59872#[cfg(target_arch = "arm")]
59873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59874#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59875#[rustc_legacy_const_generics(2)]
59876fn vshiftrins_v16i8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
59877 unsafe extern "unadjusted" {
59878 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v16i8")]
59879 fn _vshiftrins_v16i8(a: int8x16_t, b: int8x16_t, c: int8x16_t) -> int8x16_t;
59880 }
59881 unsafe { _vshiftrins_v16i8(a, b, const { int8x16_t([-N as i8; 16]) }) }
59882}
59883#[doc = "Shift Right and Insert (immediate)"]
59884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v1i64)"]
59885#[inline(always)]
59886#[target_feature(enable = "neon")]
59887#[cfg(target_arch = "arm")]
59888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59889#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59890#[rustc_legacy_const_generics(2)]
59891fn vshiftrins_v1i64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
59892 unsafe extern "unadjusted" {
59893 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v1i64")]
59894 fn _vshiftrins_v1i64(a: int64x1_t, b: int64x1_t, c: int64x1_t) -> int64x1_t;
59895 }
59896 unsafe { _vshiftrins_v1i64(a, b, const { int64x1_t([-N as i64; 1]) }) }
59897}
59898#[doc = "Shift Right and Insert (immediate)"]
59899#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v2i32)"]
59900#[inline(always)]
59901#[target_feature(enable = "neon")]
59902#[cfg(target_arch = "arm")]
59903#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59904#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59905#[rustc_legacy_const_generics(2)]
59906fn vshiftrins_v2i32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
59907 unsafe extern "unadjusted" {
59908 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i32")]
59909 fn _vshiftrins_v2i32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t;
59910 }
59911 unsafe { _vshiftrins_v2i32(a, b, const { int32x2_t([-N; 2]) }) }
59912}
59913#[doc = "Shift Right and Insert (immediate)"]
59914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v2i64)"]
59915#[inline(always)]
59916#[target_feature(enable = "neon")]
59917#[cfg(target_arch = "arm")]
59918#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59919#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59920#[rustc_legacy_const_generics(2)]
59921fn vshiftrins_v2i64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
59922 unsafe extern "unadjusted" {
59923 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v2i64")]
59924 fn _vshiftrins_v2i64(a: int64x2_t, b: int64x2_t, c: int64x2_t) -> int64x2_t;
59925 }
59926 unsafe { _vshiftrins_v2i64(a, b, const { int64x2_t([-N as i64; 2]) }) }
59927}
59928#[doc = "Shift Right and Insert (immediate)"]
59929#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v4i16)"]
59930#[inline(always)]
59931#[target_feature(enable = "neon")]
59932#[cfg(target_arch = "arm")]
59933#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59934#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59935#[rustc_legacy_const_generics(2)]
59936fn vshiftrins_v4i16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
59937 unsafe extern "unadjusted" {
59938 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i16")]
59939 fn _vshiftrins_v4i16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t;
59940 }
59941 unsafe { _vshiftrins_v4i16(a, b, const { int16x4_t([-N as i16; 4]) }) }
59942}
59943#[doc = "Shift Right and Insert (immediate)"]
59944#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v4i32)"]
59945#[inline(always)]
59946#[target_feature(enable = "neon")]
59947#[cfg(target_arch = "arm")]
59948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59949#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59950#[rustc_legacy_const_generics(2)]
59951fn vshiftrins_v4i32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
59952 unsafe extern "unadjusted" {
59953 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v4i32")]
59954 fn _vshiftrins_v4i32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t;
59955 }
59956 unsafe { _vshiftrins_v4i32(a, b, const { int32x4_t([-N; 4]) }) }
59957}
59958#[doc = "Shift Right and Insert (immediate)"]
59959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v8i16)"]
59960#[inline(always)]
59961#[target_feature(enable = "neon")]
59962#[cfg(target_arch = "arm")]
59963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59964#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59965#[rustc_legacy_const_generics(2)]
59966fn vshiftrins_v8i16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
59967 unsafe extern "unadjusted" {
59968 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i16")]
59969 fn _vshiftrins_v8i16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t;
59970 }
59971 unsafe { _vshiftrins_v8i16(a, b, const { int16x8_t([-N as i16; 8]) }) }
59972}
59973#[doc = "Shift Right and Insert (immediate)"]
59974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshiftrins_v8i8)"]
59975#[inline(always)]
59976#[target_feature(enable = "neon")]
59977#[cfg(target_arch = "arm")]
59978#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59979#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
59980#[rustc_legacy_const_generics(2)]
59981fn vshiftrins_v8i8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
59982 unsafe extern "unadjusted" {
59983 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftins.v8i8")]
59984 fn _vshiftrins_v8i8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
59985 }
59986 unsafe { _vshiftrins_v8i8(a, b, const { int8x8_t([-N as i8; 8]) }) }
59987}
59988#[doc = "Shift left"]
59989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s8)"]
59990#[inline(always)]
59991#[target_feature(enable = "neon")]
59992#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
59993#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
59994#[cfg_attr(
59995 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
59996 assert_instr(shl, N = 2)
59997)]
59998#[rustc_legacy_const_generics(1)]
59999#[cfg_attr(
60000 not(target_arch = "arm"),
60001 stable(feature = "neon_intrinsics", since = "1.59.0")
60002)]
60003#[cfg_attr(
60004 target_arch = "arm",
60005 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60006)]
60007pub fn vshl_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
60008 static_assert_uimm_bits!(N, 3);
60009 unsafe { simd_shl(a, vdup_n_s8(N as _)) }
60010}
60011#[doc = "Shift left"]
60012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s8)"]
60013#[inline(always)]
60014#[target_feature(enable = "neon")]
60015#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60016#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60017#[cfg_attr(
60018 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60019 assert_instr(shl, N = 2)
60020)]
60021#[rustc_legacy_const_generics(1)]
60022#[cfg_attr(
60023 not(target_arch = "arm"),
60024 stable(feature = "neon_intrinsics", since = "1.59.0")
60025)]
60026#[cfg_attr(
60027 target_arch = "arm",
60028 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60029)]
60030pub fn vshlq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
60031 static_assert_uimm_bits!(N, 3);
60032 unsafe { simd_shl(a, vdupq_n_s8(N as _)) }
60033}
60034#[doc = "Shift left"]
60035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s16)"]
60036#[inline(always)]
60037#[target_feature(enable = "neon")]
60038#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60039#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60040#[cfg_attr(
60041 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60042 assert_instr(shl, N = 2)
60043)]
60044#[rustc_legacy_const_generics(1)]
60045#[cfg_attr(
60046 not(target_arch = "arm"),
60047 stable(feature = "neon_intrinsics", since = "1.59.0")
60048)]
60049#[cfg_attr(
60050 target_arch = "arm",
60051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60052)]
60053pub fn vshl_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
60054 static_assert_uimm_bits!(N, 4);
60055 unsafe { simd_shl(a, vdup_n_s16(N as _)) }
60056}
60057#[doc = "Shift left"]
60058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s16)"]
60059#[inline(always)]
60060#[target_feature(enable = "neon")]
60061#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60062#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60063#[cfg_attr(
60064 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60065 assert_instr(shl, N = 2)
60066)]
60067#[rustc_legacy_const_generics(1)]
60068#[cfg_attr(
60069 not(target_arch = "arm"),
60070 stable(feature = "neon_intrinsics", since = "1.59.0")
60071)]
60072#[cfg_attr(
60073 target_arch = "arm",
60074 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60075)]
60076pub fn vshlq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
60077 static_assert_uimm_bits!(N, 4);
60078 unsafe { simd_shl(a, vdupq_n_s16(N as _)) }
60079}
60080#[doc = "Shift left"]
60081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s32)"]
60082#[inline(always)]
60083#[target_feature(enable = "neon")]
60084#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60085#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60086#[cfg_attr(
60087 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60088 assert_instr(shl, N = 2)
60089)]
60090#[rustc_legacy_const_generics(1)]
60091#[cfg_attr(
60092 not(target_arch = "arm"),
60093 stable(feature = "neon_intrinsics", since = "1.59.0")
60094)]
60095#[cfg_attr(
60096 target_arch = "arm",
60097 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60098)]
60099pub fn vshl_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
60100 static_assert_uimm_bits!(N, 5);
60101 unsafe { simd_shl(a, vdup_n_s32(N as _)) }
60102}
60103#[doc = "Shift left"]
60104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s32)"]
60105#[inline(always)]
60106#[target_feature(enable = "neon")]
60107#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60108#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60109#[cfg_attr(
60110 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60111 assert_instr(shl, N = 2)
60112)]
60113#[rustc_legacy_const_generics(1)]
60114#[cfg_attr(
60115 not(target_arch = "arm"),
60116 stable(feature = "neon_intrinsics", since = "1.59.0")
60117)]
60118#[cfg_attr(
60119 target_arch = "arm",
60120 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60121)]
60122pub fn vshlq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
60123 static_assert_uimm_bits!(N, 5);
60124 unsafe { simd_shl(a, vdupq_n_s32(N as _)) }
60125}
60126#[doc = "Shift left"]
60127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_s64)"]
60128#[inline(always)]
60129#[target_feature(enable = "neon")]
60130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60132#[cfg_attr(
60133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60134 assert_instr(shl, N = 2)
60135)]
60136#[rustc_legacy_const_generics(1)]
60137#[cfg_attr(
60138 not(target_arch = "arm"),
60139 stable(feature = "neon_intrinsics", since = "1.59.0")
60140)]
60141#[cfg_attr(
60142 target_arch = "arm",
60143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60144)]
60145pub fn vshl_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
60146 static_assert_uimm_bits!(N, 6);
60147 unsafe { simd_shl(a, vdup_n_s64(N as _)) }
60148}
60149#[doc = "Shift left"]
60150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_s64)"]
60151#[inline(always)]
60152#[target_feature(enable = "neon")]
60153#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60154#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60155#[cfg_attr(
60156 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60157 assert_instr(shl, N = 2)
60158)]
60159#[rustc_legacy_const_generics(1)]
60160#[cfg_attr(
60161 not(target_arch = "arm"),
60162 stable(feature = "neon_intrinsics", since = "1.59.0")
60163)]
60164#[cfg_attr(
60165 target_arch = "arm",
60166 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60167)]
60168pub fn vshlq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
60169 static_assert_uimm_bits!(N, 6);
60170 unsafe { simd_shl(a, vdupq_n_s64(N as _)) }
60171}
60172#[doc = "Shift left"]
60173#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u8)"]
60174#[inline(always)]
60175#[target_feature(enable = "neon")]
60176#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60177#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60178#[cfg_attr(
60179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60180 assert_instr(shl, N = 2)
60181)]
60182#[rustc_legacy_const_generics(1)]
60183#[cfg_attr(
60184 not(target_arch = "arm"),
60185 stable(feature = "neon_intrinsics", since = "1.59.0")
60186)]
60187#[cfg_attr(
60188 target_arch = "arm",
60189 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60190)]
60191pub fn vshl_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
60192 static_assert_uimm_bits!(N, 3);
60193 unsafe { simd_shl(a, vdup_n_u8(N as _)) }
60194}
60195#[doc = "Shift left"]
60196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u8)"]
60197#[inline(always)]
60198#[target_feature(enable = "neon")]
60199#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60200#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60201#[cfg_attr(
60202 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60203 assert_instr(shl, N = 2)
60204)]
60205#[rustc_legacy_const_generics(1)]
60206#[cfg_attr(
60207 not(target_arch = "arm"),
60208 stable(feature = "neon_intrinsics", since = "1.59.0")
60209)]
60210#[cfg_attr(
60211 target_arch = "arm",
60212 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60213)]
60214pub fn vshlq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
60215 static_assert_uimm_bits!(N, 3);
60216 unsafe { simd_shl(a, vdupq_n_u8(N as _)) }
60217}
60218#[doc = "Shift left"]
60219#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u16)"]
60220#[inline(always)]
60221#[target_feature(enable = "neon")]
60222#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60223#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60224#[cfg_attr(
60225 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60226 assert_instr(shl, N = 2)
60227)]
60228#[rustc_legacy_const_generics(1)]
60229#[cfg_attr(
60230 not(target_arch = "arm"),
60231 stable(feature = "neon_intrinsics", since = "1.59.0")
60232)]
60233#[cfg_attr(
60234 target_arch = "arm",
60235 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60236)]
60237pub fn vshl_n_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
60238 static_assert_uimm_bits!(N, 4);
60239 unsafe { simd_shl(a, vdup_n_u16(N as _)) }
60240}
60241#[doc = "Shift left"]
60242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u16)"]
60243#[inline(always)]
60244#[target_feature(enable = "neon")]
60245#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60246#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60247#[cfg_attr(
60248 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60249 assert_instr(shl, N = 2)
60250)]
60251#[rustc_legacy_const_generics(1)]
60252#[cfg_attr(
60253 not(target_arch = "arm"),
60254 stable(feature = "neon_intrinsics", since = "1.59.0")
60255)]
60256#[cfg_attr(
60257 target_arch = "arm",
60258 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60259)]
60260pub fn vshlq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
60261 static_assert_uimm_bits!(N, 4);
60262 unsafe { simd_shl(a, vdupq_n_u16(N as _)) }
60263}
60264#[doc = "Shift left"]
60265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u32)"]
60266#[inline(always)]
60267#[target_feature(enable = "neon")]
60268#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60269#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60270#[cfg_attr(
60271 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60272 assert_instr(shl, N = 2)
60273)]
60274#[rustc_legacy_const_generics(1)]
60275#[cfg_attr(
60276 not(target_arch = "arm"),
60277 stable(feature = "neon_intrinsics", since = "1.59.0")
60278)]
60279#[cfg_attr(
60280 target_arch = "arm",
60281 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60282)]
60283pub fn vshl_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
60284 static_assert_uimm_bits!(N, 5);
60285 unsafe { simd_shl(a, vdup_n_u32(N as _)) }
60286}
60287#[doc = "Shift left"]
60288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u32)"]
60289#[inline(always)]
60290#[target_feature(enable = "neon")]
60291#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60292#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60293#[cfg_attr(
60294 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60295 assert_instr(shl, N = 2)
60296)]
60297#[rustc_legacy_const_generics(1)]
60298#[cfg_attr(
60299 not(target_arch = "arm"),
60300 stable(feature = "neon_intrinsics", since = "1.59.0")
60301)]
60302#[cfg_attr(
60303 target_arch = "arm",
60304 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60305)]
60306pub fn vshlq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
60307 static_assert_uimm_bits!(N, 5);
60308 unsafe { simd_shl(a, vdupq_n_u32(N as _)) }
60309}
60310#[doc = "Shift left"]
60311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_n_u64)"]
60312#[inline(always)]
60313#[target_feature(enable = "neon")]
60314#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60315#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60316#[cfg_attr(
60317 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60318 assert_instr(shl, N = 2)
60319)]
60320#[rustc_legacy_const_generics(1)]
60321#[cfg_attr(
60322 not(target_arch = "arm"),
60323 stable(feature = "neon_intrinsics", since = "1.59.0")
60324)]
60325#[cfg_attr(
60326 target_arch = "arm",
60327 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60328)]
60329pub fn vshl_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
60330 static_assert_uimm_bits!(N, 6);
60331 unsafe { simd_shl(a, vdup_n_u64(N as _)) }
60332}
60333#[doc = "Shift left"]
60334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_n_u64)"]
60335#[inline(always)]
60336#[target_feature(enable = "neon")]
60337#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60338#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl, N = 2))]
60339#[cfg_attr(
60340 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60341 assert_instr(shl, N = 2)
60342)]
60343#[rustc_legacy_const_generics(1)]
60344#[cfg_attr(
60345 not(target_arch = "arm"),
60346 stable(feature = "neon_intrinsics", since = "1.59.0")
60347)]
60348#[cfg_attr(
60349 target_arch = "arm",
60350 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60351)]
60352pub fn vshlq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
60353 static_assert_uimm_bits!(N, 6);
60354 unsafe { simd_shl(a, vdupq_n_u64(N as _)) }
60355}
60356#[doc = "Signed Shift left"]
60357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s8)"]
60358#[inline(always)]
60359#[target_feature(enable = "neon")]
60360#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60361#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60362#[cfg_attr(
60363 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60364 assert_instr(sshl)
60365)]
60366#[cfg_attr(
60367 not(target_arch = "arm"),
60368 stable(feature = "neon_intrinsics", since = "1.59.0")
60369)]
60370#[cfg_attr(
60371 target_arch = "arm",
60372 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60373)]
60374pub fn vshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
60375 unsafe extern "unadjusted" {
60376 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v8i8")]
60377 #[cfg_attr(
60378 any(target_arch = "aarch64", target_arch = "arm64ec"),
60379 link_name = "llvm.aarch64.neon.sshl.v8i8"
60380 )]
60381 fn _vshl_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
60382 }
60383 unsafe { _vshl_s8(a, b) }
60384}
60385#[doc = "Signed Shift left"]
60386#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s8)"]
60387#[inline(always)]
60388#[target_feature(enable = "neon")]
60389#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60390#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60391#[cfg_attr(
60392 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60393 assert_instr(sshl)
60394)]
60395#[cfg_attr(
60396 not(target_arch = "arm"),
60397 stable(feature = "neon_intrinsics", since = "1.59.0")
60398)]
60399#[cfg_attr(
60400 target_arch = "arm",
60401 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60402)]
60403pub fn vshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
60404 unsafe extern "unadjusted" {
60405 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v16i8")]
60406 #[cfg_attr(
60407 any(target_arch = "aarch64", target_arch = "arm64ec"),
60408 link_name = "llvm.aarch64.neon.sshl.v16i8"
60409 )]
60410 fn _vshlq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
60411 }
60412 unsafe { _vshlq_s8(a, b) }
60413}
60414#[doc = "Signed Shift left"]
60415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s16)"]
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))]
60420#[cfg_attr(
60421 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60422 assert_instr(sshl)
60423)]
60424#[cfg_attr(
60425 not(target_arch = "arm"),
60426 stable(feature = "neon_intrinsics", since = "1.59.0")
60427)]
60428#[cfg_attr(
60429 target_arch = "arm",
60430 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60431)]
60432pub fn vshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
60433 unsafe extern "unadjusted" {
60434 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v4i16")]
60435 #[cfg_attr(
60436 any(target_arch = "aarch64", target_arch = "arm64ec"),
60437 link_name = "llvm.aarch64.neon.sshl.v4i16"
60438 )]
60439 fn _vshl_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
60440 }
60441 unsafe { _vshl_s16(a, b) }
60442}
60443#[doc = "Signed Shift left"]
60444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s16)"]
60445#[inline(always)]
60446#[target_feature(enable = "neon")]
60447#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60448#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60449#[cfg_attr(
60450 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60451 assert_instr(sshl)
60452)]
60453#[cfg_attr(
60454 not(target_arch = "arm"),
60455 stable(feature = "neon_intrinsics", since = "1.59.0")
60456)]
60457#[cfg_attr(
60458 target_arch = "arm",
60459 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60460)]
60461pub fn vshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
60462 unsafe extern "unadjusted" {
60463 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v8i16")]
60464 #[cfg_attr(
60465 any(target_arch = "aarch64", target_arch = "arm64ec"),
60466 link_name = "llvm.aarch64.neon.sshl.v8i16"
60467 )]
60468 fn _vshlq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
60469 }
60470 unsafe { _vshlq_s16(a, b) }
60471}
60472#[doc = "Signed Shift left"]
60473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s32)"]
60474#[inline(always)]
60475#[target_feature(enable = "neon")]
60476#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60477#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60478#[cfg_attr(
60479 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60480 assert_instr(sshl)
60481)]
60482#[cfg_attr(
60483 not(target_arch = "arm"),
60484 stable(feature = "neon_intrinsics", since = "1.59.0")
60485)]
60486#[cfg_attr(
60487 target_arch = "arm",
60488 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60489)]
60490pub fn vshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
60491 unsafe extern "unadjusted" {
60492 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v2i32")]
60493 #[cfg_attr(
60494 any(target_arch = "aarch64", target_arch = "arm64ec"),
60495 link_name = "llvm.aarch64.neon.sshl.v2i32"
60496 )]
60497 fn _vshl_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
60498 }
60499 unsafe { _vshl_s32(a, b) }
60500}
60501#[doc = "Signed Shift left"]
60502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s32)"]
60503#[inline(always)]
60504#[target_feature(enable = "neon")]
60505#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60506#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60507#[cfg_attr(
60508 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60509 assert_instr(sshl)
60510)]
60511#[cfg_attr(
60512 not(target_arch = "arm"),
60513 stable(feature = "neon_intrinsics", since = "1.59.0")
60514)]
60515#[cfg_attr(
60516 target_arch = "arm",
60517 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60518)]
60519pub fn vshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
60520 unsafe extern "unadjusted" {
60521 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v4i32")]
60522 #[cfg_attr(
60523 any(target_arch = "aarch64", target_arch = "arm64ec"),
60524 link_name = "llvm.aarch64.neon.sshl.v4i32"
60525 )]
60526 fn _vshlq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
60527 }
60528 unsafe { _vshlq_s32(a, b) }
60529}
60530#[doc = "Signed Shift left"]
60531#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_s64)"]
60532#[inline(always)]
60533#[target_feature(enable = "neon")]
60534#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60536#[cfg_attr(
60537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60538 assert_instr(sshl)
60539)]
60540#[cfg_attr(
60541 not(target_arch = "arm"),
60542 stable(feature = "neon_intrinsics", since = "1.59.0")
60543)]
60544#[cfg_attr(
60545 target_arch = "arm",
60546 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60547)]
60548pub fn vshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
60549 unsafe extern "unadjusted" {
60550 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v1i64")]
60551 #[cfg_attr(
60552 any(target_arch = "aarch64", target_arch = "arm64ec"),
60553 link_name = "llvm.aarch64.neon.sshl.v1i64"
60554 )]
60555 fn _vshl_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
60556 }
60557 unsafe { _vshl_s64(a, b) }
60558}
60559#[doc = "Signed Shift left"]
60560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_s64)"]
60561#[inline(always)]
60562#[target_feature(enable = "neon")]
60563#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60564#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60565#[cfg_attr(
60566 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60567 assert_instr(sshl)
60568)]
60569#[cfg_attr(
60570 not(target_arch = "arm"),
60571 stable(feature = "neon_intrinsics", since = "1.59.0")
60572)]
60573#[cfg_attr(
60574 target_arch = "arm",
60575 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60576)]
60577pub fn vshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
60578 unsafe extern "unadjusted" {
60579 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshifts.v2i64")]
60580 #[cfg_attr(
60581 any(target_arch = "aarch64", target_arch = "arm64ec"),
60582 link_name = "llvm.aarch64.neon.sshl.v2i64"
60583 )]
60584 fn _vshlq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
60585 }
60586 unsafe { _vshlq_s64(a, b) }
60587}
60588#[doc = "Unsigned Shift left"]
60589#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u8)"]
60590#[inline(always)]
60591#[target_feature(enable = "neon")]
60592#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60593#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60594#[cfg_attr(
60595 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60596 assert_instr(ushl)
60597)]
60598#[cfg_attr(
60599 not(target_arch = "arm"),
60600 stable(feature = "neon_intrinsics", since = "1.59.0")
60601)]
60602#[cfg_attr(
60603 target_arch = "arm",
60604 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60605)]
60606pub fn vshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t {
60607 unsafe extern "unadjusted" {
60608 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v8i8")]
60609 #[cfg_attr(
60610 any(target_arch = "aarch64", target_arch = "arm64ec"),
60611 link_name = "llvm.aarch64.neon.ushl.v8i8"
60612 )]
60613 fn _vshl_u8(a: uint8x8_t, b: int8x8_t) -> uint8x8_t;
60614 }
60615 unsafe { _vshl_u8(a, b) }
60616}
60617#[doc = "Unsigned Shift left"]
60618#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u8)"]
60619#[inline(always)]
60620#[target_feature(enable = "neon")]
60621#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60622#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60623#[cfg_attr(
60624 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60625 assert_instr(ushl)
60626)]
60627#[cfg_attr(
60628 not(target_arch = "arm"),
60629 stable(feature = "neon_intrinsics", since = "1.59.0")
60630)]
60631#[cfg_attr(
60632 target_arch = "arm",
60633 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60634)]
60635pub fn vshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t {
60636 unsafe extern "unadjusted" {
60637 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v16i8")]
60638 #[cfg_attr(
60639 any(target_arch = "aarch64", target_arch = "arm64ec"),
60640 link_name = "llvm.aarch64.neon.ushl.v16i8"
60641 )]
60642 fn _vshlq_u8(a: uint8x16_t, b: int8x16_t) -> uint8x16_t;
60643 }
60644 unsafe { _vshlq_u8(a, b) }
60645}
60646#[doc = "Unsigned Shift left"]
60647#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u16)"]
60648#[inline(always)]
60649#[target_feature(enable = "neon")]
60650#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60651#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60652#[cfg_attr(
60653 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60654 assert_instr(ushl)
60655)]
60656#[cfg_attr(
60657 not(target_arch = "arm"),
60658 stable(feature = "neon_intrinsics", since = "1.59.0")
60659)]
60660#[cfg_attr(
60661 target_arch = "arm",
60662 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60663)]
60664pub fn vshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t {
60665 unsafe extern "unadjusted" {
60666 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v4i16")]
60667 #[cfg_attr(
60668 any(target_arch = "aarch64", target_arch = "arm64ec"),
60669 link_name = "llvm.aarch64.neon.ushl.v4i16"
60670 )]
60671 fn _vshl_u16(a: uint16x4_t, b: int16x4_t) -> uint16x4_t;
60672 }
60673 unsafe { _vshl_u16(a, b) }
60674}
60675#[doc = "Unsigned Shift left"]
60676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u16)"]
60677#[inline(always)]
60678#[target_feature(enable = "neon")]
60679#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60680#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60681#[cfg_attr(
60682 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60683 assert_instr(ushl)
60684)]
60685#[cfg_attr(
60686 not(target_arch = "arm"),
60687 stable(feature = "neon_intrinsics", since = "1.59.0")
60688)]
60689#[cfg_attr(
60690 target_arch = "arm",
60691 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60692)]
60693pub fn vshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t {
60694 unsafe extern "unadjusted" {
60695 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v8i16")]
60696 #[cfg_attr(
60697 any(target_arch = "aarch64", target_arch = "arm64ec"),
60698 link_name = "llvm.aarch64.neon.ushl.v8i16"
60699 )]
60700 fn _vshlq_u16(a: uint16x8_t, b: int16x8_t) -> uint16x8_t;
60701 }
60702 unsafe { _vshlq_u16(a, b) }
60703}
60704#[doc = "Unsigned Shift left"]
60705#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u32)"]
60706#[inline(always)]
60707#[target_feature(enable = "neon")]
60708#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60709#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60710#[cfg_attr(
60711 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60712 assert_instr(ushl)
60713)]
60714#[cfg_attr(
60715 not(target_arch = "arm"),
60716 stable(feature = "neon_intrinsics", since = "1.59.0")
60717)]
60718#[cfg_attr(
60719 target_arch = "arm",
60720 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60721)]
60722pub fn vshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t {
60723 unsafe extern "unadjusted" {
60724 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v2i32")]
60725 #[cfg_attr(
60726 any(target_arch = "aarch64", target_arch = "arm64ec"),
60727 link_name = "llvm.aarch64.neon.ushl.v2i32"
60728 )]
60729 fn _vshl_u32(a: uint32x2_t, b: int32x2_t) -> uint32x2_t;
60730 }
60731 unsafe { _vshl_u32(a, b) }
60732}
60733#[doc = "Unsigned Shift left"]
60734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u32)"]
60735#[inline(always)]
60736#[target_feature(enable = "neon")]
60737#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60738#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60739#[cfg_attr(
60740 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60741 assert_instr(ushl)
60742)]
60743#[cfg_attr(
60744 not(target_arch = "arm"),
60745 stable(feature = "neon_intrinsics", since = "1.59.0")
60746)]
60747#[cfg_attr(
60748 target_arch = "arm",
60749 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60750)]
60751pub fn vshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t {
60752 unsafe extern "unadjusted" {
60753 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v4i32")]
60754 #[cfg_attr(
60755 any(target_arch = "aarch64", target_arch = "arm64ec"),
60756 link_name = "llvm.aarch64.neon.ushl.v4i32"
60757 )]
60758 fn _vshlq_u32(a: uint32x4_t, b: int32x4_t) -> uint32x4_t;
60759 }
60760 unsafe { _vshlq_u32(a, b) }
60761}
60762#[doc = "Unsigned Shift left"]
60763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshl_u64)"]
60764#[inline(always)]
60765#[target_feature(enable = "neon")]
60766#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60767#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60768#[cfg_attr(
60769 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60770 assert_instr(ushl)
60771)]
60772#[cfg_attr(
60773 not(target_arch = "arm"),
60774 stable(feature = "neon_intrinsics", since = "1.59.0")
60775)]
60776#[cfg_attr(
60777 target_arch = "arm",
60778 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60779)]
60780pub fn vshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t {
60781 unsafe extern "unadjusted" {
60782 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v1i64")]
60783 #[cfg_attr(
60784 any(target_arch = "aarch64", target_arch = "arm64ec"),
60785 link_name = "llvm.aarch64.neon.ushl.v1i64"
60786 )]
60787 fn _vshl_u64(a: uint64x1_t, b: int64x1_t) -> uint64x1_t;
60788 }
60789 unsafe { _vshl_u64(a, b) }
60790}
60791#[doc = "Unsigned Shift left"]
60792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshlq_u64)"]
60793#[inline(always)]
60794#[target_feature(enable = "neon")]
60795#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60796#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vshl))]
60797#[cfg_attr(
60798 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60799 assert_instr(ushl)
60800)]
60801#[cfg_attr(
60802 not(target_arch = "arm"),
60803 stable(feature = "neon_intrinsics", since = "1.59.0")
60804)]
60805#[cfg_attr(
60806 target_arch = "arm",
60807 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60808)]
60809pub fn vshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t {
60810 unsafe extern "unadjusted" {
60811 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vshiftu.v2i64")]
60812 #[cfg_attr(
60813 any(target_arch = "aarch64", target_arch = "arm64ec"),
60814 link_name = "llvm.aarch64.neon.ushl.v2i64"
60815 )]
60816 fn _vshlq_u64(a: uint64x2_t, b: int64x2_t) -> uint64x2_t;
60817 }
60818 unsafe { _vshlq_u64(a, b) }
60819}
60820#[doc = "Signed shift left long"]
60821#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s16)"]
60822#[inline(always)]
60823#[target_feature(enable = "neon")]
60824#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60825#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s16", N = 2))]
60826#[cfg_attr(
60827 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60828 assert_instr(sshll, N = 2)
60829)]
60830#[rustc_legacy_const_generics(1)]
60831#[cfg_attr(
60832 not(target_arch = "arm"),
60833 stable(feature = "neon_intrinsics", since = "1.59.0")
60834)]
60835#[cfg_attr(
60836 target_arch = "arm",
60837 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60838)]
60839pub fn vshll_n_s16<const N: i32>(a: int16x4_t) -> int32x4_t {
60840 static_assert!(N >= 0 && N <= 16);
60841 unsafe { simd_shl(simd_cast(a), vdupq_n_s32(N as _)) }
60842}
60843#[doc = "Signed shift left long"]
60844#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s32)"]
60845#[inline(always)]
60846#[target_feature(enable = "neon")]
60847#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60848#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.s32", N = 2))]
60849#[cfg_attr(
60850 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60851 assert_instr(sshll, N = 2)
60852)]
60853#[rustc_legacy_const_generics(1)]
60854#[cfg_attr(
60855 not(target_arch = "arm"),
60856 stable(feature = "neon_intrinsics", since = "1.59.0")
60857)]
60858#[cfg_attr(
60859 target_arch = "arm",
60860 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60861)]
60862pub fn vshll_n_s32<const N: i32>(a: int32x2_t) -> int64x2_t {
60863 static_assert!(N >= 0 && N <= 32);
60864 unsafe { simd_shl(simd_cast(a), vdupq_n_s64(N as _)) }
60865}
60866#[doc = "Signed shift left long"]
60867#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_s8)"]
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("vshll.s8", N = 2))]
60872#[cfg_attr(
60873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60874 assert_instr(sshll, N = 2)
60875)]
60876#[rustc_legacy_const_generics(1)]
60877#[cfg_attr(
60878 not(target_arch = "arm"),
60879 stable(feature = "neon_intrinsics", since = "1.59.0")
60880)]
60881#[cfg_attr(
60882 target_arch = "arm",
60883 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60884)]
60885pub fn vshll_n_s8<const N: i32>(a: int8x8_t) -> int16x8_t {
60886 static_assert!(N >= 0 && N <= 8);
60887 unsafe { simd_shl(simd_cast(a), vdupq_n_s16(N as _)) }
60888}
60889#[doc = "Signed shift left long"]
60890#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u16)"]
60891#[inline(always)]
60892#[target_feature(enable = "neon")]
60893#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60894#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u16", N = 2))]
60895#[cfg_attr(
60896 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60897 assert_instr(ushll, N = 2)
60898)]
60899#[rustc_legacy_const_generics(1)]
60900#[cfg_attr(
60901 not(target_arch = "arm"),
60902 stable(feature = "neon_intrinsics", since = "1.59.0")
60903)]
60904#[cfg_attr(
60905 target_arch = "arm",
60906 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60907)]
60908pub fn vshll_n_u16<const N: i32>(a: uint16x4_t) -> uint32x4_t {
60909 static_assert!(N >= 0 && N <= 16);
60910 unsafe { simd_shl(simd_cast(a), vdupq_n_u32(N as _)) }
60911}
60912#[doc = "Signed shift left long"]
60913#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u32)"]
60914#[inline(always)]
60915#[target_feature(enable = "neon")]
60916#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60917#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u32", N = 2))]
60918#[cfg_attr(
60919 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60920 assert_instr(ushll, N = 2)
60921)]
60922#[rustc_legacy_const_generics(1)]
60923#[cfg_attr(
60924 not(target_arch = "arm"),
60925 stable(feature = "neon_intrinsics", since = "1.59.0")
60926)]
60927#[cfg_attr(
60928 target_arch = "arm",
60929 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60930)]
60931pub fn vshll_n_u32<const N: i32>(a: uint32x2_t) -> uint64x2_t {
60932 static_assert!(N >= 0 && N <= 32);
60933 unsafe { simd_shl(simd_cast(a), vdupq_n_u64(N as _)) }
60934}
60935#[doc = "Signed shift left long"]
60936#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshll_n_u8)"]
60937#[inline(always)]
60938#[target_feature(enable = "neon")]
60939#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60940#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshll.u8", N = 2))]
60941#[cfg_attr(
60942 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60943 assert_instr(ushll, N = 2)
60944)]
60945#[rustc_legacy_const_generics(1)]
60946#[cfg_attr(
60947 not(target_arch = "arm"),
60948 stable(feature = "neon_intrinsics", since = "1.59.0")
60949)]
60950#[cfg_attr(
60951 target_arch = "arm",
60952 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60953)]
60954pub fn vshll_n_u8<const N: i32>(a: uint8x8_t) -> uint16x8_t {
60955 static_assert!(N >= 0 && N <= 8);
60956 unsafe { simd_shl(simd_cast(a), vdupq_n_u16(N as _)) }
60957}
60958#[doc = "Shift right"]
60959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s8)"]
60960#[inline(always)]
60961#[target_feature(enable = "neon")]
60962#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60963#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s8", N = 2))]
60964#[cfg_attr(
60965 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60966 assert_instr(sshr, N = 2)
60967)]
60968#[rustc_legacy_const_generics(1)]
60969#[cfg_attr(
60970 not(target_arch = "arm"),
60971 stable(feature = "neon_intrinsics", since = "1.59.0")
60972)]
60973#[cfg_attr(
60974 target_arch = "arm",
60975 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
60976)]
60977pub fn vshr_n_s8<const N: i32>(a: int8x8_t) -> int8x8_t {
60978 static_assert!(N >= 1 && N <= 8);
60979 let n: i32 = if N == 8 { 7 } else { N };
60980 unsafe { simd_shr(a, vdup_n_s8(n as _)) }
60981}
60982#[doc = "Shift right"]
60983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s8)"]
60984#[inline(always)]
60985#[target_feature(enable = "neon")]
60986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
60987#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s8", N = 2))]
60988#[cfg_attr(
60989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
60990 assert_instr(sshr, N = 2)
60991)]
60992#[rustc_legacy_const_generics(1)]
60993#[cfg_attr(
60994 not(target_arch = "arm"),
60995 stable(feature = "neon_intrinsics", since = "1.59.0")
60996)]
60997#[cfg_attr(
60998 target_arch = "arm",
60999 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61000)]
61001pub fn vshrq_n_s8<const N: i32>(a: int8x16_t) -> int8x16_t {
61002 static_assert!(N >= 1 && N <= 8);
61003 let n: i32 = if N == 8 { 7 } else { N };
61004 unsafe { simd_shr(a, vdupq_n_s8(n as _)) }
61005}
61006#[doc = "Shift right"]
61007#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s16)"]
61008#[inline(always)]
61009#[target_feature(enable = "neon")]
61010#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61011#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s16", N = 2))]
61012#[cfg_attr(
61013 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61014 assert_instr(sshr, N = 2)
61015)]
61016#[rustc_legacy_const_generics(1)]
61017#[cfg_attr(
61018 not(target_arch = "arm"),
61019 stable(feature = "neon_intrinsics", since = "1.59.0")
61020)]
61021#[cfg_attr(
61022 target_arch = "arm",
61023 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61024)]
61025pub fn vshr_n_s16<const N: i32>(a: int16x4_t) -> int16x4_t {
61026 static_assert!(N >= 1 && N <= 16);
61027 let n: i32 = if N == 16 { 15 } else { N };
61028 unsafe { simd_shr(a, vdup_n_s16(n as _)) }
61029}
61030#[doc = "Shift right"]
61031#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s16)"]
61032#[inline(always)]
61033#[target_feature(enable = "neon")]
61034#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61035#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s16", N = 2))]
61036#[cfg_attr(
61037 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61038 assert_instr(sshr, N = 2)
61039)]
61040#[rustc_legacy_const_generics(1)]
61041#[cfg_attr(
61042 not(target_arch = "arm"),
61043 stable(feature = "neon_intrinsics", since = "1.59.0")
61044)]
61045#[cfg_attr(
61046 target_arch = "arm",
61047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61048)]
61049pub fn vshrq_n_s16<const N: i32>(a: int16x8_t) -> int16x8_t {
61050 static_assert!(N >= 1 && N <= 16);
61051 let n: i32 = if N == 16 { 15 } else { N };
61052 unsafe { simd_shr(a, vdupq_n_s16(n as _)) }
61053}
61054#[doc = "Shift right"]
61055#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s32)"]
61056#[inline(always)]
61057#[target_feature(enable = "neon")]
61058#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61059#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s32", N = 2))]
61060#[cfg_attr(
61061 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61062 assert_instr(sshr, N = 2)
61063)]
61064#[rustc_legacy_const_generics(1)]
61065#[cfg_attr(
61066 not(target_arch = "arm"),
61067 stable(feature = "neon_intrinsics", since = "1.59.0")
61068)]
61069#[cfg_attr(
61070 target_arch = "arm",
61071 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61072)]
61073pub fn vshr_n_s32<const N: i32>(a: int32x2_t) -> int32x2_t {
61074 static_assert!(N >= 1 && N <= 32);
61075 let n: i32 = if N == 32 { 31 } else { N };
61076 unsafe { simd_shr(a, vdup_n_s32(n as _)) }
61077}
61078#[doc = "Shift right"]
61079#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s32)"]
61080#[inline(always)]
61081#[target_feature(enable = "neon")]
61082#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61083#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s32", N = 2))]
61084#[cfg_attr(
61085 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61086 assert_instr(sshr, N = 2)
61087)]
61088#[rustc_legacy_const_generics(1)]
61089#[cfg_attr(
61090 not(target_arch = "arm"),
61091 stable(feature = "neon_intrinsics", since = "1.59.0")
61092)]
61093#[cfg_attr(
61094 target_arch = "arm",
61095 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61096)]
61097pub fn vshrq_n_s32<const N: i32>(a: int32x4_t) -> int32x4_t {
61098 static_assert!(N >= 1 && N <= 32);
61099 let n: i32 = if N == 32 { 31 } else { N };
61100 unsafe { simd_shr(a, vdupq_n_s32(n as _)) }
61101}
61102#[doc = "Shift right"]
61103#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_s64)"]
61104#[inline(always)]
61105#[target_feature(enable = "neon")]
61106#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61107#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s64", N = 2))]
61108#[cfg_attr(
61109 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61110 assert_instr(sshr, N = 2)
61111)]
61112#[rustc_legacy_const_generics(1)]
61113#[cfg_attr(
61114 not(target_arch = "arm"),
61115 stable(feature = "neon_intrinsics", since = "1.59.0")
61116)]
61117#[cfg_attr(
61118 target_arch = "arm",
61119 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61120)]
61121pub fn vshr_n_s64<const N: i32>(a: int64x1_t) -> int64x1_t {
61122 static_assert!(N >= 1 && N <= 64);
61123 let n: i32 = if N == 64 { 63 } else { N };
61124 unsafe { simd_shr(a, vdup_n_s64(n as _)) }
61125}
61126#[doc = "Shift right"]
61127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_s64)"]
61128#[inline(always)]
61129#[target_feature(enable = "neon")]
61130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61131#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.s64", N = 2))]
61132#[cfg_attr(
61133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61134 assert_instr(sshr, N = 2)
61135)]
61136#[rustc_legacy_const_generics(1)]
61137#[cfg_attr(
61138 not(target_arch = "arm"),
61139 stable(feature = "neon_intrinsics", since = "1.59.0")
61140)]
61141#[cfg_attr(
61142 target_arch = "arm",
61143 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61144)]
61145pub fn vshrq_n_s64<const N: i32>(a: int64x2_t) -> int64x2_t {
61146 static_assert!(N >= 1 && N <= 64);
61147 let n: i32 = if N == 64 { 63 } else { N };
61148 unsafe { simd_shr(a, vdupq_n_s64(n as _)) }
61149}
61150#[doc = "Shift right"]
61151#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u8)"]
61152#[inline(always)]
61153#[target_feature(enable = "neon")]
61154#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61155#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u8", N = 2))]
61156#[cfg_attr(
61157 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61158 assert_instr(ushr, N = 2)
61159)]
61160#[rustc_legacy_const_generics(1)]
61161#[cfg_attr(
61162 not(target_arch = "arm"),
61163 stable(feature = "neon_intrinsics", since = "1.59.0")
61164)]
61165#[cfg_attr(
61166 target_arch = "arm",
61167 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61168)]
61169pub fn vshr_n_u8<const N: i32>(a: uint8x8_t) -> uint8x8_t {
61170 static_assert!(N >= 1 && N <= 8);
61171 let n: i32 = if N == 8 {
61172 return vdup_n_u8(0);
61173 } else {
61174 N
61175 };
61176 unsafe { simd_shr(a, vdup_n_u8(n as _)) }
61177}
61178#[doc = "Shift right"]
61179#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u8)"]
61180#[inline(always)]
61181#[target_feature(enable = "neon")]
61182#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61183#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u8", N = 2))]
61184#[cfg_attr(
61185 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61186 assert_instr(ushr, N = 2)
61187)]
61188#[rustc_legacy_const_generics(1)]
61189#[cfg_attr(
61190 not(target_arch = "arm"),
61191 stable(feature = "neon_intrinsics", since = "1.59.0")
61192)]
61193#[cfg_attr(
61194 target_arch = "arm",
61195 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61196)]
61197pub fn vshrq_n_u8<const N: i32>(a: uint8x16_t) -> uint8x16_t {
61198 static_assert!(N >= 1 && N <= 8);
61199 let n: i32 = if N == 8 {
61200 return vdupq_n_u8(0);
61201 } else {
61202 N
61203 };
61204 unsafe { simd_shr(a, vdupq_n_u8(n as _)) }
61205}
61206#[doc = "Shift right"]
61207#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u16)"]
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.u16", N = 2))]
61212#[cfg_attr(
61213 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61214 assert_instr(ushr, 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_u16<const N: i32>(a: uint16x4_t) -> uint16x4_t {
61226 static_assert!(N >= 1 && N <= 16);
61227 let n: i32 = if N == 16 {
61228 return vdup_n_u16(0);
61229 } else {
61230 N
61231 };
61232 unsafe { simd_shr(a, vdup_n_u16(n as _)) }
61233}
61234#[doc = "Shift right"]
61235#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u16)"]
61236#[inline(always)]
61237#[target_feature(enable = "neon")]
61238#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61239#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u16", N = 2))]
61240#[cfg_attr(
61241 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61242 assert_instr(ushr, N = 2)
61243)]
61244#[rustc_legacy_const_generics(1)]
61245#[cfg_attr(
61246 not(target_arch = "arm"),
61247 stable(feature = "neon_intrinsics", since = "1.59.0")
61248)]
61249#[cfg_attr(
61250 target_arch = "arm",
61251 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61252)]
61253pub fn vshrq_n_u16<const N: i32>(a: uint16x8_t) -> uint16x8_t {
61254 static_assert!(N >= 1 && N <= 16);
61255 let n: i32 = if N == 16 {
61256 return vdupq_n_u16(0);
61257 } else {
61258 N
61259 };
61260 unsafe { simd_shr(a, vdupq_n_u16(n as _)) }
61261}
61262#[doc = "Shift right"]
61263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u32)"]
61264#[inline(always)]
61265#[target_feature(enable = "neon")]
61266#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61267#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u32", N = 2))]
61268#[cfg_attr(
61269 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61270 assert_instr(ushr, N = 2)
61271)]
61272#[rustc_legacy_const_generics(1)]
61273#[cfg_attr(
61274 not(target_arch = "arm"),
61275 stable(feature = "neon_intrinsics", since = "1.59.0")
61276)]
61277#[cfg_attr(
61278 target_arch = "arm",
61279 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61280)]
61281pub fn vshr_n_u32<const N: i32>(a: uint32x2_t) -> uint32x2_t {
61282 static_assert!(N >= 1 && N <= 32);
61283 let n: i32 = if N == 32 {
61284 return vdup_n_u32(0);
61285 } else {
61286 N
61287 };
61288 unsafe { simd_shr(a, vdup_n_u32(n as _)) }
61289}
61290#[doc = "Shift right"]
61291#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u32)"]
61292#[inline(always)]
61293#[target_feature(enable = "neon")]
61294#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61295#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u32", N = 2))]
61296#[cfg_attr(
61297 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61298 assert_instr(ushr, N = 2)
61299)]
61300#[rustc_legacy_const_generics(1)]
61301#[cfg_attr(
61302 not(target_arch = "arm"),
61303 stable(feature = "neon_intrinsics", since = "1.59.0")
61304)]
61305#[cfg_attr(
61306 target_arch = "arm",
61307 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61308)]
61309pub fn vshrq_n_u32<const N: i32>(a: uint32x4_t) -> uint32x4_t {
61310 static_assert!(N >= 1 && N <= 32);
61311 let n: i32 = if N == 32 {
61312 return vdupq_n_u32(0);
61313 } else {
61314 N
61315 };
61316 unsafe { simd_shr(a, vdupq_n_u32(n as _)) }
61317}
61318#[doc = "Shift right"]
61319#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshr_n_u64)"]
61320#[inline(always)]
61321#[target_feature(enable = "neon")]
61322#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61323#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u64", N = 2))]
61324#[cfg_attr(
61325 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61326 assert_instr(ushr, N = 2)
61327)]
61328#[rustc_legacy_const_generics(1)]
61329#[cfg_attr(
61330 not(target_arch = "arm"),
61331 stable(feature = "neon_intrinsics", since = "1.59.0")
61332)]
61333#[cfg_attr(
61334 target_arch = "arm",
61335 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61336)]
61337pub fn vshr_n_u64<const N: i32>(a: uint64x1_t) -> uint64x1_t {
61338 static_assert!(N >= 1 && N <= 64);
61339 let n: i32 = if N == 64 {
61340 return vdup_n_u64(0);
61341 } else {
61342 N
61343 };
61344 unsafe { simd_shr(a, vdup_n_u64(n as _)) }
61345}
61346#[doc = "Shift right"]
61347#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrq_n_u64)"]
61348#[inline(always)]
61349#[target_feature(enable = "neon")]
61350#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61351#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshr.u64", N = 2))]
61352#[cfg_attr(
61353 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61354 assert_instr(ushr, N = 2)
61355)]
61356#[rustc_legacy_const_generics(1)]
61357#[cfg_attr(
61358 not(target_arch = "arm"),
61359 stable(feature = "neon_intrinsics", since = "1.59.0")
61360)]
61361#[cfg_attr(
61362 target_arch = "arm",
61363 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61364)]
61365pub fn vshrq_n_u64<const N: i32>(a: uint64x2_t) -> uint64x2_t {
61366 static_assert!(N >= 1 && N <= 64);
61367 let n: i32 = if N == 64 {
61368 return vdupq_n_u64(0);
61369 } else {
61370 N
61371 };
61372 unsafe { simd_shr(a, vdupq_n_u64(n as _)) }
61373}
61374#[doc = "Shift right narrow"]
61375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s16)"]
61376#[inline(always)]
61377#[target_feature(enable = "neon")]
61378#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61379#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i16", N = 2))]
61380#[cfg_attr(
61381 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61382 assert_instr(shrn, N = 2)
61383)]
61384#[rustc_legacy_const_generics(1)]
61385#[cfg_attr(
61386 not(target_arch = "arm"),
61387 stable(feature = "neon_intrinsics", since = "1.59.0")
61388)]
61389#[cfg_attr(
61390 target_arch = "arm",
61391 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61392)]
61393pub fn vshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
61394 static_assert!(N >= 1 && N <= 8);
61395 unsafe { simd_cast(simd_shr(a, vdupq_n_s16(N as _))) }
61396}
61397#[doc = "Shift right narrow"]
61398#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s32)"]
61399#[inline(always)]
61400#[target_feature(enable = "neon")]
61401#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61402#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i32", N = 2))]
61403#[cfg_attr(
61404 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61405 assert_instr(shrn, N = 2)
61406)]
61407#[rustc_legacy_const_generics(1)]
61408#[cfg_attr(
61409 not(target_arch = "arm"),
61410 stable(feature = "neon_intrinsics", since = "1.59.0")
61411)]
61412#[cfg_attr(
61413 target_arch = "arm",
61414 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61415)]
61416pub fn vshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
61417 static_assert!(N >= 1 && N <= 16);
61418 unsafe { simd_cast(simd_shr(a, vdupq_n_s32(N as _))) }
61419}
61420#[doc = "Shift right narrow"]
61421#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_s64)"]
61422#[inline(always)]
61423#[target_feature(enable = "neon")]
61424#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61425#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i64", N = 2))]
61426#[cfg_attr(
61427 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61428 assert_instr(shrn, N = 2)
61429)]
61430#[rustc_legacy_const_generics(1)]
61431#[cfg_attr(
61432 not(target_arch = "arm"),
61433 stable(feature = "neon_intrinsics", since = "1.59.0")
61434)]
61435#[cfg_attr(
61436 target_arch = "arm",
61437 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61438)]
61439pub fn vshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
61440 static_assert!(N >= 1 && N <= 32);
61441 unsafe { simd_cast(simd_shr(a, vdupq_n_s64(N as _))) }
61442}
61443#[doc = "Shift right narrow"]
61444#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u16)"]
61445#[inline(always)]
61446#[target_feature(enable = "neon")]
61447#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61448#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i16", N = 2))]
61449#[cfg_attr(
61450 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61451 assert_instr(shrn, N = 2)
61452)]
61453#[rustc_legacy_const_generics(1)]
61454#[cfg_attr(
61455 not(target_arch = "arm"),
61456 stable(feature = "neon_intrinsics", since = "1.59.0")
61457)]
61458#[cfg_attr(
61459 target_arch = "arm",
61460 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61461)]
61462pub fn vshrn_n_u16<const N: i32>(a: uint16x8_t) -> uint8x8_t {
61463 static_assert!(N >= 1 && N <= 8);
61464 unsafe { simd_cast(simd_shr(a, vdupq_n_u16(N as _))) }
61465}
61466#[doc = "Shift right narrow"]
61467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u32)"]
61468#[inline(always)]
61469#[target_feature(enable = "neon")]
61470#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61471#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i32", N = 2))]
61472#[cfg_attr(
61473 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61474 assert_instr(shrn, N = 2)
61475)]
61476#[rustc_legacy_const_generics(1)]
61477#[cfg_attr(
61478 not(target_arch = "arm"),
61479 stable(feature = "neon_intrinsics", since = "1.59.0")
61480)]
61481#[cfg_attr(
61482 target_arch = "arm",
61483 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61484)]
61485pub fn vshrn_n_u32<const N: i32>(a: uint32x4_t) -> uint16x4_t {
61486 static_assert!(N >= 1 && N <= 16);
61487 unsafe { simd_cast(simd_shr(a, vdupq_n_u32(N as _))) }
61488}
61489#[doc = "Shift right narrow"]
61490#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vshrn_n_u64)"]
61491#[inline(always)]
61492#[target_feature(enable = "neon")]
61493#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61494#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vshrn.i64", N = 2))]
61495#[cfg_attr(
61496 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61497 assert_instr(shrn, N = 2)
61498)]
61499#[rustc_legacy_const_generics(1)]
61500#[cfg_attr(
61501 not(target_arch = "arm"),
61502 stable(feature = "neon_intrinsics", since = "1.59.0")
61503)]
61504#[cfg_attr(
61505 target_arch = "arm",
61506 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61507)]
61508pub fn vshrn_n_u64<const N: i32>(a: uint64x2_t) -> uint32x2_t {
61509 static_assert!(N >= 1 && N <= 32);
61510 unsafe { simd_cast(simd_shr(a, vdupq_n_u64(N as _))) }
61511}
61512#[doc = "Shift Left and Insert (immediate)"]
61513#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s8)"]
61514#[inline(always)]
61515#[cfg(target_arch = "arm")]
61516#[target_feature(enable = "neon,v7")]
61517#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61518#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61519#[rustc_legacy_const_generics(2)]
61520pub fn vsli_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
61521 static_assert_uimm_bits!(N, 3);
61522 vshiftlins_v8i8::<N>(a, b)
61523}
61524#[doc = "Shift Left and Insert (immediate)"]
61525#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s8)"]
61526#[inline(always)]
61527#[cfg(target_arch = "arm")]
61528#[target_feature(enable = "neon,v7")]
61529#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61530#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61531#[rustc_legacy_const_generics(2)]
61532pub fn vsliq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
61533 static_assert_uimm_bits!(N, 3);
61534 vshiftlins_v16i8::<N>(a, b)
61535}
61536#[doc = "Shift Left and Insert (immediate)"]
61537#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s16)"]
61538#[inline(always)]
61539#[cfg(target_arch = "arm")]
61540#[target_feature(enable = "neon,v7")]
61541#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61542#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61543#[rustc_legacy_const_generics(2)]
61544pub fn vsli_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
61545 static_assert_uimm_bits!(N, 4);
61546 vshiftlins_v4i16::<N>(a, b)
61547}
61548#[doc = "Shift Left and Insert (immediate)"]
61549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s16)"]
61550#[inline(always)]
61551#[cfg(target_arch = "arm")]
61552#[target_feature(enable = "neon,v7")]
61553#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61554#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61555#[rustc_legacy_const_generics(2)]
61556pub fn vsliq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
61557 static_assert_uimm_bits!(N, 4);
61558 vshiftlins_v8i16::<N>(a, b)
61559}
61560#[doc = "Shift Left and Insert (immediate)"]
61561#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s32)"]
61562#[inline(always)]
61563#[cfg(target_arch = "arm")]
61564#[target_feature(enable = "neon,v7")]
61565#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61566#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
61567#[rustc_legacy_const_generics(2)]
61568pub fn vsli_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
61569 static_assert!(N >= 0 && N <= 31);
61570 vshiftlins_v2i32::<N>(a, b)
61571}
61572#[doc = "Shift Left and Insert (immediate)"]
61573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s32)"]
61574#[inline(always)]
61575#[cfg(target_arch = "arm")]
61576#[target_feature(enable = "neon,v7")]
61577#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61578#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
61579#[rustc_legacy_const_generics(2)]
61580pub fn vsliq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
61581 static_assert!(N >= 0 && N <= 31);
61582 vshiftlins_v4i32::<N>(a, b)
61583}
61584#[doc = "Shift Left and Insert (immediate)"]
61585#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_s64)"]
61586#[inline(always)]
61587#[cfg(target_arch = "arm")]
61588#[target_feature(enable = "neon,v7")]
61589#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61590#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
61591#[rustc_legacy_const_generics(2)]
61592pub fn vsli_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
61593 static_assert!(N >= 0 && N <= 63);
61594 vshiftlins_v1i64::<N>(a, b)
61595}
61596#[doc = "Shift Left and Insert (immediate)"]
61597#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_s64)"]
61598#[inline(always)]
61599#[cfg(target_arch = "arm")]
61600#[target_feature(enable = "neon,v7")]
61601#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61602#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
61603#[rustc_legacy_const_generics(2)]
61604pub fn vsliq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
61605 static_assert!(N >= 0 && N <= 63);
61606 vshiftlins_v2i64::<N>(a, b)
61607}
61608#[doc = "Shift Left and Insert (immediate)"]
61609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u8)"]
61610#[inline(always)]
61611#[cfg(target_arch = "arm")]
61612#[target_feature(enable = "neon,v7")]
61613#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61614#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61615#[rustc_legacy_const_generics(2)]
61616pub fn vsli_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
61617 static_assert_uimm_bits!(N, 3);
61618 unsafe { transmute(vshiftlins_v8i8::<N>(transmute(a), transmute(b))) }
61619}
61620#[doc = "Shift Left and Insert (immediate)"]
61621#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u8)"]
61622#[inline(always)]
61623#[cfg(target_arch = "arm")]
61624#[target_feature(enable = "neon,v7")]
61625#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61626#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61627#[rustc_legacy_const_generics(2)]
61628pub fn vsliq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
61629 static_assert_uimm_bits!(N, 3);
61630 unsafe { transmute(vshiftlins_v16i8::<N>(transmute(a), transmute(b))) }
61631}
61632#[doc = "Shift Left and Insert (immediate)"]
61633#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u16)"]
61634#[inline(always)]
61635#[cfg(target_arch = "arm")]
61636#[target_feature(enable = "neon,v7")]
61637#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61638#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61639#[rustc_legacy_const_generics(2)]
61640pub fn vsli_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
61641 static_assert_uimm_bits!(N, 4);
61642 unsafe { transmute(vshiftlins_v4i16::<N>(transmute(a), transmute(b))) }
61643}
61644#[doc = "Shift Left and Insert (immediate)"]
61645#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u16)"]
61646#[inline(always)]
61647#[cfg(target_arch = "arm")]
61648#[target_feature(enable = "neon,v7")]
61649#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61650#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61651#[rustc_legacy_const_generics(2)]
61652pub fn vsliq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
61653 static_assert_uimm_bits!(N, 4);
61654 unsafe { transmute(vshiftlins_v8i16::<N>(transmute(a), transmute(b))) }
61655}
61656#[doc = "Shift Left and Insert (immediate)"]
61657#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u32)"]
61658#[inline(always)]
61659#[cfg(target_arch = "arm")]
61660#[target_feature(enable = "neon,v7")]
61661#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61662#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
61663#[rustc_legacy_const_generics(2)]
61664pub fn vsli_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
61665 static_assert!(N >= 0 && N <= 31);
61666 unsafe { transmute(vshiftlins_v2i32::<N>(transmute(a), transmute(b))) }
61667}
61668#[doc = "Shift Left and Insert (immediate)"]
61669#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u32)"]
61670#[inline(always)]
61671#[cfg(target_arch = "arm")]
61672#[target_feature(enable = "neon,v7")]
61673#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61674#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.32", N = 1))]
61675#[rustc_legacy_const_generics(2)]
61676pub fn vsliq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
61677 static_assert!(N >= 0 && N <= 31);
61678 unsafe { transmute(vshiftlins_v4i32::<N>(transmute(a), transmute(b))) }
61679}
61680#[doc = "Shift Left and Insert (immediate)"]
61681#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_u64)"]
61682#[inline(always)]
61683#[cfg(target_arch = "arm")]
61684#[target_feature(enable = "neon,v7")]
61685#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61686#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
61687#[rustc_legacy_const_generics(2)]
61688pub fn vsli_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
61689 static_assert!(N >= 0 && N <= 63);
61690 unsafe { transmute(vshiftlins_v1i64::<N>(transmute(a), transmute(b))) }
61691}
61692#[doc = "Shift Left and Insert (immediate)"]
61693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_u64)"]
61694#[inline(always)]
61695#[cfg(target_arch = "arm")]
61696#[target_feature(enable = "neon,v7")]
61697#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61698#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.64", N = 1))]
61699#[rustc_legacy_const_generics(2)]
61700pub fn vsliq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
61701 static_assert!(N >= 0 && N <= 63);
61702 unsafe { transmute(vshiftlins_v2i64::<N>(transmute(a), transmute(b))) }
61703}
61704#[doc = "Shift Left and Insert (immediate)"]
61705#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_p8)"]
61706#[inline(always)]
61707#[cfg(target_arch = "arm")]
61708#[target_feature(enable = "neon,v7")]
61709#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61710#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61711#[rustc_legacy_const_generics(2)]
61712pub fn vsli_n_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
61713 static_assert_uimm_bits!(N, 3);
61714 unsafe { transmute(vshiftlins_v8i8::<N>(transmute(a), transmute(b))) }
61715}
61716#[doc = "Shift Left and Insert (immediate)"]
61717#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_p8)"]
61718#[inline(always)]
61719#[cfg(target_arch = "arm")]
61720#[target_feature(enable = "neon,v7")]
61721#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61722#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.8", N = 1))]
61723#[rustc_legacy_const_generics(2)]
61724pub fn vsliq_n_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
61725 static_assert_uimm_bits!(N, 3);
61726 unsafe { transmute(vshiftlins_v16i8::<N>(transmute(a), transmute(b))) }
61727}
61728#[doc = "Shift Left and Insert (immediate)"]
61729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsli_n_p16)"]
61730#[inline(always)]
61731#[cfg(target_arch = "arm")]
61732#[target_feature(enable = "neon,v7")]
61733#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61734#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61735#[rustc_legacy_const_generics(2)]
61736pub fn vsli_n_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
61737 static_assert_uimm_bits!(N, 4);
61738 unsafe { transmute(vshiftlins_v4i16::<N>(transmute(a), transmute(b))) }
61739}
61740#[doc = "Shift Left and Insert (immediate)"]
61741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsliq_n_p16)"]
61742#[inline(always)]
61743#[cfg(target_arch = "arm")]
61744#[target_feature(enable = "neon,v7")]
61745#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
61746#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsli.16", N = 1))]
61747#[rustc_legacy_const_generics(2)]
61748pub fn vsliq_n_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
61749 static_assert_uimm_bits!(N, 4);
61750 unsafe { transmute(vshiftlins_v8i16::<N>(transmute(a), transmute(b))) }
61751}
61752#[doc = "Signed shift right and accumulate"]
61753#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s8)"]
61754#[inline(always)]
61755#[target_feature(enable = "neon")]
61756#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61757#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61758#[cfg_attr(
61759 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61760 assert_instr(ssra, N = 2)
61761)]
61762#[rustc_legacy_const_generics(2)]
61763#[cfg_attr(
61764 not(target_arch = "arm"),
61765 stable(feature = "neon_intrinsics", since = "1.59.0")
61766)]
61767#[cfg_attr(
61768 target_arch = "arm",
61769 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61770)]
61771pub fn vsra_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
61772 static_assert!(N >= 1 && N <= 8);
61773 unsafe { simd_add(a, vshr_n_s8::<N>(b)) }
61774}
61775#[doc = "Signed shift right and accumulate"]
61776#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s8)"]
61777#[inline(always)]
61778#[target_feature(enable = "neon")]
61779#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61780#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61781#[cfg_attr(
61782 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61783 assert_instr(ssra, N = 2)
61784)]
61785#[rustc_legacy_const_generics(2)]
61786#[cfg_attr(
61787 not(target_arch = "arm"),
61788 stable(feature = "neon_intrinsics", since = "1.59.0")
61789)]
61790#[cfg_attr(
61791 target_arch = "arm",
61792 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61793)]
61794pub fn vsraq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
61795 static_assert!(N >= 1 && N <= 8);
61796 unsafe { simd_add(a, vshrq_n_s8::<N>(b)) }
61797}
61798#[doc = "Signed shift right and accumulate"]
61799#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s16)"]
61800#[inline(always)]
61801#[target_feature(enable = "neon")]
61802#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61803#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61804#[cfg_attr(
61805 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61806 assert_instr(ssra, N = 2)
61807)]
61808#[rustc_legacy_const_generics(2)]
61809#[cfg_attr(
61810 not(target_arch = "arm"),
61811 stable(feature = "neon_intrinsics", since = "1.59.0")
61812)]
61813#[cfg_attr(
61814 target_arch = "arm",
61815 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61816)]
61817pub fn vsra_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
61818 static_assert!(N >= 1 && N <= 16);
61819 unsafe { simd_add(a, vshr_n_s16::<N>(b)) }
61820}
61821#[doc = "Signed shift right and accumulate"]
61822#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s16)"]
61823#[inline(always)]
61824#[target_feature(enable = "neon")]
61825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61826#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61827#[cfg_attr(
61828 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61829 assert_instr(ssra, N = 2)
61830)]
61831#[rustc_legacy_const_generics(2)]
61832#[cfg_attr(
61833 not(target_arch = "arm"),
61834 stable(feature = "neon_intrinsics", since = "1.59.0")
61835)]
61836#[cfg_attr(
61837 target_arch = "arm",
61838 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61839)]
61840pub fn vsraq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
61841 static_assert!(N >= 1 && N <= 16);
61842 unsafe { simd_add(a, vshrq_n_s16::<N>(b)) }
61843}
61844#[doc = "Signed shift right and accumulate"]
61845#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s32)"]
61846#[inline(always)]
61847#[target_feature(enable = "neon")]
61848#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61849#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61850#[cfg_attr(
61851 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61852 assert_instr(ssra, N = 2)
61853)]
61854#[rustc_legacy_const_generics(2)]
61855#[cfg_attr(
61856 not(target_arch = "arm"),
61857 stable(feature = "neon_intrinsics", since = "1.59.0")
61858)]
61859#[cfg_attr(
61860 target_arch = "arm",
61861 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61862)]
61863pub fn vsra_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
61864 static_assert!(N >= 1 && N <= 32);
61865 unsafe { simd_add(a, vshr_n_s32::<N>(b)) }
61866}
61867#[doc = "Signed shift right and accumulate"]
61868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s32)"]
61869#[inline(always)]
61870#[target_feature(enable = "neon")]
61871#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61872#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61873#[cfg_attr(
61874 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61875 assert_instr(ssra, N = 2)
61876)]
61877#[rustc_legacy_const_generics(2)]
61878#[cfg_attr(
61879 not(target_arch = "arm"),
61880 stable(feature = "neon_intrinsics", since = "1.59.0")
61881)]
61882#[cfg_attr(
61883 target_arch = "arm",
61884 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61885)]
61886pub fn vsraq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
61887 static_assert!(N >= 1 && N <= 32);
61888 unsafe { simd_add(a, vshrq_n_s32::<N>(b)) }
61889}
61890#[doc = "Signed shift right and accumulate"]
61891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_s64)"]
61892#[inline(always)]
61893#[target_feature(enable = "neon")]
61894#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61895#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61896#[cfg_attr(
61897 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61898 assert_instr(ssra, N = 2)
61899)]
61900#[rustc_legacy_const_generics(2)]
61901#[cfg_attr(
61902 not(target_arch = "arm"),
61903 stable(feature = "neon_intrinsics", since = "1.59.0")
61904)]
61905#[cfg_attr(
61906 target_arch = "arm",
61907 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61908)]
61909pub fn vsra_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
61910 static_assert!(N >= 1 && N <= 64);
61911 unsafe { simd_add(a, vshr_n_s64::<N>(b)) }
61912}
61913#[doc = "Signed shift right and accumulate"]
61914#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_s64)"]
61915#[inline(always)]
61916#[target_feature(enable = "neon")]
61917#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61918#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61919#[cfg_attr(
61920 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61921 assert_instr(ssra, N = 2)
61922)]
61923#[rustc_legacy_const_generics(2)]
61924#[cfg_attr(
61925 not(target_arch = "arm"),
61926 stable(feature = "neon_intrinsics", since = "1.59.0")
61927)]
61928#[cfg_attr(
61929 target_arch = "arm",
61930 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61931)]
61932pub fn vsraq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
61933 static_assert!(N >= 1 && N <= 64);
61934 unsafe { simd_add(a, vshrq_n_s64::<N>(b)) }
61935}
61936#[doc = "Unsigned shift right and accumulate"]
61937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u8)"]
61938#[inline(always)]
61939#[target_feature(enable = "neon")]
61940#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61941#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61942#[cfg_attr(
61943 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61944 assert_instr(usra, N = 2)
61945)]
61946#[rustc_legacy_const_generics(2)]
61947#[cfg_attr(
61948 not(target_arch = "arm"),
61949 stable(feature = "neon_intrinsics", since = "1.59.0")
61950)]
61951#[cfg_attr(
61952 target_arch = "arm",
61953 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61954)]
61955pub fn vsra_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
61956 static_assert!(N >= 1 && N <= 8);
61957 unsafe { simd_add(a, vshr_n_u8::<N>(b)) }
61958}
61959#[doc = "Unsigned shift right and accumulate"]
61960#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u8)"]
61961#[inline(always)]
61962#[target_feature(enable = "neon")]
61963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61964#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61965#[cfg_attr(
61966 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61967 assert_instr(usra, N = 2)
61968)]
61969#[rustc_legacy_const_generics(2)]
61970#[cfg_attr(
61971 not(target_arch = "arm"),
61972 stable(feature = "neon_intrinsics", since = "1.59.0")
61973)]
61974#[cfg_attr(
61975 target_arch = "arm",
61976 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
61977)]
61978pub fn vsraq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
61979 static_assert!(N >= 1 && N <= 8);
61980 unsafe { simd_add(a, vshrq_n_u8::<N>(b)) }
61981}
61982#[doc = "Unsigned shift right and accumulate"]
61983#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u16)"]
61984#[inline(always)]
61985#[target_feature(enable = "neon")]
61986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
61987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
61988#[cfg_attr(
61989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
61990 assert_instr(usra, N = 2)
61991)]
61992#[rustc_legacy_const_generics(2)]
61993#[cfg_attr(
61994 not(target_arch = "arm"),
61995 stable(feature = "neon_intrinsics", since = "1.59.0")
61996)]
61997#[cfg_attr(
61998 target_arch = "arm",
61999 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62000)]
62001pub fn vsra_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
62002 static_assert!(N >= 1 && N <= 16);
62003 unsafe { simd_add(a, vshr_n_u16::<N>(b)) }
62004}
62005#[doc = "Unsigned shift right and accumulate"]
62006#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u16)"]
62007#[inline(always)]
62008#[target_feature(enable = "neon")]
62009#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62011#[cfg_attr(
62012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62013 assert_instr(usra, N = 2)
62014)]
62015#[rustc_legacy_const_generics(2)]
62016#[cfg_attr(
62017 not(target_arch = "arm"),
62018 stable(feature = "neon_intrinsics", since = "1.59.0")
62019)]
62020#[cfg_attr(
62021 target_arch = "arm",
62022 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62023)]
62024pub fn vsraq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
62025 static_assert!(N >= 1 && N <= 16);
62026 unsafe { simd_add(a, vshrq_n_u16::<N>(b)) }
62027}
62028#[doc = "Unsigned shift right and accumulate"]
62029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u32)"]
62030#[inline(always)]
62031#[target_feature(enable = "neon")]
62032#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62033#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62034#[cfg_attr(
62035 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62036 assert_instr(usra, N = 2)
62037)]
62038#[rustc_legacy_const_generics(2)]
62039#[cfg_attr(
62040 not(target_arch = "arm"),
62041 stable(feature = "neon_intrinsics", since = "1.59.0")
62042)]
62043#[cfg_attr(
62044 target_arch = "arm",
62045 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62046)]
62047pub fn vsra_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
62048 static_assert!(N >= 1 && N <= 32);
62049 unsafe { simd_add(a, vshr_n_u32::<N>(b)) }
62050}
62051#[doc = "Unsigned shift right and accumulate"]
62052#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u32)"]
62053#[inline(always)]
62054#[target_feature(enable = "neon")]
62055#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62056#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62057#[cfg_attr(
62058 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62059 assert_instr(usra, N = 2)
62060)]
62061#[rustc_legacy_const_generics(2)]
62062#[cfg_attr(
62063 not(target_arch = "arm"),
62064 stable(feature = "neon_intrinsics", since = "1.59.0")
62065)]
62066#[cfg_attr(
62067 target_arch = "arm",
62068 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62069)]
62070pub fn vsraq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
62071 static_assert!(N >= 1 && N <= 32);
62072 unsafe { simd_add(a, vshrq_n_u32::<N>(b)) }
62073}
62074#[doc = "Unsigned shift right and accumulate"]
62075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsra_n_u64)"]
62076#[inline(always)]
62077#[target_feature(enable = "neon")]
62078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62079#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62080#[cfg_attr(
62081 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62082 assert_instr(usra, N = 2)
62083)]
62084#[rustc_legacy_const_generics(2)]
62085#[cfg_attr(
62086 not(target_arch = "arm"),
62087 stable(feature = "neon_intrinsics", since = "1.59.0")
62088)]
62089#[cfg_attr(
62090 target_arch = "arm",
62091 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62092)]
62093pub fn vsra_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
62094 static_assert!(N >= 1 && N <= 64);
62095 unsafe { simd_add(a, vshr_n_u64::<N>(b)) }
62096}
62097#[doc = "Unsigned shift right and accumulate"]
62098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsraq_n_u64)"]
62099#[inline(always)]
62100#[target_feature(enable = "neon")]
62101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsra, N = 2))]
62103#[cfg_attr(
62104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
62105 assert_instr(usra, N = 2)
62106)]
62107#[rustc_legacy_const_generics(2)]
62108#[cfg_attr(
62109 not(target_arch = "arm"),
62110 stable(feature = "neon_intrinsics", since = "1.59.0")
62111)]
62112#[cfg_attr(
62113 target_arch = "arm",
62114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
62115)]
62116pub fn vsraq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
62117 static_assert!(N >= 1 && N <= 64);
62118 unsafe { simd_add(a, vshrq_n_u64::<N>(b)) }
62119}
62120#[doc = "Shift Right and Insert (immediate)"]
62121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s8)"]
62122#[inline(always)]
62123#[target_feature(enable = "neon,v7")]
62124#[cfg(target_arch = "arm")]
62125#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62126#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62127#[rustc_legacy_const_generics(2)]
62128pub fn vsri_n_s8<const N: i32>(a: int8x8_t, b: int8x8_t) -> int8x8_t {
62129 static_assert!(1 <= N && N <= 8);
62130 vshiftrins_v8i8::<N>(a, b)
62131}
62132#[doc = "Shift Right and Insert (immediate)"]
62133#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s8)"]
62134#[inline(always)]
62135#[target_feature(enable = "neon,v7")]
62136#[cfg(target_arch = "arm")]
62137#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62138#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62139#[rustc_legacy_const_generics(2)]
62140pub fn vsriq_n_s8<const N: i32>(a: int8x16_t, b: int8x16_t) -> int8x16_t {
62141 static_assert!(1 <= N && N <= 8);
62142 vshiftrins_v16i8::<N>(a, b)
62143}
62144#[doc = "Shift Right and Insert (immediate)"]
62145#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s16)"]
62146#[inline(always)]
62147#[target_feature(enable = "neon,v7")]
62148#[cfg(target_arch = "arm")]
62149#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62150#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62151#[rustc_legacy_const_generics(2)]
62152pub fn vsri_n_s16<const N: i32>(a: int16x4_t, b: int16x4_t) -> int16x4_t {
62153 static_assert!(1 <= N && N <= 16);
62154 vshiftrins_v4i16::<N>(a, b)
62155}
62156#[doc = "Shift Right and Insert (immediate)"]
62157#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s16)"]
62158#[inline(always)]
62159#[target_feature(enable = "neon,v7")]
62160#[cfg(target_arch = "arm")]
62161#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62162#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62163#[rustc_legacy_const_generics(2)]
62164pub fn vsriq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
62165 static_assert!(1 <= N && N <= 16);
62166 vshiftrins_v8i16::<N>(a, b)
62167}
62168#[doc = "Shift Right and Insert (immediate)"]
62169#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s32)"]
62170#[inline(always)]
62171#[target_feature(enable = "neon,v7")]
62172#[cfg(target_arch = "arm")]
62173#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62174#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
62175#[rustc_legacy_const_generics(2)]
62176pub fn vsri_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
62177 static_assert!(1 <= N && N <= 32);
62178 vshiftrins_v2i32::<N>(a, b)
62179}
62180#[doc = "Shift Right and Insert (immediate)"]
62181#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s32)"]
62182#[inline(always)]
62183#[target_feature(enable = "neon,v7")]
62184#[cfg(target_arch = "arm")]
62185#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62186#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
62187#[rustc_legacy_const_generics(2)]
62188pub fn vsriq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
62189 static_assert!(1 <= N && N <= 32);
62190 vshiftrins_v4i32::<N>(a, b)
62191}
62192#[doc = "Shift Right and Insert (immediate)"]
62193#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s64)"]
62194#[inline(always)]
62195#[target_feature(enable = "neon,v7")]
62196#[cfg(target_arch = "arm")]
62197#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62198#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
62199#[rustc_legacy_const_generics(2)]
62200pub fn vsri_n_s64<const N: i32>(a: int64x1_t, b: int64x1_t) -> int64x1_t {
62201 static_assert!(1 <= N && N <= 64);
62202 vshiftrins_v1i64::<N>(a, b)
62203}
62204#[doc = "Shift Right and Insert (immediate)"]
62205#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s64)"]
62206#[inline(always)]
62207#[target_feature(enable = "neon,v7")]
62208#[cfg(target_arch = "arm")]
62209#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62210#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
62211#[rustc_legacy_const_generics(2)]
62212pub fn vsriq_n_s64<const N: i32>(a: int64x2_t, b: int64x2_t) -> int64x2_t {
62213 static_assert!(1 <= N && N <= 64);
62214 vshiftrins_v2i64::<N>(a, b)
62215}
62216#[doc = "Shift Right and Insert (immediate)"]
62217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u8)"]
62218#[inline(always)]
62219#[cfg(target_arch = "arm")]
62220#[target_feature(enable = "neon,v7")]
62221#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62222#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62223#[rustc_legacy_const_generics(2)]
62224pub fn vsri_n_u8<const N: i32>(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
62225 static_assert!(1 <= N && N <= 8);
62226 unsafe { transmute(vshiftrins_v8i8::<N>(transmute(a), transmute(b))) }
62227}
62228#[doc = "Shift Right and Insert (immediate)"]
62229#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u8)"]
62230#[inline(always)]
62231#[cfg(target_arch = "arm")]
62232#[target_feature(enable = "neon,v7")]
62233#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62234#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62235#[rustc_legacy_const_generics(2)]
62236pub fn vsriq_n_u8<const N: i32>(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
62237 static_assert!(1 <= N && N <= 8);
62238 unsafe { transmute(vshiftrins_v16i8::<N>(transmute(a), transmute(b))) }
62239}
62240#[doc = "Shift Right and Insert (immediate)"]
62241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u16)"]
62242#[inline(always)]
62243#[cfg(target_arch = "arm")]
62244#[target_feature(enable = "neon,v7")]
62245#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62246#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62247#[rustc_legacy_const_generics(2)]
62248pub fn vsri_n_u16<const N: i32>(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
62249 static_assert!(1 <= N && N <= 16);
62250 unsafe { transmute(vshiftrins_v4i16::<N>(transmute(a), transmute(b))) }
62251}
62252#[doc = "Shift Right and Insert (immediate)"]
62253#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u16)"]
62254#[inline(always)]
62255#[cfg(target_arch = "arm")]
62256#[target_feature(enable = "neon,v7")]
62257#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62258#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62259#[rustc_legacy_const_generics(2)]
62260pub fn vsriq_n_u16<const N: i32>(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
62261 static_assert!(1 <= N && N <= 16);
62262 unsafe { transmute(vshiftrins_v8i16::<N>(transmute(a), transmute(b))) }
62263}
62264#[doc = "Shift Right and Insert (immediate)"]
62265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u32)"]
62266#[inline(always)]
62267#[cfg(target_arch = "arm")]
62268#[target_feature(enable = "neon,v7")]
62269#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62270#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
62271#[rustc_legacy_const_generics(2)]
62272pub fn vsri_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
62273 static_assert!(1 <= N && N <= 32);
62274 unsafe { transmute(vshiftrins_v2i32::<N>(transmute(a), transmute(b))) }
62275}
62276#[doc = "Shift Right and Insert (immediate)"]
62277#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u32)"]
62278#[inline(always)]
62279#[cfg(target_arch = "arm")]
62280#[target_feature(enable = "neon,v7")]
62281#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62282#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.32", N = 1))]
62283#[rustc_legacy_const_generics(2)]
62284pub fn vsriq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
62285 static_assert!(1 <= N && N <= 32);
62286 unsafe { transmute(vshiftrins_v4i32::<N>(transmute(a), transmute(b))) }
62287}
62288#[doc = "Shift Right and Insert (immediate)"]
62289#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_u64)"]
62290#[inline(always)]
62291#[cfg(target_arch = "arm")]
62292#[target_feature(enable = "neon,v7")]
62293#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62294#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
62295#[rustc_legacy_const_generics(2)]
62296pub fn vsri_n_u64<const N: i32>(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
62297 static_assert!(1 <= N && N <= 64);
62298 unsafe { transmute(vshiftrins_v1i64::<N>(transmute(a), transmute(b))) }
62299}
62300#[doc = "Shift Right and Insert (immediate)"]
62301#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_u64)"]
62302#[inline(always)]
62303#[cfg(target_arch = "arm")]
62304#[target_feature(enable = "neon,v7")]
62305#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62306#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.64", N = 1))]
62307#[rustc_legacy_const_generics(2)]
62308pub fn vsriq_n_u64<const N: i32>(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
62309 static_assert!(1 <= N && N <= 64);
62310 unsafe { transmute(vshiftrins_v2i64::<N>(transmute(a), transmute(b))) }
62311}
62312#[doc = "Shift Right and Insert (immediate)"]
62313#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_p8)"]
62314#[inline(always)]
62315#[cfg(target_arch = "arm")]
62316#[target_feature(enable = "neon,v7")]
62317#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62318#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62319#[rustc_legacy_const_generics(2)]
62320pub fn vsri_n_p8<const N: i32>(a: poly8x8_t, b: poly8x8_t) -> poly8x8_t {
62321 static_assert!(1 <= N && N <= 8);
62322 unsafe { transmute(vshiftrins_v8i8::<N>(transmute(a), transmute(b))) }
62323}
62324#[doc = "Shift Right and Insert (immediate)"]
62325#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_p8)"]
62326#[inline(always)]
62327#[cfg(target_arch = "arm")]
62328#[target_feature(enable = "neon,v7")]
62329#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62330#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.8", N = 1))]
62331#[rustc_legacy_const_generics(2)]
62332pub fn vsriq_n_p8<const N: i32>(a: poly8x16_t, b: poly8x16_t) -> poly8x16_t {
62333 static_assert!(1 <= N && N <= 8);
62334 unsafe { transmute(vshiftrins_v16i8::<N>(transmute(a), transmute(b))) }
62335}
62336#[doc = "Shift Right and Insert (immediate)"]
62337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_p16)"]
62338#[inline(always)]
62339#[cfg(target_arch = "arm")]
62340#[target_feature(enable = "neon,v7")]
62341#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62342#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62343#[rustc_legacy_const_generics(2)]
62344pub fn vsri_n_p16<const N: i32>(a: poly16x4_t, b: poly16x4_t) -> poly16x4_t {
62345 static_assert!(1 <= N && N <= 16);
62346 unsafe { transmute(vshiftrins_v4i16::<N>(transmute(a), transmute(b))) }
62347}
62348#[doc = "Shift Right and Insert (immediate)"]
62349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_p16)"]
62350#[inline(always)]
62351#[cfg(target_arch = "arm")]
62352#[target_feature(enable = "neon,v7")]
62353#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62354#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsri.16", N = 1))]
62355#[rustc_legacy_const_generics(2)]
62356pub fn vsriq_n_p16<const N: i32>(a: poly16x8_t, b: poly16x8_t) -> poly16x8_t {
62357 static_assert!(1 <= N && N <= 16);
62358 unsafe { transmute(vshiftrins_v8i16::<N>(transmute(a), transmute(b))) }
62359}
62360#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62361#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16)"]
62362#[doc = "## Safety"]
62363#[doc = " * Neon intrinsic unsafe"]
62364#[inline(always)]
62365#[cfg(target_arch = "arm")]
62366#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62367#[target_feature(enable = "neon,fp16")]
62368#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62369#[cfg(not(target_arch = "arm64ec"))]
62370#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62371pub unsafe fn vst1_f16(ptr: *mut f16, a: float16x4_t) {
62372 vst1_v4f16(
62373 ptr as *const i8,
62374 transmute(a),
62375 crate::mem::align_of::<f16>() as i32,
62376 )
62377}
62378#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16)"]
62380#[doc = "## Safety"]
62381#[doc = " * Neon intrinsic unsafe"]
62382#[inline(always)]
62383#[cfg(target_arch = "arm")]
62384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62385#[target_feature(enable = "neon,fp16")]
62386#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62387#[cfg(not(target_arch = "arm64ec"))]
62388#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62389pub unsafe fn vst1q_f16(ptr: *mut f16, a: float16x8_t) {
62390 vst1q_v8f16(
62391 ptr as *const i8,
62392 transmute(a),
62393 crate::mem::align_of::<f16>() as i32,
62394 )
62395}
62396#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62397#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x2)"]
62398#[doc = "## Safety"]
62399#[doc = " * Neon intrinsic unsafe"]
62400#[inline(always)]
62401#[cfg(target_arch = "arm")]
62402#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62403#[cfg_attr(test, assert_instr(vst1))]
62404#[target_feature(enable = "neon,fp16")]
62405#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62406#[cfg(not(target_arch = "arm64ec"))]
62407pub unsafe fn vst1_f16_x2(a: *mut f16, b: float16x4x2_t) {
62408 unsafe extern "unadjusted" {
62409 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.p0.v4f16")]
62410 fn _vst1_f16_x2(ptr: *mut f16, a: float16x4_t, b: float16x4_t);
62411 }
62412 _vst1_f16_x2(a, b.0, b.1)
62413}
62414#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62415#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x2)"]
62416#[doc = "## Safety"]
62417#[doc = " * Neon intrinsic unsafe"]
62418#[inline(always)]
62419#[cfg(target_arch = "arm")]
62420#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62421#[cfg_attr(test, assert_instr(vst1))]
62422#[target_feature(enable = "neon,fp16")]
62423#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62424#[cfg(not(target_arch = "arm64ec"))]
62425pub unsafe fn vst1q_f16_x2(a: *mut f16, b: float16x8x2_t) {
62426 unsafe extern "unadjusted" {
62427 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.p0.v8f16")]
62428 fn _vst1q_f16_x2(ptr: *mut f16, a: float16x8_t, b: float16x8_t);
62429 }
62430 _vst1q_f16_x2(a, b.0, b.1)
62431}
62432#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x2)"]
62434#[doc = "## Safety"]
62435#[doc = " * Neon intrinsic unsafe"]
62436#[inline(always)]
62437#[cfg(not(target_arch = "arm"))]
62438#[cfg_attr(test, assert_instr(st1))]
62439#[target_feature(enable = "neon,fp16")]
62440#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62441#[cfg(not(target_arch = "arm64ec"))]
62442pub unsafe fn vst1_f16_x2(a: *mut f16, b: float16x4x2_t) {
62443 unsafe extern "unadjusted" {
62444 #[cfg_attr(
62445 any(target_arch = "aarch64", target_arch = "arm64ec"),
62446 link_name = "llvm.aarch64.neon.st1x2.v4f16.p0"
62447 )]
62448 fn _vst1_f16_x2(a: float16x4_t, b: float16x4_t, ptr: *mut f16);
62449 }
62450 _vst1_f16_x2(b.0, b.1, a)
62451}
62452#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62453#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x2)"]
62454#[doc = "## Safety"]
62455#[doc = " * Neon intrinsic unsafe"]
62456#[inline(always)]
62457#[cfg(not(target_arch = "arm"))]
62458#[cfg_attr(test, assert_instr(st1))]
62459#[target_feature(enable = "neon,fp16")]
62460#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62461#[cfg(not(target_arch = "arm64ec"))]
62462pub unsafe fn vst1q_f16_x2(a: *mut f16, b: float16x8x2_t) {
62463 unsafe extern "unadjusted" {
62464 #[cfg_attr(
62465 any(target_arch = "aarch64", target_arch = "arm64ec"),
62466 link_name = "llvm.aarch64.neon.st1x2.v8f16.p0"
62467 )]
62468 fn _vst1q_f16_x2(a: float16x8_t, b: float16x8_t, ptr: *mut f16);
62469 }
62470 _vst1q_f16_x2(b.0, b.1, a)
62471}
62472#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62473#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x3)"]
62474#[doc = "## Safety"]
62475#[doc = " * Neon intrinsic unsafe"]
62476#[inline(always)]
62477#[cfg(target_arch = "arm")]
62478#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62479#[cfg_attr(test, assert_instr(vst1))]
62480#[target_feature(enable = "neon,fp16")]
62481#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62482#[cfg(not(target_arch = "arm64ec"))]
62483pub unsafe fn vst1_f16_x3(a: *mut f16, b: float16x4x3_t) {
62484 unsafe extern "unadjusted" {
62485 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4f16")]
62486 fn _vst1_f16_x3(ptr: *mut f16, a: float16x4_t, b: float16x4_t, c: float16x4_t);
62487 }
62488 _vst1_f16_x3(a, b.0, b.1, b.2)
62489}
62490#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62491#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x3)"]
62492#[doc = "## Safety"]
62493#[doc = " * Neon intrinsic unsafe"]
62494#[inline(always)]
62495#[cfg(target_arch = "arm")]
62496#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62497#[cfg_attr(test, assert_instr(vst1))]
62498#[target_feature(enable = "neon,fp16")]
62499#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62500#[cfg(not(target_arch = "arm64ec"))]
62501pub unsafe fn vst1q_f16_x3(a: *mut f16, b: float16x8x3_t) {
62502 unsafe extern "unadjusted" {
62503 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8f16")]
62504 fn _vst1q_f16_x3(ptr: *mut f16, a: float16x8_t, b: float16x8_t, c: float16x8_t);
62505 }
62506 _vst1q_f16_x3(a, b.0, b.1, b.2)
62507}
62508#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62509#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x3)"]
62510#[doc = "## Safety"]
62511#[doc = " * Neon intrinsic unsafe"]
62512#[inline(always)]
62513#[cfg(not(target_arch = "arm"))]
62514#[cfg_attr(test, assert_instr(st1))]
62515#[target_feature(enable = "neon,fp16")]
62516#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62517#[cfg(not(target_arch = "arm64ec"))]
62518pub unsafe fn vst1_f16_x3(a: *mut f16, b: float16x4x3_t) {
62519 unsafe extern "unadjusted" {
62520 #[cfg_attr(
62521 any(target_arch = "aarch64", target_arch = "arm64ec"),
62522 link_name = "llvm.aarch64.neon.st1x3.v4f16.p0"
62523 )]
62524 fn _vst1_f16_x3(a: float16x4_t, b: float16x4_t, c: float16x4_t, ptr: *mut f16);
62525 }
62526 _vst1_f16_x3(b.0, b.1, b.2, a)
62527}
62528#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x3)"]
62530#[doc = "## Safety"]
62531#[doc = " * Neon intrinsic unsafe"]
62532#[inline(always)]
62533#[cfg(not(target_arch = "arm"))]
62534#[cfg_attr(test, assert_instr(st1))]
62535#[target_feature(enable = "neon,fp16")]
62536#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62537#[cfg(not(target_arch = "arm64ec"))]
62538pub unsafe fn vst1q_f16_x3(a: *mut f16, b: float16x8x3_t) {
62539 unsafe extern "unadjusted" {
62540 #[cfg_attr(
62541 any(target_arch = "aarch64", target_arch = "arm64ec"),
62542 link_name = "llvm.aarch64.neon.st1x3.v8f16.p0"
62543 )]
62544 fn _vst1q_f16_x3(a: float16x8_t, b: float16x8_t, c: float16x8_t, ptr: *mut f16);
62545 }
62546 _vst1q_f16_x3(b.0, b.1, b.2, a)
62547}
62548#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x4)"]
62550#[doc = "## Safety"]
62551#[doc = " * Neon intrinsic unsafe"]
62552#[inline(always)]
62553#[target_feature(enable = "neon")]
62554#[cfg(target_arch = "arm")]
62555#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62556#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
62557#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62558#[cfg(not(target_arch = "arm64ec"))]
62559#[cfg_attr(test, assert_instr(vst1))]
62560pub unsafe fn vst1_f16_x4(a: *mut f16, b: float16x4x4_t) {
62561 unsafe extern "unadjusted" {
62562 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4f16")]
62563 fn _vst1_f16_x4(
62564 ptr: *mut f16,
62565 a: float16x4_t,
62566 b: float16x4_t,
62567 c: float16x4_t,
62568 d: float16x4_t,
62569 );
62570 }
62571 _vst1_f16_x4(a, b.0, b.1, b.2, b.3)
62572}
62573#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62574#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x4)"]
62575#[doc = "## Safety"]
62576#[doc = " * Neon intrinsic unsafe"]
62577#[inline(always)]
62578#[target_feature(enable = "neon")]
62579#[cfg(target_arch = "arm")]
62580#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62581#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
62582#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62583#[cfg(not(target_arch = "arm64ec"))]
62584#[cfg_attr(test, assert_instr(vst1))]
62585pub unsafe fn vst1q_f16_x4(a: *mut f16, b: float16x8x4_t) {
62586 unsafe extern "unadjusted" {
62587 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8f16")]
62588 fn _vst1q_f16_x4(
62589 ptr: *mut f16,
62590 a: float16x8_t,
62591 b: float16x8_t,
62592 c: float16x8_t,
62593 d: float16x8_t,
62594 );
62595 }
62596 _vst1q_f16_x4(a, b.0, b.1, b.2, b.3)
62597}
62598#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62599#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f16_x4)"]
62600#[doc = "## Safety"]
62601#[doc = " * Neon intrinsic unsafe"]
62602#[inline(always)]
62603#[cfg(not(target_arch = "arm"))]
62604#[cfg_attr(test, assert_instr(st1))]
62605#[target_feature(enable = "neon,fp16")]
62606#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62607#[cfg(not(target_arch = "arm64ec"))]
62608pub unsafe fn vst1_f16_x4(a: *mut f16, b: float16x4x4_t) {
62609 unsafe extern "unadjusted" {
62610 #[cfg_attr(
62611 any(target_arch = "aarch64", target_arch = "arm64ec"),
62612 link_name = "llvm.aarch64.neon.st1x4.v4f16.p0"
62613 )]
62614 fn _vst1_f16_x4(
62615 a: float16x4_t,
62616 b: float16x4_t,
62617 c: float16x4_t,
62618 d: float16x4_t,
62619 ptr: *mut f16,
62620 );
62621 }
62622 _vst1_f16_x4(b.0, b.1, b.2, b.3, a)
62623}
62624#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62625#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f16_x4)"]
62626#[doc = "## Safety"]
62627#[doc = " * Neon intrinsic unsafe"]
62628#[inline(always)]
62629#[cfg(not(target_arch = "arm"))]
62630#[cfg_attr(test, assert_instr(st1))]
62631#[target_feature(enable = "neon,fp16")]
62632#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62633#[cfg(not(target_arch = "arm64ec"))]
62634pub unsafe fn vst1q_f16_x4(a: *mut f16, b: float16x8x4_t) {
62635 unsafe extern "unadjusted" {
62636 #[cfg_attr(
62637 any(target_arch = "aarch64", target_arch = "arm64ec"),
62638 link_name = "llvm.aarch64.neon.st1x4.v8f16.p0"
62639 )]
62640 fn _vst1q_f16_x4(
62641 a: float16x8_t,
62642 b: float16x8_t,
62643 c: float16x8_t,
62644 d: float16x8_t,
62645 ptr: *mut f16,
62646 );
62647 }
62648 _vst1q_f16_x4(b.0, b.1, b.2, b.3, a)
62649}
62650#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32)"]
62652#[doc = "## Safety"]
62653#[doc = " * Neon intrinsic unsafe"]
62654#[inline(always)]
62655#[target_feature(enable = "neon")]
62656#[cfg(target_arch = "arm")]
62657#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62658#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62659#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62660pub unsafe fn vst1_f32(ptr: *mut f32, a: float32x2_t) {
62661 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
62662 vst1_v2f32::<ALIGN>(ptr as *const i8, transmute(a))
62663}
62664#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32)"]
62666#[doc = "## Safety"]
62667#[doc = " * Neon intrinsic unsafe"]
62668#[inline(always)]
62669#[target_feature(enable = "neon")]
62670#[cfg(target_arch = "arm")]
62671#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62672#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62673#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62674pub unsafe fn vst1q_f32(ptr: *mut f32, a: float32x4_t) {
62675 const ALIGN: i32 = crate::mem::align_of::<f32>() as i32;
62676 vst1q_v4f32::<ALIGN>(ptr as *const i8, transmute(a))
62677}
62678#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62679#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8)"]
62680#[doc = "## Safety"]
62681#[doc = " * Neon intrinsic unsafe"]
62682#[inline(always)]
62683#[target_feature(enable = "neon")]
62684#[cfg(target_arch = "arm")]
62685#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62686#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62687#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
62688pub unsafe fn vst1_s8(ptr: *mut i8, a: int8x8_t) {
62689 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
62690 vst1_v8i8::<ALIGN>(ptr as *const i8, a)
62691}
62692#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8)"]
62694#[doc = "## Safety"]
62695#[doc = " * Neon intrinsic unsafe"]
62696#[inline(always)]
62697#[target_feature(enable = "neon")]
62698#[cfg(target_arch = "arm")]
62699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62700#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62701#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
62702pub unsafe fn vst1q_s8(ptr: *mut i8, a: int8x16_t) {
62703 const ALIGN: i32 = crate::mem::align_of::<i8>() as i32;
62704 vst1q_v16i8::<ALIGN>(ptr as *const i8, a)
62705}
62706#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62707#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16)"]
62708#[doc = "## Safety"]
62709#[doc = " * Neon intrinsic unsafe"]
62710#[inline(always)]
62711#[target_feature(enable = "neon")]
62712#[cfg(target_arch = "arm")]
62713#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62714#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62715#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62716pub unsafe fn vst1_s16(ptr: *mut i16, a: int16x4_t) {
62717 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
62718 vst1_v4i16::<ALIGN>(ptr as *const i8, a)
62719}
62720#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62721#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16)"]
62722#[doc = "## Safety"]
62723#[doc = " * Neon intrinsic unsafe"]
62724#[inline(always)]
62725#[target_feature(enable = "neon")]
62726#[cfg(target_arch = "arm")]
62727#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62728#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62729#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62730pub unsafe fn vst1q_s16(ptr: *mut i16, a: int16x8_t) {
62731 const ALIGN: i32 = crate::mem::align_of::<i16>() as i32;
62732 vst1q_v8i16::<ALIGN>(ptr as *const i8, a)
62733}
62734#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62735#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32)"]
62736#[doc = "## Safety"]
62737#[doc = " * Neon intrinsic unsafe"]
62738#[inline(always)]
62739#[target_feature(enable = "neon")]
62740#[cfg(target_arch = "arm")]
62741#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62742#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62743#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62744pub unsafe fn vst1_s32(ptr: *mut i32, a: int32x2_t) {
62745 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
62746 vst1_v2i32::<ALIGN>(ptr as *const i8, a)
62747}
62748#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62749#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32)"]
62750#[doc = "## Safety"]
62751#[doc = " * Neon intrinsic unsafe"]
62752#[inline(always)]
62753#[target_feature(enable = "neon")]
62754#[cfg(target_arch = "arm")]
62755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62756#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62757#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62758pub unsafe fn vst1q_s32(ptr: *mut i32, a: int32x4_t) {
62759 const ALIGN: i32 = crate::mem::align_of::<i32>() as i32;
62760 vst1q_v4i32::<ALIGN>(ptr as *const i8, a)
62761}
62762#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62763#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64)"]
62764#[doc = "## Safety"]
62765#[doc = " * Neon intrinsic unsafe"]
62766#[inline(always)]
62767#[target_feature(enable = "neon")]
62768#[cfg(target_arch = "arm")]
62769#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62770#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62771#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
62772pub unsafe fn vst1_s64(ptr: *mut i64, a: int64x1_t) {
62773 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
62774 vst1_v1i64::<ALIGN>(ptr as *const i8, a)
62775}
62776#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64)"]
62778#[doc = "## Safety"]
62779#[doc = " * Neon intrinsic unsafe"]
62780#[inline(always)]
62781#[target_feature(enable = "neon")]
62782#[cfg(target_arch = "arm")]
62783#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62784#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62785#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
62786pub unsafe fn vst1q_s64(ptr: *mut i64, a: int64x2_t) {
62787 const ALIGN: i32 = crate::mem::align_of::<i64>() as i32;
62788 vst1q_v2i64::<ALIGN>(ptr as *const i8, a)
62789}
62790#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62791#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8)"]
62792#[doc = "## Safety"]
62793#[doc = " * Neon intrinsic unsafe"]
62794#[inline(always)]
62795#[target_feature(enable = "neon")]
62796#[cfg(target_arch = "arm")]
62797#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62798#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62799#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
62800pub unsafe fn vst1_u8(ptr: *mut u8, a: uint8x8_t) {
62801 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
62802 vst1_v8i8::<ALIGN>(ptr as *const i8, transmute(a))
62803}
62804#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62805#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8)"]
62806#[doc = "## Safety"]
62807#[doc = " * Neon intrinsic unsafe"]
62808#[inline(always)]
62809#[target_feature(enable = "neon")]
62810#[cfg(target_arch = "arm")]
62811#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62812#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62813#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
62814pub unsafe fn vst1q_u8(ptr: *mut u8, a: uint8x16_t) {
62815 const ALIGN: i32 = crate::mem::align_of::<u8>() as i32;
62816 vst1q_v16i8::<ALIGN>(ptr as *const i8, transmute(a))
62817}
62818#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16)"]
62820#[doc = "## Safety"]
62821#[doc = " * Neon intrinsic unsafe"]
62822#[inline(always)]
62823#[target_feature(enable = "neon")]
62824#[cfg(target_arch = "arm")]
62825#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62826#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62827#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62828pub unsafe fn vst1_u16(ptr: *mut u16, a: uint16x4_t) {
62829 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
62830 vst1_v4i16::<ALIGN>(ptr as *const i8, transmute(a))
62831}
62832#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62833#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16)"]
62834#[doc = "## Safety"]
62835#[doc = " * Neon intrinsic unsafe"]
62836#[inline(always)]
62837#[target_feature(enable = "neon")]
62838#[cfg(target_arch = "arm")]
62839#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62840#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62841#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62842pub unsafe fn vst1q_u16(ptr: *mut u16, a: uint16x8_t) {
62843 const ALIGN: i32 = crate::mem::align_of::<u16>() as i32;
62844 vst1q_v8i16::<ALIGN>(ptr as *const i8, transmute(a))
62845}
62846#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62847#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32)"]
62848#[doc = "## Safety"]
62849#[doc = " * Neon intrinsic unsafe"]
62850#[inline(always)]
62851#[target_feature(enable = "neon")]
62852#[cfg(target_arch = "arm")]
62853#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62854#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62855#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62856pub unsafe fn vst1_u32(ptr: *mut u32, a: uint32x2_t) {
62857 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
62858 vst1_v2i32::<ALIGN>(ptr as *const i8, transmute(a))
62859}
62860#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62861#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32)"]
62862#[doc = "## Safety"]
62863#[doc = " * Neon intrinsic unsafe"]
62864#[inline(always)]
62865#[target_feature(enable = "neon")]
62866#[cfg(target_arch = "arm")]
62867#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62868#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62869#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32"))]
62870pub unsafe fn vst1q_u32(ptr: *mut u32, a: uint32x4_t) {
62871 const ALIGN: i32 = crate::mem::align_of::<u32>() as i32;
62872 vst1q_v4i32::<ALIGN>(ptr as *const i8, transmute(a))
62873}
62874#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62875#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64)"]
62876#[doc = "## Safety"]
62877#[doc = " * Neon intrinsic unsafe"]
62878#[inline(always)]
62879#[target_feature(enable = "neon")]
62880#[cfg(target_arch = "arm")]
62881#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62882#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62883#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
62884pub unsafe fn vst1_u64(ptr: *mut u64, a: uint64x1_t) {
62885 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
62886 vst1_v1i64::<ALIGN>(ptr as *const i8, transmute(a))
62887}
62888#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62889#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64)"]
62890#[doc = "## Safety"]
62891#[doc = " * Neon intrinsic unsafe"]
62892#[inline(always)]
62893#[target_feature(enable = "neon")]
62894#[cfg(target_arch = "arm")]
62895#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62896#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62897#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
62898pub unsafe fn vst1q_u64(ptr: *mut u64, a: uint64x2_t) {
62899 const ALIGN: i32 = crate::mem::align_of::<u64>() as i32;
62900 vst1q_v2i64::<ALIGN>(ptr as *const i8, transmute(a))
62901}
62902#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8)"]
62904#[doc = "## Safety"]
62905#[doc = " * Neon intrinsic unsafe"]
62906#[inline(always)]
62907#[target_feature(enable = "neon")]
62908#[cfg(target_arch = "arm")]
62909#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62910#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62911#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
62912pub unsafe fn vst1_p8(ptr: *mut p8, a: poly8x8_t) {
62913 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
62914 vst1_v8i8::<ALIGN>(ptr as *const i8, transmute(a))
62915}
62916#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62917#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8)"]
62918#[doc = "## Safety"]
62919#[doc = " * Neon intrinsic unsafe"]
62920#[inline(always)]
62921#[target_feature(enable = "neon")]
62922#[cfg(target_arch = "arm")]
62923#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62924#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62925#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8"))]
62926pub unsafe fn vst1q_p8(ptr: *mut p8, a: poly8x16_t) {
62927 const ALIGN: i32 = crate::mem::align_of::<p8>() as i32;
62928 vst1q_v16i8::<ALIGN>(ptr as *const i8, transmute(a))
62929}
62930#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16)"]
62932#[doc = "## Safety"]
62933#[doc = " * Neon intrinsic unsafe"]
62934#[inline(always)]
62935#[target_feature(enable = "neon")]
62936#[cfg(target_arch = "arm")]
62937#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62938#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62939#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62940pub unsafe fn vst1_p16(ptr: *mut p16, a: poly16x4_t) {
62941 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
62942 vst1_v4i16::<ALIGN>(ptr as *const i8, transmute(a))
62943}
62944#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16)"]
62946#[doc = "## Safety"]
62947#[doc = " * Neon intrinsic unsafe"]
62948#[inline(always)]
62949#[target_feature(enable = "neon")]
62950#[cfg(target_arch = "arm")]
62951#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62952#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62953#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
62954pub unsafe fn vst1q_p16(ptr: *mut p16, a: poly16x8_t) {
62955 const ALIGN: i32 = crate::mem::align_of::<p16>() as i32;
62956 vst1q_v8i16::<ALIGN>(ptr as *const i8, transmute(a))
62957}
62958#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62959#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64)"]
62960#[doc = "## Safety"]
62961#[doc = " * Neon intrinsic unsafe"]
62962#[inline(always)]
62963#[target_feature(enable = "neon")]
62964#[cfg(target_arch = "arm")]
62965#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62966#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62967#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
62968pub unsafe fn vst1_p64(ptr: *mut p64, a: poly64x1_t) {
62969 const ALIGN: i32 = crate::mem::align_of::<p64>() as i32;
62970 vst1_v1i64::<ALIGN>(ptr as *const i8, transmute(a))
62971}
62972#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
62973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64)"]
62974#[doc = "## Safety"]
62975#[doc = " * Neon intrinsic unsafe"]
62976#[inline(always)]
62977#[target_feature(enable = "neon")]
62978#[cfg(target_arch = "arm")]
62979#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
62980#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62981#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64"))]
62982pub unsafe fn vst1q_p64(ptr: *mut p64, a: poly64x2_t) {
62983 const ALIGN: i32 = crate::mem::align_of::<p64>() as i32;
62984 vst1q_v2i64::<ALIGN>(ptr as *const i8, transmute(a))
62985}
62986#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
62987#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x2)"]
62988#[doc = "## Safety"]
62989#[doc = " * Neon intrinsic unsafe"]
62990#[inline(always)]
62991#[cfg(target_arch = "arm")]
62992#[target_feature(enable = "neon,v7")]
62993#[cfg_attr(test, assert_instr(vst1))]
62994#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
62995pub unsafe fn vst1_f32_x2(a: *mut f32, b: float32x2x2_t) {
62996 unsafe extern "unadjusted" {
62997 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2f32.p0")]
62998 fn _vst1_f32_x2(ptr: *mut f32, a: float32x2_t, b: float32x2_t);
62999 }
63000 _vst1_f32_x2(a, b.0, b.1)
63001}
63002#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x2)"]
63004#[doc = "## Safety"]
63005#[doc = " * Neon intrinsic unsafe"]
63006#[inline(always)]
63007#[cfg(target_arch = "arm")]
63008#[target_feature(enable = "neon,v7")]
63009#[cfg_attr(test, assert_instr(vst1))]
63010#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63011pub unsafe fn vst1q_f32_x2(a: *mut f32, b: float32x4x2_t) {
63012 unsafe extern "unadjusted" {
63013 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4f32.p0")]
63014 fn _vst1q_f32_x2(ptr: *mut f32, a: float32x4_t, b: float32x4_t);
63015 }
63016 _vst1q_f32_x2(a, b.0, b.1)
63017}
63018#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x2)"]
63020#[doc = "## Safety"]
63021#[doc = " * Neon intrinsic unsafe"]
63022#[inline(always)]
63023#[target_feature(enable = "neon")]
63024#[cfg(not(target_arch = "arm"))]
63025#[cfg_attr(test, assert_instr(st1))]
63026#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63027pub unsafe fn vst1_f32_x2(a: *mut f32, b: float32x2x2_t) {
63028 unsafe extern "unadjusted" {
63029 #[cfg_attr(
63030 any(target_arch = "aarch64", target_arch = "arm64ec"),
63031 link_name = "llvm.aarch64.neon.st1x2.v2f32.p0"
63032 )]
63033 fn _vst1_f32_x2(a: float32x2_t, b: float32x2_t, ptr: *mut f32);
63034 }
63035 _vst1_f32_x2(b.0, b.1, a)
63036}
63037#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63038#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x2)"]
63039#[doc = "## Safety"]
63040#[doc = " * Neon intrinsic unsafe"]
63041#[inline(always)]
63042#[target_feature(enable = "neon")]
63043#[cfg(not(target_arch = "arm"))]
63044#[cfg_attr(test, assert_instr(st1))]
63045#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63046pub unsafe fn vst1q_f32_x2(a: *mut f32, b: float32x4x2_t) {
63047 unsafe extern "unadjusted" {
63048 #[cfg_attr(
63049 any(target_arch = "aarch64", target_arch = "arm64ec"),
63050 link_name = "llvm.aarch64.neon.st1x2.v4f32.p0"
63051 )]
63052 fn _vst1q_f32_x2(a: float32x4_t, b: float32x4_t, ptr: *mut f32);
63053 }
63054 _vst1q_f32_x2(b.0, b.1, a)
63055}
63056#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63057#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x3)"]
63058#[doc = "## Safety"]
63059#[doc = " * Neon intrinsic unsafe"]
63060#[inline(always)]
63061#[target_feature(enable = "neon")]
63062#[cfg(not(target_arch = "arm"))]
63063#[cfg_attr(test, assert_instr(st1))]
63064#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63065pub unsafe fn vst1_f32_x3(a: *mut f32, b: float32x2x3_t) {
63066 unsafe extern "unadjusted" {
63067 #[cfg_attr(
63068 any(target_arch = "aarch64", target_arch = "arm64ec"),
63069 link_name = "llvm.aarch64.neon.st1x3.v2f32.p0"
63070 )]
63071 fn _vst1_f32_x3(a: float32x2_t, b: float32x2_t, c: float32x2_t, ptr: *mut f32);
63072 }
63073 _vst1_f32_x3(b.0, b.1, b.2, a)
63074}
63075#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x3)"]
63077#[doc = "## Safety"]
63078#[doc = " * Neon intrinsic unsafe"]
63079#[inline(always)]
63080#[target_feature(enable = "neon")]
63081#[cfg(not(target_arch = "arm"))]
63082#[cfg_attr(test, assert_instr(st1))]
63083#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63084pub unsafe fn vst1q_f32_x3(a: *mut f32, b: float32x4x3_t) {
63085 unsafe extern "unadjusted" {
63086 #[cfg_attr(
63087 any(target_arch = "aarch64", target_arch = "arm64ec"),
63088 link_name = "llvm.aarch64.neon.st1x3.v4f32.p0"
63089 )]
63090 fn _vst1q_f32_x3(a: float32x4_t, b: float32x4_t, c: float32x4_t, ptr: *mut f32);
63091 }
63092 _vst1q_f32_x3(b.0, b.1, b.2, a)
63093}
63094#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63095#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x4)"]
63096#[doc = "## Safety"]
63097#[doc = " * Neon intrinsic unsafe"]
63098#[inline(always)]
63099#[cfg(target_arch = "arm")]
63100#[target_feature(enable = "neon,v7")]
63101#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63102#[cfg_attr(test, assert_instr(vst1))]
63103pub unsafe fn vst1_f32_x4(a: *mut f32, b: float32x2x4_t) {
63104 unsafe extern "unadjusted" {
63105 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2f32.p0")]
63106 fn _vst1_f32_x4(
63107 ptr: *mut f32,
63108 a: float32x2_t,
63109 b: float32x2_t,
63110 c: float32x2_t,
63111 d: float32x2_t,
63112 );
63113 }
63114 _vst1_f32_x4(a, b.0, b.1, b.2, b.3)
63115}
63116#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63117#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x4)"]
63118#[doc = "## Safety"]
63119#[doc = " * Neon intrinsic unsafe"]
63120#[inline(always)]
63121#[cfg(target_arch = "arm")]
63122#[target_feature(enable = "neon,v7")]
63123#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
63124#[cfg_attr(test, assert_instr(vst1))]
63125pub unsafe fn vst1q_f32_x4(a: *mut f32, b: float32x4x4_t) {
63126 unsafe extern "unadjusted" {
63127 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4f32.p0")]
63128 fn _vst1q_f32_x4(
63129 ptr: *mut f32,
63130 a: float32x4_t,
63131 b: float32x4_t,
63132 c: float32x4_t,
63133 d: float32x4_t,
63134 );
63135 }
63136 _vst1q_f32_x4(a, b.0, b.1, b.2, b.3)
63137}
63138#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63139#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_f32_x4)"]
63140#[doc = "## Safety"]
63141#[doc = " * Neon intrinsic unsafe"]
63142#[inline(always)]
63143#[target_feature(enable = "neon")]
63144#[cfg(not(target_arch = "arm"))]
63145#[cfg_attr(test, assert_instr(st1))]
63146#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63147pub unsafe fn vst1_f32_x4(a: *mut f32, b: float32x2x4_t) {
63148 unsafe extern "unadjusted" {
63149 #[cfg_attr(
63150 any(target_arch = "aarch64", target_arch = "arm64ec"),
63151 link_name = "llvm.aarch64.neon.st1x4.v2f32.p0"
63152 )]
63153 fn _vst1_f32_x4(
63154 a: float32x2_t,
63155 b: float32x2_t,
63156 c: float32x2_t,
63157 d: float32x2_t,
63158 ptr: *mut f32,
63159 );
63160 }
63161 _vst1_f32_x4(b.0, b.1, b.2, b.3, a)
63162}
63163#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63164#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_f32_x4)"]
63165#[doc = "## Safety"]
63166#[doc = " * Neon intrinsic unsafe"]
63167#[inline(always)]
63168#[target_feature(enable = "neon")]
63169#[cfg(not(target_arch = "arm"))]
63170#[cfg_attr(test, assert_instr(st1))]
63171#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63172pub unsafe fn vst1q_f32_x4(a: *mut f32, b: float32x4x4_t) {
63173 unsafe extern "unadjusted" {
63174 #[cfg_attr(
63175 any(target_arch = "aarch64", target_arch = "arm64ec"),
63176 link_name = "llvm.aarch64.neon.st1x4.v4f32.p0"
63177 )]
63178 fn _vst1q_f32_x4(
63179 a: float32x4_t,
63180 b: float32x4_t,
63181 c: float32x4_t,
63182 d: float32x4_t,
63183 ptr: *mut f32,
63184 );
63185 }
63186 _vst1q_f32_x4(b.0, b.1, b.2, b.3, a)
63187}
63188#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63189#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_f16)"]
63190#[doc = "## Safety"]
63191#[doc = " * Neon intrinsic unsafe"]
63192#[inline(always)]
63193#[target_feature(enable = "neon")]
63194#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63195#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63196#[cfg_attr(
63197 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63198 assert_instr(nop, LANE = 0)
63199)]
63200#[rustc_legacy_const_generics(2)]
63201#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
63202#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
63203#[cfg(not(target_arch = "arm64ec"))]
63204pub unsafe fn vst1_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4_t) {
63205 static_assert_uimm_bits!(LANE, 2);
63206 *a = simd_extract!(b, LANE as u32);
63207}
63208#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63209#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_f16)"]
63210#[doc = "## Safety"]
63211#[doc = " * Neon intrinsic unsafe"]
63212#[inline(always)]
63213#[target_feature(enable = "neon")]
63214#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63215#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63216#[cfg_attr(
63217 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63218 assert_instr(nop, LANE = 0)
63219)]
63220#[rustc_legacy_const_generics(2)]
63221#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
63222#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
63223#[cfg(not(target_arch = "arm64ec"))]
63224pub unsafe fn vst1q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8_t) {
63225 static_assert_uimm_bits!(LANE, 3);
63226 *a = simd_extract!(b, LANE as u32);
63227}
63228#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63229#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_f32)"]
63230#[doc = "## Safety"]
63231#[doc = " * Neon intrinsic unsafe"]
63232#[inline(always)]
63233#[target_feature(enable = "neon")]
63234#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63235#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63236#[cfg_attr(
63237 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63238 assert_instr(nop, LANE = 0)
63239)]
63240#[rustc_legacy_const_generics(2)]
63241#[cfg_attr(
63242 not(target_arch = "arm"),
63243 stable(feature = "neon_intrinsics", since = "1.59.0")
63244)]
63245#[cfg_attr(
63246 target_arch = "arm",
63247 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63248)]
63249pub unsafe fn vst1_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2_t) {
63250 static_assert_uimm_bits!(LANE, 1);
63251 *a = simd_extract!(b, LANE as u32);
63252}
63253#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63254#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_f32)"]
63255#[doc = "## Safety"]
63256#[doc = " * Neon intrinsic unsafe"]
63257#[inline(always)]
63258#[target_feature(enable = "neon")]
63259#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63260#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63261#[cfg_attr(
63262 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63263 assert_instr(nop, LANE = 0)
63264)]
63265#[rustc_legacy_const_generics(2)]
63266#[cfg_attr(
63267 not(target_arch = "arm"),
63268 stable(feature = "neon_intrinsics", since = "1.59.0")
63269)]
63270#[cfg_attr(
63271 target_arch = "arm",
63272 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63273)]
63274pub unsafe fn vst1q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4_t) {
63275 static_assert_uimm_bits!(LANE, 2);
63276 *a = simd_extract!(b, LANE as u32);
63277}
63278#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s8)"]
63280#[doc = "## Safety"]
63281#[doc = " * Neon intrinsic unsafe"]
63282#[inline(always)]
63283#[target_feature(enable = "neon")]
63284#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63285#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63286#[cfg_attr(
63287 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63288 assert_instr(nop, LANE = 0)
63289)]
63290#[rustc_legacy_const_generics(2)]
63291#[cfg_attr(
63292 not(target_arch = "arm"),
63293 stable(feature = "neon_intrinsics", since = "1.59.0")
63294)]
63295#[cfg_attr(
63296 target_arch = "arm",
63297 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63298)]
63299pub unsafe fn vst1_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8_t) {
63300 static_assert_uimm_bits!(LANE, 3);
63301 *a = simd_extract!(b, LANE as u32);
63302}
63303#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s8)"]
63305#[doc = "## Safety"]
63306#[doc = " * Neon intrinsic unsafe"]
63307#[inline(always)]
63308#[target_feature(enable = "neon")]
63309#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63310#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63311#[cfg_attr(
63312 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63313 assert_instr(nop, LANE = 0)
63314)]
63315#[rustc_legacy_const_generics(2)]
63316#[cfg_attr(
63317 not(target_arch = "arm"),
63318 stable(feature = "neon_intrinsics", since = "1.59.0")
63319)]
63320#[cfg_attr(
63321 target_arch = "arm",
63322 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63323)]
63324pub unsafe fn vst1q_lane_s8<const LANE: i32>(a: *mut i8, b: int8x16_t) {
63325 static_assert_uimm_bits!(LANE, 4);
63326 *a = simd_extract!(b, LANE as u32);
63327}
63328#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s16)"]
63330#[doc = "## Safety"]
63331#[doc = " * Neon intrinsic unsafe"]
63332#[inline(always)]
63333#[target_feature(enable = "neon")]
63334#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63335#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63336#[cfg_attr(
63337 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63338 assert_instr(nop, LANE = 0)
63339)]
63340#[rustc_legacy_const_generics(2)]
63341#[cfg_attr(
63342 not(target_arch = "arm"),
63343 stable(feature = "neon_intrinsics", since = "1.59.0")
63344)]
63345#[cfg_attr(
63346 target_arch = "arm",
63347 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63348)]
63349pub unsafe fn vst1_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4_t) {
63350 static_assert_uimm_bits!(LANE, 2);
63351 *a = simd_extract!(b, LANE as u32);
63352}
63353#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63354#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s16)"]
63355#[doc = "## Safety"]
63356#[doc = " * Neon intrinsic unsafe"]
63357#[inline(always)]
63358#[target_feature(enable = "neon")]
63359#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63360#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63361#[cfg_attr(
63362 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63363 assert_instr(nop, LANE = 0)
63364)]
63365#[rustc_legacy_const_generics(2)]
63366#[cfg_attr(
63367 not(target_arch = "arm"),
63368 stable(feature = "neon_intrinsics", since = "1.59.0")
63369)]
63370#[cfg_attr(
63371 target_arch = "arm",
63372 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63373)]
63374pub unsafe fn vst1q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8_t) {
63375 static_assert_uimm_bits!(LANE, 3);
63376 *a = simd_extract!(b, LANE as u32);
63377}
63378#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63379#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s32)"]
63380#[doc = "## Safety"]
63381#[doc = " * Neon intrinsic unsafe"]
63382#[inline(always)]
63383#[target_feature(enable = "neon")]
63384#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63385#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63386#[cfg_attr(
63387 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63388 assert_instr(nop, LANE = 0)
63389)]
63390#[rustc_legacy_const_generics(2)]
63391#[cfg_attr(
63392 not(target_arch = "arm"),
63393 stable(feature = "neon_intrinsics", since = "1.59.0")
63394)]
63395#[cfg_attr(
63396 target_arch = "arm",
63397 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63398)]
63399pub unsafe fn vst1_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2_t) {
63400 static_assert_uimm_bits!(LANE, 1);
63401 *a = simd_extract!(b, LANE as u32);
63402}
63403#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s32)"]
63405#[doc = "## Safety"]
63406#[doc = " * Neon intrinsic unsafe"]
63407#[inline(always)]
63408#[target_feature(enable = "neon")]
63409#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63410#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63411#[cfg_attr(
63412 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63413 assert_instr(nop, LANE = 0)
63414)]
63415#[rustc_legacy_const_generics(2)]
63416#[cfg_attr(
63417 not(target_arch = "arm"),
63418 stable(feature = "neon_intrinsics", since = "1.59.0")
63419)]
63420#[cfg_attr(
63421 target_arch = "arm",
63422 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63423)]
63424pub unsafe fn vst1q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4_t) {
63425 static_assert_uimm_bits!(LANE, 2);
63426 *a = simd_extract!(b, LANE as u32);
63427}
63428#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_s64)"]
63430#[doc = "## Safety"]
63431#[doc = " * Neon intrinsic unsafe"]
63432#[inline(always)]
63433#[target_feature(enable = "neon")]
63434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63435#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63436#[cfg_attr(
63437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63438 assert_instr(nop, LANE = 0)
63439)]
63440#[rustc_legacy_const_generics(2)]
63441#[cfg_attr(
63442 not(target_arch = "arm"),
63443 stable(feature = "neon_intrinsics", since = "1.59.0")
63444)]
63445#[cfg_attr(
63446 target_arch = "arm",
63447 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63448)]
63449pub unsafe fn vst1q_lane_s64<const LANE: i32>(a: *mut i64, b: int64x2_t) {
63450 static_assert_uimm_bits!(LANE, 1);
63451 *a = simd_extract!(b, LANE as u32);
63452}
63453#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u8)"]
63455#[doc = "## Safety"]
63456#[doc = " * Neon intrinsic unsafe"]
63457#[inline(always)]
63458#[target_feature(enable = "neon")]
63459#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63460#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63461#[cfg_attr(
63462 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63463 assert_instr(nop, LANE = 0)
63464)]
63465#[rustc_legacy_const_generics(2)]
63466#[cfg_attr(
63467 not(target_arch = "arm"),
63468 stable(feature = "neon_intrinsics", since = "1.59.0")
63469)]
63470#[cfg_attr(
63471 target_arch = "arm",
63472 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63473)]
63474pub unsafe fn vst1_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8_t) {
63475 static_assert_uimm_bits!(LANE, 3);
63476 *a = simd_extract!(b, LANE as u32);
63477}
63478#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63479#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u8)"]
63480#[doc = "## Safety"]
63481#[doc = " * Neon intrinsic unsafe"]
63482#[inline(always)]
63483#[target_feature(enable = "neon")]
63484#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63485#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63486#[cfg_attr(
63487 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63488 assert_instr(nop, LANE = 0)
63489)]
63490#[rustc_legacy_const_generics(2)]
63491#[cfg_attr(
63492 not(target_arch = "arm"),
63493 stable(feature = "neon_intrinsics", since = "1.59.0")
63494)]
63495#[cfg_attr(
63496 target_arch = "arm",
63497 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63498)]
63499pub unsafe fn vst1q_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x16_t) {
63500 static_assert_uimm_bits!(LANE, 4);
63501 *a = simd_extract!(b, LANE as u32);
63502}
63503#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63504#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u16)"]
63505#[doc = "## Safety"]
63506#[doc = " * Neon intrinsic unsafe"]
63507#[inline(always)]
63508#[target_feature(enable = "neon")]
63509#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63510#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63511#[cfg_attr(
63512 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63513 assert_instr(nop, LANE = 0)
63514)]
63515#[rustc_legacy_const_generics(2)]
63516#[cfg_attr(
63517 not(target_arch = "arm"),
63518 stable(feature = "neon_intrinsics", since = "1.59.0")
63519)]
63520#[cfg_attr(
63521 target_arch = "arm",
63522 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63523)]
63524pub unsafe fn vst1_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4_t) {
63525 static_assert_uimm_bits!(LANE, 2);
63526 *a = simd_extract!(b, LANE as u32);
63527}
63528#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u16)"]
63530#[doc = "## Safety"]
63531#[doc = " * Neon intrinsic unsafe"]
63532#[inline(always)]
63533#[target_feature(enable = "neon")]
63534#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63535#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63536#[cfg_attr(
63537 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63538 assert_instr(nop, LANE = 0)
63539)]
63540#[rustc_legacy_const_generics(2)]
63541#[cfg_attr(
63542 not(target_arch = "arm"),
63543 stable(feature = "neon_intrinsics", since = "1.59.0")
63544)]
63545#[cfg_attr(
63546 target_arch = "arm",
63547 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63548)]
63549pub unsafe fn vst1q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8_t) {
63550 static_assert_uimm_bits!(LANE, 3);
63551 *a = simd_extract!(b, LANE as u32);
63552}
63553#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63554#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u32)"]
63555#[doc = "## Safety"]
63556#[doc = " * Neon intrinsic unsafe"]
63557#[inline(always)]
63558#[target_feature(enable = "neon")]
63559#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63560#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63561#[cfg_attr(
63562 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63563 assert_instr(nop, LANE = 0)
63564)]
63565#[rustc_legacy_const_generics(2)]
63566#[cfg_attr(
63567 not(target_arch = "arm"),
63568 stable(feature = "neon_intrinsics", since = "1.59.0")
63569)]
63570#[cfg_attr(
63571 target_arch = "arm",
63572 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63573)]
63574pub unsafe fn vst1_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2_t) {
63575 static_assert_uimm_bits!(LANE, 1);
63576 *a = simd_extract!(b, LANE as u32);
63577}
63578#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63579#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u32)"]
63580#[doc = "## Safety"]
63581#[doc = " * Neon intrinsic unsafe"]
63582#[inline(always)]
63583#[target_feature(enable = "neon")]
63584#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63585#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63586#[cfg_attr(
63587 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63588 assert_instr(nop, LANE = 0)
63589)]
63590#[rustc_legacy_const_generics(2)]
63591#[cfg_attr(
63592 not(target_arch = "arm"),
63593 stable(feature = "neon_intrinsics", since = "1.59.0")
63594)]
63595#[cfg_attr(
63596 target_arch = "arm",
63597 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63598)]
63599pub unsafe fn vst1q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4_t) {
63600 static_assert_uimm_bits!(LANE, 2);
63601 *a = simd_extract!(b, LANE as u32);
63602}
63603#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63604#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_u64)"]
63605#[doc = "## Safety"]
63606#[doc = " * Neon intrinsic unsafe"]
63607#[inline(always)]
63608#[target_feature(enable = "neon")]
63609#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63610#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63611#[cfg_attr(
63612 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63613 assert_instr(nop, LANE = 0)
63614)]
63615#[rustc_legacy_const_generics(2)]
63616#[cfg_attr(
63617 not(target_arch = "arm"),
63618 stable(feature = "neon_intrinsics", since = "1.59.0")
63619)]
63620#[cfg_attr(
63621 target_arch = "arm",
63622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63623)]
63624pub unsafe fn vst1q_lane_u64<const LANE: i32>(a: *mut u64, b: uint64x2_t) {
63625 static_assert_uimm_bits!(LANE, 1);
63626 *a = simd_extract!(b, LANE as u32);
63627}
63628#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p8)"]
63630#[doc = "## Safety"]
63631#[doc = " * Neon intrinsic unsafe"]
63632#[inline(always)]
63633#[target_feature(enable = "neon")]
63634#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63635#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63636#[cfg_attr(
63637 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63638 assert_instr(nop, LANE = 0)
63639)]
63640#[rustc_legacy_const_generics(2)]
63641#[cfg_attr(
63642 not(target_arch = "arm"),
63643 stable(feature = "neon_intrinsics", since = "1.59.0")
63644)]
63645#[cfg_attr(
63646 target_arch = "arm",
63647 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63648)]
63649pub unsafe fn vst1_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8_t) {
63650 static_assert_uimm_bits!(LANE, 3);
63651 *a = simd_extract!(b, LANE as u32);
63652}
63653#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63654#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p8)"]
63655#[doc = "## Safety"]
63656#[doc = " * Neon intrinsic unsafe"]
63657#[inline(always)]
63658#[target_feature(enable = "neon")]
63659#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63660#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63661#[cfg_attr(
63662 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63663 assert_instr(nop, LANE = 0)
63664)]
63665#[rustc_legacy_const_generics(2)]
63666#[cfg_attr(
63667 not(target_arch = "arm"),
63668 stable(feature = "neon_intrinsics", since = "1.59.0")
63669)]
63670#[cfg_attr(
63671 target_arch = "arm",
63672 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63673)]
63674pub unsafe fn vst1q_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x16_t) {
63675 static_assert_uimm_bits!(LANE, 4);
63676 *a = simd_extract!(b, LANE as u32);
63677}
63678#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63679#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p16)"]
63680#[doc = "## Safety"]
63681#[doc = " * Neon intrinsic unsafe"]
63682#[inline(always)]
63683#[target_feature(enable = "neon")]
63684#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63685#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63686#[cfg_attr(
63687 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63688 assert_instr(nop, LANE = 0)
63689)]
63690#[rustc_legacy_const_generics(2)]
63691#[cfg_attr(
63692 not(target_arch = "arm"),
63693 stable(feature = "neon_intrinsics", since = "1.59.0")
63694)]
63695#[cfg_attr(
63696 target_arch = "arm",
63697 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63698)]
63699pub unsafe fn vst1_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4_t) {
63700 static_assert_uimm_bits!(LANE, 2);
63701 *a = simd_extract!(b, LANE as u32);
63702}
63703#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63704#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p16)"]
63705#[doc = "## Safety"]
63706#[doc = " * Neon intrinsic unsafe"]
63707#[inline(always)]
63708#[target_feature(enable = "neon")]
63709#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63710#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63711#[cfg_attr(
63712 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63713 assert_instr(nop, LANE = 0)
63714)]
63715#[rustc_legacy_const_generics(2)]
63716#[cfg_attr(
63717 not(target_arch = "arm"),
63718 stable(feature = "neon_intrinsics", since = "1.59.0")
63719)]
63720#[cfg_attr(
63721 target_arch = "arm",
63722 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63723)]
63724pub unsafe fn vst1q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8_t) {
63725 static_assert_uimm_bits!(LANE, 3);
63726 *a = simd_extract!(b, LANE as u32);
63727}
63728#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63729#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_p64)"]
63730#[doc = "## Safety"]
63731#[doc = " * Neon intrinsic unsafe"]
63732#[inline(always)]
63733#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63734#[target_feature(enable = "neon,aes")]
63735#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63736#[cfg_attr(
63737 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63738 assert_instr(nop, LANE = 0)
63739)]
63740#[rustc_legacy_const_generics(2)]
63741#[cfg_attr(
63742 not(target_arch = "arm"),
63743 stable(feature = "neon_intrinsics", since = "1.59.0")
63744)]
63745#[cfg_attr(
63746 target_arch = "arm",
63747 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63748)]
63749pub unsafe fn vst1_lane_p64<const LANE: i32>(a: *mut p64, b: poly64x1_t) {
63750 static_assert!(LANE == 0);
63751 *a = simd_extract!(b, LANE as u32);
63752}
63753#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_s64)"]
63755#[doc = "## Safety"]
63756#[doc = " * Neon intrinsic unsafe"]
63757#[inline(always)]
63758#[target_feature(enable = "neon")]
63759#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63760#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63761#[cfg_attr(
63762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63763 assert_instr(nop, LANE = 0)
63764)]
63765#[rustc_legacy_const_generics(2)]
63766#[cfg_attr(
63767 not(target_arch = "arm"),
63768 stable(feature = "neon_intrinsics", since = "1.59.0")
63769)]
63770#[cfg_attr(
63771 target_arch = "arm",
63772 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63773)]
63774pub unsafe fn vst1_lane_s64<const LANE: i32>(a: *mut i64, b: int64x1_t) {
63775 static_assert!(LANE == 0);
63776 *a = simd_extract!(b, LANE as u32);
63777}
63778#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63779#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_lane_u64)"]
63780#[doc = "## Safety"]
63781#[doc = " * Neon intrinsic unsafe"]
63782#[inline(always)]
63783#[target_feature(enable = "neon")]
63784#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
63785#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
63786#[cfg_attr(
63787 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63788 assert_instr(nop, LANE = 0)
63789)]
63790#[rustc_legacy_const_generics(2)]
63791#[cfg_attr(
63792 not(target_arch = "arm"),
63793 stable(feature = "neon_intrinsics", since = "1.59.0")
63794)]
63795#[cfg_attr(
63796 target_arch = "arm",
63797 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63798)]
63799pub unsafe fn vst1_lane_u64<const LANE: i32>(a: *mut u64, b: uint64x1_t) {
63800 static_assert!(LANE == 0);
63801 *a = simd_extract!(b, LANE as u32);
63802}
63803#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63804#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x2)"]
63805#[doc = "## Safety"]
63806#[doc = " * Neon intrinsic unsafe"]
63807#[inline(always)]
63808#[target_feature(enable = "neon,aes")]
63809#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63810#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
63811#[cfg_attr(
63812 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63813 assert_instr(st1)
63814)]
63815#[cfg_attr(
63816 not(target_arch = "arm"),
63817 stable(feature = "neon_intrinsics", since = "1.59.0")
63818)]
63819#[cfg_attr(
63820 target_arch = "arm",
63821 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63822)]
63823pub unsafe fn vst1_p64_x2(a: *mut p64, b: poly64x1x2_t) {
63824 vst1_s64_x2(transmute(a), transmute(b))
63825}
63826#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x3)"]
63828#[doc = "## Safety"]
63829#[doc = " * Neon intrinsic unsafe"]
63830#[inline(always)]
63831#[target_feature(enable = "neon,aes")]
63832#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63833#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
63834#[cfg_attr(
63835 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63836 assert_instr(st1)
63837)]
63838#[cfg_attr(
63839 not(target_arch = "arm"),
63840 stable(feature = "neon_intrinsics", since = "1.59.0")
63841)]
63842#[cfg_attr(
63843 target_arch = "arm",
63844 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63845)]
63846pub unsafe fn vst1_p64_x3(a: *mut p64, b: poly64x1x3_t) {
63847 vst1_s64_x3(transmute(a), transmute(b))
63848}
63849#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63850#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p64_x4)"]
63851#[doc = "## Safety"]
63852#[doc = " * Neon intrinsic unsafe"]
63853#[inline(always)]
63854#[target_feature(enable = "neon,aes")]
63855#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63856#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
63857#[cfg_attr(
63858 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63859 assert_instr(st1)
63860)]
63861#[cfg_attr(
63862 not(target_arch = "arm"),
63863 stable(feature = "neon_intrinsics", since = "1.59.0")
63864)]
63865#[cfg_attr(
63866 target_arch = "arm",
63867 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63868)]
63869pub unsafe fn vst1_p64_x4(a: *mut p64, b: poly64x1x4_t) {
63870 vst1_s64_x4(transmute(a), transmute(b))
63871}
63872#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63873#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x2)"]
63874#[doc = "## Safety"]
63875#[doc = " * Neon intrinsic unsafe"]
63876#[inline(always)]
63877#[target_feature(enable = "neon,aes")]
63878#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63879#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
63880#[cfg_attr(
63881 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63882 assert_instr(st1)
63883)]
63884#[cfg_attr(
63885 not(target_arch = "arm"),
63886 stable(feature = "neon_intrinsics", since = "1.59.0")
63887)]
63888#[cfg_attr(
63889 target_arch = "arm",
63890 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63891)]
63892pub unsafe fn vst1q_p64_x2(a: *mut p64, b: poly64x2x2_t) {
63893 vst1q_s64_x2(transmute(a), transmute(b))
63894}
63895#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63896#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x3)"]
63897#[doc = "## Safety"]
63898#[doc = " * Neon intrinsic unsafe"]
63899#[inline(always)]
63900#[target_feature(enable = "neon,aes")]
63901#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63902#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
63903#[cfg_attr(
63904 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63905 assert_instr(st1)
63906)]
63907#[cfg_attr(
63908 not(target_arch = "arm"),
63909 stable(feature = "neon_intrinsics", since = "1.59.0")
63910)]
63911#[cfg_attr(
63912 target_arch = "arm",
63913 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63914)]
63915pub unsafe fn vst1q_p64_x3(a: *mut p64, b: poly64x2x3_t) {
63916 vst1q_s64_x3(transmute(a), transmute(b))
63917}
63918#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
63919#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p64_x4)"]
63920#[doc = "## Safety"]
63921#[doc = " * Neon intrinsic unsafe"]
63922#[inline(always)]
63923#[target_feature(enable = "neon,aes")]
63924#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
63925#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
63926#[cfg_attr(
63927 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
63928 assert_instr(st1)
63929)]
63930#[cfg_attr(
63931 not(target_arch = "arm"),
63932 stable(feature = "neon_intrinsics", since = "1.59.0")
63933)]
63934#[cfg_attr(
63935 target_arch = "arm",
63936 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
63937)]
63938pub unsafe fn vst1q_p64_x4(a: *mut p64, b: poly64x2x4_t) {
63939 vst1q_s64_x4(transmute(a), transmute(b))
63940}
63941#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63942#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x2)"]
63943#[doc = "## Safety"]
63944#[doc = " * Neon intrinsic unsafe"]
63945#[inline(always)]
63946#[target_feature(enable = "neon")]
63947#[cfg(not(target_arch = "arm"))]
63948#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63949#[cfg_attr(test, assert_instr(st1))]
63950pub unsafe fn vst1_s8_x2(a: *mut i8, b: int8x8x2_t) {
63951 unsafe extern "unadjusted" {
63952 #[cfg_attr(
63953 any(target_arch = "aarch64", target_arch = "arm64ec"),
63954 link_name = "llvm.aarch64.neon.st1x2.v8i8.p0"
63955 )]
63956 fn _vst1_s8_x2(a: int8x8_t, b: int8x8_t, ptr: *mut i8);
63957 }
63958 _vst1_s8_x2(b.0, b.1, a)
63959}
63960#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63961#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x2)"]
63962#[doc = "## Safety"]
63963#[doc = " * Neon intrinsic unsafe"]
63964#[inline(always)]
63965#[target_feature(enable = "neon")]
63966#[cfg(not(target_arch = "arm"))]
63967#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63968#[cfg_attr(test, assert_instr(st1))]
63969pub unsafe fn vst1q_s8_x2(a: *mut i8, b: int8x16x2_t) {
63970 unsafe extern "unadjusted" {
63971 #[cfg_attr(
63972 any(target_arch = "aarch64", target_arch = "arm64ec"),
63973 link_name = "llvm.aarch64.neon.st1x2.v16i8.p0"
63974 )]
63975 fn _vst1q_s8_x2(a: int8x16_t, b: int8x16_t, ptr: *mut i8);
63976 }
63977 _vst1q_s8_x2(b.0, b.1, a)
63978}
63979#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63980#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x2)"]
63981#[doc = "## Safety"]
63982#[doc = " * Neon intrinsic unsafe"]
63983#[inline(always)]
63984#[target_feature(enable = "neon")]
63985#[cfg(not(target_arch = "arm"))]
63986#[stable(feature = "neon_intrinsics", since = "1.59.0")]
63987#[cfg_attr(test, assert_instr(st1))]
63988pub unsafe fn vst1_s16_x2(a: *mut i16, b: int16x4x2_t) {
63989 unsafe extern "unadjusted" {
63990 #[cfg_attr(
63991 any(target_arch = "aarch64", target_arch = "arm64ec"),
63992 link_name = "llvm.aarch64.neon.st1x2.v4i16.p0"
63993 )]
63994 fn _vst1_s16_x2(a: int16x4_t, b: int16x4_t, ptr: *mut i16);
63995 }
63996 _vst1_s16_x2(b.0, b.1, a)
63997}
63998#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
63999#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x2)"]
64000#[doc = "## Safety"]
64001#[doc = " * Neon intrinsic unsafe"]
64002#[inline(always)]
64003#[target_feature(enable = "neon")]
64004#[cfg(not(target_arch = "arm"))]
64005#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64006#[cfg_attr(test, assert_instr(st1))]
64007pub unsafe fn vst1q_s16_x2(a: *mut i16, b: int16x8x2_t) {
64008 unsafe extern "unadjusted" {
64009 #[cfg_attr(
64010 any(target_arch = "aarch64", target_arch = "arm64ec"),
64011 link_name = "llvm.aarch64.neon.st1x2.v8i16.p0"
64012 )]
64013 fn _vst1q_s16_x2(a: int16x8_t, b: int16x8_t, ptr: *mut i16);
64014 }
64015 _vst1q_s16_x2(b.0, b.1, a)
64016}
64017#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64018#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x2)"]
64019#[doc = "## Safety"]
64020#[doc = " * Neon intrinsic unsafe"]
64021#[inline(always)]
64022#[target_feature(enable = "neon")]
64023#[cfg(not(target_arch = "arm"))]
64024#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64025#[cfg_attr(test, assert_instr(st1))]
64026pub unsafe fn vst1_s32_x2(a: *mut i32, b: int32x2x2_t) {
64027 unsafe extern "unadjusted" {
64028 #[cfg_attr(
64029 any(target_arch = "aarch64", target_arch = "arm64ec"),
64030 link_name = "llvm.aarch64.neon.st1x2.v2i32.p0"
64031 )]
64032 fn _vst1_s32_x2(a: int32x2_t, b: int32x2_t, ptr: *mut i32);
64033 }
64034 _vst1_s32_x2(b.0, b.1, a)
64035}
64036#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64037#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x2)"]
64038#[doc = "## Safety"]
64039#[doc = " * Neon intrinsic unsafe"]
64040#[inline(always)]
64041#[target_feature(enable = "neon")]
64042#[cfg(not(target_arch = "arm"))]
64043#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64044#[cfg_attr(test, assert_instr(st1))]
64045pub unsafe fn vst1q_s32_x2(a: *mut i32, b: int32x4x2_t) {
64046 unsafe extern "unadjusted" {
64047 #[cfg_attr(
64048 any(target_arch = "aarch64", target_arch = "arm64ec"),
64049 link_name = "llvm.aarch64.neon.st1x2.v4i32.p0"
64050 )]
64051 fn _vst1q_s32_x2(a: int32x4_t, b: int32x4_t, ptr: *mut i32);
64052 }
64053 _vst1q_s32_x2(b.0, b.1, a)
64054}
64055#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64056#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x2)"]
64057#[doc = "## Safety"]
64058#[doc = " * Neon intrinsic unsafe"]
64059#[inline(always)]
64060#[target_feature(enable = "neon")]
64061#[cfg(not(target_arch = "arm"))]
64062#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64063#[cfg_attr(test, assert_instr(st1))]
64064pub unsafe fn vst1_s64_x2(a: *mut i64, b: int64x1x2_t) {
64065 unsafe extern "unadjusted" {
64066 #[cfg_attr(
64067 any(target_arch = "aarch64", target_arch = "arm64ec"),
64068 link_name = "llvm.aarch64.neon.st1x2.v1i64.p0"
64069 )]
64070 fn _vst1_s64_x2(a: int64x1_t, b: int64x1_t, ptr: *mut i64);
64071 }
64072 _vst1_s64_x2(b.0, b.1, a)
64073}
64074#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64075#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x2)"]
64076#[doc = "## Safety"]
64077#[doc = " * Neon intrinsic unsafe"]
64078#[inline(always)]
64079#[target_feature(enable = "neon")]
64080#[cfg(not(target_arch = "arm"))]
64081#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64082#[cfg_attr(test, assert_instr(st1))]
64083pub unsafe fn vst1q_s64_x2(a: *mut i64, b: int64x2x2_t) {
64084 unsafe extern "unadjusted" {
64085 #[cfg_attr(
64086 any(target_arch = "aarch64", target_arch = "arm64ec"),
64087 link_name = "llvm.aarch64.neon.st1x2.v2i64.p0"
64088 )]
64089 fn _vst1q_s64_x2(a: int64x2_t, b: int64x2_t, ptr: *mut i64);
64090 }
64091 _vst1q_s64_x2(b.0, b.1, a)
64092}
64093#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64094#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x2)"]
64095#[doc = "## Safety"]
64096#[doc = " * Neon intrinsic unsafe"]
64097#[inline(always)]
64098#[target_feature(enable = "neon,v7")]
64099#[cfg(target_arch = "arm")]
64100#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64101#[cfg_attr(test, assert_instr(vst1))]
64102pub unsafe fn vst1_s8_x2(a: *mut i8, b: int8x8x2_t) {
64103 unsafe extern "unadjusted" {
64104 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v8i8.p0")]
64105 fn _vst1_s8_x2(ptr: *mut i8, a: int8x8_t, b: int8x8_t);
64106 }
64107 _vst1_s8_x2(a, b.0, b.1)
64108}
64109#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64110#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x2)"]
64111#[doc = "## Safety"]
64112#[doc = " * Neon intrinsic unsafe"]
64113#[inline(always)]
64114#[target_feature(enable = "neon,v7")]
64115#[cfg(target_arch = "arm")]
64116#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64117#[cfg_attr(test, assert_instr(vst1))]
64118pub unsafe fn vst1q_s8_x2(a: *mut i8, b: int8x16x2_t) {
64119 unsafe extern "unadjusted" {
64120 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v16i8.p0")]
64121 fn _vst1q_s8_x2(ptr: *mut i8, a: int8x16_t, b: int8x16_t);
64122 }
64123 _vst1q_s8_x2(a, b.0, b.1)
64124}
64125#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64126#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x2)"]
64127#[doc = "## Safety"]
64128#[doc = " * Neon intrinsic unsafe"]
64129#[inline(always)]
64130#[target_feature(enable = "neon,v7")]
64131#[cfg(target_arch = "arm")]
64132#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64133#[cfg_attr(test, assert_instr(vst1))]
64134pub unsafe fn vst1_s16_x2(a: *mut i16, b: int16x4x2_t) {
64135 unsafe extern "unadjusted" {
64136 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4i16.p0")]
64137 fn _vst1_s16_x2(ptr: *mut i16, a: int16x4_t, b: int16x4_t);
64138 }
64139 _vst1_s16_x2(a, b.0, b.1)
64140}
64141#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x2)"]
64143#[doc = "## Safety"]
64144#[doc = " * Neon intrinsic unsafe"]
64145#[inline(always)]
64146#[target_feature(enable = "neon,v7")]
64147#[cfg(target_arch = "arm")]
64148#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64149#[cfg_attr(test, assert_instr(vst1))]
64150pub unsafe fn vst1q_s16_x2(a: *mut i16, b: int16x8x2_t) {
64151 unsafe extern "unadjusted" {
64152 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v8i16.p0")]
64153 fn _vst1q_s16_x2(ptr: *mut i16, a: int16x8_t, b: int16x8_t);
64154 }
64155 _vst1q_s16_x2(a, b.0, b.1)
64156}
64157#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64158#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x2)"]
64159#[doc = "## Safety"]
64160#[doc = " * Neon intrinsic unsafe"]
64161#[inline(always)]
64162#[target_feature(enable = "neon,v7")]
64163#[cfg(target_arch = "arm")]
64164#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64165#[cfg_attr(test, assert_instr(vst1))]
64166pub unsafe fn vst1_s32_x2(a: *mut i32, b: int32x2x2_t) {
64167 unsafe extern "unadjusted" {
64168 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2i32.p0")]
64169 fn _vst1_s32_x2(ptr: *mut i32, a: int32x2_t, b: int32x2_t);
64170 }
64171 _vst1_s32_x2(a, b.0, b.1)
64172}
64173#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x2)"]
64175#[doc = "## Safety"]
64176#[doc = " * Neon intrinsic unsafe"]
64177#[inline(always)]
64178#[target_feature(enable = "neon,v7")]
64179#[cfg(target_arch = "arm")]
64180#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64181#[cfg_attr(test, assert_instr(vst1))]
64182pub unsafe fn vst1q_s32_x2(a: *mut i32, b: int32x4x2_t) {
64183 unsafe extern "unadjusted" {
64184 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v4i32.p0")]
64185 fn _vst1q_s32_x2(ptr: *mut i32, a: int32x4_t, b: int32x4_t);
64186 }
64187 _vst1q_s32_x2(a, b.0, b.1)
64188}
64189#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64190#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x2)"]
64191#[doc = "## Safety"]
64192#[doc = " * Neon intrinsic unsafe"]
64193#[inline(always)]
64194#[target_feature(enable = "neon,v7")]
64195#[cfg(target_arch = "arm")]
64196#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64197#[cfg_attr(test, assert_instr(vst1))]
64198pub unsafe fn vst1_s64_x2(a: *mut i64, b: int64x1x2_t) {
64199 unsafe extern "unadjusted" {
64200 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v1i64.p0")]
64201 fn _vst1_s64_x2(ptr: *mut i64, a: int64x1_t, b: int64x1_t);
64202 }
64203 _vst1_s64_x2(a, b.0, b.1)
64204}
64205#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64206#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x2)"]
64207#[doc = "## Safety"]
64208#[doc = " * Neon intrinsic unsafe"]
64209#[inline(always)]
64210#[target_feature(enable = "neon,v7")]
64211#[cfg(target_arch = "arm")]
64212#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64213#[cfg_attr(test, assert_instr(vst1))]
64214pub unsafe fn vst1q_s64_x2(a: *mut i64, b: int64x2x2_t) {
64215 unsafe extern "unadjusted" {
64216 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x2.v2i64.p0")]
64217 fn _vst1q_s64_x2(ptr: *mut i64, a: int64x2_t, b: int64x2_t);
64218 }
64219 _vst1q_s64_x2(a, b.0, b.1)
64220}
64221#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x3)"]
64223#[doc = "## Safety"]
64224#[doc = " * Neon intrinsic unsafe"]
64225#[inline(always)]
64226#[target_feature(enable = "neon")]
64227#[cfg(not(target_arch = "arm"))]
64228#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64229#[cfg_attr(test, assert_instr(st1))]
64230pub unsafe fn vst1_s8_x3(a: *mut i8, b: int8x8x3_t) {
64231 unsafe extern "unadjusted" {
64232 #[cfg_attr(
64233 any(target_arch = "aarch64", target_arch = "arm64ec"),
64234 link_name = "llvm.aarch64.neon.st1x3.v8i8.p0"
64235 )]
64236 fn _vst1_s8_x3(a: int8x8_t, b: int8x8_t, c: int8x8_t, ptr: *mut i8);
64237 }
64238 _vst1_s8_x3(b.0, b.1, b.2, a)
64239}
64240#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64241#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x3)"]
64242#[doc = "## Safety"]
64243#[doc = " * Neon intrinsic unsafe"]
64244#[inline(always)]
64245#[target_feature(enable = "neon")]
64246#[cfg(not(target_arch = "arm"))]
64247#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64248#[cfg_attr(test, assert_instr(st1))]
64249pub unsafe fn vst1q_s8_x3(a: *mut i8, b: int8x16x3_t) {
64250 unsafe extern "unadjusted" {
64251 #[cfg_attr(
64252 any(target_arch = "aarch64", target_arch = "arm64ec"),
64253 link_name = "llvm.aarch64.neon.st1x3.v16i8.p0"
64254 )]
64255 fn _vst1q_s8_x3(a: int8x16_t, b: int8x16_t, c: int8x16_t, ptr: *mut i8);
64256 }
64257 _vst1q_s8_x3(b.0, b.1, b.2, a)
64258}
64259#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64260#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x3)"]
64261#[doc = "## Safety"]
64262#[doc = " * Neon intrinsic unsafe"]
64263#[inline(always)]
64264#[target_feature(enable = "neon")]
64265#[cfg(not(target_arch = "arm"))]
64266#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64267#[cfg_attr(test, assert_instr(st1))]
64268pub unsafe fn vst1_s16_x3(a: *mut i16, b: int16x4x3_t) {
64269 unsafe extern "unadjusted" {
64270 #[cfg_attr(
64271 any(target_arch = "aarch64", target_arch = "arm64ec"),
64272 link_name = "llvm.aarch64.neon.st1x3.v4i16.p0"
64273 )]
64274 fn _vst1_s16_x3(a: int16x4_t, b: int16x4_t, c: int16x4_t, ptr: *mut i16);
64275 }
64276 _vst1_s16_x3(b.0, b.1, b.2, a)
64277}
64278#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64279#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x3)"]
64280#[doc = "## Safety"]
64281#[doc = " * Neon intrinsic unsafe"]
64282#[inline(always)]
64283#[target_feature(enable = "neon")]
64284#[cfg(not(target_arch = "arm"))]
64285#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64286#[cfg_attr(test, assert_instr(st1))]
64287pub unsafe fn vst1q_s16_x3(a: *mut i16, b: int16x8x3_t) {
64288 unsafe extern "unadjusted" {
64289 #[cfg_attr(
64290 any(target_arch = "aarch64", target_arch = "arm64ec"),
64291 link_name = "llvm.aarch64.neon.st1x3.v8i16.p0"
64292 )]
64293 fn _vst1q_s16_x3(a: int16x8_t, b: int16x8_t, c: int16x8_t, ptr: *mut i16);
64294 }
64295 _vst1q_s16_x3(b.0, b.1, b.2, a)
64296}
64297#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64298#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x3)"]
64299#[doc = "## Safety"]
64300#[doc = " * Neon intrinsic unsafe"]
64301#[inline(always)]
64302#[target_feature(enable = "neon")]
64303#[cfg(not(target_arch = "arm"))]
64304#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64305#[cfg_attr(test, assert_instr(st1))]
64306pub unsafe fn vst1_s32_x3(a: *mut i32, b: int32x2x3_t) {
64307 unsafe extern "unadjusted" {
64308 #[cfg_attr(
64309 any(target_arch = "aarch64", target_arch = "arm64ec"),
64310 link_name = "llvm.aarch64.neon.st1x3.v2i32.p0"
64311 )]
64312 fn _vst1_s32_x3(a: int32x2_t, b: int32x2_t, c: int32x2_t, ptr: *mut i32);
64313 }
64314 _vst1_s32_x3(b.0, b.1, b.2, a)
64315}
64316#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64317#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x3)"]
64318#[doc = "## Safety"]
64319#[doc = " * Neon intrinsic unsafe"]
64320#[inline(always)]
64321#[target_feature(enable = "neon")]
64322#[cfg(not(target_arch = "arm"))]
64323#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64324#[cfg_attr(test, assert_instr(st1))]
64325pub unsafe fn vst1q_s32_x3(a: *mut i32, b: int32x4x3_t) {
64326 unsafe extern "unadjusted" {
64327 #[cfg_attr(
64328 any(target_arch = "aarch64", target_arch = "arm64ec"),
64329 link_name = "llvm.aarch64.neon.st1x3.v4i32.p0"
64330 )]
64331 fn _vst1q_s32_x3(a: int32x4_t, b: int32x4_t, c: int32x4_t, ptr: *mut i32);
64332 }
64333 _vst1q_s32_x3(b.0, b.1, b.2, a)
64334}
64335#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64336#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x3)"]
64337#[doc = "## Safety"]
64338#[doc = " * Neon intrinsic unsafe"]
64339#[inline(always)]
64340#[target_feature(enable = "neon")]
64341#[cfg(not(target_arch = "arm"))]
64342#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64343#[cfg_attr(test, assert_instr(st1))]
64344pub unsafe fn vst1_s64_x3(a: *mut i64, b: int64x1x3_t) {
64345 unsafe extern "unadjusted" {
64346 #[cfg_attr(
64347 any(target_arch = "aarch64", target_arch = "arm64ec"),
64348 link_name = "llvm.aarch64.neon.st1x3.v1i64.p0"
64349 )]
64350 fn _vst1_s64_x3(a: int64x1_t, b: int64x1_t, c: int64x1_t, ptr: *mut i64);
64351 }
64352 _vst1_s64_x3(b.0, b.1, b.2, a)
64353}
64354#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x3)"]
64356#[doc = "## Safety"]
64357#[doc = " * Neon intrinsic unsafe"]
64358#[inline(always)]
64359#[target_feature(enable = "neon")]
64360#[cfg(not(target_arch = "arm"))]
64361#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64362#[cfg_attr(test, assert_instr(st1))]
64363pub unsafe fn vst1q_s64_x3(a: *mut i64, b: int64x2x3_t) {
64364 unsafe extern "unadjusted" {
64365 #[cfg_attr(
64366 any(target_arch = "aarch64", target_arch = "arm64ec"),
64367 link_name = "llvm.aarch64.neon.st1x3.v2i64.p0"
64368 )]
64369 fn _vst1q_s64_x3(a: int64x2_t, b: int64x2_t, c: int64x2_t, ptr: *mut i64);
64370 }
64371 _vst1q_s64_x3(b.0, b.1, b.2, a)
64372}
64373#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x3)"]
64375#[doc = "## Safety"]
64376#[doc = " * Neon intrinsic unsafe"]
64377#[inline(always)]
64378#[target_feature(enable = "neon,v7")]
64379#[cfg(target_arch = "arm")]
64380#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64381#[cfg_attr(test, assert_instr(vst1))]
64382pub unsafe fn vst1_s8_x3(a: *mut i8, b: int8x8x3_t) {
64383 unsafe extern "unadjusted" {
64384 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8i8.p0")]
64385 fn _vst1_s8_x3(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t);
64386 }
64387 _vst1_s8_x3(a, b.0, b.1, b.2)
64388}
64389#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64390#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x3)"]
64391#[doc = "## Safety"]
64392#[doc = " * Neon intrinsic unsafe"]
64393#[inline(always)]
64394#[target_feature(enable = "neon,v7")]
64395#[cfg(target_arch = "arm")]
64396#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64397#[cfg_attr(test, assert_instr(vst1))]
64398pub unsafe fn vst1q_s8_x3(a: *mut i8, b: int8x16x3_t) {
64399 unsafe extern "unadjusted" {
64400 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v16i8.p0")]
64401 fn _vst1q_s8_x3(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t);
64402 }
64403 _vst1q_s8_x3(a, b.0, b.1, b.2)
64404}
64405#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64406#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x3)"]
64407#[doc = "## Safety"]
64408#[doc = " * Neon intrinsic unsafe"]
64409#[inline(always)]
64410#[target_feature(enable = "neon,v7")]
64411#[cfg(target_arch = "arm")]
64412#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64413#[cfg_attr(test, assert_instr(vst1))]
64414pub unsafe fn vst1_s16_x3(a: *mut i16, b: int16x4x3_t) {
64415 unsafe extern "unadjusted" {
64416 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4i16.p0")]
64417 fn _vst1_s16_x3(ptr: *mut i16, a: int16x4_t, b: int16x4_t, c: int16x4_t);
64418 }
64419 _vst1_s16_x3(a, b.0, b.1, b.2)
64420}
64421#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x3)"]
64423#[doc = "## Safety"]
64424#[doc = " * Neon intrinsic unsafe"]
64425#[inline(always)]
64426#[target_feature(enable = "neon,v7")]
64427#[cfg(target_arch = "arm")]
64428#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64429#[cfg_attr(test, assert_instr(vst1))]
64430pub unsafe fn vst1q_s16_x3(a: *mut i16, b: int16x8x3_t) {
64431 unsafe extern "unadjusted" {
64432 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v8i16.p0")]
64433 fn _vst1q_s16_x3(ptr: *mut i16, a: int16x8_t, b: int16x8_t, c: int16x8_t);
64434 }
64435 _vst1q_s16_x3(a, b.0, b.1, b.2)
64436}
64437#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64438#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x3)"]
64439#[doc = "## Safety"]
64440#[doc = " * Neon intrinsic unsafe"]
64441#[inline(always)]
64442#[target_feature(enable = "neon,v7")]
64443#[cfg(target_arch = "arm")]
64444#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64445#[cfg_attr(test, assert_instr(vst1))]
64446pub unsafe fn vst1_s32_x3(a: *mut i32, b: int32x2x3_t) {
64447 unsafe extern "unadjusted" {
64448 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v2i32.p0")]
64449 fn _vst1_s32_x3(ptr: *mut i32, a: int32x2_t, b: int32x2_t, c: int32x2_t);
64450 }
64451 _vst1_s32_x3(a, b.0, b.1, b.2)
64452}
64453#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64454#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x3)"]
64455#[doc = "## Safety"]
64456#[doc = " * Neon intrinsic unsafe"]
64457#[inline(always)]
64458#[target_feature(enable = "neon,v7")]
64459#[cfg(target_arch = "arm")]
64460#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64461#[cfg_attr(test, assert_instr(vst1))]
64462pub unsafe fn vst1q_s32_x3(a: *mut i32, b: int32x4x3_t) {
64463 unsafe extern "unadjusted" {
64464 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v4i32.p0")]
64465 fn _vst1q_s32_x3(ptr: *mut i32, a: int32x4_t, b: int32x4_t, c: int32x4_t);
64466 }
64467 _vst1q_s32_x3(a, b.0, b.1, b.2)
64468}
64469#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64470#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x3)"]
64471#[doc = "## Safety"]
64472#[doc = " * Neon intrinsic unsafe"]
64473#[inline(always)]
64474#[target_feature(enable = "neon,v7")]
64475#[cfg(target_arch = "arm")]
64476#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64477#[cfg_attr(test, assert_instr(vst1))]
64478pub unsafe fn vst1_s64_x3(a: *mut i64, b: int64x1x3_t) {
64479 unsafe extern "unadjusted" {
64480 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v1i64.p0")]
64481 fn _vst1_s64_x3(ptr: *mut i64, a: int64x1_t, b: int64x1_t, c: int64x1_t);
64482 }
64483 _vst1_s64_x3(a, b.0, b.1, b.2)
64484}
64485#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64486#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x3)"]
64487#[doc = "## Safety"]
64488#[doc = " * Neon intrinsic unsafe"]
64489#[inline(always)]
64490#[target_feature(enable = "neon,v7")]
64491#[cfg(target_arch = "arm")]
64492#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64493#[cfg_attr(test, assert_instr(vst1))]
64494pub unsafe fn vst1q_s64_x3(a: *mut i64, b: int64x2x3_t) {
64495 unsafe extern "unadjusted" {
64496 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x3.p0.v2i64.p0")]
64497 fn _vst1q_s64_x3(ptr: *mut i64, a: int64x2_t, b: int64x2_t, c: int64x2_t);
64498 }
64499 _vst1q_s64_x3(a, b.0, b.1, b.2)
64500}
64501#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64502#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x4)"]
64503#[doc = "## Safety"]
64504#[doc = " * Neon intrinsic unsafe"]
64505#[inline(always)]
64506#[target_feature(enable = "neon")]
64507#[cfg(not(target_arch = "arm"))]
64508#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64509#[cfg_attr(test, assert_instr(st1))]
64510pub unsafe fn vst1_s8_x4(a: *mut i8, b: int8x8x4_t) {
64511 unsafe extern "unadjusted" {
64512 #[cfg_attr(
64513 any(target_arch = "aarch64", target_arch = "arm64ec"),
64514 link_name = "llvm.aarch64.neon.st1x4.v8i8.p0"
64515 )]
64516 fn _vst1_s8_x4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, ptr: *mut i8);
64517 }
64518 _vst1_s8_x4(b.0, b.1, b.2, b.3, a)
64519}
64520#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x4)"]
64522#[doc = "## Safety"]
64523#[doc = " * Neon intrinsic unsafe"]
64524#[inline(always)]
64525#[target_feature(enable = "neon")]
64526#[cfg(not(target_arch = "arm"))]
64527#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64528#[cfg_attr(test, assert_instr(st1))]
64529pub unsafe fn vst1q_s8_x4(a: *mut i8, b: int8x16x4_t) {
64530 unsafe extern "unadjusted" {
64531 #[cfg_attr(
64532 any(target_arch = "aarch64", target_arch = "arm64ec"),
64533 link_name = "llvm.aarch64.neon.st1x4.v16i8.p0"
64534 )]
64535 fn _vst1q_s8_x4(a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t, ptr: *mut i8);
64536 }
64537 _vst1q_s8_x4(b.0, b.1, b.2, b.3, a)
64538}
64539#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64540#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x4)"]
64541#[doc = "## Safety"]
64542#[doc = " * Neon intrinsic unsafe"]
64543#[inline(always)]
64544#[target_feature(enable = "neon")]
64545#[cfg(not(target_arch = "arm"))]
64546#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64547#[cfg_attr(test, assert_instr(st1))]
64548pub unsafe fn vst1_s16_x4(a: *mut i16, b: int16x4x4_t) {
64549 unsafe extern "unadjusted" {
64550 #[cfg_attr(
64551 any(target_arch = "aarch64", target_arch = "arm64ec"),
64552 link_name = "llvm.aarch64.neon.st1x4.v4i16.p0"
64553 )]
64554 fn _vst1_s16_x4(a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t, ptr: *mut i16);
64555 }
64556 _vst1_s16_x4(b.0, b.1, b.2, b.3, a)
64557}
64558#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64559#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x4)"]
64560#[doc = "## Safety"]
64561#[doc = " * Neon intrinsic unsafe"]
64562#[inline(always)]
64563#[target_feature(enable = "neon")]
64564#[cfg(not(target_arch = "arm"))]
64565#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64566#[cfg_attr(test, assert_instr(st1))]
64567pub unsafe fn vst1q_s16_x4(a: *mut i16, b: int16x8x4_t) {
64568 unsafe extern "unadjusted" {
64569 #[cfg_attr(
64570 any(target_arch = "aarch64", target_arch = "arm64ec"),
64571 link_name = "llvm.aarch64.neon.st1x4.v8i16.p0"
64572 )]
64573 fn _vst1q_s16_x4(a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t, ptr: *mut i16);
64574 }
64575 _vst1q_s16_x4(b.0, b.1, b.2, b.3, a)
64576}
64577#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64578#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x4)"]
64579#[doc = "## Safety"]
64580#[doc = " * Neon intrinsic unsafe"]
64581#[inline(always)]
64582#[target_feature(enable = "neon")]
64583#[cfg(not(target_arch = "arm"))]
64584#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64585#[cfg_attr(test, assert_instr(st1))]
64586pub unsafe fn vst1_s32_x4(a: *mut i32, b: int32x2x4_t) {
64587 unsafe extern "unadjusted" {
64588 #[cfg_attr(
64589 any(target_arch = "aarch64", target_arch = "arm64ec"),
64590 link_name = "llvm.aarch64.neon.st1x4.v2i32.p0"
64591 )]
64592 fn _vst1_s32_x4(a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t, ptr: *mut i32);
64593 }
64594 _vst1_s32_x4(b.0, b.1, b.2, b.3, a)
64595}
64596#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64597#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x4)"]
64598#[doc = "## Safety"]
64599#[doc = " * Neon intrinsic unsafe"]
64600#[inline(always)]
64601#[target_feature(enable = "neon")]
64602#[cfg(not(target_arch = "arm"))]
64603#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64604#[cfg_attr(test, assert_instr(st1))]
64605pub unsafe fn vst1q_s32_x4(a: *mut i32, b: int32x4x4_t) {
64606 unsafe extern "unadjusted" {
64607 #[cfg_attr(
64608 any(target_arch = "aarch64", target_arch = "arm64ec"),
64609 link_name = "llvm.aarch64.neon.st1x4.v4i32.p0"
64610 )]
64611 fn _vst1q_s32_x4(a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t, ptr: *mut i32);
64612 }
64613 _vst1q_s32_x4(b.0, b.1, b.2, b.3, a)
64614}
64615#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64616#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x4)"]
64617#[doc = "## Safety"]
64618#[doc = " * Neon intrinsic unsafe"]
64619#[inline(always)]
64620#[target_feature(enable = "neon")]
64621#[cfg(not(target_arch = "arm"))]
64622#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64623#[cfg_attr(test, assert_instr(st1))]
64624pub unsafe fn vst1_s64_x4(a: *mut i64, b: int64x1x4_t) {
64625 unsafe extern "unadjusted" {
64626 #[cfg_attr(
64627 any(target_arch = "aarch64", target_arch = "arm64ec"),
64628 link_name = "llvm.aarch64.neon.st1x4.v1i64.p0"
64629 )]
64630 fn _vst1_s64_x4(a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t, ptr: *mut i64);
64631 }
64632 _vst1_s64_x4(b.0, b.1, b.2, b.3, a)
64633}
64634#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64635#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x4)"]
64636#[doc = "## Safety"]
64637#[doc = " * Neon intrinsic unsafe"]
64638#[inline(always)]
64639#[target_feature(enable = "neon")]
64640#[cfg(not(target_arch = "arm"))]
64641#[stable(feature = "neon_intrinsics", since = "1.59.0")]
64642#[cfg_attr(test, assert_instr(st1))]
64643pub unsafe fn vst1q_s64_x4(a: *mut i64, b: int64x2x4_t) {
64644 unsafe extern "unadjusted" {
64645 #[cfg_attr(
64646 any(target_arch = "aarch64", target_arch = "arm64ec"),
64647 link_name = "llvm.aarch64.neon.st1x4.v2i64.p0"
64648 )]
64649 fn _vst1q_s64_x4(a: int64x2_t, b: int64x2_t, c: int64x2_t, d: int64x2_t, ptr: *mut i64);
64650 }
64651 _vst1q_s64_x4(b.0, b.1, b.2, b.3, a)
64652}
64653#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64654#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s8_x4)"]
64655#[doc = "## Safety"]
64656#[doc = " * Neon intrinsic unsafe"]
64657#[inline(always)]
64658#[cfg(target_arch = "arm")]
64659#[target_feature(enable = "neon,v7")]
64660#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64661#[cfg_attr(test, assert_instr(vst1))]
64662pub unsafe fn vst1_s8_x4(a: *mut i8, b: int8x8x4_t) {
64663 unsafe extern "unadjusted" {
64664 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8i8.p0")]
64665 fn _vst1_s8_x4(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t);
64666 }
64667 _vst1_s8_x4(a, b.0, b.1, b.2, b.3)
64668}
64669#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s8_x4)"]
64671#[doc = "## Safety"]
64672#[doc = " * Neon intrinsic unsafe"]
64673#[inline(always)]
64674#[cfg(target_arch = "arm")]
64675#[target_feature(enable = "neon,v7")]
64676#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64677#[cfg_attr(test, assert_instr(vst1))]
64678pub unsafe fn vst1q_s8_x4(a: *mut i8, b: int8x16x4_t) {
64679 unsafe extern "unadjusted" {
64680 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v16i8.p0")]
64681 fn _vst1q_s8_x4(ptr: *mut i8, a: int8x16_t, b: int8x16_t, c: int8x16_t, d: int8x16_t);
64682 }
64683 _vst1q_s8_x4(a, b.0, b.1, b.2, b.3)
64684}
64685#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64686#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s16_x4)"]
64687#[doc = "## Safety"]
64688#[doc = " * Neon intrinsic unsafe"]
64689#[inline(always)]
64690#[cfg(target_arch = "arm")]
64691#[target_feature(enable = "neon,v7")]
64692#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64693#[cfg_attr(test, assert_instr(vst1))]
64694pub unsafe fn vst1_s16_x4(a: *mut i16, b: int16x4x4_t) {
64695 unsafe extern "unadjusted" {
64696 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4i16.p0")]
64697 fn _vst1_s16_x4(ptr: *mut i16, a: int16x4_t, b: int16x4_t, c: int16x4_t, d: int16x4_t);
64698 }
64699 _vst1_s16_x4(a, b.0, b.1, b.2, b.3)
64700}
64701#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s16_x4)"]
64703#[doc = "## Safety"]
64704#[doc = " * Neon intrinsic unsafe"]
64705#[inline(always)]
64706#[cfg(target_arch = "arm")]
64707#[target_feature(enable = "neon,v7")]
64708#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64709#[cfg_attr(test, assert_instr(vst1))]
64710pub unsafe fn vst1q_s16_x4(a: *mut i16, b: int16x8x4_t) {
64711 unsafe extern "unadjusted" {
64712 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v8i16.p0")]
64713 fn _vst1q_s16_x4(ptr: *mut i16, a: int16x8_t, b: int16x8_t, c: int16x8_t, d: int16x8_t);
64714 }
64715 _vst1q_s16_x4(a, b.0, b.1, b.2, b.3)
64716}
64717#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64718#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s32_x4)"]
64719#[doc = "## Safety"]
64720#[doc = " * Neon intrinsic unsafe"]
64721#[inline(always)]
64722#[cfg(target_arch = "arm")]
64723#[target_feature(enable = "neon,v7")]
64724#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64725#[cfg_attr(test, assert_instr(vst1))]
64726pub unsafe fn vst1_s32_x4(a: *mut i32, b: int32x2x4_t) {
64727 unsafe extern "unadjusted" {
64728 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2i32.p0")]
64729 fn _vst1_s32_x4(ptr: *mut i32, a: int32x2_t, b: int32x2_t, c: int32x2_t, d: int32x2_t);
64730 }
64731 _vst1_s32_x4(a, b.0, b.1, b.2, b.3)
64732}
64733#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64734#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s32_x4)"]
64735#[doc = "## Safety"]
64736#[doc = " * Neon intrinsic unsafe"]
64737#[inline(always)]
64738#[cfg(target_arch = "arm")]
64739#[target_feature(enable = "neon,v7")]
64740#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64741#[cfg_attr(test, assert_instr(vst1))]
64742pub unsafe fn vst1q_s32_x4(a: *mut i32, b: int32x4x4_t) {
64743 unsafe extern "unadjusted" {
64744 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v4i32.p0")]
64745 fn _vst1q_s32_x4(ptr: *mut i32, a: int32x4_t, b: int32x4_t, c: int32x4_t, d: int32x4_t);
64746 }
64747 _vst1q_s32_x4(a, b.0, b.1, b.2, b.3)
64748}
64749#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_s64_x4)"]
64751#[doc = "## Safety"]
64752#[doc = " * Neon intrinsic unsafe"]
64753#[inline(always)]
64754#[cfg(target_arch = "arm")]
64755#[target_feature(enable = "neon,v7")]
64756#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64757#[cfg_attr(test, assert_instr(vst1))]
64758pub unsafe fn vst1_s64_x4(a: *mut i64, b: int64x1x4_t) {
64759 unsafe extern "unadjusted" {
64760 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v1i64.p0")]
64761 fn _vst1_s64_x4(ptr: *mut i64, a: int64x1_t, b: int64x1_t, c: int64x1_t, d: int64x1_t);
64762 }
64763 _vst1_s64_x4(a, b.0, b.1, b.2, b.3)
64764}
64765#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
64766#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_s64_x4)"]
64767#[doc = "## Safety"]
64768#[doc = " * Neon intrinsic unsafe"]
64769#[inline(always)]
64770#[cfg(target_arch = "arm")]
64771#[target_feature(enable = "neon,v7")]
64772#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
64773#[cfg_attr(test, assert_instr(vst1))]
64774pub unsafe fn vst1q_s64_x4(a: *mut i64, b: int64x2x4_t) {
64775 unsafe extern "unadjusted" {
64776 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1x4.p0.v2i64.p0")]
64777 fn _vst1q_s64_x4(ptr: *mut i64, a: int64x2_t, b: int64x2_t, c: int64x2_t, d: int64x2_t);
64778 }
64779 _vst1q_s64_x4(a, b.0, b.1, b.2, b.3)
64780}
64781#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64782#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x2)"]
64783#[doc = "## Safety"]
64784#[doc = " * Neon intrinsic unsafe"]
64785#[inline(always)]
64786#[target_feature(enable = "neon")]
64787#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64788#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64789#[cfg_attr(
64790 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64791 assert_instr(st1)
64792)]
64793#[cfg_attr(
64794 not(target_arch = "arm"),
64795 stable(feature = "neon_intrinsics", since = "1.59.0")
64796)]
64797#[cfg_attr(
64798 target_arch = "arm",
64799 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64800)]
64801pub unsafe fn vst1_u8_x2(a: *mut u8, b: uint8x8x2_t) {
64802 vst1_s8_x2(transmute(a), transmute(b))
64803}
64804#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64805#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x3)"]
64806#[doc = "## Safety"]
64807#[doc = " * Neon intrinsic unsafe"]
64808#[inline(always)]
64809#[target_feature(enable = "neon")]
64810#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64811#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64812#[cfg_attr(
64813 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64814 assert_instr(st1)
64815)]
64816#[cfg_attr(
64817 not(target_arch = "arm"),
64818 stable(feature = "neon_intrinsics", since = "1.59.0")
64819)]
64820#[cfg_attr(
64821 target_arch = "arm",
64822 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64823)]
64824pub unsafe fn vst1_u8_x3(a: *mut u8, b: uint8x8x3_t) {
64825 vst1_s8_x3(transmute(a), transmute(b))
64826}
64827#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64828#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u8_x4)"]
64829#[doc = "## Safety"]
64830#[doc = " * Neon intrinsic unsafe"]
64831#[inline(always)]
64832#[target_feature(enable = "neon")]
64833#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64834#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64835#[cfg_attr(
64836 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64837 assert_instr(st1)
64838)]
64839#[cfg_attr(
64840 not(target_arch = "arm"),
64841 stable(feature = "neon_intrinsics", since = "1.59.0")
64842)]
64843#[cfg_attr(
64844 target_arch = "arm",
64845 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64846)]
64847pub unsafe fn vst1_u8_x4(a: *mut u8, b: uint8x8x4_t) {
64848 vst1_s8_x4(transmute(a), transmute(b))
64849}
64850#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64851#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x2)"]
64852#[doc = "## Safety"]
64853#[doc = " * Neon intrinsic unsafe"]
64854#[inline(always)]
64855#[target_feature(enable = "neon")]
64856#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64857#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64858#[cfg_attr(
64859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64860 assert_instr(st1)
64861)]
64862#[cfg_attr(
64863 not(target_arch = "arm"),
64864 stable(feature = "neon_intrinsics", since = "1.59.0")
64865)]
64866#[cfg_attr(
64867 target_arch = "arm",
64868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64869)]
64870pub unsafe fn vst1q_u8_x2(a: *mut u8, b: uint8x16x2_t) {
64871 vst1q_s8_x2(transmute(a), transmute(b))
64872}
64873#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64874#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x3)"]
64875#[doc = "## Safety"]
64876#[doc = " * Neon intrinsic unsafe"]
64877#[inline(always)]
64878#[target_feature(enable = "neon")]
64879#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64880#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64881#[cfg_attr(
64882 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64883 assert_instr(st1)
64884)]
64885#[cfg_attr(
64886 not(target_arch = "arm"),
64887 stable(feature = "neon_intrinsics", since = "1.59.0")
64888)]
64889#[cfg_attr(
64890 target_arch = "arm",
64891 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64892)]
64893pub unsafe fn vst1q_u8_x3(a: *mut u8, b: uint8x16x3_t) {
64894 vst1q_s8_x3(transmute(a), transmute(b))
64895}
64896#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64897#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u8_x4)"]
64898#[doc = "## Safety"]
64899#[doc = " * Neon intrinsic unsafe"]
64900#[inline(always)]
64901#[target_feature(enable = "neon")]
64902#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64903#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64904#[cfg_attr(
64905 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64906 assert_instr(st1)
64907)]
64908#[cfg_attr(
64909 not(target_arch = "arm"),
64910 stable(feature = "neon_intrinsics", since = "1.59.0")
64911)]
64912#[cfg_attr(
64913 target_arch = "arm",
64914 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64915)]
64916pub unsafe fn vst1q_u8_x4(a: *mut u8, b: uint8x16x4_t) {
64917 vst1q_s8_x4(transmute(a), transmute(b))
64918}
64919#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64920#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x2)"]
64921#[doc = "## Safety"]
64922#[doc = " * Neon intrinsic unsafe"]
64923#[inline(always)]
64924#[target_feature(enable = "neon")]
64925#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64926#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64927#[cfg_attr(
64928 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64929 assert_instr(st1)
64930)]
64931#[cfg_attr(
64932 not(target_arch = "arm"),
64933 stable(feature = "neon_intrinsics", since = "1.59.0")
64934)]
64935#[cfg_attr(
64936 target_arch = "arm",
64937 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64938)]
64939pub unsafe fn vst1_u16_x2(a: *mut u16, b: uint16x4x2_t) {
64940 vst1_s16_x2(transmute(a), transmute(b))
64941}
64942#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64943#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x3)"]
64944#[doc = "## Safety"]
64945#[doc = " * Neon intrinsic unsafe"]
64946#[inline(always)]
64947#[target_feature(enable = "neon")]
64948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64949#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64950#[cfg_attr(
64951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64952 assert_instr(st1)
64953)]
64954#[cfg_attr(
64955 not(target_arch = "arm"),
64956 stable(feature = "neon_intrinsics", since = "1.59.0")
64957)]
64958#[cfg_attr(
64959 target_arch = "arm",
64960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64961)]
64962pub unsafe fn vst1_u16_x3(a: *mut u16, b: uint16x4x3_t) {
64963 vst1_s16_x3(transmute(a), transmute(b))
64964}
64965#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u16_x4)"]
64967#[doc = "## Safety"]
64968#[doc = " * Neon intrinsic unsafe"]
64969#[inline(always)]
64970#[target_feature(enable = "neon")]
64971#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64972#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64973#[cfg_attr(
64974 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64975 assert_instr(st1)
64976)]
64977#[cfg_attr(
64978 not(target_arch = "arm"),
64979 stable(feature = "neon_intrinsics", since = "1.59.0")
64980)]
64981#[cfg_attr(
64982 target_arch = "arm",
64983 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
64984)]
64985pub unsafe fn vst1_u16_x4(a: *mut u16, b: uint16x4x4_t) {
64986 vst1_s16_x4(transmute(a), transmute(b))
64987}
64988#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
64989#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x2)"]
64990#[doc = "## Safety"]
64991#[doc = " * Neon intrinsic unsafe"]
64992#[inline(always)]
64993#[target_feature(enable = "neon")]
64994#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
64995#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
64996#[cfg_attr(
64997 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
64998 assert_instr(st1)
64999)]
65000#[cfg_attr(
65001 not(target_arch = "arm"),
65002 stable(feature = "neon_intrinsics", since = "1.59.0")
65003)]
65004#[cfg_attr(
65005 target_arch = "arm",
65006 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65007)]
65008pub unsafe fn vst1q_u16_x2(a: *mut u16, b: uint16x8x2_t) {
65009 vst1q_s16_x2(transmute(a), transmute(b))
65010}
65011#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65012#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x3)"]
65013#[doc = "## Safety"]
65014#[doc = " * Neon intrinsic unsafe"]
65015#[inline(always)]
65016#[target_feature(enable = "neon")]
65017#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65018#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65019#[cfg_attr(
65020 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65021 assert_instr(st1)
65022)]
65023#[cfg_attr(
65024 not(target_arch = "arm"),
65025 stable(feature = "neon_intrinsics", since = "1.59.0")
65026)]
65027#[cfg_attr(
65028 target_arch = "arm",
65029 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65030)]
65031pub unsafe fn vst1q_u16_x3(a: *mut u16, b: uint16x8x3_t) {
65032 vst1q_s16_x3(transmute(a), transmute(b))
65033}
65034#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u16_x4)"]
65036#[doc = "## Safety"]
65037#[doc = " * Neon intrinsic unsafe"]
65038#[inline(always)]
65039#[target_feature(enable = "neon")]
65040#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65041#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65042#[cfg_attr(
65043 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65044 assert_instr(st1)
65045)]
65046#[cfg_attr(
65047 not(target_arch = "arm"),
65048 stable(feature = "neon_intrinsics", since = "1.59.0")
65049)]
65050#[cfg_attr(
65051 target_arch = "arm",
65052 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65053)]
65054pub unsafe fn vst1q_u16_x4(a: *mut u16, b: uint16x8x4_t) {
65055 vst1q_s16_x4(transmute(a), transmute(b))
65056}
65057#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65058#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x2)"]
65059#[doc = "## Safety"]
65060#[doc = " * Neon intrinsic unsafe"]
65061#[inline(always)]
65062#[target_feature(enable = "neon")]
65063#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65064#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65065#[cfg_attr(
65066 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65067 assert_instr(st1)
65068)]
65069#[cfg_attr(
65070 not(target_arch = "arm"),
65071 stable(feature = "neon_intrinsics", since = "1.59.0")
65072)]
65073#[cfg_attr(
65074 target_arch = "arm",
65075 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65076)]
65077pub unsafe fn vst1_u32_x2(a: *mut u32, b: uint32x2x2_t) {
65078 vst1_s32_x2(transmute(a), transmute(b))
65079}
65080#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65081#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x3)"]
65082#[doc = "## Safety"]
65083#[doc = " * Neon intrinsic unsafe"]
65084#[inline(always)]
65085#[target_feature(enable = "neon")]
65086#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65087#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65088#[cfg_attr(
65089 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65090 assert_instr(st1)
65091)]
65092#[cfg_attr(
65093 not(target_arch = "arm"),
65094 stable(feature = "neon_intrinsics", since = "1.59.0")
65095)]
65096#[cfg_attr(
65097 target_arch = "arm",
65098 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65099)]
65100pub unsafe fn vst1_u32_x3(a: *mut u32, b: uint32x2x3_t) {
65101 vst1_s32_x3(transmute(a), transmute(b))
65102}
65103#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u32_x4)"]
65105#[doc = "## Safety"]
65106#[doc = " * Neon intrinsic unsafe"]
65107#[inline(always)]
65108#[target_feature(enable = "neon")]
65109#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65110#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65111#[cfg_attr(
65112 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65113 assert_instr(st1)
65114)]
65115#[cfg_attr(
65116 not(target_arch = "arm"),
65117 stable(feature = "neon_intrinsics", since = "1.59.0")
65118)]
65119#[cfg_attr(
65120 target_arch = "arm",
65121 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65122)]
65123pub unsafe fn vst1_u32_x4(a: *mut u32, b: uint32x2x4_t) {
65124 vst1_s32_x4(transmute(a), transmute(b))
65125}
65126#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x2)"]
65128#[doc = "## Safety"]
65129#[doc = " * Neon intrinsic unsafe"]
65130#[inline(always)]
65131#[target_feature(enable = "neon")]
65132#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65133#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65134#[cfg_attr(
65135 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65136 assert_instr(st1)
65137)]
65138#[cfg_attr(
65139 not(target_arch = "arm"),
65140 stable(feature = "neon_intrinsics", since = "1.59.0")
65141)]
65142#[cfg_attr(
65143 target_arch = "arm",
65144 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65145)]
65146pub unsafe fn vst1q_u32_x2(a: *mut u32, b: uint32x4x2_t) {
65147 vst1q_s32_x2(transmute(a), transmute(b))
65148}
65149#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65150#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x3)"]
65151#[doc = "## Safety"]
65152#[doc = " * Neon intrinsic unsafe"]
65153#[inline(always)]
65154#[target_feature(enable = "neon")]
65155#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65156#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65157#[cfg_attr(
65158 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65159 assert_instr(st1)
65160)]
65161#[cfg_attr(
65162 not(target_arch = "arm"),
65163 stable(feature = "neon_intrinsics", since = "1.59.0")
65164)]
65165#[cfg_attr(
65166 target_arch = "arm",
65167 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65168)]
65169pub unsafe fn vst1q_u32_x3(a: *mut u32, b: uint32x4x3_t) {
65170 vst1q_s32_x3(transmute(a), transmute(b))
65171}
65172#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65173#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u32_x4)"]
65174#[doc = "## Safety"]
65175#[doc = " * Neon intrinsic unsafe"]
65176#[inline(always)]
65177#[target_feature(enable = "neon")]
65178#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65179#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65180#[cfg_attr(
65181 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65182 assert_instr(st1)
65183)]
65184#[cfg_attr(
65185 not(target_arch = "arm"),
65186 stable(feature = "neon_intrinsics", since = "1.59.0")
65187)]
65188#[cfg_attr(
65189 target_arch = "arm",
65190 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65191)]
65192pub unsafe fn vst1q_u32_x4(a: *mut u32, b: uint32x4x4_t) {
65193 vst1q_s32_x4(transmute(a), transmute(b))
65194}
65195#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x2)"]
65197#[doc = "## Safety"]
65198#[doc = " * Neon intrinsic unsafe"]
65199#[inline(always)]
65200#[target_feature(enable = "neon")]
65201#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65202#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65203#[cfg_attr(
65204 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65205 assert_instr(st1)
65206)]
65207#[cfg_attr(
65208 not(target_arch = "arm"),
65209 stable(feature = "neon_intrinsics", since = "1.59.0")
65210)]
65211#[cfg_attr(
65212 target_arch = "arm",
65213 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65214)]
65215pub unsafe fn vst1_u64_x2(a: *mut u64, b: uint64x1x2_t) {
65216 vst1_s64_x2(transmute(a), transmute(b))
65217}
65218#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65219#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x3)"]
65220#[doc = "## Safety"]
65221#[doc = " * Neon intrinsic unsafe"]
65222#[inline(always)]
65223#[target_feature(enable = "neon")]
65224#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65225#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65226#[cfg_attr(
65227 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65228 assert_instr(st1)
65229)]
65230#[cfg_attr(
65231 not(target_arch = "arm"),
65232 stable(feature = "neon_intrinsics", since = "1.59.0")
65233)]
65234#[cfg_attr(
65235 target_arch = "arm",
65236 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65237)]
65238pub unsafe fn vst1_u64_x3(a: *mut u64, b: uint64x1x3_t) {
65239 vst1_s64_x3(transmute(a), transmute(b))
65240}
65241#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65242#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_u64_x4)"]
65243#[doc = "## Safety"]
65244#[doc = " * Neon intrinsic unsafe"]
65245#[inline(always)]
65246#[target_feature(enable = "neon")]
65247#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65248#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65249#[cfg_attr(
65250 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65251 assert_instr(st1)
65252)]
65253#[cfg_attr(
65254 not(target_arch = "arm"),
65255 stable(feature = "neon_intrinsics", since = "1.59.0")
65256)]
65257#[cfg_attr(
65258 target_arch = "arm",
65259 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65260)]
65261pub unsafe fn vst1_u64_x4(a: *mut u64, b: uint64x1x4_t) {
65262 vst1_s64_x4(transmute(a), transmute(b))
65263}
65264#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65265#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x2)"]
65266#[doc = "## Safety"]
65267#[doc = " * Neon intrinsic unsafe"]
65268#[inline(always)]
65269#[target_feature(enable = "neon")]
65270#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65271#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65272#[cfg_attr(
65273 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65274 assert_instr(st1)
65275)]
65276#[cfg_attr(
65277 not(target_arch = "arm"),
65278 stable(feature = "neon_intrinsics", since = "1.59.0")
65279)]
65280#[cfg_attr(
65281 target_arch = "arm",
65282 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65283)]
65284pub unsafe fn vst1q_u64_x2(a: *mut u64, b: uint64x2x2_t) {
65285 vst1q_s64_x2(transmute(a), transmute(b))
65286}
65287#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x3)"]
65289#[doc = "## Safety"]
65290#[doc = " * Neon intrinsic unsafe"]
65291#[inline(always)]
65292#[target_feature(enable = "neon")]
65293#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65294#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65295#[cfg_attr(
65296 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65297 assert_instr(st1)
65298)]
65299#[cfg_attr(
65300 not(target_arch = "arm"),
65301 stable(feature = "neon_intrinsics", since = "1.59.0")
65302)]
65303#[cfg_attr(
65304 target_arch = "arm",
65305 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65306)]
65307pub unsafe fn vst1q_u64_x3(a: *mut u64, b: uint64x2x3_t) {
65308 vst1q_s64_x3(transmute(a), transmute(b))
65309}
65310#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65311#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_u64_x4)"]
65312#[doc = "## Safety"]
65313#[doc = " * Neon intrinsic unsafe"]
65314#[inline(always)]
65315#[target_feature(enable = "neon")]
65316#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65317#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65318#[cfg_attr(
65319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65320 assert_instr(st1)
65321)]
65322#[cfg_attr(
65323 not(target_arch = "arm"),
65324 stable(feature = "neon_intrinsics", since = "1.59.0")
65325)]
65326#[cfg_attr(
65327 target_arch = "arm",
65328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65329)]
65330pub unsafe fn vst1q_u64_x4(a: *mut u64, b: uint64x2x4_t) {
65331 vst1q_s64_x4(transmute(a), transmute(b))
65332}
65333#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65334#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x2)"]
65335#[doc = "## Safety"]
65336#[doc = " * Neon intrinsic unsafe"]
65337#[inline(always)]
65338#[target_feature(enable = "neon")]
65339#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65340#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65341#[cfg_attr(
65342 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65343 assert_instr(st1)
65344)]
65345#[cfg_attr(
65346 not(target_arch = "arm"),
65347 stable(feature = "neon_intrinsics", since = "1.59.0")
65348)]
65349#[cfg_attr(
65350 target_arch = "arm",
65351 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65352)]
65353pub unsafe fn vst1_p8_x2(a: *mut p8, b: poly8x8x2_t) {
65354 vst1_s8_x2(transmute(a), transmute(b))
65355}
65356#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65357#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x3)"]
65358#[doc = "## Safety"]
65359#[doc = " * Neon intrinsic unsafe"]
65360#[inline(always)]
65361#[target_feature(enable = "neon")]
65362#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65363#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65364#[cfg_attr(
65365 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65366 assert_instr(st1)
65367)]
65368#[cfg_attr(
65369 not(target_arch = "arm"),
65370 stable(feature = "neon_intrinsics", since = "1.59.0")
65371)]
65372#[cfg_attr(
65373 target_arch = "arm",
65374 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65375)]
65376pub unsafe fn vst1_p8_x3(a: *mut p8, b: poly8x8x3_t) {
65377 vst1_s8_x3(transmute(a), transmute(b))
65378}
65379#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p8_x4)"]
65381#[doc = "## Safety"]
65382#[doc = " * Neon intrinsic unsafe"]
65383#[inline(always)]
65384#[target_feature(enable = "neon")]
65385#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65386#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65387#[cfg_attr(
65388 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65389 assert_instr(st1)
65390)]
65391#[cfg_attr(
65392 not(target_arch = "arm"),
65393 stable(feature = "neon_intrinsics", since = "1.59.0")
65394)]
65395#[cfg_attr(
65396 target_arch = "arm",
65397 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65398)]
65399pub unsafe fn vst1_p8_x4(a: *mut p8, b: poly8x8x4_t) {
65400 vst1_s8_x4(transmute(a), transmute(b))
65401}
65402#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65403#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x2)"]
65404#[doc = "## Safety"]
65405#[doc = " * Neon intrinsic unsafe"]
65406#[inline(always)]
65407#[target_feature(enable = "neon")]
65408#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65409#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65410#[cfg_attr(
65411 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65412 assert_instr(st1)
65413)]
65414#[cfg_attr(
65415 not(target_arch = "arm"),
65416 stable(feature = "neon_intrinsics", since = "1.59.0")
65417)]
65418#[cfg_attr(
65419 target_arch = "arm",
65420 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65421)]
65422pub unsafe fn vst1q_p8_x2(a: *mut p8, b: poly8x16x2_t) {
65423 vst1q_s8_x2(transmute(a), transmute(b))
65424}
65425#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65426#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x3)"]
65427#[doc = "## Safety"]
65428#[doc = " * Neon intrinsic unsafe"]
65429#[inline(always)]
65430#[target_feature(enable = "neon")]
65431#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65432#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65433#[cfg_attr(
65434 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65435 assert_instr(st1)
65436)]
65437#[cfg_attr(
65438 not(target_arch = "arm"),
65439 stable(feature = "neon_intrinsics", since = "1.59.0")
65440)]
65441#[cfg_attr(
65442 target_arch = "arm",
65443 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65444)]
65445pub unsafe fn vst1q_p8_x3(a: *mut p8, b: poly8x16x3_t) {
65446 vst1q_s8_x3(transmute(a), transmute(b))
65447}
65448#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p8_x4)"]
65450#[doc = "## Safety"]
65451#[doc = " * Neon intrinsic unsafe"]
65452#[inline(always)]
65453#[target_feature(enable = "neon")]
65454#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65455#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65456#[cfg_attr(
65457 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65458 assert_instr(st1)
65459)]
65460#[cfg_attr(
65461 not(target_arch = "arm"),
65462 stable(feature = "neon_intrinsics", since = "1.59.0")
65463)]
65464#[cfg_attr(
65465 target_arch = "arm",
65466 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65467)]
65468pub unsafe fn vst1q_p8_x4(a: *mut p8, b: poly8x16x4_t) {
65469 vst1q_s8_x4(transmute(a), transmute(b))
65470}
65471#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x2)"]
65473#[doc = "## Safety"]
65474#[doc = " * Neon intrinsic unsafe"]
65475#[inline(always)]
65476#[target_feature(enable = "neon")]
65477#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65478#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65479#[cfg_attr(
65480 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65481 assert_instr(st1)
65482)]
65483#[cfg_attr(
65484 not(target_arch = "arm"),
65485 stable(feature = "neon_intrinsics", since = "1.59.0")
65486)]
65487#[cfg_attr(
65488 target_arch = "arm",
65489 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65490)]
65491pub unsafe fn vst1_p16_x2(a: *mut p16, b: poly16x4x2_t) {
65492 vst1_s16_x2(transmute(a), transmute(b))
65493}
65494#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x3)"]
65496#[doc = "## Safety"]
65497#[doc = " * Neon intrinsic unsafe"]
65498#[inline(always)]
65499#[target_feature(enable = "neon")]
65500#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65501#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65502#[cfg_attr(
65503 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65504 assert_instr(st1)
65505)]
65506#[cfg_attr(
65507 not(target_arch = "arm"),
65508 stable(feature = "neon_intrinsics", since = "1.59.0")
65509)]
65510#[cfg_attr(
65511 target_arch = "arm",
65512 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65513)]
65514pub unsafe fn vst1_p16_x3(a: *mut p16, b: poly16x4x3_t) {
65515 vst1_s16_x3(transmute(a), transmute(b))
65516}
65517#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_p16_x4)"]
65519#[doc = "## Safety"]
65520#[doc = " * Neon intrinsic unsafe"]
65521#[inline(always)]
65522#[target_feature(enable = "neon")]
65523#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65524#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65525#[cfg_attr(
65526 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65527 assert_instr(st1)
65528)]
65529#[cfg_attr(
65530 not(target_arch = "arm"),
65531 stable(feature = "neon_intrinsics", since = "1.59.0")
65532)]
65533#[cfg_attr(
65534 target_arch = "arm",
65535 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65536)]
65537pub unsafe fn vst1_p16_x4(a: *mut p16, b: poly16x4x4_t) {
65538 vst1_s16_x4(transmute(a), transmute(b))
65539}
65540#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65541#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x2)"]
65542#[doc = "## Safety"]
65543#[doc = " * Neon intrinsic unsafe"]
65544#[inline(always)]
65545#[target_feature(enable = "neon")]
65546#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65547#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65548#[cfg_attr(
65549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65550 assert_instr(st1)
65551)]
65552#[cfg_attr(
65553 not(target_arch = "arm"),
65554 stable(feature = "neon_intrinsics", since = "1.59.0")
65555)]
65556#[cfg_attr(
65557 target_arch = "arm",
65558 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65559)]
65560pub unsafe fn vst1q_p16_x2(a: *mut p16, b: poly16x8x2_t) {
65561 vst1q_s16_x2(transmute(a), transmute(b))
65562}
65563#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65564#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x3)"]
65565#[doc = "## Safety"]
65566#[doc = " * Neon intrinsic unsafe"]
65567#[inline(always)]
65568#[target_feature(enable = "neon")]
65569#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65570#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65571#[cfg_attr(
65572 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65573 assert_instr(st1)
65574)]
65575#[cfg_attr(
65576 not(target_arch = "arm"),
65577 stable(feature = "neon_intrinsics", since = "1.59.0")
65578)]
65579#[cfg_attr(
65580 target_arch = "arm",
65581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65582)]
65583pub unsafe fn vst1q_p16_x3(a: *mut p16, b: poly16x8x3_t) {
65584 vst1q_s16_x3(transmute(a), transmute(b))
65585}
65586#[doc = "Store multiple single-element structures to one, two, three, or four registers"]
65587#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_p16_x4)"]
65588#[doc = "## Safety"]
65589#[doc = " * Neon intrinsic unsafe"]
65590#[inline(always)]
65591#[target_feature(enable = "neon")]
65592#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65593#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst1))]
65594#[cfg_attr(
65595 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65596 assert_instr(st1)
65597)]
65598#[cfg_attr(
65599 not(target_arch = "arm"),
65600 stable(feature = "neon_intrinsics", since = "1.59.0")
65601)]
65602#[cfg_attr(
65603 target_arch = "arm",
65604 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65605)]
65606pub unsafe fn vst1q_p16_x4(a: *mut p16, b: poly16x8x4_t) {
65607 vst1q_s16_x4(transmute(a), transmute(b))
65608}
65609#[inline(always)]
65610#[target_feature(enable = "neon")]
65611#[cfg(target_arch = "arm")]
65612#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65613#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65614#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64", ALIGN = 0))]
65615#[rustc_legacy_const_generics(2)]
65616unsafe fn vst1_v1i64<const ALIGN: i32>(addr: *const i8, val: int64x1_t) {
65617 unsafe extern "unadjusted" {
65618 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v1i64.p0")]
65619 fn _vst1_v1i64(addr: *const i8, val: int64x1_t, align: i32);
65620 }
65621 _vst1_v1i64(addr, val, ALIGN)
65622}
65623#[inline(always)]
65624#[target_feature(enable = "neon")]
65625#[cfg(target_arch = "arm")]
65626#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65627#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65628#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
65629#[rustc_legacy_const_generics(2)]
65630unsafe fn vst1_v2f32<const ALIGN: i32>(addr: *const i8, val: float32x2_t) {
65631 unsafe extern "unadjusted" {
65632 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2f32.p0")]
65633 fn _vst1_v2f32(addr: *const i8, val: float32x2_t, align: i32);
65634 }
65635 _vst1_v2f32(addr, val, ALIGN)
65636}
65637#[inline(always)]
65638#[target_feature(enable = "neon")]
65639#[cfg(target_arch = "arm")]
65640#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65641#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65642#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
65643#[rustc_legacy_const_generics(2)]
65644unsafe fn vst1_v2i32<const ALIGN: i32>(addr: *const i8, val: int32x2_t) {
65645 unsafe extern "unadjusted" {
65646 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2i32.p0")]
65647 fn _vst1_v2i32(addr: *const i8, val: int32x2_t, align: i32);
65648 }
65649 _vst1_v2i32(addr, val, ALIGN)
65650}
65651#[inline(always)]
65652#[target_feature(enable = "neon")]
65653#[cfg(target_arch = "arm")]
65654#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65655#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65656#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16", ALIGN = 0))]
65657#[rustc_legacy_const_generics(2)]
65658unsafe fn vst1_v4i16<const ALIGN: i32>(addr: *const i8, val: int16x4_t) {
65659 unsafe extern "unadjusted" {
65660 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4i16.p0")]
65661 fn _vst1_v4i16(addr: *const i8, val: int16x4_t, align: i32);
65662 }
65663 _vst1_v4i16(addr, val, ALIGN)
65664}
65665#[inline(always)]
65666#[target_feature(enable = "neon")]
65667#[cfg(target_arch = "arm")]
65668#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65669#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65670#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8", ALIGN = 0))]
65671#[rustc_legacy_const_generics(2)]
65672unsafe fn vst1_v8i8<const ALIGN: i32>(addr: *const i8, val: int8x8_t) {
65673 unsafe extern "unadjusted" {
65674 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8i8.p0")]
65675 fn _vst1_v8i8(addr: *const i8, val: int8x8_t, align: i32);
65676 }
65677 _vst1_v8i8(addr, val, ALIGN)
65678}
65679#[inline(always)]
65680#[target_feature(enable = "neon")]
65681#[cfg(target_arch = "arm")]
65682#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65683#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65684#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.8", ALIGN = 0))]
65685#[rustc_legacy_const_generics(2)]
65686unsafe fn vst1q_v16i8<const ALIGN: i32>(addr: *const i8, val: int8x16_t) {
65687 unsafe extern "unadjusted" {
65688 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v16i8.p0")]
65689 fn _vst1q_v16i8(addr: *const i8, val: int8x16_t, align: i32);
65690 }
65691 _vst1q_v16i8(addr, val, ALIGN)
65692}
65693#[inline(always)]
65694#[target_feature(enable = "neon")]
65695#[cfg(target_arch = "arm")]
65696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65697#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65698#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.64", ALIGN = 0))]
65699#[rustc_legacy_const_generics(2)]
65700unsafe fn vst1q_v2i64<const ALIGN: i32>(addr: *const i8, val: int64x2_t) {
65701 unsafe extern "unadjusted" {
65702 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v2i64.p0")]
65703 fn _vst1q_v2i64(addr: *const i8, val: int64x2_t, align: i32);
65704 }
65705 _vst1q_v2i64(addr, val, ALIGN)
65706}
65707#[inline(always)]
65708#[target_feature(enable = "neon")]
65709#[cfg(target_arch = "arm")]
65710#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65711#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65712#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
65713#[rustc_legacy_const_generics(2)]
65714unsafe fn vst1q_v4f32<const ALIGN: i32>(addr: *const i8, val: float32x4_t) {
65715 unsafe extern "unadjusted" {
65716 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4f32.p0")]
65717 fn _vst1q_v4f32(addr: *const i8, val: float32x4_t, align: i32);
65718 }
65719 _vst1q_v4f32(addr, val, ALIGN)
65720}
65721#[inline(always)]
65722#[target_feature(enable = "neon")]
65723#[cfg(target_arch = "arm")]
65724#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65725#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65726#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.32", ALIGN = 0))]
65727#[rustc_legacy_const_generics(2)]
65728unsafe fn vst1q_v4i32<const ALIGN: i32>(addr: *const i8, val: int32x4_t) {
65729 unsafe extern "unadjusted" {
65730 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4i32.p0")]
65731 fn _vst1q_v4i32(addr: *const i8, val: int32x4_t, align: i32);
65732 }
65733 _vst1q_v4i32(addr, val, ALIGN)
65734}
65735#[inline(always)]
65736#[target_feature(enable = "neon")]
65737#[cfg(target_arch = "arm")]
65738#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65739#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65740#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16", ALIGN = 0))]
65741#[rustc_legacy_const_generics(2)]
65742unsafe fn vst1q_v8i16<const ALIGN: i32>(addr: *const i8, val: int16x8_t) {
65743 unsafe extern "unadjusted" {
65744 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8i16.p0")]
65745 fn _vst1q_v8i16(addr: *const i8, val: int16x8_t, align: i32);
65746 }
65747 _vst1q_v8i16(addr, val, ALIGN)
65748}
65749#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65750#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1_v4f16)"]
65751#[doc = "## Safety"]
65752#[doc = " * Neon intrinsic unsafe"]
65753#[inline(always)]
65754#[cfg(target_arch = "arm")]
65755#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65756#[target_feature(enable = "neon,fp16")]
65757#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65758#[cfg(not(target_arch = "arm64ec"))]
65759#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
65760unsafe fn vst1_v4f16(addr: *const i8, val: float16x4_t, align: i32) {
65761 unsafe extern "unadjusted" {
65762 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v4f16.p0")]
65763 fn _vst1_v4f16(addr: *const i8, val: float16x4_t, align: i32);
65764 }
65765 _vst1_v4f16(addr, val, align)
65766}
65767#[doc = "Store multiple single-element structures from one, two, three, or four registers."]
65768#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_v8f16)"]
65769#[doc = "## Safety"]
65770#[doc = " * Neon intrinsic unsafe"]
65771#[inline(always)]
65772#[cfg(target_arch = "arm")]
65773#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65774#[target_feature(enable = "neon,fp16")]
65775#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65776#[cfg(not(target_arch = "arm64ec"))]
65777#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vst1.16"))]
65778unsafe fn vst1q_v8f16(addr: *const i8, val: float16x8_t, align: i32) {
65779 unsafe extern "unadjusted" {
65780 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst1.v8f16.p0")]
65781 fn _vst1q_v8f16(addr: *const i8, val: float16x8_t, align: i32);
65782 }
65783 _vst1q_v8f16(addr, val, align)
65784}
65785#[doc = "Store multiple single-element structures from one, two, three, or four registers"]
65786#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst1q_lane_p64)"]
65787#[doc = "## Safety"]
65788#[doc = " * Neon intrinsic unsafe"]
65789#[inline(always)]
65790#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
65791#[target_feature(enable = "neon,aes")]
65792#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop, LANE = 0))]
65793#[cfg_attr(
65794 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
65795 assert_instr(nop, LANE = 0)
65796)]
65797#[rustc_legacy_const_generics(2)]
65798#[cfg_attr(
65799 not(target_arch = "arm"),
65800 stable(feature = "neon_intrinsics", since = "1.59.0")
65801)]
65802#[cfg_attr(
65803 target_arch = "arm",
65804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
65805)]
65806pub unsafe fn vst1q_lane_p64<const LANE: i32>(a: *mut p64, b: poly64x2_t) {
65807 static_assert_uimm_bits!(LANE, 1);
65808 *a = simd_extract!(b, LANE as u32);
65809}
65810#[doc = "Store multiple 2-element structures from two registers"]
65811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f16)"]
65812#[doc = "## Safety"]
65813#[doc = " * Neon intrinsic unsafe"]
65814#[inline(always)]
65815#[target_feature(enable = "neon")]
65816#[cfg(not(target_arch = "arm"))]
65817#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65818#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65819#[cfg(not(target_arch = "arm64ec"))]
65820#[cfg_attr(test, assert_instr(st2))]
65821pub unsafe fn vst2_f16(a: *mut f16, b: float16x4x2_t) {
65822 unsafe extern "unadjusted" {
65823 #[cfg_attr(
65824 any(target_arch = "aarch64", target_arch = "arm64ec"),
65825 link_name = "llvm.aarch64.neon.st2.v4f16.p0"
65826 )]
65827 fn _vst2_f16(a: float16x4_t, b: float16x4_t, ptr: *mut i8);
65828 }
65829 _vst2_f16(b.0, b.1, a as _)
65830}
65831#[doc = "Store multiple 2-element structures from two registers"]
65832#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f16)"]
65833#[doc = "## Safety"]
65834#[doc = " * Neon intrinsic unsafe"]
65835#[inline(always)]
65836#[target_feature(enable = "neon")]
65837#[cfg(not(target_arch = "arm"))]
65838#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65839#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65840#[cfg(not(target_arch = "arm64ec"))]
65841#[cfg_attr(test, assert_instr(st2))]
65842pub unsafe fn vst2q_f16(a: *mut f16, b: float16x8x2_t) {
65843 unsafe extern "unadjusted" {
65844 #[cfg_attr(
65845 any(target_arch = "aarch64", target_arch = "arm64ec"),
65846 link_name = "llvm.aarch64.neon.st2.v8f16.p0"
65847 )]
65848 fn _vst2q_f16(a: float16x8_t, b: float16x8_t, ptr: *mut i8);
65849 }
65850 _vst2q_f16(b.0, b.1, a as _)
65851}
65852#[doc = "Store multiple 2-element structures from two registers"]
65853#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f16)"]
65854#[doc = "## Safety"]
65855#[doc = " * Neon intrinsic unsafe"]
65856#[inline(always)]
65857#[target_feature(enable = "neon")]
65858#[cfg(target_arch = "arm")]
65859#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65860#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65861#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65862#[cfg(not(target_arch = "arm64ec"))]
65863#[cfg_attr(test, assert_instr(vst2))]
65864pub unsafe fn vst2_f16(a: *mut f16, b: float16x4x2_t) {
65865 unsafe extern "unadjusted" {
65866 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.p0.v4f16")]
65867 fn _vst2_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, size: i32);
65868 }
65869 _vst2_f16(a as _, b.0, b.1, 2)
65870}
65871#[doc = "Store multiple 2-element structures from two registers"]
65872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f16)"]
65873#[doc = "## Safety"]
65874#[doc = " * Neon intrinsic unsafe"]
65875#[inline(always)]
65876#[target_feature(enable = "neon")]
65877#[cfg(target_arch = "arm")]
65878#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
65879#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
65880#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65881#[cfg(not(target_arch = "arm64ec"))]
65882#[cfg_attr(test, assert_instr(vst2))]
65883pub unsafe fn vst2q_f16(a: *mut f16, b: float16x8x2_t) {
65884 unsafe extern "unadjusted" {
65885 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.p0.v8f16")]
65886 fn _vst2q_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, size: i32);
65887 }
65888 _vst2q_f16(a as _, b.0, b.1, 2)
65889}
65890#[doc = "Store multiple 2-element structures from two registers"]
65891#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f32)"]
65892#[doc = "## Safety"]
65893#[doc = " * Neon intrinsic unsafe"]
65894#[inline(always)]
65895#[target_feature(enable = "neon")]
65896#[cfg(not(target_arch = "arm"))]
65897#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65898#[cfg_attr(test, assert_instr(st2))]
65899pub unsafe fn vst2_f32(a: *mut f32, b: float32x2x2_t) {
65900 crate::core_arch::macros::interleaving_store!(f32, 2, 2, a, b)
65901}
65902#[doc = "Store multiple 2-element structures from two registers"]
65903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f32)"]
65904#[doc = "## Safety"]
65905#[doc = " * Neon intrinsic unsafe"]
65906#[inline(always)]
65907#[target_feature(enable = "neon")]
65908#[cfg(not(target_arch = "arm"))]
65909#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65910#[cfg_attr(test, assert_instr(st2))]
65911pub unsafe fn vst2q_f32(a: *mut f32, b: float32x4x2_t) {
65912 crate::core_arch::macros::interleaving_store!(f32, 4, 2, a, b)
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_s8)"]
65916#[doc = "## Safety"]
65917#[doc = " * Neon intrinsic unsafe"]
65918#[inline(always)]
65919#[target_feature(enable = "neon")]
65920#[cfg(not(target_arch = "arm"))]
65921#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65922#[cfg_attr(test, assert_instr(st2))]
65923pub unsafe fn vst2_s8(a: *mut i8, b: int8x8x2_t) {
65924 crate::core_arch::macros::interleaving_store!(i8, 8, 2, a, b)
65925}
65926#[doc = "Store multiple 2-element structures from two registers"]
65927#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s8)"]
65928#[doc = "## Safety"]
65929#[doc = " * Neon intrinsic unsafe"]
65930#[inline(always)]
65931#[target_feature(enable = "neon")]
65932#[cfg(not(target_arch = "arm"))]
65933#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65934#[cfg_attr(test, assert_instr(st2))]
65935pub unsafe fn vst2q_s8(a: *mut i8, b: int8x16x2_t) {
65936 crate::core_arch::macros::interleaving_store!(i8, 16, 2, a, b)
65937}
65938#[doc = "Store multiple 2-element structures from two registers"]
65939#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s16)"]
65940#[doc = "## Safety"]
65941#[doc = " * Neon intrinsic unsafe"]
65942#[inline(always)]
65943#[target_feature(enable = "neon")]
65944#[cfg(not(target_arch = "arm"))]
65945#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65946#[cfg_attr(test, assert_instr(st2))]
65947pub unsafe fn vst2_s16(a: *mut i16, b: int16x4x2_t) {
65948 crate::core_arch::macros::interleaving_store!(i16, 4, 2, a, b)
65949}
65950#[doc = "Store multiple 2-element structures from two registers"]
65951#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s16)"]
65952#[doc = "## Safety"]
65953#[doc = " * Neon intrinsic unsafe"]
65954#[inline(always)]
65955#[target_feature(enable = "neon")]
65956#[cfg(not(target_arch = "arm"))]
65957#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65958#[cfg_attr(test, assert_instr(st2))]
65959pub unsafe fn vst2q_s16(a: *mut i16, b: int16x8x2_t) {
65960 crate::core_arch::macros::interleaving_store!(i16, 8, 2, a, b)
65961}
65962#[doc = "Store multiple 2-element structures from two registers"]
65963#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s32)"]
65964#[doc = "## Safety"]
65965#[doc = " * Neon intrinsic unsafe"]
65966#[inline(always)]
65967#[target_feature(enable = "neon")]
65968#[cfg(not(target_arch = "arm"))]
65969#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65970#[cfg_attr(test, assert_instr(st2))]
65971pub unsafe fn vst2_s32(a: *mut i32, b: int32x2x2_t) {
65972 crate::core_arch::macros::interleaving_store!(i32, 2, 2, a, b)
65973}
65974#[doc = "Store multiple 2-element structures from two registers"]
65975#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s32)"]
65976#[doc = "## Safety"]
65977#[doc = " * Neon intrinsic unsafe"]
65978#[inline(always)]
65979#[target_feature(enable = "neon")]
65980#[cfg(not(target_arch = "arm"))]
65981#[stable(feature = "neon_intrinsics", since = "1.59.0")]
65982#[cfg_attr(test, assert_instr(st2))]
65983pub unsafe fn vst2q_s32(a: *mut i32, b: int32x4x2_t) {
65984 crate::core_arch::macros::interleaving_store!(i32, 4, 2, a, b)
65985}
65986#[doc = "Store multiple 2-element structures from two registers"]
65987#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_f32)"]
65988#[doc = "## Safety"]
65989#[doc = " * Neon intrinsic unsafe"]
65990#[inline(always)]
65991#[cfg(target_arch = "arm")]
65992#[target_feature(enable = "neon,v7")]
65993#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
65994#[cfg_attr(test, assert_instr(vst2))]
65995pub unsafe fn vst2_f32(a: *mut f32, b: float32x2x2_t) {
65996 unsafe extern "unadjusted" {
65997 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v2f32.p0")]
65998 fn _vst2_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, size: i32);
65999 }
66000 _vst2_f32(a as _, b.0, b.1, 4)
66001}
66002#[doc = "Store multiple 2-element structures from two registers"]
66003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_f32)"]
66004#[doc = "## Safety"]
66005#[doc = " * Neon intrinsic unsafe"]
66006#[inline(always)]
66007#[cfg(target_arch = "arm")]
66008#[target_feature(enable = "neon,v7")]
66009#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66010#[cfg_attr(test, assert_instr(vst2))]
66011pub unsafe fn vst2q_f32(a: *mut f32, b: float32x4x2_t) {
66012 unsafe extern "unadjusted" {
66013 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4f32.p0")]
66014 fn _vst2q_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, size: i32);
66015 }
66016 _vst2q_f32(a as _, b.0, b.1, 4)
66017}
66018#[doc = "Store multiple 2-element structures from two registers"]
66019#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s8)"]
66020#[doc = "## Safety"]
66021#[doc = " * Neon intrinsic unsafe"]
66022#[inline(always)]
66023#[cfg(target_arch = "arm")]
66024#[target_feature(enable = "neon,v7")]
66025#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66026#[cfg_attr(test, assert_instr(vst2))]
66027pub unsafe fn vst2_s8(a: *mut i8, b: int8x8x2_t) {
66028 unsafe extern "unadjusted" {
66029 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v8i8.p0")]
66030 fn _vst2_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, size: i32);
66031 }
66032 _vst2_s8(a as _, b.0, b.1, 1)
66033}
66034#[doc = "Store multiple 2-element structures from two registers"]
66035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s8)"]
66036#[doc = "## Safety"]
66037#[doc = " * Neon intrinsic unsafe"]
66038#[inline(always)]
66039#[cfg(target_arch = "arm")]
66040#[target_feature(enable = "neon,v7")]
66041#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66042#[cfg_attr(test, assert_instr(vst2))]
66043pub unsafe fn vst2q_s8(a: *mut i8, b: int8x16x2_t) {
66044 unsafe extern "unadjusted" {
66045 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v16i8.p0")]
66046 fn _vst2q_s8(ptr: *mut i8, a: int8x16_t, b: int8x16_t, size: i32);
66047 }
66048 _vst2q_s8(a as _, b.0, b.1, 1)
66049}
66050#[doc = "Store multiple 2-element structures from two registers"]
66051#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s16)"]
66052#[doc = "## Safety"]
66053#[doc = " * Neon intrinsic unsafe"]
66054#[inline(always)]
66055#[cfg(target_arch = "arm")]
66056#[target_feature(enable = "neon,v7")]
66057#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66058#[cfg_attr(test, assert_instr(vst2))]
66059pub unsafe fn vst2_s16(a: *mut i16, b: int16x4x2_t) {
66060 unsafe extern "unadjusted" {
66061 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4i16.p0")]
66062 fn _vst2_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, size: i32);
66063 }
66064 _vst2_s16(a as _, b.0, b.1, 2)
66065}
66066#[doc = "Store multiple 2-element structures from two registers"]
66067#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s16)"]
66068#[doc = "## Safety"]
66069#[doc = " * Neon intrinsic unsafe"]
66070#[inline(always)]
66071#[cfg(target_arch = "arm")]
66072#[target_feature(enable = "neon,v7")]
66073#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66074#[cfg_attr(test, assert_instr(vst2))]
66075pub unsafe fn vst2q_s16(a: *mut i16, b: int16x8x2_t) {
66076 unsafe extern "unadjusted" {
66077 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v8i16.p0")]
66078 fn _vst2q_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, size: i32);
66079 }
66080 _vst2q_s16(a as _, b.0, b.1, 2)
66081}
66082#[doc = "Store multiple 2-element structures from two registers"]
66083#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s32)"]
66084#[doc = "## Safety"]
66085#[doc = " * Neon intrinsic unsafe"]
66086#[inline(always)]
66087#[cfg(target_arch = "arm")]
66088#[target_feature(enable = "neon,v7")]
66089#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66090#[cfg_attr(test, assert_instr(vst2))]
66091pub unsafe fn vst2_s32(a: *mut i32, b: int32x2x2_t) {
66092 unsafe extern "unadjusted" {
66093 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v2i32.p0")]
66094 fn _vst2_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, size: i32);
66095 }
66096 _vst2_s32(a as _, b.0, b.1, 4)
66097}
66098#[doc = "Store multiple 2-element structures from two registers"]
66099#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_s32)"]
66100#[doc = "## Safety"]
66101#[doc = " * Neon intrinsic unsafe"]
66102#[inline(always)]
66103#[cfg(target_arch = "arm")]
66104#[target_feature(enable = "neon,v7")]
66105#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66106#[cfg_attr(test, assert_instr(vst2))]
66107pub unsafe fn vst2q_s32(a: *mut i32, b: int32x4x2_t) {
66108 unsafe extern "unadjusted" {
66109 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2.v4i32.p0")]
66110 fn _vst2q_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, size: i32);
66111 }
66112 _vst2q_s32(a as _, b.0, b.1, 4)
66113}
66114#[doc = "Store multiple 2-element structures from two registers"]
66115#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f16)"]
66116#[doc = "## Safety"]
66117#[doc = " * Neon intrinsic unsafe"]
66118#[inline(always)]
66119#[target_feature(enable = "neon")]
66120#[cfg(not(target_arch = "arm"))]
66121#[rustc_legacy_const_generics(2)]
66122#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66123#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
66124#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66125#[cfg(not(target_arch = "arm64ec"))]
66126pub unsafe fn vst2_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x2_t) {
66127 static_assert_uimm_bits!(LANE, 2);
66128 unsafe extern "unadjusted" {
66129 #[cfg_attr(
66130 any(target_arch = "aarch64", target_arch = "arm64ec"),
66131 link_name = "llvm.aarch64.neon.st2lane.v4f16.p0"
66132 )]
66133 fn _vst2_lane_f16(a: float16x4_t, b: float16x4_t, n: i64, ptr: *mut i8);
66134 }
66135 _vst2_lane_f16(b.0, b.1, LANE as i64, a as _)
66136}
66137#[doc = "Store multiple 2-element structures from two registers"]
66138#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f16)"]
66139#[doc = "## Safety"]
66140#[doc = " * Neon intrinsic unsafe"]
66141#[inline(always)]
66142#[target_feature(enable = "neon")]
66143#[cfg(not(target_arch = "arm"))]
66144#[rustc_legacy_const_generics(2)]
66145#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66146#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
66147#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66148#[cfg(not(target_arch = "arm64ec"))]
66149pub unsafe fn vst2q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x2_t) {
66150 static_assert_uimm_bits!(LANE, 3);
66151 unsafe extern "unadjusted" {
66152 #[cfg_attr(
66153 any(target_arch = "aarch64", target_arch = "arm64ec"),
66154 link_name = "llvm.aarch64.neon.st2lane.v8f16.p0"
66155 )]
66156 fn _vst2q_lane_f16(a: float16x8_t, b: float16x8_t, n: i64, ptr: *mut i8);
66157 }
66158 _vst2q_lane_f16(b.0, b.1, LANE as i64, a as _)
66159}
66160#[doc = "Store multiple 2-element structures from two registers"]
66161#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f16)"]
66162#[doc = "## Safety"]
66163#[doc = " * Neon intrinsic unsafe"]
66164#[inline(always)]
66165#[target_feature(enable = "neon")]
66166#[cfg(target_arch = "arm")]
66167#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66168#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66169#[rustc_legacy_const_generics(2)]
66170#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
66171#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66172#[cfg(not(target_arch = "arm64ec"))]
66173pub unsafe fn vst2_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x2_t) {
66174 static_assert_uimm_bits!(LANE, 2);
66175 unsafe extern "unadjusted" {
66176 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.p0.v4f16")]
66177 fn _vst2_lane_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, n: i32, size: i32);
66178 }
66179 _vst2_lane_f16(a as _, b.0, b.1, LANE, 2)
66180}
66181#[doc = "Store multiple 2-element structures from two registers"]
66182#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f16)"]
66183#[doc = "## Safety"]
66184#[doc = " * Neon intrinsic unsafe"]
66185#[inline(always)]
66186#[target_feature(enable = "neon")]
66187#[cfg(target_arch = "arm")]
66188#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66189#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66190#[rustc_legacy_const_generics(2)]
66191#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
66192#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66193#[cfg(not(target_arch = "arm64ec"))]
66194pub unsafe fn vst2q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x2_t) {
66195 static_assert_uimm_bits!(LANE, 1);
66196 unsafe extern "unadjusted" {
66197 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.p0.v8f16")]
66198 fn _vst2q_lane_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, n: i32, size: i32);
66199 }
66200 _vst2q_lane_f16(a as _, b.0, b.1, LANE, 2)
66201}
66202#[doc = "Store multiple 2-element structures from two registers"]
66203#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f32)"]
66204#[doc = "## Safety"]
66205#[doc = " * Neon intrinsic unsafe"]
66206#[inline(always)]
66207#[target_feature(enable = "neon")]
66208#[cfg(not(target_arch = "arm"))]
66209#[rustc_legacy_const_generics(2)]
66210#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66211#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66212pub unsafe fn vst2_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x2_t) {
66213 static_assert_uimm_bits!(LANE, 1);
66214 unsafe extern "unadjusted" {
66215 #[cfg_attr(
66216 any(target_arch = "aarch64", target_arch = "arm64ec"),
66217 link_name = "llvm.aarch64.neon.st2lane.v2f32.p0"
66218 )]
66219 fn _vst2_lane_f32(a: float32x2_t, b: float32x2_t, n: i64, ptr: *mut i8);
66220 }
66221 _vst2_lane_f32(b.0, b.1, LANE as i64, a as _)
66222}
66223#[doc = "Store multiple 2-element structures from two registers"]
66224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f32)"]
66225#[doc = "## Safety"]
66226#[doc = " * Neon intrinsic unsafe"]
66227#[inline(always)]
66228#[target_feature(enable = "neon")]
66229#[cfg(not(target_arch = "arm"))]
66230#[rustc_legacy_const_generics(2)]
66231#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66232#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66233pub unsafe fn vst2q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x2_t) {
66234 static_assert_uimm_bits!(LANE, 2);
66235 unsafe extern "unadjusted" {
66236 #[cfg_attr(
66237 any(target_arch = "aarch64", target_arch = "arm64ec"),
66238 link_name = "llvm.aarch64.neon.st2lane.v4f32.p0"
66239 )]
66240 fn _vst2q_lane_f32(a: float32x4_t, b: float32x4_t, n: i64, ptr: *mut i8);
66241 }
66242 _vst2q_lane_f32(b.0, b.1, LANE as i64, a as _)
66243}
66244#[doc = "Store multiple 2-element structures from two registers"]
66245#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s8)"]
66246#[doc = "## Safety"]
66247#[doc = " * Neon intrinsic unsafe"]
66248#[inline(always)]
66249#[target_feature(enable = "neon")]
66250#[cfg(not(target_arch = "arm"))]
66251#[rustc_legacy_const_generics(2)]
66252#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66253#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66254pub unsafe fn vst2_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x2_t) {
66255 static_assert_uimm_bits!(LANE, 3);
66256 unsafe extern "unadjusted" {
66257 #[cfg_attr(
66258 any(target_arch = "aarch64", target_arch = "arm64ec"),
66259 link_name = "llvm.aarch64.neon.st2lane.v8i8.p0"
66260 )]
66261 fn _vst2_lane_s8(a: int8x8_t, b: int8x8_t, n: i64, ptr: *mut i8);
66262 }
66263 _vst2_lane_s8(b.0, b.1, LANE as i64, a as _)
66264}
66265#[doc = "Store multiple 2-element structures from two registers"]
66266#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s16)"]
66267#[doc = "## Safety"]
66268#[doc = " * Neon intrinsic unsafe"]
66269#[inline(always)]
66270#[target_feature(enable = "neon")]
66271#[cfg(not(target_arch = "arm"))]
66272#[rustc_legacy_const_generics(2)]
66273#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66274#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66275pub unsafe fn vst2_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x2_t) {
66276 static_assert_uimm_bits!(LANE, 2);
66277 unsafe extern "unadjusted" {
66278 #[cfg_attr(
66279 any(target_arch = "aarch64", target_arch = "arm64ec"),
66280 link_name = "llvm.aarch64.neon.st2lane.v4i16.p0"
66281 )]
66282 fn _vst2_lane_s16(a: int16x4_t, b: int16x4_t, n: i64, ptr: *mut i8);
66283 }
66284 _vst2_lane_s16(b.0, b.1, LANE as i64, a as _)
66285}
66286#[doc = "Store multiple 2-element structures from two registers"]
66287#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s16)"]
66288#[doc = "## Safety"]
66289#[doc = " * Neon intrinsic unsafe"]
66290#[inline(always)]
66291#[target_feature(enable = "neon")]
66292#[cfg(not(target_arch = "arm"))]
66293#[rustc_legacy_const_generics(2)]
66294#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66295#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66296pub unsafe fn vst2q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x2_t) {
66297 static_assert_uimm_bits!(LANE, 3);
66298 unsafe extern "unadjusted" {
66299 #[cfg_attr(
66300 any(target_arch = "aarch64", target_arch = "arm64ec"),
66301 link_name = "llvm.aarch64.neon.st2lane.v8i16.p0"
66302 )]
66303 fn _vst2q_lane_s16(a: int16x8_t, b: int16x8_t, n: i64, ptr: *mut i8);
66304 }
66305 _vst2q_lane_s16(b.0, b.1, LANE as i64, a as _)
66306}
66307#[doc = "Store multiple 2-element structures from two registers"]
66308#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s32)"]
66309#[doc = "## Safety"]
66310#[doc = " * Neon intrinsic unsafe"]
66311#[inline(always)]
66312#[target_feature(enable = "neon")]
66313#[cfg(not(target_arch = "arm"))]
66314#[rustc_legacy_const_generics(2)]
66315#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66316#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66317pub unsafe fn vst2_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x2_t) {
66318 static_assert_uimm_bits!(LANE, 1);
66319 unsafe extern "unadjusted" {
66320 #[cfg_attr(
66321 any(target_arch = "aarch64", target_arch = "arm64ec"),
66322 link_name = "llvm.aarch64.neon.st2lane.v2i32.p0"
66323 )]
66324 fn _vst2_lane_s32(a: int32x2_t, b: int32x2_t, n: i64, ptr: *mut i8);
66325 }
66326 _vst2_lane_s32(b.0, b.1, LANE as i64, a as _)
66327}
66328#[doc = "Store multiple 2-element structures from two registers"]
66329#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s32)"]
66330#[doc = "## Safety"]
66331#[doc = " * Neon intrinsic unsafe"]
66332#[inline(always)]
66333#[target_feature(enable = "neon")]
66334#[cfg(not(target_arch = "arm"))]
66335#[rustc_legacy_const_generics(2)]
66336#[cfg_attr(test, assert_instr(st2, LANE = 0))]
66337#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66338pub unsafe fn vst2q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x2_t) {
66339 static_assert_uimm_bits!(LANE, 2);
66340 unsafe extern "unadjusted" {
66341 #[cfg_attr(
66342 any(target_arch = "aarch64", target_arch = "arm64ec"),
66343 link_name = "llvm.aarch64.neon.st2lane.v4i32.p0"
66344 )]
66345 fn _vst2q_lane_s32(a: int32x4_t, b: int32x4_t, n: i64, ptr: *mut i8);
66346 }
66347 _vst2q_lane_s32(b.0, b.1, LANE as i64, a as _)
66348}
66349#[doc = "Store multiple 2-element structures from two registers"]
66350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_f32)"]
66351#[doc = "## Safety"]
66352#[doc = " * Neon intrinsic unsafe"]
66353#[inline(always)]
66354#[cfg(target_arch = "arm")]
66355#[target_feature(enable = "neon,v7")]
66356#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66357#[rustc_legacy_const_generics(2)]
66358#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66359pub unsafe fn vst2_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x2_t) {
66360 static_assert_uimm_bits!(LANE, 1);
66361 unsafe extern "unadjusted" {
66362 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v2f32.p0")]
66363 fn _vst2_lane_f32(ptr: *mut i8, a: float32x2_t, b: float32x2_t, n: i32, size: i32);
66364 }
66365 _vst2_lane_f32(a as _, b.0, b.1, LANE, 4)
66366}
66367#[doc = "Store multiple 2-element structures from two registers"]
66368#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_f32)"]
66369#[doc = "## Safety"]
66370#[doc = " * Neon intrinsic unsafe"]
66371#[inline(always)]
66372#[cfg(target_arch = "arm")]
66373#[target_feature(enable = "neon,v7")]
66374#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66375#[rustc_legacy_const_generics(2)]
66376#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66377pub unsafe fn vst2q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x2_t) {
66378 static_assert_uimm_bits!(LANE, 2);
66379 unsafe extern "unadjusted" {
66380 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4f32.p0")]
66381 fn _vst2q_lane_f32(ptr: *mut i8, a: float32x4_t, b: float32x4_t, n: i32, size: i32);
66382 }
66383 _vst2q_lane_f32(a as _, b.0, b.1, LANE, 4)
66384}
66385#[doc = "Store multiple 2-element structures from two registers"]
66386#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s8)"]
66387#[doc = "## Safety"]
66388#[doc = " * Neon intrinsic unsafe"]
66389#[inline(always)]
66390#[cfg(target_arch = "arm")]
66391#[target_feature(enable = "neon,v7")]
66392#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66393#[rustc_legacy_const_generics(2)]
66394#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66395pub unsafe fn vst2_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x2_t) {
66396 static_assert_uimm_bits!(LANE, 3);
66397 unsafe extern "unadjusted" {
66398 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v8i8.p0")]
66399 fn _vst2_lane_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, n: i32, size: i32);
66400 }
66401 _vst2_lane_s8(a as _, b.0, b.1, LANE, 1)
66402}
66403#[doc = "Store multiple 2-element structures from two registers"]
66404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s16)"]
66405#[doc = "## Safety"]
66406#[doc = " * Neon intrinsic unsafe"]
66407#[inline(always)]
66408#[cfg(target_arch = "arm")]
66409#[target_feature(enable = "neon,v7")]
66410#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66411#[rustc_legacy_const_generics(2)]
66412#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66413pub unsafe fn vst2_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x2_t) {
66414 static_assert_uimm_bits!(LANE, 2);
66415 unsafe extern "unadjusted" {
66416 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4i16.p0")]
66417 fn _vst2_lane_s16(ptr: *mut i8, a: int16x4_t, b: int16x4_t, n: i32, size: i32);
66418 }
66419 _vst2_lane_s16(a as _, b.0, b.1, LANE, 2)
66420}
66421#[doc = "Store multiple 2-element structures from two registers"]
66422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s16)"]
66423#[doc = "## Safety"]
66424#[doc = " * Neon intrinsic unsafe"]
66425#[inline(always)]
66426#[cfg(target_arch = "arm")]
66427#[target_feature(enable = "neon,v7")]
66428#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66429#[rustc_legacy_const_generics(2)]
66430#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66431pub unsafe fn vst2q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x2_t) {
66432 static_assert_uimm_bits!(LANE, 3);
66433 unsafe extern "unadjusted" {
66434 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v8i16.p0")]
66435 fn _vst2q_lane_s16(ptr: *mut i8, a: int16x8_t, b: int16x8_t, n: i32, size: i32);
66436 }
66437 _vst2q_lane_s16(a as _, b.0, b.1, LANE, 2)
66438}
66439#[doc = "Store multiple 2-element structures from two registers"]
66440#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_s32)"]
66441#[doc = "## Safety"]
66442#[doc = " * Neon intrinsic unsafe"]
66443#[inline(always)]
66444#[cfg(target_arch = "arm")]
66445#[target_feature(enable = "neon,v7")]
66446#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66447#[rustc_legacy_const_generics(2)]
66448#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66449pub unsafe fn vst2_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x2_t) {
66450 static_assert_uimm_bits!(LANE, 1);
66451 unsafe extern "unadjusted" {
66452 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v2i32.p0")]
66453 fn _vst2_lane_s32(ptr: *mut i8, a: int32x2_t, b: int32x2_t, n: i32, size: i32);
66454 }
66455 _vst2_lane_s32(a as _, b.0, b.1, LANE, 4)
66456}
66457#[doc = "Store multiple 2-element structures from two registers"]
66458#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_s32)"]
66459#[doc = "## Safety"]
66460#[doc = " * Neon intrinsic unsafe"]
66461#[inline(always)]
66462#[cfg(target_arch = "arm")]
66463#[target_feature(enable = "neon,v7")]
66464#[cfg_attr(test, assert_instr(vst2, LANE = 0))]
66465#[rustc_legacy_const_generics(2)]
66466#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66467pub unsafe fn vst2q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x2_t) {
66468 static_assert_uimm_bits!(LANE, 2);
66469 unsafe extern "unadjusted" {
66470 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst2lane.v4i32.p0")]
66471 fn _vst2q_lane_s32(ptr: *mut i8, a: int32x4_t, b: int32x4_t, n: i32, size: i32);
66472 }
66473 _vst2q_lane_s32(a as _, b.0, b.1, LANE, 4)
66474}
66475#[doc = "Store multiple 2-element structures from two registers"]
66476#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u8)"]
66477#[doc = "## Safety"]
66478#[doc = " * Neon intrinsic unsafe"]
66479#[inline(always)]
66480#[target_feature(enable = "neon")]
66481#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66482#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66483#[cfg_attr(
66484 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66485 assert_instr(st2, LANE = 0)
66486)]
66487#[rustc_legacy_const_generics(2)]
66488#[cfg_attr(
66489 not(target_arch = "arm"),
66490 stable(feature = "neon_intrinsics", since = "1.59.0")
66491)]
66492#[cfg_attr(
66493 target_arch = "arm",
66494 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66495)]
66496pub unsafe fn vst2_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x2_t) {
66497 static_assert_uimm_bits!(LANE, 3);
66498 vst2_lane_s8::<LANE>(transmute(a), transmute(b))
66499}
66500#[doc = "Store multiple 2-element structures from two registers"]
66501#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u16)"]
66502#[doc = "## Safety"]
66503#[doc = " * Neon intrinsic unsafe"]
66504#[inline(always)]
66505#[target_feature(enable = "neon")]
66506#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66507#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66508#[cfg_attr(
66509 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66510 assert_instr(st2, LANE = 0)
66511)]
66512#[rustc_legacy_const_generics(2)]
66513#[cfg_attr(
66514 not(target_arch = "arm"),
66515 stable(feature = "neon_intrinsics", since = "1.59.0")
66516)]
66517#[cfg_attr(
66518 target_arch = "arm",
66519 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66520)]
66521pub unsafe fn vst2_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x2_t) {
66522 static_assert_uimm_bits!(LANE, 2);
66523 vst2_lane_s16::<LANE>(transmute(a), transmute(b))
66524}
66525#[doc = "Store multiple 2-element structures from two registers"]
66526#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_u16)"]
66527#[doc = "## Safety"]
66528#[doc = " * Neon intrinsic unsafe"]
66529#[inline(always)]
66530#[target_feature(enable = "neon")]
66531#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66532#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66533#[cfg_attr(
66534 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66535 assert_instr(st2, LANE = 0)
66536)]
66537#[rustc_legacy_const_generics(2)]
66538#[cfg_attr(
66539 not(target_arch = "arm"),
66540 stable(feature = "neon_intrinsics", since = "1.59.0")
66541)]
66542#[cfg_attr(
66543 target_arch = "arm",
66544 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66545)]
66546pub unsafe fn vst2q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x2_t) {
66547 static_assert_uimm_bits!(LANE, 3);
66548 vst2q_lane_s16::<LANE>(transmute(a), transmute(b))
66549}
66550#[doc = "Store multiple 2-element structures from two registers"]
66551#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_u32)"]
66552#[doc = "## Safety"]
66553#[doc = " * Neon intrinsic unsafe"]
66554#[inline(always)]
66555#[target_feature(enable = "neon")]
66556#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66557#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66558#[cfg_attr(
66559 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66560 assert_instr(st2, LANE = 0)
66561)]
66562#[rustc_legacy_const_generics(2)]
66563#[cfg_attr(
66564 not(target_arch = "arm"),
66565 stable(feature = "neon_intrinsics", since = "1.59.0")
66566)]
66567#[cfg_attr(
66568 target_arch = "arm",
66569 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66570)]
66571pub unsafe fn vst2_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x2_t) {
66572 static_assert_uimm_bits!(LANE, 1);
66573 vst2_lane_s32::<LANE>(transmute(a), transmute(b))
66574}
66575#[doc = "Store multiple 2-element structures from two registers"]
66576#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_u32)"]
66577#[doc = "## Safety"]
66578#[doc = " * Neon intrinsic unsafe"]
66579#[inline(always)]
66580#[target_feature(enable = "neon")]
66581#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66582#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66583#[cfg_attr(
66584 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66585 assert_instr(st2, LANE = 0)
66586)]
66587#[rustc_legacy_const_generics(2)]
66588#[cfg_attr(
66589 not(target_arch = "arm"),
66590 stable(feature = "neon_intrinsics", since = "1.59.0")
66591)]
66592#[cfg_attr(
66593 target_arch = "arm",
66594 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66595)]
66596pub unsafe fn vst2q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x2_t) {
66597 static_assert_uimm_bits!(LANE, 2);
66598 vst2q_lane_s32::<LANE>(transmute(a), transmute(b))
66599}
66600#[doc = "Store multiple 2-element structures from two registers"]
66601#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_p8)"]
66602#[doc = "## Safety"]
66603#[doc = " * Neon intrinsic unsafe"]
66604#[inline(always)]
66605#[target_feature(enable = "neon")]
66606#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66607#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66608#[cfg_attr(
66609 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66610 assert_instr(st2, LANE = 0)
66611)]
66612#[rustc_legacy_const_generics(2)]
66613#[cfg_attr(
66614 not(target_arch = "arm"),
66615 stable(feature = "neon_intrinsics", since = "1.59.0")
66616)]
66617#[cfg_attr(
66618 target_arch = "arm",
66619 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66620)]
66621pub unsafe fn vst2_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x2_t) {
66622 static_assert_uimm_bits!(LANE, 3);
66623 vst2_lane_s8::<LANE>(transmute(a), transmute(b))
66624}
66625#[doc = "Store multiple 2-element structures from two registers"]
66626#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_lane_p16)"]
66627#[doc = "## Safety"]
66628#[doc = " * Neon intrinsic unsafe"]
66629#[inline(always)]
66630#[target_feature(enable = "neon")]
66631#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66632#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66633#[cfg_attr(
66634 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66635 assert_instr(st2, LANE = 0)
66636)]
66637#[rustc_legacy_const_generics(2)]
66638#[cfg_attr(
66639 not(target_arch = "arm"),
66640 stable(feature = "neon_intrinsics", since = "1.59.0")
66641)]
66642#[cfg_attr(
66643 target_arch = "arm",
66644 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66645)]
66646pub unsafe fn vst2_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x2_t) {
66647 static_assert_uimm_bits!(LANE, 2);
66648 vst2_lane_s16::<LANE>(transmute(a), transmute(b))
66649}
66650#[doc = "Store multiple 2-element structures from two registers"]
66651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_lane_p16)"]
66652#[doc = "## Safety"]
66653#[doc = " * Neon intrinsic unsafe"]
66654#[inline(always)]
66655#[target_feature(enable = "neon")]
66656#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66657#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2, LANE = 0))]
66658#[cfg_attr(
66659 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66660 assert_instr(st2, LANE = 0)
66661)]
66662#[rustc_legacy_const_generics(2)]
66663#[cfg_attr(
66664 not(target_arch = "arm"),
66665 stable(feature = "neon_intrinsics", since = "1.59.0")
66666)]
66667#[cfg_attr(
66668 target_arch = "arm",
66669 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66670)]
66671pub unsafe fn vst2q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x2_t) {
66672 static_assert_uimm_bits!(LANE, 3);
66673 vst2q_lane_s16::<LANE>(transmute(a), transmute(b))
66674}
66675#[doc = "Store multiple 2-element structures from two registers"]
66676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p64)"]
66677#[doc = "## Safety"]
66678#[doc = " * Neon intrinsic unsafe"]
66679#[inline(always)]
66680#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
66681#[target_feature(enable = "neon,aes")]
66682#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
66683#[cfg_attr(
66684 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66685 assert_instr(nop)
66686)]
66687#[cfg_attr(
66688 not(target_arch = "arm"),
66689 stable(feature = "neon_intrinsics", since = "1.59.0")
66690)]
66691#[cfg_attr(
66692 target_arch = "arm",
66693 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66694)]
66695pub unsafe fn vst2_p64(a: *mut p64, b: poly64x1x2_t) {
66696 vst2_s64(transmute(a), transmute(b))
66697}
66698#[doc = "Store multiple 2-element structures from two registers"]
66699#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_s64)"]
66700#[doc = "## Safety"]
66701#[doc = " * Neon intrinsic unsafe"]
66702#[inline(always)]
66703#[cfg(target_arch = "arm")]
66704#[target_feature(enable = "neon,v7")]
66705#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
66706#[cfg_attr(test, assert_instr(nop))]
66707pub unsafe fn vst2_s64(a: *mut i64, b: int64x1x2_t) {
66708 core::ptr::write_unaligned(a.cast(), 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_s64)"]
66712#[doc = "## Safety"]
66713#[doc = " * Neon intrinsic unsafe"]
66714#[inline(always)]
66715#[target_feature(enable = "neon")]
66716#[cfg(not(target_arch = "arm"))]
66717#[stable(feature = "neon_intrinsics", since = "1.59.0")]
66718#[cfg_attr(test, assert_instr(nop))]
66719pub unsafe fn vst2_s64(a: *mut i64, b: int64x1x2_t) {
66720 core::ptr::write_unaligned(a.cast(), b)
66721}
66722#[doc = "Store multiple 2-element structures from two registers"]
66723#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u64)"]
66724#[doc = "## Safety"]
66725#[doc = " * Neon intrinsic unsafe"]
66726#[inline(always)]
66727#[target_feature(enable = "neon")]
66728#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66729#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
66730#[cfg_attr(
66731 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66732 assert_instr(nop)
66733)]
66734#[cfg_attr(
66735 not(target_arch = "arm"),
66736 stable(feature = "neon_intrinsics", since = "1.59.0")
66737)]
66738#[cfg_attr(
66739 target_arch = "arm",
66740 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66741)]
66742pub unsafe fn vst2_u64(a: *mut u64, b: uint64x1x2_t) {
66743 vst2_s64(transmute(a), transmute(b))
66744}
66745#[doc = "Store multiple 2-element structures from two registers"]
66746#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u8)"]
66747#[doc = "## Safety"]
66748#[doc = " * Neon intrinsic unsafe"]
66749#[inline(always)]
66750#[target_feature(enable = "neon")]
66751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66753#[cfg_attr(
66754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66755 assert_instr(st2)
66756)]
66757#[cfg_attr(
66758 not(target_arch = "arm"),
66759 stable(feature = "neon_intrinsics", since = "1.59.0")
66760)]
66761#[cfg_attr(
66762 target_arch = "arm",
66763 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66764)]
66765pub unsafe fn vst2_u8(a: *mut u8, b: uint8x8x2_t) {
66766 vst2_s8(transmute(a), transmute(b))
66767}
66768#[doc = "Store multiple 2-element structures from two registers"]
66769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u8)"]
66770#[doc = "## Safety"]
66771#[doc = " * Neon intrinsic unsafe"]
66772#[inline(always)]
66773#[target_feature(enable = "neon")]
66774#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66775#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66776#[cfg_attr(
66777 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66778 assert_instr(st2)
66779)]
66780#[cfg_attr(
66781 not(target_arch = "arm"),
66782 stable(feature = "neon_intrinsics", since = "1.59.0")
66783)]
66784#[cfg_attr(
66785 target_arch = "arm",
66786 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66787)]
66788pub unsafe fn vst2q_u8(a: *mut u8, b: uint8x16x2_t) {
66789 vst2q_s8(transmute(a), transmute(b))
66790}
66791#[doc = "Store multiple 2-element structures from two registers"]
66792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u16)"]
66793#[doc = "## Safety"]
66794#[doc = " * Neon intrinsic unsafe"]
66795#[inline(always)]
66796#[target_feature(enable = "neon")]
66797#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66798#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66799#[cfg_attr(
66800 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66801 assert_instr(st2)
66802)]
66803#[cfg_attr(
66804 not(target_arch = "arm"),
66805 stable(feature = "neon_intrinsics", since = "1.59.0")
66806)]
66807#[cfg_attr(
66808 target_arch = "arm",
66809 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66810)]
66811pub unsafe fn vst2_u16(a: *mut u16, b: uint16x4x2_t) {
66812 vst2_s16(transmute(a), transmute(b))
66813}
66814#[doc = "Store multiple 2-element structures from two registers"]
66815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u16)"]
66816#[doc = "## Safety"]
66817#[doc = " * Neon intrinsic unsafe"]
66818#[inline(always)]
66819#[target_feature(enable = "neon")]
66820#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66821#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66822#[cfg_attr(
66823 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66824 assert_instr(st2)
66825)]
66826#[cfg_attr(
66827 not(target_arch = "arm"),
66828 stable(feature = "neon_intrinsics", since = "1.59.0")
66829)]
66830#[cfg_attr(
66831 target_arch = "arm",
66832 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66833)]
66834pub unsafe fn vst2q_u16(a: *mut u16, b: uint16x8x2_t) {
66835 vst2q_s16(transmute(a), transmute(b))
66836}
66837#[doc = "Store multiple 2-element structures from two registers"]
66838#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_u32)"]
66839#[doc = "## Safety"]
66840#[doc = " * Neon intrinsic unsafe"]
66841#[inline(always)]
66842#[target_feature(enable = "neon")]
66843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66844#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66845#[cfg_attr(
66846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66847 assert_instr(st2)
66848)]
66849#[cfg_attr(
66850 not(target_arch = "arm"),
66851 stable(feature = "neon_intrinsics", since = "1.59.0")
66852)]
66853#[cfg_attr(
66854 target_arch = "arm",
66855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66856)]
66857pub unsafe fn vst2_u32(a: *mut u32, b: uint32x2x2_t) {
66858 vst2_s32(transmute(a), transmute(b))
66859}
66860#[doc = "Store multiple 2-element structures from two registers"]
66861#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_u32)"]
66862#[doc = "## Safety"]
66863#[doc = " * Neon intrinsic unsafe"]
66864#[inline(always)]
66865#[target_feature(enable = "neon")]
66866#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66867#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66868#[cfg_attr(
66869 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66870 assert_instr(st2)
66871)]
66872#[cfg_attr(
66873 not(target_arch = "arm"),
66874 stable(feature = "neon_intrinsics", since = "1.59.0")
66875)]
66876#[cfg_attr(
66877 target_arch = "arm",
66878 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66879)]
66880pub unsafe fn vst2q_u32(a: *mut u32, b: uint32x4x2_t) {
66881 vst2q_s32(transmute(a), transmute(b))
66882}
66883#[doc = "Store multiple 2-element structures from two registers"]
66884#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p8)"]
66885#[doc = "## Safety"]
66886#[doc = " * Neon intrinsic unsafe"]
66887#[inline(always)]
66888#[target_feature(enable = "neon")]
66889#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66890#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66891#[cfg_attr(
66892 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66893 assert_instr(st2)
66894)]
66895#[cfg_attr(
66896 not(target_arch = "arm"),
66897 stable(feature = "neon_intrinsics", since = "1.59.0")
66898)]
66899#[cfg_attr(
66900 target_arch = "arm",
66901 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66902)]
66903pub unsafe fn vst2_p8(a: *mut p8, b: poly8x8x2_t) {
66904 vst2_s8(transmute(a), transmute(b))
66905}
66906#[doc = "Store multiple 2-element structures from two registers"]
66907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_p8)"]
66908#[doc = "## Safety"]
66909#[doc = " * Neon intrinsic unsafe"]
66910#[inline(always)]
66911#[target_feature(enable = "neon")]
66912#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66913#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66914#[cfg_attr(
66915 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66916 assert_instr(st2)
66917)]
66918#[cfg_attr(
66919 not(target_arch = "arm"),
66920 stable(feature = "neon_intrinsics", since = "1.59.0")
66921)]
66922#[cfg_attr(
66923 target_arch = "arm",
66924 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66925)]
66926pub unsafe fn vst2q_p8(a: *mut p8, b: poly8x16x2_t) {
66927 vst2q_s8(transmute(a), transmute(b))
66928}
66929#[doc = "Store multiple 2-element structures from two registers"]
66930#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2_p16)"]
66931#[doc = "## Safety"]
66932#[doc = " * Neon intrinsic unsafe"]
66933#[inline(always)]
66934#[target_feature(enable = "neon")]
66935#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66936#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66937#[cfg_attr(
66938 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66939 assert_instr(st2)
66940)]
66941#[cfg_attr(
66942 not(target_arch = "arm"),
66943 stable(feature = "neon_intrinsics", since = "1.59.0")
66944)]
66945#[cfg_attr(
66946 target_arch = "arm",
66947 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66948)]
66949pub unsafe fn vst2_p16(a: *mut p16, b: poly16x4x2_t) {
66950 vst2_s16(transmute(a), transmute(b))
66951}
66952#[doc = "Store multiple 2-element structures from two registers"]
66953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst2q_p16)"]
66954#[doc = "## Safety"]
66955#[doc = " * Neon intrinsic unsafe"]
66956#[inline(always)]
66957#[target_feature(enable = "neon")]
66958#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66959#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst2))]
66960#[cfg_attr(
66961 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
66962 assert_instr(st2)
66963)]
66964#[cfg_attr(
66965 not(target_arch = "arm"),
66966 stable(feature = "neon_intrinsics", since = "1.59.0")
66967)]
66968#[cfg_attr(
66969 target_arch = "arm",
66970 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
66971)]
66972pub unsafe fn vst2q_p16(a: *mut p16, b: poly16x8x2_t) {
66973 vst2q_s16(transmute(a), transmute(b))
66974}
66975#[doc = "Store multiple 3-element structures from three registers"]
66976#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f16)"]
66977#[doc = "## Safety"]
66978#[doc = " * Neon intrinsic unsafe"]
66979#[inline(always)]
66980#[target_feature(enable = "neon")]
66981#[cfg(target_arch = "arm")]
66982#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
66983#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
66984#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
66985#[cfg(not(target_arch = "arm64ec"))]
66986#[cfg_attr(test, assert_instr(vst3))]
66987pub unsafe fn vst3_f16(a: *mut f16, b: float16x4x3_t) {
66988 unsafe extern "unadjusted" {
66989 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v4f16")]
66990 fn _vst3_f16(ptr: *mut i8, a: float16x4_t, b: float16x4_t, c: float16x4_t, size: i32);
66991 }
66992 _vst3_f16(a as _, b.0, b.1, b.2, 2)
66993}
66994#[doc = "Store multiple 3-element structures from three registers"]
66995#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f16)"]
66996#[doc = "## Safety"]
66997#[doc = " * Neon intrinsic unsafe"]
66998#[inline(always)]
66999#[target_feature(enable = "neon")]
67000#[cfg(target_arch = "arm")]
67001#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67002#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67003#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67004#[cfg(not(target_arch = "arm64ec"))]
67005#[cfg_attr(test, assert_instr(vst3))]
67006pub unsafe fn vst3q_f16(a: *mut f16, b: float16x8x3_t) {
67007 unsafe extern "unadjusted" {
67008 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3.p0.v8f16")]
67009 fn _vst3q_f16(ptr: *mut i8, a: float16x8_t, b: float16x8_t, c: float16x8_t, size: i32);
67010 }
67011 _vst3q_f16(a as _, b.0, b.1, b.2, 2)
67012}
67013#[doc = "Store multiple 3-element structures from three registers"]
67014#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f16)"]
67015#[doc = "## Safety"]
67016#[doc = " * Neon intrinsic unsafe"]
67017#[inline(always)]
67018#[target_feature(enable = "neon")]
67019#[cfg(not(target_arch = "arm"))]
67020#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67021#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67022#[cfg(not(target_arch = "arm64ec"))]
67023#[cfg_attr(test, assert_instr(st3))]
67024pub unsafe fn vst3_f16(a: *mut f16, b: float16x4x3_t) {
67025 unsafe extern "unadjusted" {
67026 #[cfg_attr(
67027 any(target_arch = "aarch64", target_arch = "arm64ec"),
67028 link_name = "llvm.aarch64.neon.st3.v4f16.p0"
67029 )]
67030 fn _vst3_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, ptr: *mut i8);
67031 }
67032 _vst3_f16(b.0, b.1, b.2, a as _)
67033}
67034#[doc = "Store multiple 3-element structures from three registers"]
67035#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f16)"]
67036#[doc = "## Safety"]
67037#[doc = " * Neon intrinsic unsafe"]
67038#[inline(always)]
67039#[target_feature(enable = "neon")]
67040#[cfg(not(target_arch = "arm"))]
67041#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67042#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67043#[cfg(not(target_arch = "arm64ec"))]
67044#[cfg_attr(test, assert_instr(st3))]
67045pub unsafe fn vst3q_f16(a: *mut f16, b: float16x8x3_t) {
67046 unsafe extern "unadjusted" {
67047 #[cfg_attr(
67048 any(target_arch = "aarch64", target_arch = "arm64ec"),
67049 link_name = "llvm.aarch64.neon.st3.v8f16.p0"
67050 )]
67051 fn _vst3q_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, ptr: *mut i8);
67052 }
67053 _vst3q_f16(b.0, b.1, b.2, a as _)
67054}
67055#[doc = "Store multiple 3-element structures from three registers"]
67056#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f32)"]
67057#[doc = "## Safety"]
67058#[doc = " * Neon intrinsic unsafe"]
67059#[inline(always)]
67060#[cfg(target_arch = "arm")]
67061#[target_feature(enable = "neon,v7")]
67062#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67063#[cfg_attr(test, assert_instr(vst3))]
67064pub unsafe fn vst3_f32(a: *mut f32, b: float32x2x3_t) {
67065 crate::core_arch::macros::interleaving_store!(f32, 2, 3, a, b)
67066}
67067#[doc = "Store multiple 3-element structures from three registers"]
67068#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f32)"]
67069#[doc = "## Safety"]
67070#[doc = " * Neon intrinsic unsafe"]
67071#[inline(always)]
67072#[cfg(target_arch = "arm")]
67073#[target_feature(enable = "neon,v7")]
67074#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67075#[cfg_attr(test, assert_instr(vst3))]
67076pub unsafe fn vst3q_f32(a: *mut f32, b: float32x4x3_t) {
67077 crate::core_arch::macros::interleaving_store!(f32, 4, 3, a, b)
67078}
67079#[doc = "Store multiple 3-element structures from three registers"]
67080#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s8)"]
67081#[doc = "## Safety"]
67082#[doc = " * Neon intrinsic unsafe"]
67083#[inline(always)]
67084#[cfg(target_arch = "arm")]
67085#[target_feature(enable = "neon,v7")]
67086#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67087#[cfg_attr(test, assert_instr(vst3))]
67088pub unsafe fn vst3_s8(a: *mut i8, b: int8x8x3_t) {
67089 crate::core_arch::macros::interleaving_store!(i8, 8, 3, a, b)
67090}
67091#[doc = "Store multiple 3-element structures from three registers"]
67092#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s8)"]
67093#[doc = "## Safety"]
67094#[doc = " * Neon intrinsic unsafe"]
67095#[inline(always)]
67096#[cfg(target_arch = "arm")]
67097#[target_feature(enable = "neon,v7")]
67098#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67099#[cfg_attr(test, assert_instr(vst3))]
67100pub unsafe fn vst3q_s8(a: *mut i8, b: int8x16x3_t) {
67101 crate::core_arch::macros::interleaving_store!(i8, 16, 3, a, b)
67102}
67103#[doc = "Store multiple 3-element structures from three registers"]
67104#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s16)"]
67105#[doc = "## Safety"]
67106#[doc = " * Neon intrinsic unsafe"]
67107#[inline(always)]
67108#[cfg(target_arch = "arm")]
67109#[target_feature(enable = "neon,v7")]
67110#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67111#[cfg_attr(test, assert_instr(vst3))]
67112pub unsafe fn vst3_s16(a: *mut i16, b: int16x4x3_t) {
67113 crate::core_arch::macros::interleaving_store!(i16, 4, 3, a, b)
67114}
67115#[doc = "Store multiple 3-element structures from three registers"]
67116#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s16)"]
67117#[doc = "## Safety"]
67118#[doc = " * Neon intrinsic unsafe"]
67119#[inline(always)]
67120#[cfg(target_arch = "arm")]
67121#[target_feature(enable = "neon,v7")]
67122#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67123#[cfg_attr(test, assert_instr(vst3))]
67124pub unsafe fn vst3q_s16(a: *mut i16, b: int16x8x3_t) {
67125 crate::core_arch::macros::interleaving_store!(i16, 8, 3, a, b)
67126}
67127#[doc = "Store multiple 3-element structures from three registers"]
67128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s32)"]
67129#[doc = "## Safety"]
67130#[doc = " * Neon intrinsic unsafe"]
67131#[inline(always)]
67132#[cfg(target_arch = "arm")]
67133#[target_feature(enable = "neon,v7")]
67134#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67135#[cfg_attr(test, assert_instr(vst3))]
67136pub unsafe fn vst3_s32(a: *mut i32, b: int32x2x3_t) {
67137 crate::core_arch::macros::interleaving_store!(i32, 2, 3, a, b)
67138}
67139#[doc = "Store multiple 3-element structures from three registers"]
67140#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s32)"]
67141#[doc = "## Safety"]
67142#[doc = " * Neon intrinsic unsafe"]
67143#[inline(always)]
67144#[cfg(target_arch = "arm")]
67145#[target_feature(enable = "neon,v7")]
67146#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67147#[cfg_attr(test, assert_instr(vst3))]
67148pub unsafe fn vst3q_s32(a: *mut i32, b: int32x4x3_t) {
67149 crate::core_arch::macros::interleaving_store!(i32, 4, 3, a, b)
67150}
67151#[doc = "Store multiple 3-element structures from three registers"]
67152#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_f32)"]
67153#[doc = "## Safety"]
67154#[doc = " * Neon intrinsic unsafe"]
67155#[inline(always)]
67156#[target_feature(enable = "neon")]
67157#[cfg(not(target_arch = "arm"))]
67158#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67159#[cfg_attr(test, assert_instr(st3))]
67160pub unsafe fn vst3_f32(a: *mut f32, b: float32x2x3_t) {
67161 crate::core_arch::macros::interleaving_store!(f32, 2, 3, a, b)
67162}
67163#[doc = "Store multiple 3-element structures from three registers"]
67164#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_f32)"]
67165#[doc = "## Safety"]
67166#[doc = " * Neon intrinsic unsafe"]
67167#[inline(always)]
67168#[target_feature(enable = "neon")]
67169#[cfg(not(target_arch = "arm"))]
67170#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67171#[cfg_attr(test, assert_instr(st3))]
67172pub unsafe fn vst3q_f32(a: *mut f32, b: float32x4x3_t) {
67173 crate::core_arch::macros::interleaving_store!(f32, 4, 3, a, b)
67174}
67175#[doc = "Store multiple 3-element structures from three registers"]
67176#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s8)"]
67177#[doc = "## Safety"]
67178#[doc = " * Neon intrinsic unsafe"]
67179#[inline(always)]
67180#[target_feature(enable = "neon")]
67181#[cfg(not(target_arch = "arm"))]
67182#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67183#[cfg_attr(test, assert_instr(st3))]
67184pub unsafe fn vst3_s8(a: *mut i8, b: int8x8x3_t) {
67185 crate::core_arch::macros::interleaving_store!(i8, 8, 3, a, b)
67186}
67187#[doc = "Store multiple 3-element structures from three registers"]
67188#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s8)"]
67189#[doc = "## Safety"]
67190#[doc = " * Neon intrinsic unsafe"]
67191#[inline(always)]
67192#[target_feature(enable = "neon")]
67193#[cfg(not(target_arch = "arm"))]
67194#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67195#[cfg_attr(test, assert_instr(st3))]
67196pub unsafe fn vst3q_s8(a: *mut i8, b: int8x16x3_t) {
67197 crate::core_arch::macros::interleaving_store!(i8, 16, 3, a, b)
67198}
67199#[doc = "Store multiple 3-element structures from three registers"]
67200#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s16)"]
67201#[doc = "## Safety"]
67202#[doc = " * Neon intrinsic unsafe"]
67203#[inline(always)]
67204#[target_feature(enable = "neon")]
67205#[cfg(not(target_arch = "arm"))]
67206#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67207#[cfg_attr(test, assert_instr(st3))]
67208pub unsafe fn vst3_s16(a: *mut i16, b: int16x4x3_t) {
67209 crate::core_arch::macros::interleaving_store!(i16, 4, 3, a, b)
67210}
67211#[doc = "Store multiple 3-element structures from three registers"]
67212#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s16)"]
67213#[doc = "## Safety"]
67214#[doc = " * Neon intrinsic unsafe"]
67215#[inline(always)]
67216#[target_feature(enable = "neon")]
67217#[cfg(not(target_arch = "arm"))]
67218#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67219#[cfg_attr(test, assert_instr(st3))]
67220pub unsafe fn vst3q_s16(a: *mut i16, b: int16x8x3_t) {
67221 crate::core_arch::macros::interleaving_store!(i16, 8, 3, a, b)
67222}
67223#[doc = "Store multiple 3-element structures from three registers"]
67224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s32)"]
67225#[doc = "## Safety"]
67226#[doc = " * Neon intrinsic unsafe"]
67227#[inline(always)]
67228#[target_feature(enable = "neon")]
67229#[cfg(not(target_arch = "arm"))]
67230#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67231#[cfg_attr(test, assert_instr(st3))]
67232pub unsafe fn vst3_s32(a: *mut i32, b: int32x2x3_t) {
67233 crate::core_arch::macros::interleaving_store!(i32, 2, 3, a, b)
67234}
67235#[doc = "Store multiple 3-element structures from three registers"]
67236#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_s32)"]
67237#[doc = "## Safety"]
67238#[doc = " * Neon intrinsic unsafe"]
67239#[inline(always)]
67240#[target_feature(enable = "neon")]
67241#[cfg(not(target_arch = "arm"))]
67242#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67243#[cfg_attr(test, assert_instr(st3))]
67244pub unsafe fn vst3q_s32(a: *mut i32, b: int32x4x3_t) {
67245 crate::core_arch::macros::interleaving_store!(i32, 4, 3, a, b)
67246}
67247#[doc = "Store multiple 3-element structures from three registers"]
67248#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f16)"]
67249#[doc = "## Safety"]
67250#[doc = " * Neon intrinsic unsafe"]
67251#[inline(always)]
67252#[target_feature(enable = "neon")]
67253#[cfg(target_arch = "arm")]
67254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67255#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67256#[rustc_legacy_const_generics(2)]
67257#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67258#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67259#[cfg(not(target_arch = "arm64ec"))]
67260pub unsafe fn vst3_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x3_t) {
67261 static_assert_uimm_bits!(LANE, 2);
67262 unsafe extern "unadjusted" {
67263 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4f16")]
67264 fn _vst3_lane_f16(
67265 ptr: *mut i8,
67266 a: float16x4_t,
67267 b: float16x4_t,
67268 c: float16x4_t,
67269 n: i32,
67270 size: i32,
67271 );
67272 }
67273 _vst3_lane_f16(a as _, b.0, b.1, b.2, LANE, 4)
67274}
67275#[doc = "Store multiple 3-element structures from three registers"]
67276#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f16)"]
67277#[doc = "## Safety"]
67278#[doc = " * Neon intrinsic unsafe"]
67279#[inline(always)]
67280#[target_feature(enable = "neon")]
67281#[cfg(target_arch = "arm")]
67282#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67283#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67284#[rustc_legacy_const_generics(2)]
67285#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67286#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67287#[cfg(not(target_arch = "arm64ec"))]
67288pub unsafe fn vst3q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x3_t) {
67289 static_assert_uimm_bits!(LANE, 3);
67290 unsafe extern "unadjusted" {
67291 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8f16")]
67292 fn _vst3q_lane_f16(
67293 ptr: *mut i8,
67294 a: float16x8_t,
67295 b: float16x8_t,
67296 c: float16x8_t,
67297 n: i32,
67298 size: i32,
67299 );
67300 }
67301 _vst3q_lane_f16(a as _, b.0, b.1, b.2, LANE, 4)
67302}
67303#[doc = "Store multiple 3-element structures from three registers"]
67304#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f16)"]
67305#[doc = "## Safety"]
67306#[doc = " * Neon intrinsic unsafe"]
67307#[inline(always)]
67308#[target_feature(enable = "neon")]
67309#[cfg(not(target_arch = "arm"))]
67310#[rustc_legacy_const_generics(2)]
67311#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67312#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67313#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67314#[cfg(not(target_arch = "arm64ec"))]
67315pub unsafe fn vst3_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x3_t) {
67316 static_assert_uimm_bits!(LANE, 2);
67317 unsafe extern "unadjusted" {
67318 #[cfg_attr(
67319 any(target_arch = "aarch64", target_arch = "arm64ec"),
67320 link_name = "llvm.aarch64.neon.st3lane.v4f16.p0"
67321 )]
67322 fn _vst3_lane_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, n: i64, ptr: *mut i8);
67323 }
67324 _vst3_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
67325}
67326#[doc = "Store multiple 3-element structures from three registers"]
67327#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f16)"]
67328#[doc = "## Safety"]
67329#[doc = " * Neon intrinsic unsafe"]
67330#[inline(always)]
67331#[target_feature(enable = "neon")]
67332#[cfg(not(target_arch = "arm"))]
67333#[rustc_legacy_const_generics(2)]
67334#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67335#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
67336#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
67337#[cfg(not(target_arch = "arm64ec"))]
67338pub unsafe fn vst3q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x3_t) {
67339 static_assert_uimm_bits!(LANE, 3);
67340 unsafe extern "unadjusted" {
67341 #[cfg_attr(
67342 any(target_arch = "aarch64", target_arch = "arm64ec"),
67343 link_name = "llvm.aarch64.neon.st3lane.v8f16.p0"
67344 )]
67345 fn _vst3q_lane_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, n: i64, ptr: *mut i8);
67346 }
67347 _vst3q_lane_f16(b.0, b.1, b.2, LANE as i64, a as _)
67348}
67349#[doc = "Store multiple 3-element structures from three registers"]
67350#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f32)"]
67351#[doc = "## Safety"]
67352#[doc = " * Neon intrinsic unsafe"]
67353#[inline(always)]
67354#[cfg(target_arch = "arm")]
67355#[target_feature(enable = "neon,v7")]
67356#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67357#[rustc_legacy_const_generics(2)]
67358#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67359pub unsafe fn vst3_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x3_t) {
67360 static_assert_uimm_bits!(LANE, 1);
67361 unsafe extern "unadjusted" {
67362 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v2f32")]
67363 fn _vst3_lane_f32(
67364 ptr: *mut i8,
67365 a: float32x2_t,
67366 b: float32x2_t,
67367 c: float32x2_t,
67368 n: i32,
67369 size: i32,
67370 );
67371 }
67372 _vst3_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
67373}
67374#[doc = "Store multiple 3-element structures from three registers"]
67375#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f32)"]
67376#[doc = "## Safety"]
67377#[doc = " * Neon intrinsic unsafe"]
67378#[inline(always)]
67379#[cfg(target_arch = "arm")]
67380#[target_feature(enable = "neon,v7")]
67381#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67382#[rustc_legacy_const_generics(2)]
67383#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67384pub unsafe fn vst3q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x3_t) {
67385 static_assert_uimm_bits!(LANE, 2);
67386 unsafe extern "unadjusted" {
67387 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4f32")]
67388 fn _vst3q_lane_f32(
67389 ptr: *mut i8,
67390 a: float32x4_t,
67391 b: float32x4_t,
67392 c: float32x4_t,
67393 n: i32,
67394 size: i32,
67395 );
67396 }
67397 _vst3q_lane_f32(a as _, b.0, b.1, b.2, LANE, 4)
67398}
67399#[doc = "Store multiple 3-element structures from three registers"]
67400#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s8)"]
67401#[doc = "## Safety"]
67402#[doc = " * Neon intrinsic unsafe"]
67403#[inline(always)]
67404#[cfg(target_arch = "arm")]
67405#[target_feature(enable = "neon,v7")]
67406#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67407#[rustc_legacy_const_generics(2)]
67408#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67409pub unsafe fn vst3_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x3_t) {
67410 static_assert_uimm_bits!(LANE, 3);
67411 unsafe extern "unadjusted" {
67412 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8i8")]
67413 fn _vst3_lane_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, n: i32, size: i32);
67414 }
67415 _vst3_lane_s8(a as _, b.0, b.1, b.2, LANE, 1)
67416}
67417#[doc = "Store multiple 3-element structures from three registers"]
67418#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s16)"]
67419#[doc = "## Safety"]
67420#[doc = " * Neon intrinsic unsafe"]
67421#[inline(always)]
67422#[cfg(target_arch = "arm")]
67423#[target_feature(enable = "neon,v7")]
67424#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67425#[rustc_legacy_const_generics(2)]
67426#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67427pub unsafe fn vst3_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x3_t) {
67428 static_assert_uimm_bits!(LANE, 2);
67429 unsafe extern "unadjusted" {
67430 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4i16")]
67431 fn _vst3_lane_s16(
67432 ptr: *mut i8,
67433 a: int16x4_t,
67434 b: int16x4_t,
67435 c: int16x4_t,
67436 n: i32,
67437 size: i32,
67438 );
67439 }
67440 _vst3_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
67441}
67442#[doc = "Store multiple 3-element structures from three registers"]
67443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s16)"]
67444#[doc = "## Safety"]
67445#[doc = " * Neon intrinsic unsafe"]
67446#[inline(always)]
67447#[cfg(target_arch = "arm")]
67448#[target_feature(enable = "neon,v7")]
67449#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67450#[rustc_legacy_const_generics(2)]
67451#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67452pub unsafe fn vst3q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x3_t) {
67453 static_assert_uimm_bits!(LANE, 3);
67454 unsafe extern "unadjusted" {
67455 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v8i16")]
67456 fn _vst3q_lane_s16(
67457 ptr: *mut i8,
67458 a: int16x8_t,
67459 b: int16x8_t,
67460 c: int16x8_t,
67461 n: i32,
67462 size: i32,
67463 );
67464 }
67465 _vst3q_lane_s16(a as _, b.0, b.1, b.2, LANE, 2)
67466}
67467#[doc = "Store multiple 3-element structures from three registers"]
67468#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s32)"]
67469#[doc = "## Safety"]
67470#[doc = " * Neon intrinsic unsafe"]
67471#[inline(always)]
67472#[cfg(target_arch = "arm")]
67473#[target_feature(enable = "neon,v7")]
67474#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67475#[rustc_legacy_const_generics(2)]
67476#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67477pub unsafe fn vst3_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x3_t) {
67478 static_assert_uimm_bits!(LANE, 1);
67479 unsafe extern "unadjusted" {
67480 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v2i32")]
67481 fn _vst3_lane_s32(
67482 ptr: *mut i8,
67483 a: int32x2_t,
67484 b: int32x2_t,
67485 c: int32x2_t,
67486 n: i32,
67487 size: i32,
67488 );
67489 }
67490 _vst3_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
67491}
67492#[doc = "Store multiple 3-element structures from three registers"]
67493#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s32)"]
67494#[doc = "## Safety"]
67495#[doc = " * Neon intrinsic unsafe"]
67496#[inline(always)]
67497#[cfg(target_arch = "arm")]
67498#[target_feature(enable = "neon,v7")]
67499#[cfg_attr(test, assert_instr(vst3, LANE = 0))]
67500#[rustc_legacy_const_generics(2)]
67501#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67502pub unsafe fn vst3q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x3_t) {
67503 static_assert_uimm_bits!(LANE, 2);
67504 unsafe extern "unadjusted" {
67505 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst3lane.p0.v4i32")]
67506 fn _vst3q_lane_s32(
67507 ptr: *mut i8,
67508 a: int32x4_t,
67509 b: int32x4_t,
67510 c: int32x4_t,
67511 n: i32,
67512 size: i32,
67513 );
67514 }
67515 _vst3q_lane_s32(a as _, b.0, b.1, b.2, LANE, 4)
67516}
67517#[doc = "Store multiple 3-element structures from three registers"]
67518#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_f32)"]
67519#[doc = "## Safety"]
67520#[doc = " * Neon intrinsic unsafe"]
67521#[inline(always)]
67522#[target_feature(enable = "neon")]
67523#[cfg(not(target_arch = "arm"))]
67524#[rustc_legacy_const_generics(2)]
67525#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67526#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67527pub unsafe fn vst3_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x3_t) {
67528 static_assert_uimm_bits!(LANE, 1);
67529 unsafe extern "unadjusted" {
67530 #[cfg_attr(
67531 any(target_arch = "aarch64", target_arch = "arm64ec"),
67532 link_name = "llvm.aarch64.neon.st3lane.v2f32.p0"
67533 )]
67534 fn _vst3_lane_f32(a: float32x2_t, b: float32x2_t, c: float32x2_t, n: i64, ptr: *mut i8);
67535 }
67536 _vst3_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
67537}
67538#[doc = "Store multiple 3-element structures from three registers"]
67539#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_f32)"]
67540#[doc = "## Safety"]
67541#[doc = " * Neon intrinsic unsafe"]
67542#[inline(always)]
67543#[target_feature(enable = "neon")]
67544#[cfg(not(target_arch = "arm"))]
67545#[rustc_legacy_const_generics(2)]
67546#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67547#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67548pub unsafe fn vst3q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x3_t) {
67549 static_assert_uimm_bits!(LANE, 2);
67550 unsafe extern "unadjusted" {
67551 #[cfg_attr(
67552 any(target_arch = "aarch64", target_arch = "arm64ec"),
67553 link_name = "llvm.aarch64.neon.st3lane.v4f32.p0"
67554 )]
67555 fn _vst3q_lane_f32(a: float32x4_t, b: float32x4_t, c: float32x4_t, n: i64, ptr: *mut i8);
67556 }
67557 _vst3q_lane_f32(b.0, b.1, b.2, LANE as i64, a as _)
67558}
67559#[doc = "Store multiple 3-element structures from three registers"]
67560#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s8)"]
67561#[doc = "## Safety"]
67562#[doc = " * Neon intrinsic unsafe"]
67563#[inline(always)]
67564#[target_feature(enable = "neon")]
67565#[cfg(not(target_arch = "arm"))]
67566#[rustc_legacy_const_generics(2)]
67567#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67568#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67569pub unsafe fn vst3_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x3_t) {
67570 static_assert_uimm_bits!(LANE, 3);
67571 unsafe extern "unadjusted" {
67572 #[cfg_attr(
67573 any(target_arch = "aarch64", target_arch = "arm64ec"),
67574 link_name = "llvm.aarch64.neon.st3lane.v8i8.p0"
67575 )]
67576 fn _vst3_lane_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, n: i64, ptr: *mut i8);
67577 }
67578 _vst3_lane_s8(b.0, b.1, b.2, LANE as i64, a as _)
67579}
67580#[doc = "Store multiple 3-element structures from three registers"]
67581#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s16)"]
67582#[doc = "## Safety"]
67583#[doc = " * Neon intrinsic unsafe"]
67584#[inline(always)]
67585#[target_feature(enable = "neon")]
67586#[cfg(not(target_arch = "arm"))]
67587#[rustc_legacy_const_generics(2)]
67588#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67589#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67590pub unsafe fn vst3_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x3_t) {
67591 static_assert_uimm_bits!(LANE, 2);
67592 unsafe extern "unadjusted" {
67593 #[cfg_attr(
67594 any(target_arch = "aarch64", target_arch = "arm64ec"),
67595 link_name = "llvm.aarch64.neon.st3lane.v4i16.p0"
67596 )]
67597 fn _vst3_lane_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t, n: i64, ptr: *mut i8);
67598 }
67599 _vst3_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
67600}
67601#[doc = "Store multiple 3-element structures from three registers"]
67602#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s16)"]
67603#[doc = "## Safety"]
67604#[doc = " * Neon intrinsic unsafe"]
67605#[inline(always)]
67606#[target_feature(enable = "neon")]
67607#[cfg(not(target_arch = "arm"))]
67608#[rustc_legacy_const_generics(2)]
67609#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67610#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67611pub unsafe fn vst3q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x3_t) {
67612 static_assert_uimm_bits!(LANE, 3);
67613 unsafe extern "unadjusted" {
67614 #[cfg_attr(
67615 any(target_arch = "aarch64", target_arch = "arm64ec"),
67616 link_name = "llvm.aarch64.neon.st3lane.v8i16.p0"
67617 )]
67618 fn _vst3q_lane_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t, n: i64, ptr: *mut i8);
67619 }
67620 _vst3q_lane_s16(b.0, b.1, b.2, LANE as i64, a as _)
67621}
67622#[doc = "Store multiple 3-element structures from three registers"]
67623#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_s32)"]
67624#[doc = "## Safety"]
67625#[doc = " * Neon intrinsic unsafe"]
67626#[inline(always)]
67627#[target_feature(enable = "neon")]
67628#[cfg(not(target_arch = "arm"))]
67629#[rustc_legacy_const_generics(2)]
67630#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67631#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67632pub unsafe fn vst3_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x3_t) {
67633 static_assert_uimm_bits!(LANE, 1);
67634 unsafe extern "unadjusted" {
67635 #[cfg_attr(
67636 any(target_arch = "aarch64", target_arch = "arm64ec"),
67637 link_name = "llvm.aarch64.neon.st3lane.v2i32.p0"
67638 )]
67639 fn _vst3_lane_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t, n: i64, ptr: *mut i8);
67640 }
67641 _vst3_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
67642}
67643#[doc = "Store multiple 3-element structures from three registers"]
67644#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_s32)"]
67645#[doc = "## Safety"]
67646#[doc = " * Neon intrinsic unsafe"]
67647#[inline(always)]
67648#[target_feature(enable = "neon")]
67649#[cfg(not(target_arch = "arm"))]
67650#[rustc_legacy_const_generics(2)]
67651#[cfg_attr(test, assert_instr(st3, LANE = 0))]
67652#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67653pub unsafe fn vst3q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x3_t) {
67654 static_assert_uimm_bits!(LANE, 2);
67655 unsafe extern "unadjusted" {
67656 #[cfg_attr(
67657 any(target_arch = "aarch64", target_arch = "arm64ec"),
67658 link_name = "llvm.aarch64.neon.st3lane.v4i32.p0"
67659 )]
67660 fn _vst3q_lane_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t, n: i64, ptr: *mut i8);
67661 }
67662 _vst3q_lane_s32(b.0, b.1, b.2, LANE as i64, a as _)
67663}
67664#[doc = "Store multiple 3-element structures from three registers"]
67665#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u8)"]
67666#[doc = "## Safety"]
67667#[doc = " * Neon intrinsic unsafe"]
67668#[inline(always)]
67669#[target_feature(enable = "neon")]
67670#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67671#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67672#[cfg_attr(
67673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67674 assert_instr(st3, LANE = 0)
67675)]
67676#[rustc_legacy_const_generics(2)]
67677#[cfg_attr(
67678 not(target_arch = "arm"),
67679 stable(feature = "neon_intrinsics", since = "1.59.0")
67680)]
67681#[cfg_attr(
67682 target_arch = "arm",
67683 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67684)]
67685pub unsafe fn vst3_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x3_t) {
67686 static_assert_uimm_bits!(LANE, 3);
67687 vst3_lane_s8::<LANE>(transmute(a), transmute(b))
67688}
67689#[doc = "Store multiple 3-element structures from three registers"]
67690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u16)"]
67691#[doc = "## Safety"]
67692#[doc = " * Neon intrinsic unsafe"]
67693#[inline(always)]
67694#[target_feature(enable = "neon")]
67695#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67696#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67697#[cfg_attr(
67698 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67699 assert_instr(st3, LANE = 0)
67700)]
67701#[rustc_legacy_const_generics(2)]
67702#[cfg_attr(
67703 not(target_arch = "arm"),
67704 stable(feature = "neon_intrinsics", since = "1.59.0")
67705)]
67706#[cfg_attr(
67707 target_arch = "arm",
67708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67709)]
67710pub unsafe fn vst3_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x3_t) {
67711 static_assert_uimm_bits!(LANE, 2);
67712 vst3_lane_s16::<LANE>(transmute(a), transmute(b))
67713}
67714#[doc = "Store multiple 3-element structures from three registers"]
67715#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_u16)"]
67716#[doc = "## Safety"]
67717#[doc = " * Neon intrinsic unsafe"]
67718#[inline(always)]
67719#[target_feature(enable = "neon")]
67720#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67721#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67722#[cfg_attr(
67723 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67724 assert_instr(st3, LANE = 0)
67725)]
67726#[rustc_legacy_const_generics(2)]
67727#[cfg_attr(
67728 not(target_arch = "arm"),
67729 stable(feature = "neon_intrinsics", since = "1.59.0")
67730)]
67731#[cfg_attr(
67732 target_arch = "arm",
67733 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67734)]
67735pub unsafe fn vst3q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x3_t) {
67736 static_assert_uimm_bits!(LANE, 3);
67737 vst3q_lane_s16::<LANE>(transmute(a), transmute(b))
67738}
67739#[doc = "Store multiple 3-element structures from three registers"]
67740#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_u32)"]
67741#[doc = "## Safety"]
67742#[doc = " * Neon intrinsic unsafe"]
67743#[inline(always)]
67744#[target_feature(enable = "neon")]
67745#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67746#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67747#[cfg_attr(
67748 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67749 assert_instr(st3, LANE = 0)
67750)]
67751#[rustc_legacy_const_generics(2)]
67752#[cfg_attr(
67753 not(target_arch = "arm"),
67754 stable(feature = "neon_intrinsics", since = "1.59.0")
67755)]
67756#[cfg_attr(
67757 target_arch = "arm",
67758 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67759)]
67760pub unsafe fn vst3_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x3_t) {
67761 static_assert_uimm_bits!(LANE, 1);
67762 vst3_lane_s32::<LANE>(transmute(a), transmute(b))
67763}
67764#[doc = "Store multiple 3-element structures from three registers"]
67765#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_u32)"]
67766#[doc = "## Safety"]
67767#[doc = " * Neon intrinsic unsafe"]
67768#[inline(always)]
67769#[target_feature(enable = "neon")]
67770#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67771#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67772#[cfg_attr(
67773 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67774 assert_instr(st3, LANE = 0)
67775)]
67776#[rustc_legacy_const_generics(2)]
67777#[cfg_attr(
67778 not(target_arch = "arm"),
67779 stable(feature = "neon_intrinsics", since = "1.59.0")
67780)]
67781#[cfg_attr(
67782 target_arch = "arm",
67783 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67784)]
67785pub unsafe fn vst3q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x3_t) {
67786 static_assert_uimm_bits!(LANE, 2);
67787 vst3q_lane_s32::<LANE>(transmute(a), transmute(b))
67788}
67789#[doc = "Store multiple 3-element structures from three registers"]
67790#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_p8)"]
67791#[doc = "## Safety"]
67792#[doc = " * Neon intrinsic unsafe"]
67793#[inline(always)]
67794#[target_feature(enable = "neon")]
67795#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67796#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67797#[cfg_attr(
67798 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67799 assert_instr(st3, LANE = 0)
67800)]
67801#[rustc_legacy_const_generics(2)]
67802#[cfg_attr(
67803 not(target_arch = "arm"),
67804 stable(feature = "neon_intrinsics", since = "1.59.0")
67805)]
67806#[cfg_attr(
67807 target_arch = "arm",
67808 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67809)]
67810pub unsafe fn vst3_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x3_t) {
67811 static_assert_uimm_bits!(LANE, 3);
67812 vst3_lane_s8::<LANE>(transmute(a), transmute(b))
67813}
67814#[doc = "Store multiple 3-element structures from three registers"]
67815#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_lane_p16)"]
67816#[doc = "## Safety"]
67817#[doc = " * Neon intrinsic unsafe"]
67818#[inline(always)]
67819#[target_feature(enable = "neon")]
67820#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67821#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67822#[cfg_attr(
67823 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67824 assert_instr(st3, LANE = 0)
67825)]
67826#[rustc_legacy_const_generics(2)]
67827#[cfg_attr(
67828 not(target_arch = "arm"),
67829 stable(feature = "neon_intrinsics", since = "1.59.0")
67830)]
67831#[cfg_attr(
67832 target_arch = "arm",
67833 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67834)]
67835pub unsafe fn vst3_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x3_t) {
67836 static_assert_uimm_bits!(LANE, 2);
67837 vst3_lane_s16::<LANE>(transmute(a), transmute(b))
67838}
67839#[doc = "Store multiple 3-element structures from three registers"]
67840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_lane_p16)"]
67841#[doc = "## Safety"]
67842#[doc = " * Neon intrinsic unsafe"]
67843#[inline(always)]
67844#[target_feature(enable = "neon")]
67845#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67846#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3, LANE = 0))]
67847#[cfg_attr(
67848 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67849 assert_instr(st3, LANE = 0)
67850)]
67851#[rustc_legacy_const_generics(2)]
67852#[cfg_attr(
67853 not(target_arch = "arm"),
67854 stable(feature = "neon_intrinsics", since = "1.59.0")
67855)]
67856#[cfg_attr(
67857 target_arch = "arm",
67858 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67859)]
67860pub unsafe fn vst3q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x3_t) {
67861 static_assert_uimm_bits!(LANE, 3);
67862 vst3q_lane_s16::<LANE>(transmute(a), transmute(b))
67863}
67864#[doc = "Store multiple 3-element structures from three registers"]
67865#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p64)"]
67866#[doc = "## Safety"]
67867#[doc = " * Neon intrinsic unsafe"]
67868#[inline(always)]
67869#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
67870#[target_feature(enable = "neon,aes")]
67871#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
67872#[cfg_attr(
67873 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67874 assert_instr(nop)
67875)]
67876#[cfg_attr(
67877 not(target_arch = "arm"),
67878 stable(feature = "neon_intrinsics", since = "1.59.0")
67879)]
67880#[cfg_attr(
67881 target_arch = "arm",
67882 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67883)]
67884pub unsafe fn vst3_p64(a: *mut p64, b: poly64x1x3_t) {
67885 vst3_s64(transmute(a), transmute(b))
67886}
67887#[doc = "Store multiple 3-element structures from three registers"]
67888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s64)"]
67889#[doc = "## Safety"]
67890#[doc = " * Neon intrinsic unsafe"]
67891#[inline(always)]
67892#[target_feature(enable = "neon")]
67893#[cfg(not(target_arch = "arm"))]
67894#[stable(feature = "neon_intrinsics", since = "1.59.0")]
67895#[cfg_attr(test, assert_instr(nop))]
67896pub unsafe fn vst3_s64(a: *mut i64, b: int64x1x3_t) {
67897 core::ptr::write_unaligned(a.cast(), b)
67898}
67899#[doc = "Store multiple 3-element structures from three registers"]
67900#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_s64)"]
67901#[doc = "## Safety"]
67902#[doc = " * Neon intrinsic unsafe"]
67903#[inline(always)]
67904#[cfg(target_arch = "arm")]
67905#[target_feature(enable = "neon,v7")]
67906#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
67907#[cfg_attr(test, assert_instr(nop))]
67908pub unsafe fn vst3_s64(a: *mut i64, b: int64x1x3_t) {
67909 core::ptr::write_unaligned(a.cast(), b)
67910}
67911#[doc = "Store multiple 3-element structures from three registers"]
67912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u64)"]
67913#[doc = "## Safety"]
67914#[doc = " * Neon intrinsic unsafe"]
67915#[inline(always)]
67916#[target_feature(enable = "neon")]
67917#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67918#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
67919#[cfg_attr(
67920 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67921 assert_instr(nop)
67922)]
67923#[cfg_attr(
67924 not(target_arch = "arm"),
67925 stable(feature = "neon_intrinsics", since = "1.59.0")
67926)]
67927#[cfg_attr(
67928 target_arch = "arm",
67929 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67930)]
67931pub unsafe fn vst3_u64(a: *mut u64, b: uint64x1x3_t) {
67932 vst3_s64(transmute(a), transmute(b))
67933}
67934#[doc = "Store multiple 3-element structures from three registers"]
67935#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u8)"]
67936#[doc = "## Safety"]
67937#[doc = " * Neon intrinsic unsafe"]
67938#[inline(always)]
67939#[target_feature(enable = "neon")]
67940#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67941#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
67942#[cfg_attr(
67943 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67944 assert_instr(st3)
67945)]
67946#[cfg_attr(
67947 not(target_arch = "arm"),
67948 stable(feature = "neon_intrinsics", since = "1.59.0")
67949)]
67950#[cfg_attr(
67951 target_arch = "arm",
67952 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67953)]
67954pub unsafe fn vst3_u8(a: *mut u8, b: uint8x8x3_t) {
67955 vst3_s8(transmute(a), transmute(b))
67956}
67957#[doc = "Store multiple 3-element structures from three registers"]
67958#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u8)"]
67959#[doc = "## Safety"]
67960#[doc = " * Neon intrinsic unsafe"]
67961#[inline(always)]
67962#[target_feature(enable = "neon")]
67963#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67964#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
67965#[cfg_attr(
67966 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67967 assert_instr(st3)
67968)]
67969#[cfg_attr(
67970 not(target_arch = "arm"),
67971 stable(feature = "neon_intrinsics", since = "1.59.0")
67972)]
67973#[cfg_attr(
67974 target_arch = "arm",
67975 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67976)]
67977pub unsafe fn vst3q_u8(a: *mut u8, b: uint8x16x3_t) {
67978 vst3q_s8(transmute(a), transmute(b))
67979}
67980#[doc = "Store multiple 3-element structures from three registers"]
67981#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u16)"]
67982#[doc = "## Safety"]
67983#[doc = " * Neon intrinsic unsafe"]
67984#[inline(always)]
67985#[target_feature(enable = "neon")]
67986#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
67987#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
67988#[cfg_attr(
67989 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
67990 assert_instr(st3)
67991)]
67992#[cfg_attr(
67993 not(target_arch = "arm"),
67994 stable(feature = "neon_intrinsics", since = "1.59.0")
67995)]
67996#[cfg_attr(
67997 target_arch = "arm",
67998 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
67999)]
68000pub unsafe fn vst3_u16(a: *mut u16, b: uint16x4x3_t) {
68001 vst3_s16(transmute(a), transmute(b))
68002}
68003#[doc = "Store multiple 3-element structures from three registers"]
68004#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u16)"]
68005#[doc = "## Safety"]
68006#[doc = " * Neon intrinsic unsafe"]
68007#[inline(always)]
68008#[target_feature(enable = "neon")]
68009#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68010#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68011#[cfg_attr(
68012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68013 assert_instr(st3)
68014)]
68015#[cfg_attr(
68016 not(target_arch = "arm"),
68017 stable(feature = "neon_intrinsics", since = "1.59.0")
68018)]
68019#[cfg_attr(
68020 target_arch = "arm",
68021 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68022)]
68023pub unsafe fn vst3q_u16(a: *mut u16, b: uint16x8x3_t) {
68024 vst3q_s16(transmute(a), transmute(b))
68025}
68026#[doc = "Store multiple 3-element structures from three registers"]
68027#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_u32)"]
68028#[doc = "## Safety"]
68029#[doc = " * Neon intrinsic unsafe"]
68030#[inline(always)]
68031#[target_feature(enable = "neon")]
68032#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68033#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68034#[cfg_attr(
68035 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68036 assert_instr(st3)
68037)]
68038#[cfg_attr(
68039 not(target_arch = "arm"),
68040 stable(feature = "neon_intrinsics", since = "1.59.0")
68041)]
68042#[cfg_attr(
68043 target_arch = "arm",
68044 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68045)]
68046pub unsafe fn vst3_u32(a: *mut u32, b: uint32x2x3_t) {
68047 vst3_s32(transmute(a), transmute(b))
68048}
68049#[doc = "Store multiple 3-element structures from three registers"]
68050#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_u32)"]
68051#[doc = "## Safety"]
68052#[doc = " * Neon intrinsic unsafe"]
68053#[inline(always)]
68054#[target_feature(enable = "neon")]
68055#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68056#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68057#[cfg_attr(
68058 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68059 assert_instr(st3)
68060)]
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 vst3q_u32(a: *mut u32, b: uint32x4x3_t) {
68070 vst3q_s32(transmute(a), transmute(b))
68071}
68072#[doc = "Store multiple 3-element structures from three registers"]
68073#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p8)"]
68074#[doc = "## Safety"]
68075#[doc = " * Neon intrinsic unsafe"]
68076#[inline(always)]
68077#[target_feature(enable = "neon")]
68078#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68079#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68080#[cfg_attr(
68081 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68082 assert_instr(st3)
68083)]
68084#[cfg_attr(
68085 not(target_arch = "arm"),
68086 stable(feature = "neon_intrinsics", since = "1.59.0")
68087)]
68088#[cfg_attr(
68089 target_arch = "arm",
68090 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68091)]
68092pub unsafe fn vst3_p8(a: *mut p8, b: poly8x8x3_t) {
68093 vst3_s8(transmute(a), transmute(b))
68094}
68095#[doc = "Store multiple 3-element structures from three registers"]
68096#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_p8)"]
68097#[doc = "## Safety"]
68098#[doc = " * Neon intrinsic unsafe"]
68099#[inline(always)]
68100#[target_feature(enable = "neon")]
68101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68103#[cfg_attr(
68104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68105 assert_instr(st3)
68106)]
68107#[cfg_attr(
68108 not(target_arch = "arm"),
68109 stable(feature = "neon_intrinsics", since = "1.59.0")
68110)]
68111#[cfg_attr(
68112 target_arch = "arm",
68113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68114)]
68115pub unsafe fn vst3q_p8(a: *mut p8, b: poly8x16x3_t) {
68116 vst3q_s8(transmute(a), transmute(b))
68117}
68118#[doc = "Store multiple 3-element structures from three registers"]
68119#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3_p16)"]
68120#[doc = "## Safety"]
68121#[doc = " * Neon intrinsic unsafe"]
68122#[inline(always)]
68123#[target_feature(enable = "neon")]
68124#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68125#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68126#[cfg_attr(
68127 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68128 assert_instr(st3)
68129)]
68130#[cfg_attr(
68131 not(target_arch = "arm"),
68132 stable(feature = "neon_intrinsics", since = "1.59.0")
68133)]
68134#[cfg_attr(
68135 target_arch = "arm",
68136 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68137)]
68138pub unsafe fn vst3_p16(a: *mut p16, b: poly16x4x3_t) {
68139 vst3_s16(transmute(a), transmute(b))
68140}
68141#[doc = "Store multiple 3-element structures from three registers"]
68142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst3q_p16)"]
68143#[doc = "## Safety"]
68144#[doc = " * Neon intrinsic unsafe"]
68145#[inline(always)]
68146#[target_feature(enable = "neon")]
68147#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68148#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst3))]
68149#[cfg_attr(
68150 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
68151 assert_instr(st3)
68152)]
68153#[cfg_attr(
68154 not(target_arch = "arm"),
68155 stable(feature = "neon_intrinsics", since = "1.59.0")
68156)]
68157#[cfg_attr(
68158 target_arch = "arm",
68159 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
68160)]
68161pub unsafe fn vst3q_p16(a: *mut p16, b: poly16x8x3_t) {
68162 vst3q_s16(transmute(a), transmute(b))
68163}
68164#[doc = "Store multiple 4-element structures from four registers"]
68165#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f16)"]
68166#[doc = "## Safety"]
68167#[doc = " * Neon intrinsic unsafe"]
68168#[inline(always)]
68169#[target_feature(enable = "neon")]
68170#[cfg(target_arch = "arm")]
68171#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68172#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68173#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68174#[cfg(not(target_arch = "arm64ec"))]
68175#[cfg_attr(test, assert_instr(vst4))]
68176pub unsafe fn vst4_f16(a: *mut f16, b: float16x4x4_t) {
68177 unsafe extern "unadjusted" {
68178 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4f16")]
68179 fn _vst4_f16(
68180 ptr: *mut i8,
68181 a: float16x4_t,
68182 b: float16x4_t,
68183 c: float16x4_t,
68184 d: float16x4_t,
68185 size: i32,
68186 );
68187 }
68188 _vst4_f16(a as _, b.0, b.1, b.2, b.3, 2)
68189}
68190#[doc = "Store multiple 4-element structures from four registers"]
68191#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f16)"]
68192#[doc = "## Safety"]
68193#[doc = " * Neon intrinsic unsafe"]
68194#[inline(always)]
68195#[target_feature(enable = "neon")]
68196#[cfg(target_arch = "arm")]
68197#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68198#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68199#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68200#[cfg(not(target_arch = "arm64ec"))]
68201#[cfg_attr(test, assert_instr(vst4))]
68202pub unsafe fn vst4q_f16(a: *mut f16, b: float16x8x4_t) {
68203 unsafe extern "unadjusted" {
68204 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8f16")]
68205 fn _vst4q_f16(
68206 ptr: *mut i8,
68207 a: float16x8_t,
68208 b: float16x8_t,
68209 c: float16x8_t,
68210 d: float16x8_t,
68211 size: i32,
68212 );
68213 }
68214 _vst4q_f16(a as _, b.0, b.1, b.2, b.3, 2)
68215}
68216#[doc = "Store multiple 4-element structures from four registers"]
68217#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f16)"]
68218#[doc = "## Safety"]
68219#[doc = " * Neon intrinsic unsafe"]
68220#[inline(always)]
68221#[target_feature(enable = "neon")]
68222#[cfg(not(target_arch = "arm"))]
68223#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68224#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68225#[cfg(not(target_arch = "arm64ec"))]
68226#[cfg_attr(test, assert_instr(st4))]
68227pub unsafe fn vst4_f16(a: *mut f16, b: float16x4x4_t) {
68228 unsafe extern "unadjusted" {
68229 #[cfg_attr(
68230 any(target_arch = "aarch64", target_arch = "arm64ec"),
68231 link_name = "llvm.aarch64.neon.st4.v4f16.p0"
68232 )]
68233 fn _vst4_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t, d: float16x4_t, ptr: *mut i8);
68234 }
68235 _vst4_f16(b.0, b.1, b.2, b.3, a as _)
68236}
68237#[doc = "Store multiple 4-element structures from four registers"]
68238#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f16)"]
68239#[doc = "## Safety"]
68240#[doc = " * Neon intrinsic unsafe"]
68241#[inline(always)]
68242#[target_feature(enable = "neon")]
68243#[cfg(not(target_arch = "arm"))]
68244#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68245#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68246#[cfg(not(target_arch = "arm64ec"))]
68247#[cfg_attr(test, assert_instr(st4))]
68248pub unsafe fn vst4q_f16(a: *mut f16, b: float16x8x4_t) {
68249 unsafe extern "unadjusted" {
68250 #[cfg_attr(
68251 any(target_arch = "aarch64", target_arch = "arm64ec"),
68252 link_name = "llvm.aarch64.neon.st4.v8f16.p0"
68253 )]
68254 fn _vst4q_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t, d: float16x8_t, ptr: *mut i8);
68255 }
68256 _vst4q_f16(b.0, b.1, b.2, b.3, a as _)
68257}
68258#[doc = "Store multiple 4-element structures from four registers"]
68259#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f32)"]
68260#[doc = "## Safety"]
68261#[doc = " * Neon intrinsic unsafe"]
68262#[inline(always)]
68263#[cfg(target_arch = "arm")]
68264#[target_feature(enable = "neon,v7")]
68265#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68266#[cfg_attr(test, assert_instr(vst4))]
68267pub unsafe fn vst4_f32(a: *mut f32, b: float32x2x4_t) {
68268 unsafe extern "unadjusted" {
68269 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v2f32")]
68270 fn _vst4_f32(
68271 ptr: *mut i8,
68272 a: float32x2_t,
68273 b: float32x2_t,
68274 c: float32x2_t,
68275 d: float32x2_t,
68276 size: i32,
68277 );
68278 }
68279 _vst4_f32(a as _, b.0, b.1, b.2, b.3, 4)
68280}
68281#[doc = "Store multiple 4-element structures from four registers"]
68282#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f32)"]
68283#[doc = "## Safety"]
68284#[doc = " * Neon intrinsic unsafe"]
68285#[inline(always)]
68286#[cfg(target_arch = "arm")]
68287#[target_feature(enable = "neon,v7")]
68288#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68289#[cfg_attr(test, assert_instr(vst4))]
68290pub unsafe fn vst4q_f32(a: *mut f32, b: float32x4x4_t) {
68291 unsafe extern "unadjusted" {
68292 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4f32")]
68293 fn _vst4q_f32(
68294 ptr: *mut i8,
68295 a: float32x4_t,
68296 b: float32x4_t,
68297 c: float32x4_t,
68298 d: float32x4_t,
68299 size: i32,
68300 );
68301 }
68302 _vst4q_f32(a as _, b.0, b.1, b.2, b.3, 4)
68303}
68304#[doc = "Store multiple 4-element structures from four registers"]
68305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s8)"]
68306#[doc = "## Safety"]
68307#[doc = " * Neon intrinsic unsafe"]
68308#[inline(always)]
68309#[cfg(target_arch = "arm")]
68310#[target_feature(enable = "neon,v7")]
68311#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68312#[cfg_attr(test, assert_instr(vst4))]
68313pub unsafe fn vst4_s8(a: *mut i8, b: int8x8x4_t) {
68314 unsafe extern "unadjusted" {
68315 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8i8")]
68316 fn _vst4_s8(ptr: *mut i8, a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, size: i32);
68317 }
68318 _vst4_s8(a as _, b.0, b.1, b.2, b.3, 1)
68319}
68320#[doc = "Store multiple 4-element structures from four registers"]
68321#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s8)"]
68322#[doc = "## Safety"]
68323#[doc = " * Neon intrinsic unsafe"]
68324#[inline(always)]
68325#[cfg(target_arch = "arm")]
68326#[target_feature(enable = "neon,v7")]
68327#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68328#[cfg_attr(test, assert_instr(vst4))]
68329pub unsafe fn vst4q_s8(a: *mut i8, b: int8x16x4_t) {
68330 unsafe extern "unadjusted" {
68331 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v16i8")]
68332 fn _vst4q_s8(
68333 ptr: *mut i8,
68334 a: int8x16_t,
68335 b: int8x16_t,
68336 c: int8x16_t,
68337 d: int8x16_t,
68338 size: i32,
68339 );
68340 }
68341 _vst4q_s8(a as _, b.0, b.1, b.2, b.3, 1)
68342}
68343#[doc = "Store multiple 4-element structures from four registers"]
68344#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s16)"]
68345#[doc = "## Safety"]
68346#[doc = " * Neon intrinsic unsafe"]
68347#[inline(always)]
68348#[cfg(target_arch = "arm")]
68349#[target_feature(enable = "neon,v7")]
68350#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68351#[cfg_attr(test, assert_instr(vst4))]
68352pub unsafe fn vst4_s16(a: *mut i16, b: int16x4x4_t) {
68353 unsafe extern "unadjusted" {
68354 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4i16")]
68355 fn _vst4_s16(
68356 ptr: *mut i8,
68357 a: int16x4_t,
68358 b: int16x4_t,
68359 c: int16x4_t,
68360 d: int16x4_t,
68361 size: i32,
68362 );
68363 }
68364 _vst4_s16(a as _, b.0, b.1, b.2, b.3, 2)
68365}
68366#[doc = "Store multiple 4-element structures from four registers"]
68367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s16)"]
68368#[doc = "## Safety"]
68369#[doc = " * Neon intrinsic unsafe"]
68370#[inline(always)]
68371#[cfg(target_arch = "arm")]
68372#[target_feature(enable = "neon,v7")]
68373#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68374#[cfg_attr(test, assert_instr(vst4))]
68375pub unsafe fn vst4q_s16(a: *mut i16, b: int16x8x4_t) {
68376 unsafe extern "unadjusted" {
68377 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v8i16")]
68378 fn _vst4q_s16(
68379 ptr: *mut i8,
68380 a: int16x8_t,
68381 b: int16x8_t,
68382 c: int16x8_t,
68383 d: int16x8_t,
68384 size: i32,
68385 );
68386 }
68387 _vst4q_s16(a as _, b.0, b.1, b.2, b.3, 2)
68388}
68389#[doc = "Store multiple 4-element structures from four registers"]
68390#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s32)"]
68391#[doc = "## Safety"]
68392#[doc = " * Neon intrinsic unsafe"]
68393#[inline(always)]
68394#[cfg(target_arch = "arm")]
68395#[target_feature(enable = "neon,v7")]
68396#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68397#[cfg_attr(test, assert_instr(vst4))]
68398pub unsafe fn vst4_s32(a: *mut i32, b: int32x2x4_t) {
68399 unsafe extern "unadjusted" {
68400 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v2i32")]
68401 fn _vst4_s32(
68402 ptr: *mut i8,
68403 a: int32x2_t,
68404 b: int32x2_t,
68405 c: int32x2_t,
68406 d: int32x2_t,
68407 size: i32,
68408 );
68409 }
68410 _vst4_s32(a as _, b.0, b.1, b.2, b.3, 4)
68411}
68412#[doc = "Store multiple 4-element structures from four registers"]
68413#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s32)"]
68414#[doc = "## Safety"]
68415#[doc = " * Neon intrinsic unsafe"]
68416#[inline(always)]
68417#[cfg(target_arch = "arm")]
68418#[target_feature(enable = "neon,v7")]
68419#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68420#[cfg_attr(test, assert_instr(vst4))]
68421pub unsafe fn vst4q_s32(a: *mut i32, b: int32x4x4_t) {
68422 unsafe extern "unadjusted" {
68423 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4.p0.v4i32")]
68424 fn _vst4q_s32(
68425 ptr: *mut i8,
68426 a: int32x4_t,
68427 b: int32x4_t,
68428 c: int32x4_t,
68429 d: int32x4_t,
68430 size: i32,
68431 );
68432 }
68433 _vst4q_s32(a as _, b.0, b.1, b.2, b.3, 4)
68434}
68435#[doc = "Store multiple 4-element structures from four registers"]
68436#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_f32)"]
68437#[doc = "## Safety"]
68438#[doc = " * Neon intrinsic unsafe"]
68439#[inline(always)]
68440#[target_feature(enable = "neon")]
68441#[cfg(not(target_arch = "arm"))]
68442#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68443#[cfg_attr(test, assert_instr(st4))]
68444pub unsafe fn vst4_f32(a: *mut f32, b: float32x2x4_t) {
68445 crate::core_arch::macros::interleaving_store!(f32, 2, 4, a, b)
68446}
68447#[doc = "Store multiple 4-element structures from four registers"]
68448#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_f32)"]
68449#[doc = "## Safety"]
68450#[doc = " * Neon intrinsic unsafe"]
68451#[inline(always)]
68452#[target_feature(enable = "neon")]
68453#[cfg(not(target_arch = "arm"))]
68454#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68455#[cfg_attr(test, assert_instr(st4))]
68456pub unsafe fn vst4q_f32(a: *mut f32, b: float32x4x4_t) {
68457 crate::core_arch::macros::interleaving_store!(f32, 4, 4, a, b)
68458}
68459#[doc = "Store multiple 4-element structures from four registers"]
68460#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s8)"]
68461#[doc = "## Safety"]
68462#[doc = " * Neon intrinsic unsafe"]
68463#[inline(always)]
68464#[target_feature(enable = "neon")]
68465#[cfg(not(target_arch = "arm"))]
68466#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68467#[cfg_attr(test, assert_instr(st4))]
68468pub unsafe fn vst4_s8(a: *mut i8, b: int8x8x4_t) {
68469 crate::core_arch::macros::interleaving_store!(i8, 8, 4, a, b)
68470}
68471#[doc = "Store multiple 4-element structures from four registers"]
68472#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s8)"]
68473#[doc = "## Safety"]
68474#[doc = " * Neon intrinsic unsafe"]
68475#[inline(always)]
68476#[target_feature(enable = "neon")]
68477#[cfg(not(target_arch = "arm"))]
68478#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68479#[cfg_attr(test, assert_instr(st4))]
68480pub unsafe fn vst4q_s8(a: *mut i8, b: int8x16x4_t) {
68481 crate::core_arch::macros::interleaving_store!(i8, 16, 4, a, b)
68482}
68483#[doc = "Store multiple 4-element structures from four registers"]
68484#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s16)"]
68485#[doc = "## Safety"]
68486#[doc = " * Neon intrinsic unsafe"]
68487#[inline(always)]
68488#[target_feature(enable = "neon")]
68489#[cfg(not(target_arch = "arm"))]
68490#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68491#[cfg_attr(test, assert_instr(st4))]
68492pub unsafe fn vst4_s16(a: *mut i16, b: int16x4x4_t) {
68493 crate::core_arch::macros::interleaving_store!(i16, 4, 4, a, b)
68494}
68495#[doc = "Store multiple 4-element structures from four registers"]
68496#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s16)"]
68497#[doc = "## Safety"]
68498#[doc = " * Neon intrinsic unsafe"]
68499#[inline(always)]
68500#[target_feature(enable = "neon")]
68501#[cfg(not(target_arch = "arm"))]
68502#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68503#[cfg_attr(test, assert_instr(st4))]
68504pub unsafe fn vst4q_s16(a: *mut i16, b: int16x8x4_t) {
68505 crate::core_arch::macros::interleaving_store!(i16, 8, 4, a, b)
68506}
68507#[doc = "Store multiple 4-element structures from four registers"]
68508#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s32)"]
68509#[doc = "## Safety"]
68510#[doc = " * Neon intrinsic unsafe"]
68511#[inline(always)]
68512#[target_feature(enable = "neon")]
68513#[cfg(not(target_arch = "arm"))]
68514#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68515#[cfg_attr(test, assert_instr(st4))]
68516pub unsafe fn vst4_s32(a: *mut i32, b: int32x2x4_t) {
68517 crate::core_arch::macros::interleaving_store!(i32, 2, 4, a, b)
68518}
68519#[doc = "Store multiple 4-element structures from four registers"]
68520#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_s32)"]
68521#[doc = "## Safety"]
68522#[doc = " * Neon intrinsic unsafe"]
68523#[inline(always)]
68524#[target_feature(enable = "neon")]
68525#[cfg(not(target_arch = "arm"))]
68526#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68527#[cfg_attr(test, assert_instr(st4))]
68528pub unsafe fn vst4q_s32(a: *mut i32, b: int32x4x4_t) {
68529 crate::core_arch::macros::interleaving_store!(i32, 4, 4, a, b)
68530}
68531#[doc = "Store multiple 4-element structures from four registers"]
68532#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f16)"]
68533#[doc = "## Safety"]
68534#[doc = " * Neon intrinsic unsafe"]
68535#[inline(always)]
68536#[target_feature(enable = "neon")]
68537#[cfg(target_arch = "arm")]
68538#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68539#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68540#[rustc_legacy_const_generics(2)]
68541#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68542#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68543#[cfg(not(target_arch = "arm64ec"))]
68544pub unsafe fn vst4_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x4_t) {
68545 static_assert_uimm_bits!(LANE, 2);
68546 unsafe extern "unadjusted" {
68547 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4f16")]
68548 fn _vst4_lane_f16(
68549 ptr: *mut i8,
68550 a: float16x4_t,
68551 b: float16x4_t,
68552 c: float16x4_t,
68553 d: float16x4_t,
68554 n: i32,
68555 size: i32,
68556 );
68557 }
68558 _vst4_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
68559}
68560#[doc = "Store multiple 4-element structures from four registers"]
68561#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f16)"]
68562#[doc = "## Safety"]
68563#[doc = " * Neon intrinsic unsafe"]
68564#[inline(always)]
68565#[target_feature(enable = "neon")]
68566#[cfg(target_arch = "arm")]
68567#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
68568#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68569#[rustc_legacy_const_generics(2)]
68570#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68571#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68572#[cfg(not(target_arch = "arm64ec"))]
68573pub unsafe fn vst4q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x4_t) {
68574 static_assert_uimm_bits!(LANE, 3);
68575 unsafe extern "unadjusted" {
68576 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8f16")]
68577 fn _vst4q_lane_f16(
68578 ptr: *mut i8,
68579 a: float16x8_t,
68580 b: float16x8_t,
68581 c: float16x8_t,
68582 d: float16x8_t,
68583 n: i32,
68584 size: i32,
68585 );
68586 }
68587 _vst4q_lane_f16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
68588}
68589#[doc = "Store multiple 4-element structures from four registers"]
68590#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f16)"]
68591#[doc = "## Safety"]
68592#[doc = " * Neon intrinsic unsafe"]
68593#[inline(always)]
68594#[target_feature(enable = "neon")]
68595#[cfg(not(target_arch = "arm"))]
68596#[rustc_legacy_const_generics(2)]
68597#[cfg_attr(test, assert_instr(st4, LANE = 0))]
68598#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68599#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68600#[cfg(not(target_arch = "arm64ec"))]
68601pub unsafe fn vst4_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x4_t) {
68602 static_assert_uimm_bits!(LANE, 2);
68603 unsafe extern "unadjusted" {
68604 #[cfg_attr(
68605 any(target_arch = "aarch64", target_arch = "arm64ec"),
68606 link_name = "llvm.aarch64.neon.st4lane.v4f16.p0"
68607 )]
68608 fn _vst4_lane_f16(
68609 a: float16x4_t,
68610 b: float16x4_t,
68611 c: float16x4_t,
68612 d: float16x4_t,
68613 n: i64,
68614 ptr: *mut i8,
68615 );
68616 }
68617 _vst4_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
68618}
68619#[doc = "Store multiple 4-element structures from four registers"]
68620#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f16)"]
68621#[doc = "## Safety"]
68622#[doc = " * Neon intrinsic unsafe"]
68623#[inline(always)]
68624#[target_feature(enable = "neon")]
68625#[cfg(not(target_arch = "arm"))]
68626#[rustc_legacy_const_generics(2)]
68627#[cfg_attr(test, assert_instr(st4, LANE = 0))]
68628#[cfg_attr(target_arch = "arm", target_feature(enable = "fp16"))]
68629#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68630#[cfg(not(target_arch = "arm64ec"))]
68631pub unsafe fn vst4q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x4_t) {
68632 static_assert_uimm_bits!(LANE, 3);
68633 unsafe extern "unadjusted" {
68634 #[cfg_attr(
68635 any(target_arch = "aarch64", target_arch = "arm64ec"),
68636 link_name = "llvm.aarch64.neon.st4lane.v8f16.p0"
68637 )]
68638 fn _vst4q_lane_f16(
68639 a: float16x8_t,
68640 b: float16x8_t,
68641 c: float16x8_t,
68642 d: float16x8_t,
68643 n: i64,
68644 ptr: *mut i8,
68645 );
68646 }
68647 _vst4q_lane_f16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
68648}
68649#[doc = "Store multiple 4-element structures from four registers"]
68650#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f32)"]
68651#[doc = "## Safety"]
68652#[doc = " * Neon intrinsic unsafe"]
68653#[inline(always)]
68654#[cfg(target_arch = "arm")]
68655#[target_feature(enable = "neon,v7")]
68656#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68657#[rustc_legacy_const_generics(2)]
68658#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68659pub unsafe fn vst4_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x4_t) {
68660 static_assert_uimm_bits!(LANE, 1);
68661 unsafe extern "unadjusted" {
68662 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v2f32")]
68663 fn _vst4_lane_f32(
68664 ptr: *mut i8,
68665 a: float32x2_t,
68666 b: float32x2_t,
68667 c: float32x2_t,
68668 d: float32x2_t,
68669 n: i32,
68670 size: i32,
68671 );
68672 }
68673 _vst4_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
68674}
68675#[doc = "Store multiple 4-element structures from four registers"]
68676#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f32)"]
68677#[doc = "## Safety"]
68678#[doc = " * Neon intrinsic unsafe"]
68679#[inline(always)]
68680#[cfg(target_arch = "arm")]
68681#[target_feature(enable = "neon,v7")]
68682#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68683#[rustc_legacy_const_generics(2)]
68684#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68685pub unsafe fn vst4q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x4_t) {
68686 static_assert_uimm_bits!(LANE, 2);
68687 unsafe extern "unadjusted" {
68688 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4f32")]
68689 fn _vst4q_lane_f32(
68690 ptr: *mut i8,
68691 a: float32x4_t,
68692 b: float32x4_t,
68693 c: float32x4_t,
68694 d: float32x4_t,
68695 n: i32,
68696 size: i32,
68697 );
68698 }
68699 _vst4q_lane_f32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
68700}
68701#[doc = "Store multiple 4-element structures from four registers"]
68702#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s8)"]
68703#[doc = "## Safety"]
68704#[doc = " * Neon intrinsic unsafe"]
68705#[inline(always)]
68706#[cfg(target_arch = "arm")]
68707#[target_feature(enable = "neon,v7")]
68708#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68709#[rustc_legacy_const_generics(2)]
68710#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68711pub unsafe fn vst4_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x4_t) {
68712 static_assert_uimm_bits!(LANE, 3);
68713 unsafe extern "unadjusted" {
68714 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8i8")]
68715 fn _vst4_lane_s8(
68716 ptr: *mut i8,
68717 a: int8x8_t,
68718 b: int8x8_t,
68719 c: int8x8_t,
68720 d: int8x8_t,
68721 n: i32,
68722 size: i32,
68723 );
68724 }
68725 _vst4_lane_s8(a as _, b.0, b.1, b.2, b.3, LANE, 1)
68726}
68727#[doc = "Store multiple 4-element structures from four registers"]
68728#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s16)"]
68729#[doc = "## Safety"]
68730#[doc = " * Neon intrinsic unsafe"]
68731#[inline(always)]
68732#[cfg(target_arch = "arm")]
68733#[target_feature(enable = "neon,v7")]
68734#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68735#[rustc_legacy_const_generics(2)]
68736#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68737pub unsafe fn vst4_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x4_t) {
68738 static_assert_uimm_bits!(LANE, 2);
68739 unsafe extern "unadjusted" {
68740 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4i16")]
68741 fn _vst4_lane_s16(
68742 ptr: *mut i8,
68743 a: int16x4_t,
68744 b: int16x4_t,
68745 c: int16x4_t,
68746 d: int16x4_t,
68747 n: i32,
68748 size: i32,
68749 );
68750 }
68751 _vst4_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
68752}
68753#[doc = "Store multiple 4-element structures from four registers"]
68754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s16)"]
68755#[doc = "## Safety"]
68756#[doc = " * Neon intrinsic unsafe"]
68757#[inline(always)]
68758#[cfg(target_arch = "arm")]
68759#[target_feature(enable = "neon,v7")]
68760#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68761#[rustc_legacy_const_generics(2)]
68762#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68763pub unsafe fn vst4q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x4_t) {
68764 static_assert_uimm_bits!(LANE, 3);
68765 unsafe extern "unadjusted" {
68766 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v8i16")]
68767 fn _vst4q_lane_s16(
68768 ptr: *mut i8,
68769 a: int16x8_t,
68770 b: int16x8_t,
68771 c: int16x8_t,
68772 d: int16x8_t,
68773 n: i32,
68774 size: i32,
68775 );
68776 }
68777 _vst4q_lane_s16(a as _, b.0, b.1, b.2, b.3, LANE, 2)
68778}
68779#[doc = "Store multiple 4-element structures from four registers"]
68780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s32)"]
68781#[doc = "## Safety"]
68782#[doc = " * Neon intrinsic unsafe"]
68783#[inline(always)]
68784#[cfg(target_arch = "arm")]
68785#[target_feature(enable = "neon,v7")]
68786#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68787#[rustc_legacy_const_generics(2)]
68788#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68789pub unsafe fn vst4_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x4_t) {
68790 static_assert_uimm_bits!(LANE, 1);
68791 unsafe extern "unadjusted" {
68792 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v2i32")]
68793 fn _vst4_lane_s32(
68794 ptr: *mut i8,
68795 a: int32x2_t,
68796 b: int32x2_t,
68797 c: int32x2_t,
68798 d: int32x2_t,
68799 n: i32,
68800 size: i32,
68801 );
68802 }
68803 _vst4_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
68804}
68805#[doc = "Store multiple 4-element structures from four registers"]
68806#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s32)"]
68807#[doc = "## Safety"]
68808#[doc = " * Neon intrinsic unsafe"]
68809#[inline(always)]
68810#[cfg(target_arch = "arm")]
68811#[target_feature(enable = "neon,v7")]
68812#[cfg_attr(test, assert_instr(vst4, LANE = 0))]
68813#[rustc_legacy_const_generics(2)]
68814#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
68815pub unsafe fn vst4q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x4_t) {
68816 static_assert_uimm_bits!(LANE, 2);
68817 unsafe extern "unadjusted" {
68818 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vst4lane.p0.v4i32")]
68819 fn _vst4q_lane_s32(
68820 ptr: *mut i8,
68821 a: int32x4_t,
68822 b: int32x4_t,
68823 c: int32x4_t,
68824 d: int32x4_t,
68825 n: i32,
68826 size: i32,
68827 );
68828 }
68829 _vst4q_lane_s32(a as _, b.0, b.1, b.2, b.3, LANE, 4)
68830}
68831#[doc = "Store multiple 4-element structures from four registers"]
68832#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_f32)"]
68833#[doc = "## Safety"]
68834#[doc = " * Neon intrinsic unsafe"]
68835#[inline(always)]
68836#[target_feature(enable = "neon")]
68837#[cfg(not(target_arch = "arm"))]
68838#[rustc_legacy_const_generics(2)]
68839#[cfg_attr(test, assert_instr(st4, LANE = 0))]
68840#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68841pub unsafe fn vst4_lane_f32<const LANE: i32>(a: *mut f32, b: float32x2x4_t) {
68842 static_assert_uimm_bits!(LANE, 1);
68843 unsafe extern "unadjusted" {
68844 #[cfg_attr(
68845 any(target_arch = "aarch64", target_arch = "arm64ec"),
68846 link_name = "llvm.aarch64.neon.st4lane.v2f32.p0"
68847 )]
68848 fn _vst4_lane_f32(
68849 a: float32x2_t,
68850 b: float32x2_t,
68851 c: float32x2_t,
68852 d: float32x2_t,
68853 n: i64,
68854 ptr: *mut i8,
68855 );
68856 }
68857 _vst4_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
68858}
68859#[doc = "Store multiple 4-element structures from four registers"]
68860#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_f32)"]
68861#[doc = "## Safety"]
68862#[doc = " * Neon intrinsic unsafe"]
68863#[inline(always)]
68864#[target_feature(enable = "neon")]
68865#[cfg(not(target_arch = "arm"))]
68866#[rustc_legacy_const_generics(2)]
68867#[cfg_attr(test, assert_instr(st4, LANE = 0))]
68868#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68869pub unsafe fn vst4q_lane_f32<const LANE: i32>(a: *mut f32, b: float32x4x4_t) {
68870 static_assert_uimm_bits!(LANE, 2);
68871 unsafe extern "unadjusted" {
68872 #[cfg_attr(
68873 any(target_arch = "aarch64", target_arch = "arm64ec"),
68874 link_name = "llvm.aarch64.neon.st4lane.v4f32.p0"
68875 )]
68876 fn _vst4q_lane_f32(
68877 a: float32x4_t,
68878 b: float32x4_t,
68879 c: float32x4_t,
68880 d: float32x4_t,
68881 n: i64,
68882 ptr: *mut i8,
68883 );
68884 }
68885 _vst4q_lane_f32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
68886}
68887#[doc = "Store multiple 4-element structures from four registers"]
68888#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s8)"]
68889#[doc = "## Safety"]
68890#[doc = " * Neon intrinsic unsafe"]
68891#[inline(always)]
68892#[target_feature(enable = "neon")]
68893#[cfg(not(target_arch = "arm"))]
68894#[rustc_legacy_const_generics(2)]
68895#[cfg_attr(test, assert_instr(st4, LANE = 0))]
68896#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68897pub unsafe fn vst4_lane_s8<const LANE: i32>(a: *mut i8, b: int8x8x4_t) {
68898 static_assert_uimm_bits!(LANE, 3);
68899 unsafe extern "unadjusted" {
68900 #[cfg_attr(
68901 any(target_arch = "aarch64", target_arch = "arm64ec"),
68902 link_name = "llvm.aarch64.neon.st4lane.v8i8.p0"
68903 )]
68904 fn _vst4_lane_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, n: i64, ptr: *mut i8);
68905 }
68906 _vst4_lane_s8(b.0, b.1, b.2, b.3, LANE as i64, a as _)
68907}
68908#[doc = "Store multiple 4-element structures from four registers"]
68909#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s16)"]
68910#[doc = "## Safety"]
68911#[doc = " * Neon intrinsic unsafe"]
68912#[inline(always)]
68913#[target_feature(enable = "neon")]
68914#[cfg(not(target_arch = "arm"))]
68915#[rustc_legacy_const_generics(2)]
68916#[cfg_attr(test, assert_instr(st4, LANE = 0))]
68917#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68918pub unsafe fn vst4_lane_s16<const LANE: i32>(a: *mut i16, b: int16x4x4_t) {
68919 static_assert_uimm_bits!(LANE, 2);
68920 unsafe extern "unadjusted" {
68921 #[cfg_attr(
68922 any(target_arch = "aarch64", target_arch = "arm64ec"),
68923 link_name = "llvm.aarch64.neon.st4lane.v4i16.p0"
68924 )]
68925 fn _vst4_lane_s16(
68926 a: int16x4_t,
68927 b: int16x4_t,
68928 c: int16x4_t,
68929 d: int16x4_t,
68930 n: i64,
68931 ptr: *mut i8,
68932 );
68933 }
68934 _vst4_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
68935}
68936#[doc = "Store multiple 4-element structures from four registers"]
68937#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s16)"]
68938#[doc = "## Safety"]
68939#[doc = " * Neon intrinsic unsafe"]
68940#[inline(always)]
68941#[target_feature(enable = "neon")]
68942#[cfg(not(target_arch = "arm"))]
68943#[rustc_legacy_const_generics(2)]
68944#[cfg_attr(test, assert_instr(st4, LANE = 0))]
68945#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68946pub unsafe fn vst4q_lane_s16<const LANE: i32>(a: *mut i16, b: int16x8x4_t) {
68947 static_assert_uimm_bits!(LANE, 3);
68948 unsafe extern "unadjusted" {
68949 #[cfg_attr(
68950 any(target_arch = "aarch64", target_arch = "arm64ec"),
68951 link_name = "llvm.aarch64.neon.st4lane.v8i16.p0"
68952 )]
68953 fn _vst4q_lane_s16(
68954 a: int16x8_t,
68955 b: int16x8_t,
68956 c: int16x8_t,
68957 d: int16x8_t,
68958 n: i64,
68959 ptr: *mut i8,
68960 );
68961 }
68962 _vst4q_lane_s16(b.0, b.1, b.2, b.3, LANE as i64, a as _)
68963}
68964#[doc = "Store multiple 4-element structures from four registers"]
68965#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_s32)"]
68966#[doc = "## Safety"]
68967#[doc = " * Neon intrinsic unsafe"]
68968#[inline(always)]
68969#[target_feature(enable = "neon")]
68970#[cfg(not(target_arch = "arm"))]
68971#[rustc_legacy_const_generics(2)]
68972#[cfg_attr(test, assert_instr(st4, LANE = 0))]
68973#[stable(feature = "neon_intrinsics", since = "1.59.0")]
68974pub unsafe fn vst4_lane_s32<const LANE: i32>(a: *mut i32, b: int32x2x4_t) {
68975 static_assert_uimm_bits!(LANE, 1);
68976 unsafe extern "unadjusted" {
68977 #[cfg_attr(
68978 any(target_arch = "aarch64", target_arch = "arm64ec"),
68979 link_name = "llvm.aarch64.neon.st4lane.v2i32.p0"
68980 )]
68981 fn _vst4_lane_s32(
68982 a: int32x2_t,
68983 b: int32x2_t,
68984 c: int32x2_t,
68985 d: int32x2_t,
68986 n: i64,
68987 ptr: *mut i8,
68988 );
68989 }
68990 _vst4_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
68991}
68992#[doc = "Store multiple 4-element structures from four registers"]
68993#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_s32)"]
68994#[doc = "## Safety"]
68995#[doc = " * Neon intrinsic unsafe"]
68996#[inline(always)]
68997#[target_feature(enable = "neon")]
68998#[cfg(not(target_arch = "arm"))]
68999#[rustc_legacy_const_generics(2)]
69000#[cfg_attr(test, assert_instr(st4, LANE = 0))]
69001#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69002pub unsafe fn vst4q_lane_s32<const LANE: i32>(a: *mut i32, b: int32x4x4_t) {
69003 static_assert_uimm_bits!(LANE, 2);
69004 unsafe extern "unadjusted" {
69005 #[cfg_attr(
69006 any(target_arch = "aarch64", target_arch = "arm64ec"),
69007 link_name = "llvm.aarch64.neon.st4lane.v4i32.p0"
69008 )]
69009 fn _vst4q_lane_s32(
69010 a: int32x4_t,
69011 b: int32x4_t,
69012 c: int32x4_t,
69013 d: int32x4_t,
69014 n: i64,
69015 ptr: *mut i8,
69016 );
69017 }
69018 _vst4q_lane_s32(b.0, b.1, b.2, b.3, LANE as i64, a as _)
69019}
69020#[doc = "Store multiple 4-element structures from four registers"]
69021#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u8)"]
69022#[doc = "## Safety"]
69023#[doc = " * Neon intrinsic unsafe"]
69024#[inline(always)]
69025#[target_feature(enable = "neon")]
69026#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69027#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69028#[cfg_attr(
69029 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69030 assert_instr(st4, LANE = 0)
69031)]
69032#[rustc_legacy_const_generics(2)]
69033#[cfg_attr(
69034 not(target_arch = "arm"),
69035 stable(feature = "neon_intrinsics", since = "1.59.0")
69036)]
69037#[cfg_attr(
69038 target_arch = "arm",
69039 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69040)]
69041pub unsafe fn vst4_lane_u8<const LANE: i32>(a: *mut u8, b: uint8x8x4_t) {
69042 static_assert_uimm_bits!(LANE, 3);
69043 vst4_lane_s8::<LANE>(transmute(a), transmute(b))
69044}
69045#[doc = "Store multiple 4-element structures from four registers"]
69046#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u16)"]
69047#[doc = "## Safety"]
69048#[doc = " * Neon intrinsic unsafe"]
69049#[inline(always)]
69050#[target_feature(enable = "neon")]
69051#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69052#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69053#[cfg_attr(
69054 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69055 assert_instr(st4, LANE = 0)
69056)]
69057#[rustc_legacy_const_generics(2)]
69058#[cfg_attr(
69059 not(target_arch = "arm"),
69060 stable(feature = "neon_intrinsics", since = "1.59.0")
69061)]
69062#[cfg_attr(
69063 target_arch = "arm",
69064 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69065)]
69066pub unsafe fn vst4_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x4x4_t) {
69067 static_assert_uimm_bits!(LANE, 2);
69068 vst4_lane_s16::<LANE>(transmute(a), transmute(b))
69069}
69070#[doc = "Store multiple 4-element structures from four registers"]
69071#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_u16)"]
69072#[doc = "## Safety"]
69073#[doc = " * Neon intrinsic unsafe"]
69074#[inline(always)]
69075#[target_feature(enable = "neon")]
69076#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69077#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69078#[cfg_attr(
69079 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69080 assert_instr(st4, LANE = 0)
69081)]
69082#[rustc_legacy_const_generics(2)]
69083#[cfg_attr(
69084 not(target_arch = "arm"),
69085 stable(feature = "neon_intrinsics", since = "1.59.0")
69086)]
69087#[cfg_attr(
69088 target_arch = "arm",
69089 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69090)]
69091pub unsafe fn vst4q_lane_u16<const LANE: i32>(a: *mut u16, b: uint16x8x4_t) {
69092 static_assert_uimm_bits!(LANE, 3);
69093 vst4q_lane_s16::<LANE>(transmute(a), transmute(b))
69094}
69095#[doc = "Store multiple 4-element structures from four registers"]
69096#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_u32)"]
69097#[doc = "## Safety"]
69098#[doc = " * Neon intrinsic unsafe"]
69099#[inline(always)]
69100#[target_feature(enable = "neon")]
69101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69103#[cfg_attr(
69104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69105 assert_instr(st4, LANE = 0)
69106)]
69107#[rustc_legacy_const_generics(2)]
69108#[cfg_attr(
69109 not(target_arch = "arm"),
69110 stable(feature = "neon_intrinsics", since = "1.59.0")
69111)]
69112#[cfg_attr(
69113 target_arch = "arm",
69114 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69115)]
69116pub unsafe fn vst4_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x2x4_t) {
69117 static_assert_uimm_bits!(LANE, 1);
69118 vst4_lane_s32::<LANE>(transmute(a), transmute(b))
69119}
69120#[doc = "Store multiple 4-element structures from four registers"]
69121#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_u32)"]
69122#[doc = "## Safety"]
69123#[doc = " * Neon intrinsic unsafe"]
69124#[inline(always)]
69125#[target_feature(enable = "neon")]
69126#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69127#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69128#[cfg_attr(
69129 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69130 assert_instr(st4, LANE = 0)
69131)]
69132#[rustc_legacy_const_generics(2)]
69133#[cfg_attr(
69134 not(target_arch = "arm"),
69135 stable(feature = "neon_intrinsics", since = "1.59.0")
69136)]
69137#[cfg_attr(
69138 target_arch = "arm",
69139 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69140)]
69141pub unsafe fn vst4q_lane_u32<const LANE: i32>(a: *mut u32, b: uint32x4x4_t) {
69142 static_assert_uimm_bits!(LANE, 2);
69143 vst4q_lane_s32::<LANE>(transmute(a), transmute(b))
69144}
69145#[doc = "Store multiple 4-element structures from four registers"]
69146#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_p8)"]
69147#[doc = "## Safety"]
69148#[doc = " * Neon intrinsic unsafe"]
69149#[inline(always)]
69150#[target_feature(enable = "neon")]
69151#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69152#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69153#[cfg_attr(
69154 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69155 assert_instr(st4, LANE = 0)
69156)]
69157#[rustc_legacy_const_generics(2)]
69158#[cfg_attr(
69159 not(target_arch = "arm"),
69160 stable(feature = "neon_intrinsics", since = "1.59.0")
69161)]
69162#[cfg_attr(
69163 target_arch = "arm",
69164 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69165)]
69166pub unsafe fn vst4_lane_p8<const LANE: i32>(a: *mut p8, b: poly8x8x4_t) {
69167 static_assert_uimm_bits!(LANE, 3);
69168 vst4_lane_s8::<LANE>(transmute(a), transmute(b))
69169}
69170#[doc = "Store multiple 4-element structures from four registers"]
69171#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_lane_p16)"]
69172#[doc = "## Safety"]
69173#[doc = " * Neon intrinsic unsafe"]
69174#[inline(always)]
69175#[target_feature(enable = "neon")]
69176#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69177#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69178#[cfg_attr(
69179 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69180 assert_instr(st4, LANE = 0)
69181)]
69182#[rustc_legacy_const_generics(2)]
69183#[cfg_attr(
69184 not(target_arch = "arm"),
69185 stable(feature = "neon_intrinsics", since = "1.59.0")
69186)]
69187#[cfg_attr(
69188 target_arch = "arm",
69189 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69190)]
69191pub unsafe fn vst4_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x4x4_t) {
69192 static_assert_uimm_bits!(LANE, 2);
69193 vst4_lane_s16::<LANE>(transmute(a), transmute(b))
69194}
69195#[doc = "Store multiple 4-element structures from four registers"]
69196#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_lane_p16)"]
69197#[doc = "## Safety"]
69198#[doc = " * Neon intrinsic unsafe"]
69199#[inline(always)]
69200#[target_feature(enable = "neon")]
69201#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69202#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4, LANE = 0))]
69203#[cfg_attr(
69204 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69205 assert_instr(st4, LANE = 0)
69206)]
69207#[rustc_legacy_const_generics(2)]
69208#[cfg_attr(
69209 not(target_arch = "arm"),
69210 stable(feature = "neon_intrinsics", since = "1.59.0")
69211)]
69212#[cfg_attr(
69213 target_arch = "arm",
69214 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69215)]
69216pub unsafe fn vst4q_lane_p16<const LANE: i32>(a: *mut p16, b: poly16x8x4_t) {
69217 static_assert_uimm_bits!(LANE, 3);
69218 vst4q_lane_s16::<LANE>(transmute(a), transmute(b))
69219}
69220#[doc = "Store multiple 4-element structures from four registers"]
69221#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p64)"]
69222#[doc = "## Safety"]
69223#[doc = " * Neon intrinsic unsafe"]
69224#[inline(always)]
69225#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
69226#[target_feature(enable = "neon,aes")]
69227#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
69228#[cfg_attr(
69229 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69230 assert_instr(nop)
69231)]
69232#[cfg_attr(
69233 not(target_arch = "arm"),
69234 stable(feature = "neon_intrinsics", since = "1.59.0")
69235)]
69236#[cfg_attr(
69237 target_arch = "arm",
69238 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69239)]
69240pub unsafe fn vst4_p64(a: *mut p64, b: poly64x1x4_t) {
69241 vst4_s64(transmute(a), transmute(b))
69242}
69243#[doc = "Store multiple 4-element structures from four registers"]
69244#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s64)"]
69245#[doc = "## Safety"]
69246#[doc = " * Neon intrinsic unsafe"]
69247#[inline(always)]
69248#[cfg(target_arch = "arm")]
69249#[target_feature(enable = "neon,v7")]
69250#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
69251#[cfg_attr(test, assert_instr(nop))]
69252pub unsafe fn vst4_s64(a: *mut i64, b: int64x1x4_t) {
69253 core::ptr::write_unaligned(a.cast(), b)
69254}
69255#[doc = "Store multiple 4-element structures from four registers"]
69256#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_s64)"]
69257#[doc = "## Safety"]
69258#[doc = " * Neon intrinsic unsafe"]
69259#[inline(always)]
69260#[target_feature(enable = "neon")]
69261#[cfg(not(target_arch = "arm"))]
69262#[stable(feature = "neon_intrinsics", since = "1.59.0")]
69263#[cfg_attr(test, assert_instr(nop))]
69264pub unsafe fn vst4_s64(a: *mut i64, b: int64x1x4_t) {
69265 core::ptr::write_unaligned(a.cast(), b)
69266}
69267#[doc = "Store multiple 4-element structures from four registers"]
69268#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u64)"]
69269#[doc = "## Safety"]
69270#[doc = " * Neon intrinsic unsafe"]
69271#[inline(always)]
69272#[target_feature(enable = "neon")]
69273#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69274#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
69275#[cfg_attr(
69276 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69277 assert_instr(nop)
69278)]
69279#[cfg_attr(
69280 not(target_arch = "arm"),
69281 stable(feature = "neon_intrinsics", since = "1.59.0")
69282)]
69283#[cfg_attr(
69284 target_arch = "arm",
69285 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69286)]
69287pub unsafe fn vst4_u64(a: *mut u64, b: uint64x1x4_t) {
69288 vst4_s64(transmute(a), transmute(b))
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_u8)"]
69292#[doc = "## Safety"]
69293#[doc = " * Neon intrinsic unsafe"]
69294#[inline(always)]
69295#[target_feature(enable = "neon")]
69296#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69297#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69298#[cfg_attr(
69299 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69300 assert_instr(st4)
69301)]
69302#[cfg_attr(
69303 not(target_arch = "arm"),
69304 stable(feature = "neon_intrinsics", since = "1.59.0")
69305)]
69306#[cfg_attr(
69307 target_arch = "arm",
69308 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69309)]
69310pub unsafe fn vst4_u8(a: *mut u8, b: uint8x8x4_t) {
69311 vst4_s8(transmute(a), transmute(b))
69312}
69313#[doc = "Store multiple 4-element structures from four registers"]
69314#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u8)"]
69315#[doc = "## Safety"]
69316#[doc = " * Neon intrinsic unsafe"]
69317#[inline(always)]
69318#[target_feature(enable = "neon")]
69319#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69320#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69321#[cfg_attr(
69322 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69323 assert_instr(st4)
69324)]
69325#[cfg_attr(
69326 not(target_arch = "arm"),
69327 stable(feature = "neon_intrinsics", since = "1.59.0")
69328)]
69329#[cfg_attr(
69330 target_arch = "arm",
69331 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69332)]
69333pub unsafe fn vst4q_u8(a: *mut u8, b: uint8x16x4_t) {
69334 vst4q_s8(transmute(a), transmute(b))
69335}
69336#[doc = "Store multiple 4-element structures from four registers"]
69337#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u16)"]
69338#[doc = "## Safety"]
69339#[doc = " * Neon intrinsic unsafe"]
69340#[inline(always)]
69341#[target_feature(enable = "neon")]
69342#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69343#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69344#[cfg_attr(
69345 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69346 assert_instr(st4)
69347)]
69348#[cfg_attr(
69349 not(target_arch = "arm"),
69350 stable(feature = "neon_intrinsics", since = "1.59.0")
69351)]
69352#[cfg_attr(
69353 target_arch = "arm",
69354 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69355)]
69356pub unsafe fn vst4_u16(a: *mut u16, b: uint16x4x4_t) {
69357 vst4_s16(transmute(a), transmute(b))
69358}
69359#[doc = "Store multiple 4-element structures from four registers"]
69360#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u16)"]
69361#[doc = "## Safety"]
69362#[doc = " * Neon intrinsic unsafe"]
69363#[inline(always)]
69364#[target_feature(enable = "neon")]
69365#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69366#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69367#[cfg_attr(
69368 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69369 assert_instr(st4)
69370)]
69371#[cfg_attr(
69372 not(target_arch = "arm"),
69373 stable(feature = "neon_intrinsics", since = "1.59.0")
69374)]
69375#[cfg_attr(
69376 target_arch = "arm",
69377 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69378)]
69379pub unsafe fn vst4q_u16(a: *mut u16, b: uint16x8x4_t) {
69380 vst4q_s16(transmute(a), transmute(b))
69381}
69382#[doc = "Store multiple 4-element structures from four registers"]
69383#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_u32)"]
69384#[doc = "## Safety"]
69385#[doc = " * Neon intrinsic unsafe"]
69386#[inline(always)]
69387#[target_feature(enable = "neon")]
69388#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69389#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69390#[cfg_attr(
69391 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69392 assert_instr(st4)
69393)]
69394#[cfg_attr(
69395 not(target_arch = "arm"),
69396 stable(feature = "neon_intrinsics", since = "1.59.0")
69397)]
69398#[cfg_attr(
69399 target_arch = "arm",
69400 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69401)]
69402pub unsafe fn vst4_u32(a: *mut u32, b: uint32x2x4_t) {
69403 vst4_s32(transmute(a), transmute(b))
69404}
69405#[doc = "Store multiple 4-element structures from four registers"]
69406#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_u32)"]
69407#[doc = "## Safety"]
69408#[doc = " * Neon intrinsic unsafe"]
69409#[inline(always)]
69410#[target_feature(enable = "neon")]
69411#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69412#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69413#[cfg_attr(
69414 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69415 assert_instr(st4)
69416)]
69417#[cfg_attr(
69418 not(target_arch = "arm"),
69419 stable(feature = "neon_intrinsics", since = "1.59.0")
69420)]
69421#[cfg_attr(
69422 target_arch = "arm",
69423 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69424)]
69425pub unsafe fn vst4q_u32(a: *mut u32, b: uint32x4x4_t) {
69426 vst4q_s32(transmute(a), transmute(b))
69427}
69428#[doc = "Store multiple 4-element structures from four registers"]
69429#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p8)"]
69430#[doc = "## Safety"]
69431#[doc = " * Neon intrinsic unsafe"]
69432#[inline(always)]
69433#[target_feature(enable = "neon")]
69434#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69435#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69436#[cfg_attr(
69437 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69438 assert_instr(st4)
69439)]
69440#[cfg_attr(
69441 not(target_arch = "arm"),
69442 stable(feature = "neon_intrinsics", since = "1.59.0")
69443)]
69444#[cfg_attr(
69445 target_arch = "arm",
69446 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69447)]
69448pub unsafe fn vst4_p8(a: *mut p8, b: poly8x8x4_t) {
69449 vst4_s8(transmute(a), transmute(b))
69450}
69451#[doc = "Store multiple 4-element structures from four registers"]
69452#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_p8)"]
69453#[doc = "## Safety"]
69454#[doc = " * Neon intrinsic unsafe"]
69455#[inline(always)]
69456#[target_feature(enable = "neon")]
69457#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69458#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69459#[cfg_attr(
69460 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69461 assert_instr(st4)
69462)]
69463#[cfg_attr(
69464 not(target_arch = "arm"),
69465 stable(feature = "neon_intrinsics", since = "1.59.0")
69466)]
69467#[cfg_attr(
69468 target_arch = "arm",
69469 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69470)]
69471pub unsafe fn vst4q_p8(a: *mut p8, b: poly8x16x4_t) {
69472 vst4q_s8(transmute(a), transmute(b))
69473}
69474#[doc = "Store multiple 4-element structures from four registers"]
69475#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4_p16)"]
69476#[doc = "## Safety"]
69477#[doc = " * Neon intrinsic unsafe"]
69478#[inline(always)]
69479#[target_feature(enable = "neon")]
69480#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69481#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69482#[cfg_attr(
69483 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69484 assert_instr(st4)
69485)]
69486#[cfg_attr(
69487 not(target_arch = "arm"),
69488 stable(feature = "neon_intrinsics", since = "1.59.0")
69489)]
69490#[cfg_attr(
69491 target_arch = "arm",
69492 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69493)]
69494pub unsafe fn vst4_p16(a: *mut p16, b: poly16x4x4_t) {
69495 vst4_s16(transmute(a), transmute(b))
69496}
69497#[doc = "Store multiple 4-element structures from four registers"]
69498#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vst4q_p16)"]
69499#[doc = "## Safety"]
69500#[doc = " * Neon intrinsic unsafe"]
69501#[inline(always)]
69502#[target_feature(enable = "neon")]
69503#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69504#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vst4))]
69505#[cfg_attr(
69506 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69507 assert_instr(st4)
69508)]
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 vst4q_p16(a: *mut p16, b: poly16x8x4_t) {
69518 vst4q_s16(transmute(a), transmute(b))
69519}
69520#[doc = "Store SIMD&FP register (immediate offset)"]
69521#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vstrq_p128)"]
69522#[doc = "## Safety"]
69523#[doc = " * Neon intrinsic unsafe"]
69524#[inline(always)]
69525#[target_feature(enable = "neon")]
69526#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69527#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
69528#[cfg_attr(
69529 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69530 assert_instr(nop)
69531)]
69532#[cfg_attr(
69533 not(target_arch = "arm"),
69534 stable(feature = "neon_intrinsics", since = "1.59.0")
69535)]
69536#[cfg_attr(
69537 target_arch = "arm",
69538 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69539)]
69540pub unsafe fn vstrq_p128(a: *mut p128, b: p128) {
69541 *a = b
69542}
69543#[doc = "Subtract"]
69544#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_f16)"]
69545#[inline(always)]
69546#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
69547#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f16"))]
69548#[cfg_attr(
69549 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69550 assert_instr(fsub)
69551)]
69552#[target_feature(enable = "neon,fp16")]
69553#[cfg_attr(
69554 not(target_arch = "arm"),
69555 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
69556)]
69557#[cfg_attr(
69558 target_arch = "arm",
69559 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69560)]
69561#[cfg(not(target_arch = "arm64ec"))]
69562pub fn vsub_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
69563 unsafe { simd_sub(a, b) }
69564}
69565#[doc = "Subtract"]
69566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_f16)"]
69567#[inline(always)]
69568#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
69569#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f16"))]
69570#[cfg_attr(
69571 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69572 assert_instr(fsub)
69573)]
69574#[target_feature(enable = "neon,fp16")]
69575#[cfg_attr(
69576 not(target_arch = "arm"),
69577 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
69578)]
69579#[cfg_attr(
69580 target_arch = "arm",
69581 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69582)]
69583#[cfg(not(target_arch = "arm64ec"))]
69584pub fn vsubq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
69585 unsafe { simd_sub(a, b) }
69586}
69587#[doc = "Subtract"]
69588#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_f32)"]
69589#[inline(always)]
69590#[target_feature(enable = "neon")]
69591#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69592#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f32"))]
69593#[cfg_attr(
69594 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69595 assert_instr(fsub)
69596)]
69597#[cfg_attr(
69598 not(target_arch = "arm"),
69599 stable(feature = "neon_intrinsics", since = "1.59.0")
69600)]
69601#[cfg_attr(
69602 target_arch = "arm",
69603 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69604)]
69605pub fn vsub_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
69606 unsafe { simd_sub(a, b) }
69607}
69608#[doc = "Subtract"]
69609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_f32)"]
69610#[inline(always)]
69611#[target_feature(enable = "neon")]
69612#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69613#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.f32"))]
69614#[cfg_attr(
69615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69616 assert_instr(fsub)
69617)]
69618#[cfg_attr(
69619 not(target_arch = "arm"),
69620 stable(feature = "neon_intrinsics", since = "1.59.0")
69621)]
69622#[cfg_attr(
69623 target_arch = "arm",
69624 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69625)]
69626pub fn vsubq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
69627 unsafe { simd_sub(a, b) }
69628}
69629#[doc = "Subtract"]
69630#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s16)"]
69631#[inline(always)]
69632#[target_feature(enable = "neon")]
69633#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69634#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
69635#[cfg_attr(
69636 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69637 assert_instr(sub)
69638)]
69639#[cfg_attr(
69640 not(target_arch = "arm"),
69641 stable(feature = "neon_intrinsics", since = "1.59.0")
69642)]
69643#[cfg_attr(
69644 target_arch = "arm",
69645 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69646)]
69647pub fn vsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
69648 unsafe { simd_sub(a, b) }
69649}
69650#[doc = "Subtract"]
69651#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s16)"]
69652#[inline(always)]
69653#[target_feature(enable = "neon")]
69654#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69655#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
69656#[cfg_attr(
69657 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69658 assert_instr(sub)
69659)]
69660#[cfg_attr(
69661 not(target_arch = "arm"),
69662 stable(feature = "neon_intrinsics", since = "1.59.0")
69663)]
69664#[cfg_attr(
69665 target_arch = "arm",
69666 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69667)]
69668pub fn vsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
69669 unsafe { simd_sub(a, b) }
69670}
69671#[doc = "Subtract"]
69672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u16)"]
69673#[inline(always)]
69674#[target_feature(enable = "neon")]
69675#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69676#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
69677#[cfg_attr(
69678 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69679 assert_instr(sub)
69680)]
69681#[cfg_attr(
69682 not(target_arch = "arm"),
69683 stable(feature = "neon_intrinsics", since = "1.59.0")
69684)]
69685#[cfg_attr(
69686 target_arch = "arm",
69687 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69688)]
69689pub fn vsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
69690 unsafe { simd_sub(a, b) }
69691}
69692#[doc = "Subtract"]
69693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u16)"]
69694#[inline(always)]
69695#[target_feature(enable = "neon")]
69696#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69697#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i16"))]
69698#[cfg_attr(
69699 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69700 assert_instr(sub)
69701)]
69702#[cfg_attr(
69703 not(target_arch = "arm"),
69704 stable(feature = "neon_intrinsics", since = "1.59.0")
69705)]
69706#[cfg_attr(
69707 target_arch = "arm",
69708 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69709)]
69710pub fn vsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
69711 unsafe { simd_sub(a, b) }
69712}
69713#[doc = "Subtract"]
69714#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s32)"]
69715#[inline(always)]
69716#[target_feature(enable = "neon")]
69717#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69718#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
69719#[cfg_attr(
69720 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69721 assert_instr(sub)
69722)]
69723#[cfg_attr(
69724 not(target_arch = "arm"),
69725 stable(feature = "neon_intrinsics", since = "1.59.0")
69726)]
69727#[cfg_attr(
69728 target_arch = "arm",
69729 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69730)]
69731pub fn vsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
69732 unsafe { simd_sub(a, b) }
69733}
69734#[doc = "Subtract"]
69735#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s32)"]
69736#[inline(always)]
69737#[target_feature(enable = "neon")]
69738#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69739#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
69740#[cfg_attr(
69741 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69742 assert_instr(sub)
69743)]
69744#[cfg_attr(
69745 not(target_arch = "arm"),
69746 stable(feature = "neon_intrinsics", since = "1.59.0")
69747)]
69748#[cfg_attr(
69749 target_arch = "arm",
69750 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69751)]
69752pub fn vsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
69753 unsafe { simd_sub(a, b) }
69754}
69755#[doc = "Subtract"]
69756#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u32)"]
69757#[inline(always)]
69758#[target_feature(enable = "neon")]
69759#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69760#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
69761#[cfg_attr(
69762 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69763 assert_instr(sub)
69764)]
69765#[cfg_attr(
69766 not(target_arch = "arm"),
69767 stable(feature = "neon_intrinsics", since = "1.59.0")
69768)]
69769#[cfg_attr(
69770 target_arch = "arm",
69771 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69772)]
69773pub fn vsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
69774 unsafe { simd_sub(a, b) }
69775}
69776#[doc = "Subtract"]
69777#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u32)"]
69778#[inline(always)]
69779#[target_feature(enable = "neon")]
69780#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69781#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i32"))]
69782#[cfg_attr(
69783 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69784 assert_instr(sub)
69785)]
69786#[cfg_attr(
69787 not(target_arch = "arm"),
69788 stable(feature = "neon_intrinsics", since = "1.59.0")
69789)]
69790#[cfg_attr(
69791 target_arch = "arm",
69792 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69793)]
69794pub fn vsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
69795 unsafe { simd_sub(a, b) }
69796}
69797#[doc = "Subtract"]
69798#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s64)"]
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("vsub.i64"))]
69803#[cfg_attr(
69804 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69805 assert_instr(sub)
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 fn vsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
69816 unsafe { simd_sub(a, b) }
69817}
69818#[doc = "Subtract"]
69819#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s64)"]
69820#[inline(always)]
69821#[target_feature(enable = "neon")]
69822#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69823#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
69824#[cfg_attr(
69825 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69826 assert_instr(sub)
69827)]
69828#[cfg_attr(
69829 not(target_arch = "arm"),
69830 stable(feature = "neon_intrinsics", since = "1.59.0")
69831)]
69832#[cfg_attr(
69833 target_arch = "arm",
69834 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69835)]
69836pub fn vsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
69837 unsafe { simd_sub(a, b) }
69838}
69839#[doc = "Subtract"]
69840#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u64)"]
69841#[inline(always)]
69842#[target_feature(enable = "neon")]
69843#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69844#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
69845#[cfg_attr(
69846 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69847 assert_instr(sub)
69848)]
69849#[cfg_attr(
69850 not(target_arch = "arm"),
69851 stable(feature = "neon_intrinsics", since = "1.59.0")
69852)]
69853#[cfg_attr(
69854 target_arch = "arm",
69855 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69856)]
69857pub fn vsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
69858 unsafe { simd_sub(a, b) }
69859}
69860#[doc = "Subtract"]
69861#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u64)"]
69862#[inline(always)]
69863#[target_feature(enable = "neon")]
69864#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69865#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i64"))]
69866#[cfg_attr(
69867 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69868 assert_instr(sub)
69869)]
69870#[cfg_attr(
69871 not(target_arch = "arm"),
69872 stable(feature = "neon_intrinsics", since = "1.59.0")
69873)]
69874#[cfg_attr(
69875 target_arch = "arm",
69876 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69877)]
69878pub fn vsubq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
69879 unsafe { simd_sub(a, b) }
69880}
69881#[doc = "Subtract"]
69882#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_s8)"]
69883#[inline(always)]
69884#[target_feature(enable = "neon")]
69885#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69886#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
69887#[cfg_attr(
69888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69889 assert_instr(sub)
69890)]
69891#[cfg_attr(
69892 not(target_arch = "arm"),
69893 stable(feature = "neon_intrinsics", since = "1.59.0")
69894)]
69895#[cfg_attr(
69896 target_arch = "arm",
69897 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69898)]
69899pub fn vsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
69900 unsafe { simd_sub(a, b) }
69901}
69902#[doc = "Subtract"]
69903#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_s8)"]
69904#[inline(always)]
69905#[target_feature(enable = "neon")]
69906#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69907#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
69908#[cfg_attr(
69909 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69910 assert_instr(sub)
69911)]
69912#[cfg_attr(
69913 not(target_arch = "arm"),
69914 stable(feature = "neon_intrinsics", since = "1.59.0")
69915)]
69916#[cfg_attr(
69917 target_arch = "arm",
69918 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69919)]
69920pub fn vsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
69921 unsafe { simd_sub(a, b) }
69922}
69923#[doc = "Subtract"]
69924#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsub_u8)"]
69925#[inline(always)]
69926#[target_feature(enable = "neon")]
69927#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69928#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
69929#[cfg_attr(
69930 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69931 assert_instr(sub)
69932)]
69933#[cfg_attr(
69934 not(target_arch = "arm"),
69935 stable(feature = "neon_intrinsics", since = "1.59.0")
69936)]
69937#[cfg_attr(
69938 target_arch = "arm",
69939 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69940)]
69941pub fn vsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
69942 unsafe { simd_sub(a, b) }
69943}
69944#[doc = "Subtract"]
69945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubq_u8)"]
69946#[inline(always)]
69947#[target_feature(enable = "neon")]
69948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69949#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vsub.i8"))]
69950#[cfg_attr(
69951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69952 assert_instr(sub)
69953)]
69954#[cfg_attr(
69955 not(target_arch = "arm"),
69956 stable(feature = "neon_intrinsics", since = "1.59.0")
69957)]
69958#[cfg_attr(
69959 target_arch = "arm",
69960 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69961)]
69962pub fn vsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
69963 unsafe { simd_sub(a, b) }
69964}
69965#[doc = "Subtract returning high narrow"]
69966#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s16)"]
69967#[inline(always)]
69968#[target_feature(enable = "neon")]
69969#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69970#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
69971#[cfg_attr(
69972 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69973 assert_instr(subhn2)
69974)]
69975#[cfg_attr(
69976 not(target_arch = "arm"),
69977 stable(feature = "neon_intrinsics", since = "1.59.0")
69978)]
69979#[cfg_attr(
69980 target_arch = "arm",
69981 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
69982)]
69983pub fn vsubhn_high_s16(a: int8x8_t, b: int16x8_t, c: int16x8_t) -> int8x16_t {
69984 let d: int8x8_t = vsubhn_s16(b, c);
69985 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
69986}
69987#[doc = "Subtract returning high narrow"]
69988#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s32)"]
69989#[inline(always)]
69990#[target_feature(enable = "neon")]
69991#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
69992#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
69993#[cfg_attr(
69994 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
69995 assert_instr(subhn2)
69996)]
69997#[cfg_attr(
69998 not(target_arch = "arm"),
69999 stable(feature = "neon_intrinsics", since = "1.59.0")
70000)]
70001#[cfg_attr(
70002 target_arch = "arm",
70003 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70004)]
70005pub fn vsubhn_high_s32(a: int16x4_t, b: int32x4_t, c: int32x4_t) -> int16x8_t {
70006 let d: int16x4_t = vsubhn_s32(b, c);
70007 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7]) }
70008}
70009#[doc = "Subtract returning high narrow"]
70010#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_s64)"]
70011#[inline(always)]
70012#[target_feature(enable = "neon")]
70013#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70014#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70015#[cfg_attr(
70016 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70017 assert_instr(subhn2)
70018)]
70019#[cfg_attr(
70020 not(target_arch = "arm"),
70021 stable(feature = "neon_intrinsics", since = "1.59.0")
70022)]
70023#[cfg_attr(
70024 target_arch = "arm",
70025 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70026)]
70027pub fn vsubhn_high_s64(a: int32x2_t, b: int64x2_t, c: int64x2_t) -> int32x4_t {
70028 let d: int32x2_t = vsubhn_s64(b, c);
70029 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3]) }
70030}
70031#[doc = "Subtract returning high narrow"]
70032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u16)"]
70033#[inline(always)]
70034#[target_feature(enable = "neon")]
70035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70036#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70037#[cfg_attr(
70038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70039 assert_instr(subhn2)
70040)]
70041#[cfg_attr(
70042 not(target_arch = "arm"),
70043 stable(feature = "neon_intrinsics", since = "1.59.0")
70044)]
70045#[cfg_attr(
70046 target_arch = "arm",
70047 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70048)]
70049pub fn vsubhn_high_u16(a: uint8x8_t, b: uint16x8_t, c: uint16x8_t) -> uint8x16_t {
70050 let d: uint8x8_t = vsubhn_u16(b, c);
70051 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) }
70052}
70053#[doc = "Subtract returning high narrow"]
70054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u32)"]
70055#[inline(always)]
70056#[target_feature(enable = "neon")]
70057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70059#[cfg_attr(
70060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70061 assert_instr(subhn2)
70062)]
70063#[cfg_attr(
70064 not(target_arch = "arm"),
70065 stable(feature = "neon_intrinsics", since = "1.59.0")
70066)]
70067#[cfg_attr(
70068 target_arch = "arm",
70069 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70070)]
70071pub fn vsubhn_high_u32(a: uint16x4_t, b: uint32x4_t, c: uint32x4_t) -> uint16x8_t {
70072 let d: uint16x4_t = vsubhn_u32(b, c);
70073 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3, 4, 5, 6, 7]) }
70074}
70075#[doc = "Subtract returning high narrow"]
70076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_high_u64)"]
70077#[inline(always)]
70078#[target_feature(enable = "neon")]
70079#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70080#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70081#[cfg_attr(
70082 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70083 assert_instr(subhn2)
70084)]
70085#[cfg_attr(
70086 not(target_arch = "arm"),
70087 stable(feature = "neon_intrinsics", since = "1.59.0")
70088)]
70089#[cfg_attr(
70090 target_arch = "arm",
70091 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70092)]
70093pub fn vsubhn_high_u64(a: uint32x2_t, b: uint64x2_t, c: uint64x2_t) -> uint32x4_t {
70094 let d: uint32x2_t = vsubhn_u64(b, c);
70095 unsafe { simd_shuffle!(a, d, [0, 1, 2, 3]) }
70096}
70097#[doc = "Subtract returning high narrow"]
70098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s16)"]
70099#[inline(always)]
70100#[target_feature(enable = "neon")]
70101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70103#[cfg_attr(
70104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70105 assert_instr(subhn)
70106)]
70107#[cfg_attr(
70108 not(target_arch = "arm"),
70109 stable(feature = "neon_intrinsics", since = "1.59.0")
70110)]
70111#[cfg_attr(
70112 target_arch = "arm",
70113 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70114)]
70115pub fn vsubhn_s16(a: int16x8_t, b: int16x8_t) -> int8x8_t {
70116 let c: i16x8 = i16x8::new(8, 8, 8, 8, 8, 8, 8, 8);
70117 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70118}
70119#[doc = "Subtract returning high narrow"]
70120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_s32)"]
70121#[inline(always)]
70122#[target_feature(enable = "neon")]
70123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70124#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70125#[cfg_attr(
70126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70127 assert_instr(subhn)
70128)]
70129#[cfg_attr(
70130 not(target_arch = "arm"),
70131 stable(feature = "neon_intrinsics", since = "1.59.0")
70132)]
70133#[cfg_attr(
70134 target_arch = "arm",
70135 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70136)]
70137pub fn vsubhn_s32(a: int32x4_t, b: int32x4_t) -> int16x4_t {
70138 let c: i32x4 = i32x4::new(16, 16, 16, 16);
70139 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70140}
70141#[doc = "Subtract returning high narrow"]
70142#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_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(vsubhn))]
70147#[cfg_attr(
70148 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70149 assert_instr(subhn)
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 vsubhn_s64(a: int64x2_t, b: int64x2_t) -> int32x2_t {
70160 let c: i64x2 = i64x2::new(32, 32);
70161 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70162}
70163#[doc = "Subtract returning high narrow"]
70164#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u16)"]
70165#[inline(always)]
70166#[target_feature(enable = "neon")]
70167#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70168#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70169#[cfg_attr(
70170 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70171 assert_instr(subhn)
70172)]
70173#[cfg_attr(
70174 not(target_arch = "arm"),
70175 stable(feature = "neon_intrinsics", since = "1.59.0")
70176)]
70177#[cfg_attr(
70178 target_arch = "arm",
70179 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70180)]
70181pub fn vsubhn_u16(a: uint16x8_t, b: uint16x8_t) -> uint8x8_t {
70182 let c: u16x8 = u16x8::new(8, 8, 8, 8, 8, 8, 8, 8);
70183 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70184}
70185#[doc = "Subtract returning high narrow"]
70186#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u32)"]
70187#[inline(always)]
70188#[target_feature(enable = "neon")]
70189#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70190#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70191#[cfg_attr(
70192 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70193 assert_instr(subhn)
70194)]
70195#[cfg_attr(
70196 not(target_arch = "arm"),
70197 stable(feature = "neon_intrinsics", since = "1.59.0")
70198)]
70199#[cfg_attr(
70200 target_arch = "arm",
70201 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70202)]
70203pub fn vsubhn_u32(a: uint32x4_t, b: uint32x4_t) -> uint16x4_t {
70204 let c: u32x4 = u32x4::new(16, 16, 16, 16);
70205 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70206}
70207#[doc = "Subtract returning high narrow"]
70208#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubhn_u64)"]
70209#[inline(always)]
70210#[target_feature(enable = "neon")]
70211#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70212#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubhn))]
70213#[cfg_attr(
70214 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70215 assert_instr(subhn)
70216)]
70217#[cfg_attr(
70218 not(target_arch = "arm"),
70219 stable(feature = "neon_intrinsics", since = "1.59.0")
70220)]
70221#[cfg_attr(
70222 target_arch = "arm",
70223 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70224)]
70225pub fn vsubhn_u64(a: uint64x2_t, b: uint64x2_t) -> uint32x2_t {
70226 let c: u64x2 = u64x2::new(32, 32);
70227 unsafe { simd_cast(simd_shr(simd_sub(a, b), transmute(c))) }
70228}
70229#[doc = "Signed Subtract Long"]
70230#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s8)"]
70231#[inline(always)]
70232#[target_feature(enable = "neon")]
70233#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70234#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70235#[cfg_attr(
70236 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70237 assert_instr(ssubl)
70238)]
70239#[cfg_attr(
70240 not(target_arch = "arm"),
70241 stable(feature = "neon_intrinsics", since = "1.59.0")
70242)]
70243#[cfg_attr(
70244 target_arch = "arm",
70245 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70246)]
70247pub fn vsubl_s8(a: int8x8_t, b: int8x8_t) -> int16x8_t {
70248 unsafe {
70249 let c: int16x8_t = simd_cast(a);
70250 let d: int16x8_t = simd_cast(b);
70251 simd_sub(c, d)
70252 }
70253}
70254#[doc = "Signed Subtract Long"]
70255#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s16)"]
70256#[inline(always)]
70257#[target_feature(enable = "neon")]
70258#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70259#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70260#[cfg_attr(
70261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70262 assert_instr(ssubl)
70263)]
70264#[cfg_attr(
70265 not(target_arch = "arm"),
70266 stable(feature = "neon_intrinsics", since = "1.59.0")
70267)]
70268#[cfg_attr(
70269 target_arch = "arm",
70270 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70271)]
70272pub fn vsubl_s16(a: int16x4_t, b: int16x4_t) -> int32x4_t {
70273 unsafe {
70274 let c: int32x4_t = simd_cast(a);
70275 let d: int32x4_t = simd_cast(b);
70276 simd_sub(c, d)
70277 }
70278}
70279#[doc = "Signed Subtract Long"]
70280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_s32)"]
70281#[inline(always)]
70282#[target_feature(enable = "neon")]
70283#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70284#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70285#[cfg_attr(
70286 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70287 assert_instr(ssubl)
70288)]
70289#[cfg_attr(
70290 not(target_arch = "arm"),
70291 stable(feature = "neon_intrinsics", since = "1.59.0")
70292)]
70293#[cfg_attr(
70294 target_arch = "arm",
70295 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70296)]
70297pub fn vsubl_s32(a: int32x2_t, b: int32x2_t) -> int64x2_t {
70298 unsafe {
70299 let c: int64x2_t = simd_cast(a);
70300 let d: int64x2_t = simd_cast(b);
70301 simd_sub(c, d)
70302 }
70303}
70304#[doc = "Unsigned Subtract Long"]
70305#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u8)"]
70306#[inline(always)]
70307#[target_feature(enable = "neon")]
70308#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70309#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70310#[cfg_attr(
70311 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70312 assert_instr(usubl)
70313)]
70314#[cfg_attr(
70315 not(target_arch = "arm"),
70316 stable(feature = "neon_intrinsics", since = "1.59.0")
70317)]
70318#[cfg_attr(
70319 target_arch = "arm",
70320 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70321)]
70322pub fn vsubl_u8(a: uint8x8_t, b: uint8x8_t) -> uint16x8_t {
70323 unsafe {
70324 let c: uint16x8_t = simd_cast(a);
70325 let d: uint16x8_t = simd_cast(b);
70326 simd_sub(c, d)
70327 }
70328}
70329#[doc = "Unsigned Subtract Long"]
70330#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u16)"]
70331#[inline(always)]
70332#[target_feature(enable = "neon")]
70333#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70334#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70335#[cfg_attr(
70336 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70337 assert_instr(usubl)
70338)]
70339#[cfg_attr(
70340 not(target_arch = "arm"),
70341 stable(feature = "neon_intrinsics", since = "1.59.0")
70342)]
70343#[cfg_attr(
70344 target_arch = "arm",
70345 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70346)]
70347pub fn vsubl_u16(a: uint16x4_t, b: uint16x4_t) -> uint32x4_t {
70348 unsafe {
70349 let c: uint32x4_t = simd_cast(a);
70350 let d: uint32x4_t = simd_cast(b);
70351 simd_sub(c, d)
70352 }
70353}
70354#[doc = "Unsigned Subtract Long"]
70355#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubl_u32)"]
70356#[inline(always)]
70357#[target_feature(enable = "neon")]
70358#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70359#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubl))]
70360#[cfg_attr(
70361 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70362 assert_instr(usubl)
70363)]
70364#[cfg_attr(
70365 not(target_arch = "arm"),
70366 stable(feature = "neon_intrinsics", since = "1.59.0")
70367)]
70368#[cfg_attr(
70369 target_arch = "arm",
70370 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70371)]
70372pub fn vsubl_u32(a: uint32x2_t, b: uint32x2_t) -> uint64x2_t {
70373 unsafe {
70374 let c: uint64x2_t = simd_cast(a);
70375 let d: uint64x2_t = simd_cast(b);
70376 simd_sub(c, d)
70377 }
70378}
70379#[doc = "Signed Subtract Wide"]
70380#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s8)"]
70381#[inline(always)]
70382#[target_feature(enable = "neon")]
70383#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70384#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70385#[cfg_attr(
70386 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70387 assert_instr(ssubw)
70388)]
70389#[cfg_attr(
70390 not(target_arch = "arm"),
70391 stable(feature = "neon_intrinsics", since = "1.59.0")
70392)]
70393#[cfg_attr(
70394 target_arch = "arm",
70395 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70396)]
70397pub fn vsubw_s8(a: int16x8_t, b: int8x8_t) -> int16x8_t {
70398 unsafe { simd_sub(a, simd_cast(b)) }
70399}
70400#[doc = "Signed Subtract Wide"]
70401#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s16)"]
70402#[inline(always)]
70403#[target_feature(enable = "neon")]
70404#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70405#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70406#[cfg_attr(
70407 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70408 assert_instr(ssubw)
70409)]
70410#[cfg_attr(
70411 not(target_arch = "arm"),
70412 stable(feature = "neon_intrinsics", since = "1.59.0")
70413)]
70414#[cfg_attr(
70415 target_arch = "arm",
70416 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70417)]
70418pub fn vsubw_s16(a: int32x4_t, b: int16x4_t) -> int32x4_t {
70419 unsafe { simd_sub(a, simd_cast(b)) }
70420}
70421#[doc = "Signed Subtract Wide"]
70422#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_s32)"]
70423#[inline(always)]
70424#[target_feature(enable = "neon")]
70425#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70426#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70427#[cfg_attr(
70428 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70429 assert_instr(ssubw)
70430)]
70431#[cfg_attr(
70432 not(target_arch = "arm"),
70433 stable(feature = "neon_intrinsics", since = "1.59.0")
70434)]
70435#[cfg_attr(
70436 target_arch = "arm",
70437 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70438)]
70439pub fn vsubw_s32(a: int64x2_t, b: int32x2_t) -> int64x2_t {
70440 unsafe { simd_sub(a, simd_cast(b)) }
70441}
70442#[doc = "Unsigned Subtract Wide"]
70443#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u8)"]
70444#[inline(always)]
70445#[target_feature(enable = "neon")]
70446#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70447#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70448#[cfg_attr(
70449 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70450 assert_instr(usubw)
70451)]
70452#[cfg_attr(
70453 not(target_arch = "arm"),
70454 stable(feature = "neon_intrinsics", since = "1.59.0")
70455)]
70456#[cfg_attr(
70457 target_arch = "arm",
70458 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70459)]
70460pub fn vsubw_u8(a: uint16x8_t, b: uint8x8_t) -> uint16x8_t {
70461 unsafe { simd_sub(a, simd_cast(b)) }
70462}
70463#[doc = "Unsigned Subtract Wide"]
70464#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u16)"]
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(vsubw))]
70469#[cfg_attr(
70470 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70471 assert_instr(usubw)
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 vsubw_u16(a: uint32x4_t, b: uint16x4_t) -> uint32x4_t {
70482 unsafe { simd_sub(a, simd_cast(b)) }
70483}
70484#[doc = "Unsigned Subtract Wide"]
70485#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsubw_u32)"]
70486#[inline(always)]
70487#[target_feature(enable = "neon")]
70488#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70489#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsubw))]
70490#[cfg_attr(
70491 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70492 assert_instr(usubw)
70493)]
70494#[cfg_attr(
70495 not(target_arch = "arm"),
70496 stable(feature = "neon_intrinsics", since = "1.59.0")
70497)]
70498#[cfg_attr(
70499 target_arch = "arm",
70500 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70501)]
70502pub fn vsubw_u32(a: uint64x2_t, b: uint32x2_t) -> uint64x2_t {
70503 unsafe { simd_sub(a, simd_cast(b)) }
70504}
70505#[doc = "Dot product index form with signed and unsigned integers"]
70506#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudot_lane_s32)"]
70507#[inline(always)]
70508#[cfg(target_endian = "little")]
70509#[target_feature(enable = "neon,i8mm")]
70510#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70511#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
70512#[cfg_attr(
70513 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70514 assert_instr(sudot, LANE = 0)
70515)]
70516#[rustc_legacy_const_generics(3)]
70517#[cfg_attr(
70518 not(target_arch = "arm"),
70519 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
70520)]
70521#[cfg_attr(
70522 target_arch = "arm",
70523 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70524)]
70525pub fn vsudot_lane_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: uint8x8_t) -> int32x2_t {
70526 static_assert_uimm_bits!(LANE, 1);
70527 unsafe {
70528 let c: uint32x2_t = transmute(c);
70529 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
70530 vusdot_s32(a, transmute(c), b)
70531 }
70532}
70533#[doc = "Dot product index form with signed and unsigned integers"]
70534#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudot_lane_s32)"]
70535#[inline(always)]
70536#[cfg(target_endian = "big")]
70537#[target_feature(enable = "neon,i8mm")]
70538#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70539#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
70540#[cfg_attr(
70541 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70542 assert_instr(sudot, LANE = 0)
70543)]
70544#[rustc_legacy_const_generics(3)]
70545#[cfg_attr(
70546 not(target_arch = "arm"),
70547 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
70548)]
70549#[cfg_attr(
70550 target_arch = "arm",
70551 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70552)]
70553pub fn vsudot_lane_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: uint8x8_t) -> int32x2_t {
70554 static_assert_uimm_bits!(LANE, 1);
70555 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
70556 let b: int8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
70557 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
70558 unsafe {
70559 let c: uint32x2_t = transmute(c);
70560 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
70561 let ret_val: int32x2_t = vusdot_s32(a, transmute(c), b);
70562 simd_shuffle!(ret_val, ret_val, [1, 0])
70563 }
70564}
70565#[doc = "Dot product index form with signed and unsigned integers"]
70566#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudotq_lane_s32)"]
70567#[inline(always)]
70568#[cfg(target_endian = "little")]
70569#[target_feature(enable = "neon,i8mm")]
70570#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70571#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
70572#[cfg_attr(
70573 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70574 assert_instr(sudot, LANE = 0)
70575)]
70576#[rustc_legacy_const_generics(3)]
70577#[cfg_attr(
70578 not(target_arch = "arm"),
70579 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
70580)]
70581#[cfg_attr(
70582 target_arch = "arm",
70583 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70584)]
70585pub fn vsudotq_lane_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: uint8x8_t) -> int32x4_t {
70586 static_assert_uimm_bits!(LANE, 1);
70587 unsafe {
70588 let c: uint32x2_t = transmute(c);
70589 let c: uint32x4_t =
70590 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
70591 vusdotq_s32(a, transmute(c), b)
70592 }
70593}
70594#[doc = "Dot product index form with signed and unsigned integers"]
70595#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudotq_lane_s32)"]
70596#[inline(always)]
70597#[cfg(target_endian = "big")]
70598#[target_feature(enable = "neon,i8mm")]
70599#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70600#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 0))]
70601#[cfg_attr(
70602 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70603 assert_instr(sudot, LANE = 0)
70604)]
70605#[rustc_legacy_const_generics(3)]
70606#[cfg_attr(
70607 not(target_arch = "arm"),
70608 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
70609)]
70610#[cfg_attr(
70611 target_arch = "arm",
70612 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
70613)]
70614pub fn vsudotq_lane_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: uint8x8_t) -> int32x4_t {
70615 static_assert_uimm_bits!(LANE, 1);
70616 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
70617 let b: int8x16_t =
70618 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
70619 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
70620 unsafe {
70621 let c: uint32x2_t = transmute(c);
70622 let c: uint32x4_t =
70623 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
70624 let ret_val: int32x4_t = vusdotq_s32(a, transmute(c), b);
70625 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
70626 }
70627}
70628#[doc = "Dot product index form with signed and unsigned integers"]
70629#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudot_laneq_s32)"]
70630#[inline(always)]
70631#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70632#[target_feature(enable = "neon,i8mm")]
70633#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 1))]
70634#[cfg_attr(
70635 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70636 assert_instr(sudot, LANE = 3)
70637)]
70638#[rustc_legacy_const_generics(3)]
70639#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
70640pub fn vsudot_laneq_s32<const LANE: i32>(a: int32x2_t, b: int8x8_t, c: uint8x16_t) -> int32x2_t {
70641 static_assert_uimm_bits!(LANE, 2);
70642 unsafe {
70643 let c: uint32x4_t = transmute(c);
70644 let c: uint32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
70645 vusdot_s32(a, transmute(c), b)
70646 }
70647}
70648#[doc = "Dot product index form with signed and unsigned integers"]
70649#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsudotq_laneq_s32)"]
70650#[inline(always)]
70651#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
70652#[target_feature(enable = "neon,i8mm")]
70653#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vsudot, LANE = 1))]
70654#[cfg_attr(
70655 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
70656 assert_instr(sudot, LANE = 3)
70657)]
70658#[rustc_legacy_const_generics(3)]
70659#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
70660pub fn vsudotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int8x16_t, c: uint8x16_t) -> int32x4_t {
70661 static_assert_uimm_bits!(LANE, 2);
70662 unsafe {
70663 let c: uint32x4_t = transmute(c);
70664 let c: uint32x4_t =
70665 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
70666 vusdotq_s32(a, transmute(c), b)
70667 }
70668}
70669#[doc = "Table look-up"]
70670#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1)"]
70671#[inline(always)]
70672#[target_feature(enable = "neon")]
70673#[cfg(target_arch = "arm")]
70674#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70675#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70676#[cfg_attr(test, assert_instr(vtbl))]
70677fn vtbl1(a: int8x8_t, b: int8x8_t) -> int8x8_t {
70678 unsafe extern "unadjusted" {
70679 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl1")]
70680 fn _vtbl1(a: int8x8_t, b: int8x8_t) -> int8x8_t;
70681 }
70682 unsafe { _vtbl1(a, b) }
70683}
70684#[doc = "Table look-up"]
70685#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_s8)"]
70686#[inline(always)]
70687#[target_feature(enable = "neon")]
70688#[cfg(target_arch = "arm")]
70689#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70690#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70691#[cfg_attr(test, assert_instr(vtbl))]
70692pub fn vtbl1_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
70693 vtbl1(a, b)
70694}
70695#[doc = "Table look-up"]
70696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_u8)"]
70697#[inline(always)]
70698#[cfg(target_endian = "little")]
70699#[target_feature(enable = "neon")]
70700#[cfg(target_arch = "arm")]
70701#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70702#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70703#[cfg_attr(test, assert_instr(vtbl))]
70704pub fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
70705 unsafe { transmute(vtbl1(transmute(a), transmute(b))) }
70706}
70707#[doc = "Table look-up"]
70708#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_u8)"]
70709#[inline(always)]
70710#[cfg(target_endian = "big")]
70711#[target_feature(enable = "neon")]
70712#[cfg(target_arch = "arm")]
70713#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70714#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70715#[cfg_attr(test, assert_instr(vtbl))]
70716pub fn vtbl1_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
70717 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
70718 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
70719 unsafe {
70720 let ret_val: uint8x8_t = transmute(vtbl1(transmute(a), transmute(b)));
70721 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
70722 }
70723}
70724#[doc = "Table look-up"]
70725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_p8)"]
70726#[inline(always)]
70727#[cfg(target_endian = "little")]
70728#[target_feature(enable = "neon")]
70729#[cfg(target_arch = "arm")]
70730#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70731#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70732#[cfg_attr(test, assert_instr(vtbl))]
70733pub fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
70734 unsafe { transmute(vtbl1(transmute(a), transmute(b))) }
70735}
70736#[doc = "Table look-up"]
70737#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl1_p8)"]
70738#[inline(always)]
70739#[cfg(target_endian = "big")]
70740#[target_feature(enable = "neon")]
70741#[cfg(target_arch = "arm")]
70742#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70743#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70744#[cfg_attr(test, assert_instr(vtbl))]
70745pub fn vtbl1_p8(a: poly8x8_t, b: uint8x8_t) -> poly8x8_t {
70746 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
70747 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
70748 unsafe {
70749 let ret_val: poly8x8_t = transmute(vtbl1(transmute(a), transmute(b)));
70750 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
70751 }
70752}
70753#[doc = "Table look-up"]
70754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2)"]
70755#[inline(always)]
70756#[target_feature(enable = "neon")]
70757#[cfg(target_arch = "arm")]
70758#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70759#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70760#[cfg_attr(test, assert_instr(vtbl))]
70761fn vtbl2(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
70762 unsafe extern "unadjusted" {
70763 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl2")]
70764 fn _vtbl2(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
70765 }
70766 unsafe { _vtbl2(a, b, c) }
70767}
70768#[doc = "Table look-up"]
70769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_s8)"]
70770#[inline(always)]
70771#[target_feature(enable = "neon")]
70772#[cfg(target_arch = "arm")]
70773#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70774#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70775#[cfg_attr(test, assert_instr(vtbl))]
70776pub fn vtbl2_s8(a: int8x8x2_t, b: int8x8_t) -> int8x8_t {
70777 vtbl2(a.0, a.1, b)
70778}
70779#[doc = "Table look-up"]
70780#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_u8)"]
70781#[inline(always)]
70782#[cfg(target_endian = "little")]
70783#[target_feature(enable = "neon")]
70784#[cfg(target_arch = "arm")]
70785#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70786#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70787#[cfg_attr(test, assert_instr(vtbl))]
70788pub fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
70789 unsafe { transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b))) }
70790}
70791#[doc = "Table look-up"]
70792#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_u8)"]
70793#[inline(always)]
70794#[cfg(target_endian = "big")]
70795#[target_feature(enable = "neon")]
70796#[cfg(target_arch = "arm")]
70797#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70798#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70799#[cfg_attr(test, assert_instr(vtbl))]
70800pub fn vtbl2_u8(a: uint8x8x2_t, b: uint8x8_t) -> uint8x8_t {
70801 let mut a: uint8x8x2_t = a;
70802 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
70803 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
70804 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
70805 unsafe {
70806 let ret_val: uint8x8_t = transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b)));
70807 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
70808 }
70809}
70810#[doc = "Table look-up"]
70811#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_p8)"]
70812#[inline(always)]
70813#[cfg(target_endian = "little")]
70814#[target_feature(enable = "neon")]
70815#[cfg(target_arch = "arm")]
70816#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70817#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70818#[cfg_attr(test, assert_instr(vtbl))]
70819pub fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
70820 unsafe { transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b))) }
70821}
70822#[doc = "Table look-up"]
70823#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl2_p8)"]
70824#[inline(always)]
70825#[cfg(target_endian = "big")]
70826#[target_feature(enable = "neon")]
70827#[cfg(target_arch = "arm")]
70828#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70829#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70830#[cfg_attr(test, assert_instr(vtbl))]
70831pub fn vtbl2_p8(a: poly8x8x2_t, b: uint8x8_t) -> poly8x8_t {
70832 let mut a: poly8x8x2_t = a;
70833 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
70834 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
70835 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
70836 unsafe {
70837 let ret_val: poly8x8_t = transmute(vtbl2(transmute(a.0), transmute(a.1), transmute(b)));
70838 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
70839 }
70840}
70841#[doc = "Table look-up"]
70842#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3)"]
70843#[inline(always)]
70844#[target_feature(enable = "neon")]
70845#[cfg(target_arch = "arm")]
70846#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70847#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70848#[cfg_attr(test, assert_instr(vtbl))]
70849fn vtbl3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t {
70850 unsafe extern "unadjusted" {
70851 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl3")]
70852 fn _vtbl3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t;
70853 }
70854 unsafe { _vtbl3(a, b, c, d) }
70855}
70856#[doc = "Table look-up"]
70857#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_s8)"]
70858#[inline(always)]
70859#[target_feature(enable = "neon")]
70860#[cfg(target_arch = "arm")]
70861#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70862#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70863#[cfg_attr(test, assert_instr(vtbl))]
70864pub fn vtbl3_s8(a: int8x8x3_t, b: int8x8_t) -> int8x8_t {
70865 vtbl3(a.0, a.1, a.2, b)
70866}
70867#[doc = "Table look-up"]
70868#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_u8)"]
70869#[inline(always)]
70870#[cfg(target_endian = "little")]
70871#[target_feature(enable = "neon")]
70872#[cfg(target_arch = "arm")]
70873#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70874#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70875#[cfg_attr(test, assert_instr(vtbl))]
70876pub fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
70877 unsafe {
70878 transmute(vtbl3(
70879 transmute(a.0),
70880 transmute(a.1),
70881 transmute(a.2),
70882 transmute(b),
70883 ))
70884 }
70885}
70886#[doc = "Table look-up"]
70887#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_u8)"]
70888#[inline(always)]
70889#[cfg(target_endian = "big")]
70890#[target_feature(enable = "neon")]
70891#[cfg(target_arch = "arm")]
70892#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70893#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70894#[cfg_attr(test, assert_instr(vtbl))]
70895pub fn vtbl3_u8(a: uint8x8x3_t, b: uint8x8_t) -> uint8x8_t {
70896 let mut a: uint8x8x3_t = a;
70897 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
70898 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
70899 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
70900 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
70901 unsafe {
70902 let ret_val: uint8x8_t = transmute(vtbl3(
70903 transmute(a.0),
70904 transmute(a.1),
70905 transmute(a.2),
70906 transmute(b),
70907 ));
70908 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
70909 }
70910}
70911#[doc = "Table look-up"]
70912#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_p8)"]
70913#[inline(always)]
70914#[cfg(target_endian = "little")]
70915#[target_feature(enable = "neon")]
70916#[cfg(target_arch = "arm")]
70917#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70918#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70919#[cfg_attr(test, assert_instr(vtbl))]
70920pub fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
70921 unsafe {
70922 transmute(vtbl3(
70923 transmute(a.0),
70924 transmute(a.1),
70925 transmute(a.2),
70926 transmute(b),
70927 ))
70928 }
70929}
70930#[doc = "Table look-up"]
70931#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl3_p8)"]
70932#[inline(always)]
70933#[cfg(target_endian = "big")]
70934#[target_feature(enable = "neon")]
70935#[cfg(target_arch = "arm")]
70936#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70937#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70938#[cfg_attr(test, assert_instr(vtbl))]
70939pub fn vtbl3_p8(a: poly8x8x3_t, b: uint8x8_t) -> poly8x8_t {
70940 let mut a: poly8x8x3_t = a;
70941 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
70942 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
70943 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
70944 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
70945 unsafe {
70946 let ret_val: poly8x8_t = transmute(vtbl3(
70947 transmute(a.0),
70948 transmute(a.1),
70949 transmute(a.2),
70950 transmute(b),
70951 ));
70952 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
70953 }
70954}
70955#[doc = "Table look-up"]
70956#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4)"]
70957#[inline(always)]
70958#[target_feature(enable = "neon")]
70959#[cfg(target_arch = "arm")]
70960#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70961#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70962#[cfg_attr(test, assert_instr(vtbl))]
70963fn vtbl4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t {
70964 unsafe extern "unadjusted" {
70965 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbl4")]
70966 fn _vtbl4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t;
70967 }
70968 unsafe { _vtbl4(a, b, c, d, e) }
70969}
70970#[doc = "Table look-up"]
70971#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_s8)"]
70972#[inline(always)]
70973#[target_feature(enable = "neon")]
70974#[cfg(target_arch = "arm")]
70975#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70976#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70977#[cfg_attr(test, assert_instr(vtbl))]
70978pub fn vtbl4_s8(a: int8x8x4_t, b: int8x8_t) -> int8x8_t {
70979 vtbl4(a.0, a.1, a.2, a.3, b)
70980}
70981#[doc = "Table look-up"]
70982#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_u8)"]
70983#[inline(always)]
70984#[cfg(target_endian = "little")]
70985#[target_feature(enable = "neon")]
70986#[cfg(target_arch = "arm")]
70987#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
70988#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
70989#[cfg_attr(test, assert_instr(vtbl))]
70990pub fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
70991 unsafe {
70992 transmute(vtbl4(
70993 transmute(a.0),
70994 transmute(a.1),
70995 transmute(a.2),
70996 transmute(a.3),
70997 transmute(b),
70998 ))
70999 }
71000}
71001#[doc = "Table look-up"]
71002#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_u8)"]
71003#[inline(always)]
71004#[cfg(target_endian = "big")]
71005#[target_feature(enable = "neon")]
71006#[cfg(target_arch = "arm")]
71007#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71008#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71009#[cfg_attr(test, assert_instr(vtbl))]
71010pub fn vtbl4_u8(a: uint8x8x4_t, b: uint8x8_t) -> uint8x8_t {
71011 let mut a: uint8x8x4_t = a;
71012 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71013 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71014 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71015 a.3 = unsafe { simd_shuffle!(a.3, a.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
71016 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71017 unsafe {
71018 let ret_val: uint8x8_t = transmute(vtbl4(
71019 transmute(a.0),
71020 transmute(a.1),
71021 transmute(a.2),
71022 transmute(a.3),
71023 transmute(b),
71024 ));
71025 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71026 }
71027}
71028#[doc = "Table look-up"]
71029#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_p8)"]
71030#[inline(always)]
71031#[cfg(target_endian = "little")]
71032#[target_feature(enable = "neon")]
71033#[cfg(target_arch = "arm")]
71034#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71035#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71036#[cfg_attr(test, assert_instr(vtbl))]
71037pub fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
71038 unsafe {
71039 transmute(vtbl4(
71040 transmute(a.0),
71041 transmute(a.1),
71042 transmute(a.2),
71043 transmute(a.3),
71044 transmute(b),
71045 ))
71046 }
71047}
71048#[doc = "Table look-up"]
71049#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbl4_p8)"]
71050#[inline(always)]
71051#[cfg(target_endian = "big")]
71052#[target_feature(enable = "neon")]
71053#[cfg(target_arch = "arm")]
71054#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71055#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71056#[cfg_attr(test, assert_instr(vtbl))]
71057pub fn vtbl4_p8(a: poly8x8x4_t, b: uint8x8_t) -> poly8x8_t {
71058 let mut a: poly8x8x4_t = a;
71059 a.0 = unsafe { simd_shuffle!(a.0, a.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71060 a.1 = unsafe { simd_shuffle!(a.1, a.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71061 a.2 = unsafe { simd_shuffle!(a.2, a.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71062 a.3 = unsafe { simd_shuffle!(a.3, a.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
71063 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71064 unsafe {
71065 let ret_val: poly8x8_t = transmute(vtbl4(
71066 transmute(a.0),
71067 transmute(a.1),
71068 transmute(a.2),
71069 transmute(a.3),
71070 transmute(b),
71071 ));
71072 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71073 }
71074}
71075#[doc = "Extended table look-up"]
71076#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1)"]
71077#[inline(always)]
71078#[target_feature(enable = "neon,v7")]
71079#[cfg(target_arch = "arm")]
71080#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71081#[cfg_attr(test, assert_instr(vtbx))]
71082fn vtbx1(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
71083 unsafe extern "unadjusted" {
71084 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx1")]
71085 fn _vtbx1(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t;
71086 }
71087 unsafe { _vtbx1(a, b, c) }
71088}
71089#[doc = "Extended table look-up"]
71090#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_s8)"]
71091#[inline(always)]
71092#[target_feature(enable = "neon,v7")]
71093#[cfg(target_arch = "arm")]
71094#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71095#[cfg_attr(test, assert_instr(vtbx))]
71096pub fn vtbx1_s8(a: int8x8_t, b: int8x8_t, c: int8x8_t) -> int8x8_t {
71097 vtbx1(a, b, c)
71098}
71099#[doc = "Extended table look-up"]
71100#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_u8)"]
71101#[inline(always)]
71102#[cfg(target_endian = "little")]
71103#[target_feature(enable = "neon,v7")]
71104#[cfg(target_arch = "arm")]
71105#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71106#[cfg_attr(test, assert_instr(vtbx))]
71107pub fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
71108 unsafe { transmute(vtbx1(transmute(a), transmute(b), transmute(c))) }
71109}
71110#[doc = "Extended table look-up"]
71111#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_u8)"]
71112#[inline(always)]
71113#[cfg(target_endian = "big")]
71114#[target_feature(enable = "neon,v7")]
71115#[cfg(target_arch = "arm")]
71116#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71117#[cfg_attr(test, assert_instr(vtbx))]
71118pub fn vtbx1_u8(a: uint8x8_t, b: uint8x8_t, c: uint8x8_t) -> uint8x8_t {
71119 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71120 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71121 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71122 unsafe {
71123 let ret_val: uint8x8_t = transmute(vtbx1(transmute(a), transmute(b), transmute(c)));
71124 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71125 }
71126}
71127#[doc = "Extended table look-up"]
71128#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_p8)"]
71129#[inline(always)]
71130#[cfg(target_endian = "little")]
71131#[target_feature(enable = "neon,v7")]
71132#[cfg(target_arch = "arm")]
71133#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71134#[cfg_attr(test, assert_instr(vtbx))]
71135pub fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
71136 unsafe { transmute(vtbx1(transmute(a), transmute(b), transmute(c))) }
71137}
71138#[doc = "Extended table look-up"]
71139#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx1_p8)"]
71140#[inline(always)]
71141#[cfg(target_endian = "big")]
71142#[target_feature(enable = "neon,v7")]
71143#[cfg(target_arch = "arm")]
71144#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71145#[cfg_attr(test, assert_instr(vtbx))]
71146pub fn vtbx1_p8(a: poly8x8_t, b: poly8x8_t, c: uint8x8_t) -> poly8x8_t {
71147 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71148 let b: poly8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
71149 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71150 unsafe {
71151 let ret_val: poly8x8_t = transmute(vtbx1(transmute(a), transmute(b), transmute(c)));
71152 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71153 }
71154}
71155#[doc = "Extended table look-up"]
71156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2)"]
71157#[inline(always)]
71158#[target_feature(enable = "neon,v7")]
71159#[cfg(target_arch = "arm")]
71160#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71161#[cfg_attr(test, assert_instr(vtbx))]
71162fn vtbx2(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t {
71163 unsafe extern "unadjusted" {
71164 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx2")]
71165 fn _vtbx2(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t) -> int8x8_t;
71166 }
71167 unsafe { _vtbx2(a, b, c, d) }
71168}
71169#[doc = "Extended table look-up"]
71170#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_s8)"]
71171#[inline(always)]
71172#[target_feature(enable = "neon,v7")]
71173#[cfg(target_arch = "arm")]
71174#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71175#[cfg_attr(test, assert_instr(vtbx))]
71176pub fn vtbx2_s8(a: int8x8_t, b: int8x8x2_t, c: int8x8_t) -> int8x8_t {
71177 vtbx2(a, b.0, b.1, c)
71178}
71179#[doc = "Extended table look-up"]
71180#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_u8)"]
71181#[inline(always)]
71182#[cfg(target_endian = "little")]
71183#[target_feature(enable = "neon,v7")]
71184#[cfg(target_arch = "arm")]
71185#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71186#[cfg_attr(test, assert_instr(vtbx))]
71187pub fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
71188 unsafe {
71189 transmute(vtbx2(
71190 transmute(a),
71191 transmute(b.0),
71192 transmute(b.1),
71193 transmute(c),
71194 ))
71195 }
71196}
71197#[doc = "Extended table look-up"]
71198#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_u8)"]
71199#[inline(always)]
71200#[cfg(target_endian = "big")]
71201#[target_feature(enable = "neon,v7")]
71202#[cfg(target_arch = "arm")]
71203#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71204#[cfg_attr(test, assert_instr(vtbx))]
71205pub fn vtbx2_u8(a: uint8x8_t, b: uint8x8x2_t, c: uint8x8_t) -> uint8x8_t {
71206 let mut b: uint8x8x2_t = b;
71207 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71208 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71209 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71210 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71211 unsafe {
71212 let ret_val: uint8x8_t = transmute(vtbx2(
71213 transmute(a),
71214 transmute(b.0),
71215 transmute(b.1),
71216 transmute(c),
71217 ));
71218 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71219 }
71220}
71221#[doc = "Extended table look-up"]
71222#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_p8)"]
71223#[inline(always)]
71224#[cfg(target_endian = "little")]
71225#[target_feature(enable = "neon,v7")]
71226#[cfg(target_arch = "arm")]
71227#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71228#[cfg_attr(test, assert_instr(vtbx))]
71229pub fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t {
71230 unsafe {
71231 transmute(vtbx2(
71232 transmute(a),
71233 transmute(b.0),
71234 transmute(b.1),
71235 transmute(c),
71236 ))
71237 }
71238}
71239#[doc = "Extended table look-up"]
71240#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx2_p8)"]
71241#[inline(always)]
71242#[cfg(target_endian = "big")]
71243#[target_feature(enable = "neon,v7")]
71244#[cfg(target_arch = "arm")]
71245#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71246#[cfg_attr(test, assert_instr(vtbx))]
71247pub fn vtbx2_p8(a: poly8x8_t, b: poly8x8x2_t, c: uint8x8_t) -> poly8x8_t {
71248 let mut b: poly8x8x2_t = b;
71249 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71250 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71251 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71252 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71253 unsafe {
71254 let ret_val: poly8x8_t = transmute(vtbx2(
71255 transmute(a),
71256 transmute(b.0),
71257 transmute(b.1),
71258 transmute(c),
71259 ));
71260 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71261 }
71262}
71263#[doc = "Extended table look-up"]
71264#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3)"]
71265#[inline(always)]
71266#[target_feature(enable = "neon,v7")]
71267#[cfg(target_arch = "arm")]
71268#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71269#[cfg_attr(test, assert_instr(vtbx))]
71270fn vtbx3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t {
71271 unsafe extern "unadjusted" {
71272 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx3")]
71273 fn _vtbx3(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t) -> int8x8_t;
71274 }
71275 unsafe { _vtbx3(a, b, c, d, e) }
71276}
71277#[doc = "Extended table look-up"]
71278#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_s8)"]
71279#[inline(always)]
71280#[target_feature(enable = "neon,v7")]
71281#[cfg(target_arch = "arm")]
71282#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71283#[cfg_attr(test, assert_instr(vtbx))]
71284pub fn vtbx3_s8(a: int8x8_t, b: int8x8x3_t, c: int8x8_t) -> int8x8_t {
71285 vtbx3(a, b.0, b.1, b.2, c)
71286}
71287#[doc = "Extended table look-up"]
71288#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_u8)"]
71289#[inline(always)]
71290#[cfg(target_endian = "little")]
71291#[target_feature(enable = "neon,v7")]
71292#[cfg(target_arch = "arm")]
71293#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71294#[cfg_attr(test, assert_instr(vtbx))]
71295pub fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t {
71296 unsafe {
71297 transmute(vtbx3(
71298 transmute(a),
71299 transmute(b.0),
71300 transmute(b.1),
71301 transmute(b.2),
71302 transmute(c),
71303 ))
71304 }
71305}
71306#[doc = "Extended table look-up"]
71307#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_u8)"]
71308#[inline(always)]
71309#[cfg(target_endian = "big")]
71310#[target_feature(enable = "neon,v7")]
71311#[cfg(target_arch = "arm")]
71312#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71313#[cfg_attr(test, assert_instr(vtbx))]
71314pub fn vtbx3_u8(a: uint8x8_t, b: uint8x8x3_t, c: uint8x8_t) -> uint8x8_t {
71315 let mut b: uint8x8x3_t = b;
71316 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71317 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71318 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71319 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71320 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71321 unsafe {
71322 let ret_val: uint8x8_t = transmute(vtbx3(
71323 transmute(a),
71324 transmute(b.0),
71325 transmute(b.1),
71326 transmute(b.2),
71327 transmute(c),
71328 ));
71329 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71330 }
71331}
71332#[doc = "Extended table look-up"]
71333#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_p8)"]
71334#[inline(always)]
71335#[cfg(target_endian = "little")]
71336#[target_feature(enable = "neon,v7")]
71337#[cfg(target_arch = "arm")]
71338#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71339#[cfg_attr(test, assert_instr(vtbx))]
71340pub fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
71341 unsafe {
71342 transmute(vtbx3(
71343 transmute(a),
71344 transmute(b.0),
71345 transmute(b.1),
71346 transmute(b.2),
71347 transmute(c),
71348 ))
71349 }
71350}
71351#[doc = "Extended table look-up"]
71352#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx3_p8)"]
71353#[inline(always)]
71354#[cfg(target_endian = "big")]
71355#[target_feature(enable = "neon,v7")]
71356#[cfg(target_arch = "arm")]
71357#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71358#[cfg_attr(test, assert_instr(vtbx))]
71359pub fn vtbx3_p8(a: poly8x8_t, b: poly8x8x3_t, c: uint8x8_t) -> poly8x8_t {
71360 let mut b: poly8x8x3_t = b;
71361 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71362 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71363 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71364 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71365 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71366 unsafe {
71367 let ret_val: poly8x8_t = transmute(vtbx3(
71368 transmute(a),
71369 transmute(b.0),
71370 transmute(b.1),
71371 transmute(b.2),
71372 transmute(c),
71373 ));
71374 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71375 }
71376}
71377#[doc = "Extended table look-up"]
71378#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4)"]
71379#[inline(always)]
71380#[target_feature(enable = "neon,v7")]
71381#[cfg(target_arch = "arm")]
71382#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71383#[cfg_attr(test, assert_instr(vtbx))]
71384fn vtbx4(a: int8x8_t, b: int8x8_t, c: int8x8_t, d: int8x8_t, e: int8x8_t, f: int8x8_t) -> int8x8_t {
71385 unsafe extern "unadjusted" {
71386 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vtbx4")]
71387 fn _vtbx4(
71388 a: int8x8_t,
71389 b: int8x8_t,
71390 c: int8x8_t,
71391 d: int8x8_t,
71392 e: int8x8_t,
71393 f: int8x8_t,
71394 ) -> int8x8_t;
71395 }
71396 unsafe { _vtbx4(a, b, c, d, e, f) }
71397}
71398#[doc = "Extended table look-up"]
71399#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_s8)"]
71400#[inline(always)]
71401#[cfg(target_endian = "little")]
71402#[target_feature(enable = "neon,v7")]
71403#[cfg(target_arch = "arm")]
71404#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71405#[cfg_attr(test, assert_instr(vtbx))]
71406pub fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
71407 unsafe {
71408 vtbx4(
71409 a,
71410 transmute(b.0),
71411 transmute(b.1),
71412 transmute(b.2),
71413 transmute(b.3),
71414 c,
71415 )
71416 }
71417}
71418#[doc = "Extended table look-up"]
71419#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_s8)"]
71420#[inline(always)]
71421#[cfg(target_endian = "big")]
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))]
71426pub fn vtbx4_s8(a: int8x8_t, b: int8x8x4_t, c: int8x8_t) -> int8x8_t {
71427 let mut b: int8x8x4_t = b;
71428 let a: int8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71429 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71430 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71431 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71432 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
71433 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71434 unsafe {
71435 let ret_val: int8x8_t = vtbx4(
71436 a,
71437 transmute(b.0),
71438 transmute(b.1),
71439 transmute(b.2),
71440 transmute(b.3),
71441 c,
71442 );
71443 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71444 }
71445}
71446#[doc = "Extended table look-up"]
71447#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_u8)"]
71448#[inline(always)]
71449#[cfg(target_endian = "little")]
71450#[target_feature(enable = "neon,v7")]
71451#[cfg(target_arch = "arm")]
71452#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71453#[cfg_attr(test, assert_instr(vtbx))]
71454pub fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
71455 unsafe {
71456 transmute(vtbx4(
71457 transmute(a),
71458 transmute(b.0),
71459 transmute(b.1),
71460 transmute(b.2),
71461 transmute(b.3),
71462 transmute(c),
71463 ))
71464 }
71465}
71466#[doc = "Extended table look-up"]
71467#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_u8)"]
71468#[inline(always)]
71469#[cfg(target_endian = "big")]
71470#[target_feature(enable = "neon,v7")]
71471#[cfg(target_arch = "arm")]
71472#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71473#[cfg_attr(test, assert_instr(vtbx))]
71474pub fn vtbx4_u8(a: uint8x8_t, b: uint8x8x4_t, c: uint8x8_t) -> uint8x8_t {
71475 let mut b: uint8x8x4_t = b;
71476 let a: uint8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71477 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71478 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71479 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71480 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
71481 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71482 unsafe {
71483 let ret_val: uint8x8_t = transmute(vtbx4(
71484 transmute(a),
71485 transmute(b.0),
71486 transmute(b.1),
71487 transmute(b.2),
71488 transmute(b.3),
71489 transmute(c),
71490 ));
71491 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71492 }
71493}
71494#[doc = "Extended table look-up"]
71495#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_p8)"]
71496#[inline(always)]
71497#[cfg(target_endian = "little")]
71498#[target_feature(enable = "neon,v7")]
71499#[cfg(target_arch = "arm")]
71500#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71501#[cfg_attr(test, assert_instr(vtbx))]
71502pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
71503 unsafe {
71504 transmute(vtbx4(
71505 transmute(a),
71506 transmute(b.0),
71507 transmute(b.1),
71508 transmute(b.2),
71509 transmute(b.3),
71510 transmute(c),
71511 ))
71512 }
71513}
71514#[doc = "Extended table look-up"]
71515#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtbx4_p8)"]
71516#[inline(always)]
71517#[cfg(target_endian = "big")]
71518#[target_feature(enable = "neon,v7")]
71519#[cfg(target_arch = "arm")]
71520#[unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")]
71521#[cfg_attr(test, assert_instr(vtbx))]
71522pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
71523 let mut b: poly8x8x4_t = b;
71524 let a: poly8x8_t = unsafe { simd_shuffle!(a, a, [7, 6, 5, 4, 3, 2, 1, 0]) };
71525 b.0 = unsafe { simd_shuffle!(b.0, b.0, [7, 6, 5, 4, 3, 2, 1, 0]) };
71526 b.1 = unsafe { simd_shuffle!(b.1, b.1, [7, 6, 5, 4, 3, 2, 1, 0]) };
71527 b.2 = unsafe { simd_shuffle!(b.2, b.2, [7, 6, 5, 4, 3, 2, 1, 0]) };
71528 b.3 = unsafe { simd_shuffle!(b.3, b.3, [7, 6, 5, 4, 3, 2, 1, 0]) };
71529 let c: uint8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
71530 unsafe {
71531 let ret_val: poly8x8_t = transmute(vtbx4(
71532 transmute(a),
71533 transmute(b.0),
71534 transmute(b.1),
71535 transmute(b.2),
71536 transmute(b.3),
71537 transmute(c),
71538 ));
71539 simd_shuffle!(ret_val, ret_val, [7, 6, 5, 4, 3, 2, 1, 0])
71540 }
71541}
71542#[doc = "Transpose elements"]
71543#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_f16)"]
71544#[inline(always)]
71545#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71546#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71547#[cfg_attr(
71548 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71549 assert_instr(trn1)
71550)]
71551#[cfg_attr(
71552 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71553 assert_instr(trn2)
71554)]
71555#[target_feature(enable = "neon,fp16")]
71556#[cfg_attr(
71557 not(target_arch = "arm"),
71558 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
71559)]
71560#[cfg_attr(
71561 target_arch = "arm",
71562 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71563)]
71564#[cfg(not(target_arch = "arm64ec"))]
71565pub fn vtrn_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
71566 unsafe {
71567 let a1: float16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
71568 let b1: float16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
71569 transmute((a1, b1))
71570 }
71571}
71572#[doc = "Transpose elements"]
71573#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_f16)"]
71574#[inline(always)]
71575#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71576#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71577#[cfg_attr(
71578 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71579 assert_instr(trn1)
71580)]
71581#[cfg_attr(
71582 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71583 assert_instr(trn2)
71584)]
71585#[target_feature(enable = "neon,fp16")]
71586#[cfg_attr(
71587 not(target_arch = "arm"),
71588 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
71589)]
71590#[cfg_attr(
71591 target_arch = "arm",
71592 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71593)]
71594#[cfg(not(target_arch = "arm64ec"))]
71595pub fn vtrnq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
71596 unsafe {
71597 let a1: float16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
71598 let b1: float16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
71599 transmute((a1, b1))
71600 }
71601}
71602#[doc = "Transpose elements"]
71603#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_f32)"]
71604#[inline(always)]
71605#[target_feature(enable = "neon")]
71606#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71607#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71608#[cfg_attr(
71609 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71610 assert_instr(zip1)
71611)]
71612#[cfg_attr(
71613 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71614 assert_instr(zip2)
71615)]
71616#[cfg_attr(
71617 not(target_arch = "arm"),
71618 stable(feature = "neon_intrinsics", since = "1.59.0")
71619)]
71620#[cfg_attr(
71621 target_arch = "arm",
71622 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71623)]
71624pub fn vtrn_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
71625 unsafe {
71626 let a1: float32x2_t = simd_shuffle!(a, b, [0, 2]);
71627 let b1: float32x2_t = simd_shuffle!(a, b, [1, 3]);
71628 transmute((a1, b1))
71629 }
71630}
71631#[doc = "Transpose elements"]
71632#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s32)"]
71633#[inline(always)]
71634#[target_feature(enable = "neon")]
71635#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71636#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71637#[cfg_attr(
71638 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71639 assert_instr(zip1)
71640)]
71641#[cfg_attr(
71642 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71643 assert_instr(zip2)
71644)]
71645#[cfg_attr(
71646 not(target_arch = "arm"),
71647 stable(feature = "neon_intrinsics", since = "1.59.0")
71648)]
71649#[cfg_attr(
71650 target_arch = "arm",
71651 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71652)]
71653pub fn vtrn_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
71654 unsafe {
71655 let a1: int32x2_t = simd_shuffle!(a, b, [0, 2]);
71656 let b1: int32x2_t = simd_shuffle!(a, b, [1, 3]);
71657 transmute((a1, b1))
71658 }
71659}
71660#[doc = "Transpose elements"]
71661#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u32)"]
71662#[inline(always)]
71663#[target_feature(enable = "neon")]
71664#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71665#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71666#[cfg_attr(
71667 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71668 assert_instr(zip1)
71669)]
71670#[cfg_attr(
71671 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71672 assert_instr(zip2)
71673)]
71674#[cfg_attr(
71675 not(target_arch = "arm"),
71676 stable(feature = "neon_intrinsics", since = "1.59.0")
71677)]
71678#[cfg_attr(
71679 target_arch = "arm",
71680 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71681)]
71682pub fn vtrn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
71683 unsafe {
71684 let a1: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
71685 let b1: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
71686 transmute((a1, b1))
71687 }
71688}
71689#[doc = "Transpose elements"]
71690#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_f32)"]
71691#[inline(always)]
71692#[target_feature(enable = "neon")]
71693#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71694#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71695#[cfg_attr(
71696 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71697 assert_instr(trn1)
71698)]
71699#[cfg_attr(
71700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71701 assert_instr(trn2)
71702)]
71703#[cfg_attr(
71704 not(target_arch = "arm"),
71705 stable(feature = "neon_intrinsics", since = "1.59.0")
71706)]
71707#[cfg_attr(
71708 target_arch = "arm",
71709 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71710)]
71711pub fn vtrnq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
71712 unsafe {
71713 let a1: float32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
71714 let b1: float32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
71715 transmute((a1, b1))
71716 }
71717}
71718#[doc = "Transpose elements"]
71719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s8)"]
71720#[inline(always)]
71721#[target_feature(enable = "neon")]
71722#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71723#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71724#[cfg_attr(
71725 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71726 assert_instr(trn1)
71727)]
71728#[cfg_attr(
71729 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71730 assert_instr(trn2)
71731)]
71732#[cfg_attr(
71733 not(target_arch = "arm"),
71734 stable(feature = "neon_intrinsics", since = "1.59.0")
71735)]
71736#[cfg_attr(
71737 target_arch = "arm",
71738 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71739)]
71740pub fn vtrn_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
71741 unsafe {
71742 let a1: int8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
71743 let b1: int8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
71744 transmute((a1, b1))
71745 }
71746}
71747#[doc = "Transpose elements"]
71748#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s8)"]
71749#[inline(always)]
71750#[target_feature(enable = "neon")]
71751#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71752#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71753#[cfg_attr(
71754 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71755 assert_instr(trn1)
71756)]
71757#[cfg_attr(
71758 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71759 assert_instr(trn2)
71760)]
71761#[cfg_attr(
71762 not(target_arch = "arm"),
71763 stable(feature = "neon_intrinsics", since = "1.59.0")
71764)]
71765#[cfg_attr(
71766 target_arch = "arm",
71767 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71768)]
71769pub fn vtrnq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
71770 unsafe {
71771 let a1: int8x16_t = simd_shuffle!(
71772 a,
71773 b,
71774 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
71775 );
71776 let b1: int8x16_t = simd_shuffle!(
71777 a,
71778 b,
71779 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
71780 );
71781 transmute((a1, b1))
71782 }
71783}
71784#[doc = "Transpose elements"]
71785#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_s16)"]
71786#[inline(always)]
71787#[target_feature(enable = "neon")]
71788#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71789#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71790#[cfg_attr(
71791 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71792 assert_instr(trn1)
71793)]
71794#[cfg_attr(
71795 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71796 assert_instr(trn2)
71797)]
71798#[cfg_attr(
71799 not(target_arch = "arm"),
71800 stable(feature = "neon_intrinsics", since = "1.59.0")
71801)]
71802#[cfg_attr(
71803 target_arch = "arm",
71804 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71805)]
71806pub fn vtrn_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
71807 unsafe {
71808 let a1: int16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
71809 let b1: int16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
71810 transmute((a1, b1))
71811 }
71812}
71813#[doc = "Transpose elements"]
71814#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s16)"]
71815#[inline(always)]
71816#[target_feature(enable = "neon")]
71817#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71818#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71819#[cfg_attr(
71820 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71821 assert_instr(trn1)
71822)]
71823#[cfg_attr(
71824 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71825 assert_instr(trn2)
71826)]
71827#[cfg_attr(
71828 not(target_arch = "arm"),
71829 stable(feature = "neon_intrinsics", since = "1.59.0")
71830)]
71831#[cfg_attr(
71832 target_arch = "arm",
71833 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71834)]
71835pub fn vtrnq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
71836 unsafe {
71837 let a1: int16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
71838 let b1: int16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
71839 transmute((a1, b1))
71840 }
71841}
71842#[doc = "Transpose elements"]
71843#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_s32)"]
71844#[inline(always)]
71845#[target_feature(enable = "neon")]
71846#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71847#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71848#[cfg_attr(
71849 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71850 assert_instr(trn1)
71851)]
71852#[cfg_attr(
71853 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71854 assert_instr(trn2)
71855)]
71856#[cfg_attr(
71857 not(target_arch = "arm"),
71858 stable(feature = "neon_intrinsics", since = "1.59.0")
71859)]
71860#[cfg_attr(
71861 target_arch = "arm",
71862 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71863)]
71864pub fn vtrnq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
71865 unsafe {
71866 let a1: int32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
71867 let b1: int32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
71868 transmute((a1, b1))
71869 }
71870}
71871#[doc = "Transpose elements"]
71872#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u8)"]
71873#[inline(always)]
71874#[target_feature(enable = "neon")]
71875#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71876#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71877#[cfg_attr(
71878 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71879 assert_instr(trn1)
71880)]
71881#[cfg_attr(
71882 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71883 assert_instr(trn2)
71884)]
71885#[cfg_attr(
71886 not(target_arch = "arm"),
71887 stable(feature = "neon_intrinsics", since = "1.59.0")
71888)]
71889#[cfg_attr(
71890 target_arch = "arm",
71891 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71892)]
71893pub fn vtrn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
71894 unsafe {
71895 let a1: uint8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
71896 let b1: uint8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
71897 transmute((a1, b1))
71898 }
71899}
71900#[doc = "Transpose elements"]
71901#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u8)"]
71902#[inline(always)]
71903#[target_feature(enable = "neon")]
71904#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71905#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71906#[cfg_attr(
71907 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71908 assert_instr(trn1)
71909)]
71910#[cfg_attr(
71911 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71912 assert_instr(trn2)
71913)]
71914#[cfg_attr(
71915 not(target_arch = "arm"),
71916 stable(feature = "neon_intrinsics", since = "1.59.0")
71917)]
71918#[cfg_attr(
71919 target_arch = "arm",
71920 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71921)]
71922pub fn vtrnq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
71923 unsafe {
71924 let a1: uint8x16_t = simd_shuffle!(
71925 a,
71926 b,
71927 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
71928 );
71929 let b1: uint8x16_t = simd_shuffle!(
71930 a,
71931 b,
71932 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
71933 );
71934 transmute((a1, b1))
71935 }
71936}
71937#[doc = "Transpose elements"]
71938#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_u16)"]
71939#[inline(always)]
71940#[target_feature(enable = "neon")]
71941#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71942#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71943#[cfg_attr(
71944 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71945 assert_instr(trn1)
71946)]
71947#[cfg_attr(
71948 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71949 assert_instr(trn2)
71950)]
71951#[cfg_attr(
71952 not(target_arch = "arm"),
71953 stable(feature = "neon_intrinsics", since = "1.59.0")
71954)]
71955#[cfg_attr(
71956 target_arch = "arm",
71957 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71958)]
71959pub fn vtrn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
71960 unsafe {
71961 let a1: uint16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
71962 let b1: uint16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
71963 transmute((a1, b1))
71964 }
71965}
71966#[doc = "Transpose elements"]
71967#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u16)"]
71968#[inline(always)]
71969#[target_feature(enable = "neon")]
71970#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
71971#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
71972#[cfg_attr(
71973 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71974 assert_instr(trn1)
71975)]
71976#[cfg_attr(
71977 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
71978 assert_instr(trn2)
71979)]
71980#[cfg_attr(
71981 not(target_arch = "arm"),
71982 stable(feature = "neon_intrinsics", since = "1.59.0")
71983)]
71984#[cfg_attr(
71985 target_arch = "arm",
71986 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
71987)]
71988pub fn vtrnq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
71989 unsafe {
71990 let a1: uint16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
71991 let b1: uint16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
71992 transmute((a1, b1))
71993 }
71994}
71995#[doc = "Transpose elements"]
71996#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_u32)"]
71997#[inline(always)]
71998#[target_feature(enable = "neon")]
71999#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72000#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72001#[cfg_attr(
72002 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72003 assert_instr(trn1)
72004)]
72005#[cfg_attr(
72006 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72007 assert_instr(trn2)
72008)]
72009#[cfg_attr(
72010 not(target_arch = "arm"),
72011 stable(feature = "neon_intrinsics", since = "1.59.0")
72012)]
72013#[cfg_attr(
72014 target_arch = "arm",
72015 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72016)]
72017pub fn vtrnq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
72018 unsafe {
72019 let a1: uint32x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
72020 let b1: uint32x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
72021 transmute((a1, b1))
72022 }
72023}
72024#[doc = "Transpose elements"]
72025#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_p8)"]
72026#[inline(always)]
72027#[target_feature(enable = "neon")]
72028#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72029#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72030#[cfg_attr(
72031 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72032 assert_instr(trn1)
72033)]
72034#[cfg_attr(
72035 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72036 assert_instr(trn2)
72037)]
72038#[cfg_attr(
72039 not(target_arch = "arm"),
72040 stable(feature = "neon_intrinsics", since = "1.59.0")
72041)]
72042#[cfg_attr(
72043 target_arch = "arm",
72044 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72045)]
72046pub fn vtrn_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
72047 unsafe {
72048 let a1: poly8x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
72049 let b1: poly8x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
72050 transmute((a1, b1))
72051 }
72052}
72053#[doc = "Transpose elements"]
72054#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_p8)"]
72055#[inline(always)]
72056#[target_feature(enable = "neon")]
72057#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72058#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72059#[cfg_attr(
72060 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72061 assert_instr(trn1)
72062)]
72063#[cfg_attr(
72064 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72065 assert_instr(trn2)
72066)]
72067#[cfg_attr(
72068 not(target_arch = "arm"),
72069 stable(feature = "neon_intrinsics", since = "1.59.0")
72070)]
72071#[cfg_attr(
72072 target_arch = "arm",
72073 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72074)]
72075pub fn vtrnq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
72076 unsafe {
72077 let a1: poly8x16_t = simd_shuffle!(
72078 a,
72079 b,
72080 [0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30]
72081 );
72082 let b1: poly8x16_t = simd_shuffle!(
72083 a,
72084 b,
72085 [1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31]
72086 );
72087 transmute((a1, b1))
72088 }
72089}
72090#[doc = "Transpose elements"]
72091#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrn_p16)"]
72092#[inline(always)]
72093#[target_feature(enable = "neon")]
72094#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72095#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72096#[cfg_attr(
72097 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72098 assert_instr(trn1)
72099)]
72100#[cfg_attr(
72101 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72102 assert_instr(trn2)
72103)]
72104#[cfg_attr(
72105 not(target_arch = "arm"),
72106 stable(feature = "neon_intrinsics", since = "1.59.0")
72107)]
72108#[cfg_attr(
72109 target_arch = "arm",
72110 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72111)]
72112pub fn vtrn_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
72113 unsafe {
72114 let a1: poly16x4_t = simd_shuffle!(a, b, [0, 4, 2, 6]);
72115 let b1: poly16x4_t = simd_shuffle!(a, b, [1, 5, 3, 7]);
72116 transmute((a1, b1))
72117 }
72118}
72119#[doc = "Transpose elements"]
72120#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtrnq_p16)"]
72121#[inline(always)]
72122#[target_feature(enable = "neon")]
72123#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72124#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72125#[cfg_attr(
72126 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72127 assert_instr(trn1)
72128)]
72129#[cfg_attr(
72130 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72131 assert_instr(trn2)
72132)]
72133#[cfg_attr(
72134 not(target_arch = "arm"),
72135 stable(feature = "neon_intrinsics", since = "1.59.0")
72136)]
72137#[cfg_attr(
72138 target_arch = "arm",
72139 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72140)]
72141pub fn vtrnq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
72142 unsafe {
72143 let a1: poly16x8_t = simd_shuffle!(a, b, [0, 8, 2, 10, 4, 12, 6, 14]);
72144 let b1: poly16x8_t = simd_shuffle!(a, b, [1, 9, 3, 11, 5, 13, 7, 15]);
72145 transmute((a1, b1))
72146 }
72147}
72148#[doc = "Signed compare bitwise Test bits nonzero"]
72149#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s8)"]
72150#[inline(always)]
72151#[target_feature(enable = "neon")]
72152#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72153#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72154#[cfg_attr(
72155 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72156 assert_instr(cmtst)
72157)]
72158#[cfg_attr(
72159 not(target_arch = "arm"),
72160 stable(feature = "neon_intrinsics", since = "1.59.0")
72161)]
72162#[cfg_attr(
72163 target_arch = "arm",
72164 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72165)]
72166pub fn vtst_s8(a: int8x8_t, b: int8x8_t) -> uint8x8_t {
72167 unsafe {
72168 let c: int8x8_t = simd_and(a, b);
72169 let d: i8x8 = i8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72170 simd_ne(c, transmute(d))
72171 }
72172}
72173#[doc = "Signed compare bitwise Test bits nonzero"]
72174#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s8)"]
72175#[inline(always)]
72176#[target_feature(enable = "neon")]
72177#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72178#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72179#[cfg_attr(
72180 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72181 assert_instr(cmtst)
72182)]
72183#[cfg_attr(
72184 not(target_arch = "arm"),
72185 stable(feature = "neon_intrinsics", since = "1.59.0")
72186)]
72187#[cfg_attr(
72188 target_arch = "arm",
72189 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72190)]
72191pub fn vtstq_s8(a: int8x16_t, b: int8x16_t) -> uint8x16_t {
72192 unsafe {
72193 let c: int8x16_t = simd_and(a, b);
72194 let d: i8x16 = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
72195 simd_ne(c, transmute(d))
72196 }
72197}
72198#[doc = "Signed compare bitwise Test bits nonzero"]
72199#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s16)"]
72200#[inline(always)]
72201#[target_feature(enable = "neon")]
72202#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72203#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72204#[cfg_attr(
72205 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72206 assert_instr(cmtst)
72207)]
72208#[cfg_attr(
72209 not(target_arch = "arm"),
72210 stable(feature = "neon_intrinsics", since = "1.59.0")
72211)]
72212#[cfg_attr(
72213 target_arch = "arm",
72214 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72215)]
72216pub fn vtst_s16(a: int16x4_t, b: int16x4_t) -> uint16x4_t {
72217 unsafe {
72218 let c: int16x4_t = simd_and(a, b);
72219 let d: i16x4 = i16x4::new(0, 0, 0, 0);
72220 simd_ne(c, transmute(d))
72221 }
72222}
72223#[doc = "Signed compare bitwise Test bits nonzero"]
72224#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s16)"]
72225#[inline(always)]
72226#[target_feature(enable = "neon")]
72227#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72228#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72229#[cfg_attr(
72230 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72231 assert_instr(cmtst)
72232)]
72233#[cfg_attr(
72234 not(target_arch = "arm"),
72235 stable(feature = "neon_intrinsics", since = "1.59.0")
72236)]
72237#[cfg_attr(
72238 target_arch = "arm",
72239 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72240)]
72241pub fn vtstq_s16(a: int16x8_t, b: int16x8_t) -> uint16x8_t {
72242 unsafe {
72243 let c: int16x8_t = simd_and(a, b);
72244 let d: i16x8 = i16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72245 simd_ne(c, transmute(d))
72246 }
72247}
72248#[doc = "Signed compare bitwise Test bits nonzero"]
72249#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_s32)"]
72250#[inline(always)]
72251#[target_feature(enable = "neon")]
72252#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72253#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72254#[cfg_attr(
72255 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72256 assert_instr(cmtst)
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 vtst_s32(a: int32x2_t, b: int32x2_t) -> uint32x2_t {
72267 unsafe {
72268 let c: int32x2_t = simd_and(a, b);
72269 let d: i32x2 = i32x2::new(0, 0);
72270 simd_ne(c, transmute(d))
72271 }
72272}
72273#[doc = "Signed compare bitwise Test bits nonzero"]
72274#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_s32)"]
72275#[inline(always)]
72276#[target_feature(enable = "neon")]
72277#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72278#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72279#[cfg_attr(
72280 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72281 assert_instr(cmtst)
72282)]
72283#[cfg_attr(
72284 not(target_arch = "arm"),
72285 stable(feature = "neon_intrinsics", since = "1.59.0")
72286)]
72287#[cfg_attr(
72288 target_arch = "arm",
72289 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72290)]
72291pub fn vtstq_s32(a: int32x4_t, b: int32x4_t) -> uint32x4_t {
72292 unsafe {
72293 let c: int32x4_t = simd_and(a, b);
72294 let d: i32x4 = i32x4::new(0, 0, 0, 0);
72295 simd_ne(c, transmute(d))
72296 }
72297}
72298#[doc = "Signed compare bitwise Test bits nonzero"]
72299#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_p8)"]
72300#[inline(always)]
72301#[target_feature(enable = "neon")]
72302#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72303#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72304#[cfg_attr(
72305 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72306 assert_instr(cmtst)
72307)]
72308#[cfg_attr(
72309 not(target_arch = "arm"),
72310 stable(feature = "neon_intrinsics", since = "1.59.0")
72311)]
72312#[cfg_attr(
72313 target_arch = "arm",
72314 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72315)]
72316pub fn vtst_p8(a: poly8x8_t, b: poly8x8_t) -> uint8x8_t {
72317 unsafe {
72318 let c: poly8x8_t = simd_and(a, b);
72319 let d: i8x8 = i8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72320 simd_ne(c, transmute(d))
72321 }
72322}
72323#[doc = "Signed compare bitwise Test bits nonzero"]
72324#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_p8)"]
72325#[inline(always)]
72326#[target_feature(enable = "neon")]
72327#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72328#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72329#[cfg_attr(
72330 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72331 assert_instr(cmtst)
72332)]
72333#[cfg_attr(
72334 not(target_arch = "arm"),
72335 stable(feature = "neon_intrinsics", since = "1.59.0")
72336)]
72337#[cfg_attr(
72338 target_arch = "arm",
72339 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72340)]
72341pub fn vtstq_p8(a: poly8x16_t, b: poly8x16_t) -> uint8x16_t {
72342 unsafe {
72343 let c: poly8x16_t = simd_and(a, b);
72344 let d: i8x16 = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
72345 simd_ne(c, transmute(d))
72346 }
72347}
72348#[doc = "Signed compare bitwise Test bits nonzero"]
72349#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_p16)"]
72350#[inline(always)]
72351#[target_feature(enable = "neon")]
72352#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72353#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72354#[cfg_attr(
72355 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72356 assert_instr(cmtst)
72357)]
72358#[cfg_attr(
72359 not(target_arch = "arm"),
72360 stable(feature = "neon_intrinsics", since = "1.59.0")
72361)]
72362#[cfg_attr(
72363 target_arch = "arm",
72364 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72365)]
72366pub fn vtst_p16(a: poly16x4_t, b: poly16x4_t) -> uint16x4_t {
72367 unsafe {
72368 let c: poly16x4_t = simd_and(a, b);
72369 let d: i16x4 = i16x4::new(0, 0, 0, 0);
72370 simd_ne(c, transmute(d))
72371 }
72372}
72373#[doc = "Signed compare bitwise Test bits nonzero"]
72374#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_p16)"]
72375#[inline(always)]
72376#[target_feature(enable = "neon")]
72377#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72378#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72379#[cfg_attr(
72380 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72381 assert_instr(cmtst)
72382)]
72383#[cfg_attr(
72384 not(target_arch = "arm"),
72385 stable(feature = "neon_intrinsics", since = "1.59.0")
72386)]
72387#[cfg_attr(
72388 target_arch = "arm",
72389 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72390)]
72391pub fn vtstq_p16(a: poly16x8_t, b: poly16x8_t) -> uint16x8_t {
72392 unsafe {
72393 let c: poly16x8_t = simd_and(a, b);
72394 let d: i16x8 = i16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72395 simd_ne(c, transmute(d))
72396 }
72397}
72398#[doc = "Unsigned compare bitwise Test bits nonzero"]
72399#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u8)"]
72400#[inline(always)]
72401#[target_feature(enable = "neon")]
72402#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72403#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72404#[cfg_attr(
72405 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72406 assert_instr(cmtst)
72407)]
72408#[cfg_attr(
72409 not(target_arch = "arm"),
72410 stable(feature = "neon_intrinsics", since = "1.59.0")
72411)]
72412#[cfg_attr(
72413 target_arch = "arm",
72414 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72415)]
72416pub fn vtst_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
72417 unsafe {
72418 let c: uint8x8_t = simd_and(a, b);
72419 let d: u8x8 = u8x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72420 simd_ne(c, transmute(d))
72421 }
72422}
72423#[doc = "Unsigned compare bitwise Test bits nonzero"]
72424#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u8)"]
72425#[inline(always)]
72426#[target_feature(enable = "neon")]
72427#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72428#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72429#[cfg_attr(
72430 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72431 assert_instr(cmtst)
72432)]
72433#[cfg_attr(
72434 not(target_arch = "arm"),
72435 stable(feature = "neon_intrinsics", since = "1.59.0")
72436)]
72437#[cfg_attr(
72438 target_arch = "arm",
72439 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72440)]
72441pub fn vtstq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
72442 unsafe {
72443 let c: uint8x16_t = simd_and(a, b);
72444 let d: u8x16 = u8x16::new(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
72445 simd_ne(c, transmute(d))
72446 }
72447}
72448#[doc = "Unsigned compare bitwise Test bits nonzero"]
72449#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u16)"]
72450#[inline(always)]
72451#[target_feature(enable = "neon")]
72452#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72453#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72454#[cfg_attr(
72455 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72456 assert_instr(cmtst)
72457)]
72458#[cfg_attr(
72459 not(target_arch = "arm"),
72460 stable(feature = "neon_intrinsics", since = "1.59.0")
72461)]
72462#[cfg_attr(
72463 target_arch = "arm",
72464 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72465)]
72466pub fn vtst_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
72467 unsafe {
72468 let c: uint16x4_t = simd_and(a, b);
72469 let d: u16x4 = u16x4::new(0, 0, 0, 0);
72470 simd_ne(c, transmute(d))
72471 }
72472}
72473#[doc = "Unsigned compare bitwise Test bits nonzero"]
72474#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u16)"]
72475#[inline(always)]
72476#[target_feature(enable = "neon")]
72477#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72478#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72479#[cfg_attr(
72480 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72481 assert_instr(cmtst)
72482)]
72483#[cfg_attr(
72484 not(target_arch = "arm"),
72485 stable(feature = "neon_intrinsics", since = "1.59.0")
72486)]
72487#[cfg_attr(
72488 target_arch = "arm",
72489 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72490)]
72491pub fn vtstq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
72492 unsafe {
72493 let c: uint16x8_t = simd_and(a, b);
72494 let d: u16x8 = u16x8::new(0, 0, 0, 0, 0, 0, 0, 0);
72495 simd_ne(c, transmute(d))
72496 }
72497}
72498#[doc = "Unsigned compare bitwise Test bits nonzero"]
72499#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtst_u32)"]
72500#[inline(always)]
72501#[target_feature(enable = "neon")]
72502#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72503#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72504#[cfg_attr(
72505 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72506 assert_instr(cmtst)
72507)]
72508#[cfg_attr(
72509 not(target_arch = "arm"),
72510 stable(feature = "neon_intrinsics", since = "1.59.0")
72511)]
72512#[cfg_attr(
72513 target_arch = "arm",
72514 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72515)]
72516pub fn vtst_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
72517 unsafe {
72518 let c: uint32x2_t = simd_and(a, b);
72519 let d: u32x2 = u32x2::new(0, 0);
72520 simd_ne(c, transmute(d))
72521 }
72522}
72523#[doc = "Unsigned compare bitwise Test bits nonzero"]
72524#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vtstq_u32)"]
72525#[inline(always)]
72526#[target_feature(enable = "neon")]
72527#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72528#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtst))]
72529#[cfg_attr(
72530 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72531 assert_instr(cmtst)
72532)]
72533#[cfg_attr(
72534 not(target_arch = "arm"),
72535 stable(feature = "neon_intrinsics", since = "1.59.0")
72536)]
72537#[cfg_attr(
72538 target_arch = "arm",
72539 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72540)]
72541pub fn vtstq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
72542 unsafe {
72543 let c: uint32x4_t = simd_and(a, b);
72544 let d: u32x4 = u32x4::new(0, 0, 0, 0);
72545 simd_ne(c, transmute(d))
72546 }
72547}
72548#[doc = "Dot product index form with unsigned and signed integers"]
72549#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_lane_s32)"]
72550#[inline(always)]
72551#[cfg(target_endian = "little")]
72552#[target_feature(enable = "neon,i8mm")]
72553#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72554#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
72555#[cfg_attr(
72556 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72557 assert_instr(usdot, LANE = 0)
72558)]
72559#[rustc_legacy_const_generics(3)]
72560#[cfg_attr(
72561 not(target_arch = "arm"),
72562 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72563)]
72564#[cfg_attr(
72565 target_arch = "arm",
72566 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72567)]
72568pub fn vusdot_lane_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
72569 static_assert_uimm_bits!(LANE, 1);
72570 unsafe {
72571 let c: int32x2_t = transmute(c);
72572 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
72573 vusdot_s32(a, b, transmute(c))
72574 }
72575}
72576#[doc = "Dot product index form with unsigned and signed integers"]
72577#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_lane_s32)"]
72578#[inline(always)]
72579#[cfg(target_endian = "big")]
72580#[target_feature(enable = "neon,i8mm")]
72581#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72582#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
72583#[cfg_attr(
72584 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72585 assert_instr(usdot, LANE = 0)
72586)]
72587#[rustc_legacy_const_generics(3)]
72588#[cfg_attr(
72589 not(target_arch = "arm"),
72590 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72591)]
72592#[cfg_attr(
72593 target_arch = "arm",
72594 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72595)]
72596pub fn vusdot_lane_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
72597 static_assert_uimm_bits!(LANE, 1);
72598 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
72599 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
72600 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
72601 unsafe {
72602 let c: int32x2_t = transmute(c);
72603 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
72604 let ret_val: int32x2_t = vusdot_s32(a, b, transmute(c));
72605 simd_shuffle!(ret_val, ret_val, [1, 0])
72606 }
72607}
72608#[doc = "Dot product index form with unsigned and signed integers"]
72609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_lane_s32)"]
72610#[inline(always)]
72611#[cfg(target_endian = "little")]
72612#[target_feature(enable = "neon,i8mm")]
72613#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72614#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
72615#[cfg_attr(
72616 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72617 assert_instr(usdot, LANE = 0)
72618)]
72619#[rustc_legacy_const_generics(3)]
72620#[cfg_attr(
72621 not(target_arch = "arm"),
72622 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72623)]
72624#[cfg_attr(
72625 target_arch = "arm",
72626 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72627)]
72628pub fn vusdotq_lane_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x8_t) -> int32x4_t {
72629 static_assert_uimm_bits!(LANE, 1);
72630 unsafe {
72631 let c: int32x2_t = transmute(c);
72632 let c: int32x4_t =
72633 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
72634 vusdotq_s32(a, b, transmute(c))
72635 }
72636}
72637#[doc = "Dot product index form with unsigned and signed integers"]
72638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_lane_s32)"]
72639#[inline(always)]
72640#[cfg(target_endian = "big")]
72641#[target_feature(enable = "neon,i8mm")]
72642#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72643#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 0))]
72644#[cfg_attr(
72645 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72646 assert_instr(usdot, LANE = 0)
72647)]
72648#[rustc_legacy_const_generics(3)]
72649#[cfg_attr(
72650 not(target_arch = "arm"),
72651 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72652)]
72653#[cfg_attr(
72654 target_arch = "arm",
72655 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72656)]
72657pub fn vusdotq_lane_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x8_t) -> int32x4_t {
72658 static_assert_uimm_bits!(LANE, 1);
72659 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
72660 let b: uint8x16_t =
72661 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
72662 let c: int8x8_t = unsafe { simd_shuffle!(c, c, [7, 6, 5, 4, 3, 2, 1, 0]) };
72663 unsafe {
72664 let c: int32x2_t = transmute(c);
72665 let c: int32x4_t =
72666 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
72667 let ret_val: int32x4_t = vusdotq_s32(a, b, transmute(c));
72668 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
72669 }
72670}
72671#[doc = "Dot product index form with unsigned and signed integers"]
72672#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_laneq_s32)"]
72673#[inline(always)]
72674#[cfg(target_endian = "little")]
72675#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72676#[target_feature(enable = "neon,i8mm")]
72677#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 3))]
72678#[cfg_attr(
72679 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72680 assert_instr(usdot, LANE = 3)
72681)]
72682#[rustc_legacy_const_generics(3)]
72683#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
72684pub fn vusdot_laneq_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x16_t) -> int32x2_t {
72685 static_assert_uimm_bits!(LANE, 2);
72686 unsafe {
72687 let c: int32x4_t = transmute(c);
72688 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
72689 vusdot_s32(a, b, transmute(c))
72690 }
72691}
72692#[doc = "Dot product index form with unsigned and signed integers"]
72693#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_laneq_s32)"]
72694#[inline(always)]
72695#[cfg(target_endian = "big")]
72696#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72697#[target_feature(enable = "neon,i8mm")]
72698#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 3))]
72699#[cfg_attr(
72700 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72701 assert_instr(usdot, LANE = 3)
72702)]
72703#[rustc_legacy_const_generics(3)]
72704#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
72705pub fn vusdot_laneq_s32<const LANE: i32>(a: int32x2_t, b: uint8x8_t, c: int8x16_t) -> int32x2_t {
72706 static_assert_uimm_bits!(LANE, 2);
72707 let a: int32x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
72708 let b: uint8x8_t = unsafe { simd_shuffle!(b, b, [7, 6, 5, 4, 3, 2, 1, 0]) };
72709 let c: int8x16_t =
72710 unsafe { simd_shuffle!(c, c, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
72711 unsafe {
72712 let c: int32x4_t = transmute(c);
72713 let c: int32x2_t = simd_shuffle!(c, c, [LANE as u32, LANE as u32]);
72714 let ret_val: int32x2_t = vusdot_s32(a, b, transmute(c));
72715 simd_shuffle!(ret_val, ret_val, [1, 0])
72716 }
72717}
72718#[doc = "Dot product index form with unsigned and signed integers"]
72719#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_laneq_s32)"]
72720#[inline(always)]
72721#[cfg(target_endian = "little")]
72722#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72723#[target_feature(enable = "neon,i8mm")]
72724#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 3))]
72725#[cfg_attr(
72726 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72727 assert_instr(usdot, LANE = 3)
72728)]
72729#[rustc_legacy_const_generics(3)]
72730#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
72731pub fn vusdotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
72732 static_assert_uimm_bits!(LANE, 2);
72733 unsafe {
72734 let c: int32x4_t = transmute(c);
72735 let c: int32x4_t =
72736 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
72737 vusdotq_s32(a, b, transmute(c))
72738 }
72739}
72740#[doc = "Dot product index form with unsigned and signed integers"]
72741#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_laneq_s32)"]
72742#[inline(always)]
72743#[cfg(target_endian = "big")]
72744#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72745#[target_feature(enable = "neon,i8mm")]
72746#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot, LANE = 3))]
72747#[cfg_attr(
72748 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72749 assert_instr(usdot, LANE = 3)
72750)]
72751#[rustc_legacy_const_generics(3)]
72752#[unstable(feature = "stdarch_neon_i8mm", issue = "117223")]
72753pub fn vusdotq_laneq_s32<const LANE: i32>(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
72754 static_assert_uimm_bits!(LANE, 2);
72755 let a: int32x4_t = unsafe { simd_shuffle!(a, a, [3, 2, 1, 0]) };
72756 let b: uint8x16_t =
72757 unsafe { simd_shuffle!(b, b, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
72758 let c: int8x16_t =
72759 unsafe { simd_shuffle!(c, c, [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) };
72760 unsafe {
72761 let c: int32x4_t = transmute(c);
72762 let c: int32x4_t =
72763 simd_shuffle!(c, c, [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
72764 let ret_val: int32x4_t = vusdotq_s32(a, b, transmute(c));
72765 simd_shuffle!(ret_val, ret_val, [3, 2, 1, 0])
72766 }
72767}
72768#[doc = "Dot product vector form with unsigned and signed integers"]
72769#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdot_s32)"]
72770#[inline(always)]
72771#[target_feature(enable = "neon,i8mm")]
72772#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72773#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot))]
72774#[cfg_attr(
72775 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72776 assert_instr(usdot)
72777)]
72778#[cfg_attr(
72779 not(target_arch = "arm"),
72780 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72781)]
72782#[cfg_attr(
72783 target_arch = "arm",
72784 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72785)]
72786pub fn vusdot_s32(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t {
72787 unsafe extern "unadjusted" {
72788 #[cfg_attr(
72789 any(target_arch = "aarch64", target_arch = "arm64ec"),
72790 link_name = "llvm.aarch64.neon.usdot.v2i32.v8i8"
72791 )]
72792 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usdot.v2i32.v8i8")]
72793 fn _vusdot_s32(a: int32x2_t, b: uint8x8_t, c: int8x8_t) -> int32x2_t;
72794 }
72795 unsafe { _vusdot_s32(a, b, c) }
72796}
72797#[doc = "Dot product vector form with unsigned and signed integers"]
72798#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusdotq_s32)"]
72799#[inline(always)]
72800#[target_feature(enable = "neon,i8mm")]
72801#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72802#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vusdot))]
72803#[cfg_attr(
72804 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72805 assert_instr(usdot)
72806)]
72807#[cfg_attr(
72808 not(target_arch = "arm"),
72809 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72810)]
72811#[cfg_attr(
72812 target_arch = "arm",
72813 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72814)]
72815pub fn vusdotq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
72816 unsafe extern "unadjusted" {
72817 #[cfg_attr(
72818 any(target_arch = "aarch64", target_arch = "arm64ec"),
72819 link_name = "llvm.aarch64.neon.usdot.v4i32.v16i8"
72820 )]
72821 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usdot.v4i32.v16i8")]
72822 fn _vusdotq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t;
72823 }
72824 unsafe { _vusdotq_s32(a, b, c) }
72825}
72826#[doc = "Unsigned and signed 8-bit integer matrix multiply-accumulate"]
72827#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vusmmlaq_s32)"]
72828#[inline(always)]
72829#[target_feature(enable = "neon,i8mm")]
72830#[cfg_attr(target_arch = "arm", target_feature(enable = "v8"))]
72831#[cfg_attr(all(test, target_arch = "arm"), assert_instr(nop))]
72832#[cfg_attr(
72833 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72834 assert_instr(usmmla)
72835)]
72836#[cfg_attr(
72837 not(target_arch = "arm"),
72838 unstable(feature = "stdarch_neon_i8mm", issue = "117223")
72839)]
72840#[cfg_attr(
72841 target_arch = "arm",
72842 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72843)]
72844pub fn vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
72845 unsafe extern "unadjusted" {
72846 #[cfg_attr(
72847 any(target_arch = "aarch64", target_arch = "arm64ec"),
72848 link_name = "llvm.aarch64.neon.usmmla.v4i32.v16i8"
72849 )]
72850 #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.usmmla.v4i32.v16i8")]
72851 fn _vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t;
72852 }
72853 unsafe { _vusmmlaq_s32(a, b, c) }
72854}
72855#[doc = "Unzip vectors"]
72856#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_f16)"]
72857#[inline(always)]
72858#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72859#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
72860#[cfg_attr(
72861 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72862 assert_instr(uzp1)
72863)]
72864#[cfg_attr(
72865 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72866 assert_instr(uzp2)
72867)]
72868#[target_feature(enable = "neon,fp16")]
72869#[cfg_attr(
72870 not(target_arch = "arm"),
72871 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
72872)]
72873#[cfg_attr(
72874 target_arch = "arm",
72875 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72876)]
72877#[cfg(not(target_arch = "arm64ec"))]
72878pub fn vuzp_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
72879 unsafe {
72880 let a0: float16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
72881 let b0: float16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
72882 transmute((a0, b0))
72883 }
72884}
72885#[doc = "Unzip vectors"]
72886#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_f16)"]
72887#[inline(always)]
72888#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72889#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
72890#[cfg_attr(
72891 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72892 assert_instr(uzp1)
72893)]
72894#[cfg_attr(
72895 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72896 assert_instr(uzp2)
72897)]
72898#[target_feature(enable = "neon,fp16")]
72899#[cfg_attr(
72900 not(target_arch = "arm"),
72901 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
72902)]
72903#[cfg_attr(
72904 target_arch = "arm",
72905 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72906)]
72907#[cfg(not(target_arch = "arm64ec"))]
72908pub fn vuzpq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
72909 unsafe {
72910 let a0: float16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
72911 let b0: float16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
72912 transmute((a0, b0))
72913 }
72914}
72915#[doc = "Unzip vectors"]
72916#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_f32)"]
72917#[inline(always)]
72918#[target_feature(enable = "neon")]
72919#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72920#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72921#[cfg_attr(
72922 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72923 assert_instr(zip1)
72924)]
72925#[cfg_attr(
72926 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72927 assert_instr(zip2)
72928)]
72929#[cfg_attr(
72930 not(target_arch = "arm"),
72931 stable(feature = "neon_intrinsics", since = "1.59.0")
72932)]
72933#[cfg_attr(
72934 target_arch = "arm",
72935 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72936)]
72937pub fn vuzp_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
72938 unsafe {
72939 let a0: float32x2_t = simd_shuffle!(a, b, [0, 2]);
72940 let b0: float32x2_t = simd_shuffle!(a, b, [1, 3]);
72941 transmute((a0, b0))
72942 }
72943}
72944#[doc = "Unzip vectors"]
72945#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s32)"]
72946#[inline(always)]
72947#[target_feature(enable = "neon")]
72948#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72949#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72950#[cfg_attr(
72951 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72952 assert_instr(zip1)
72953)]
72954#[cfg_attr(
72955 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72956 assert_instr(zip2)
72957)]
72958#[cfg_attr(
72959 not(target_arch = "arm"),
72960 stable(feature = "neon_intrinsics", since = "1.59.0")
72961)]
72962#[cfg_attr(
72963 target_arch = "arm",
72964 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72965)]
72966pub fn vuzp_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
72967 unsafe {
72968 let a0: int32x2_t = simd_shuffle!(a, b, [0, 2]);
72969 let b0: int32x2_t = simd_shuffle!(a, b, [1, 3]);
72970 transmute((a0, b0))
72971 }
72972}
72973#[doc = "Unzip vectors"]
72974#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u32)"]
72975#[inline(always)]
72976#[target_feature(enable = "neon")]
72977#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
72978#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
72979#[cfg_attr(
72980 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72981 assert_instr(zip1)
72982)]
72983#[cfg_attr(
72984 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
72985 assert_instr(zip2)
72986)]
72987#[cfg_attr(
72988 not(target_arch = "arm"),
72989 stable(feature = "neon_intrinsics", since = "1.59.0")
72990)]
72991#[cfg_attr(
72992 target_arch = "arm",
72993 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
72994)]
72995pub fn vuzp_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
72996 unsafe {
72997 let a0: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
72998 let b0: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
72999 transmute((a0, b0))
73000 }
73001}
73002#[doc = "Unzip vectors"]
73003#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_f32)"]
73004#[inline(always)]
73005#[target_feature(enable = "neon")]
73006#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73007#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73008#[cfg_attr(
73009 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73010 assert_instr(uzp1)
73011)]
73012#[cfg_attr(
73013 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73014 assert_instr(uzp2)
73015)]
73016#[cfg_attr(
73017 not(target_arch = "arm"),
73018 stable(feature = "neon_intrinsics", since = "1.59.0")
73019)]
73020#[cfg_attr(
73021 target_arch = "arm",
73022 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73023)]
73024pub fn vuzpq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
73025 unsafe {
73026 let a0: float32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73027 let b0: float32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73028 transmute((a0, b0))
73029 }
73030}
73031#[doc = "Unzip vectors"]
73032#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s8)"]
73033#[inline(always)]
73034#[target_feature(enable = "neon")]
73035#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73036#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73037#[cfg_attr(
73038 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73039 assert_instr(uzp1)
73040)]
73041#[cfg_attr(
73042 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73043 assert_instr(uzp2)
73044)]
73045#[cfg_attr(
73046 not(target_arch = "arm"),
73047 stable(feature = "neon_intrinsics", since = "1.59.0")
73048)]
73049#[cfg_attr(
73050 target_arch = "arm",
73051 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73052)]
73053pub fn vuzp_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
73054 unsafe {
73055 let a0: int8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73056 let b0: int8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73057 transmute((a0, b0))
73058 }
73059}
73060#[doc = "Unzip vectors"]
73061#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s8)"]
73062#[inline(always)]
73063#[target_feature(enable = "neon")]
73064#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73065#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73066#[cfg_attr(
73067 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73068 assert_instr(uzp1)
73069)]
73070#[cfg_attr(
73071 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73072 assert_instr(uzp2)
73073)]
73074#[cfg_attr(
73075 not(target_arch = "arm"),
73076 stable(feature = "neon_intrinsics", since = "1.59.0")
73077)]
73078#[cfg_attr(
73079 target_arch = "arm",
73080 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73081)]
73082pub fn vuzpq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
73083 unsafe {
73084 let a0: int8x16_t = simd_shuffle!(
73085 a,
73086 b,
73087 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
73088 );
73089 let b0: int8x16_t = simd_shuffle!(
73090 a,
73091 b,
73092 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
73093 );
73094 transmute((a0, b0))
73095 }
73096}
73097#[doc = "Unzip vectors"]
73098#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_s16)"]
73099#[inline(always)]
73100#[target_feature(enable = "neon")]
73101#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73102#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73103#[cfg_attr(
73104 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73105 assert_instr(uzp1)
73106)]
73107#[cfg_attr(
73108 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73109 assert_instr(uzp2)
73110)]
73111#[cfg_attr(
73112 not(target_arch = "arm"),
73113 stable(feature = "neon_intrinsics", since = "1.59.0")
73114)]
73115#[cfg_attr(
73116 target_arch = "arm",
73117 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73118)]
73119pub fn vuzp_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
73120 unsafe {
73121 let a0: int16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73122 let b0: int16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73123 transmute((a0, b0))
73124 }
73125}
73126#[doc = "Unzip vectors"]
73127#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s16)"]
73128#[inline(always)]
73129#[target_feature(enable = "neon")]
73130#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73131#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73132#[cfg_attr(
73133 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73134 assert_instr(uzp1)
73135)]
73136#[cfg_attr(
73137 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73138 assert_instr(uzp2)
73139)]
73140#[cfg_attr(
73141 not(target_arch = "arm"),
73142 stable(feature = "neon_intrinsics", since = "1.59.0")
73143)]
73144#[cfg_attr(
73145 target_arch = "arm",
73146 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73147)]
73148pub fn vuzpq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
73149 unsafe {
73150 let a0: int16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73151 let b0: int16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73152 transmute((a0, b0))
73153 }
73154}
73155#[doc = "Unzip vectors"]
73156#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_s32)"]
73157#[inline(always)]
73158#[target_feature(enable = "neon")]
73159#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73160#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73161#[cfg_attr(
73162 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73163 assert_instr(uzp1)
73164)]
73165#[cfg_attr(
73166 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73167 assert_instr(uzp2)
73168)]
73169#[cfg_attr(
73170 not(target_arch = "arm"),
73171 stable(feature = "neon_intrinsics", since = "1.59.0")
73172)]
73173#[cfg_attr(
73174 target_arch = "arm",
73175 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73176)]
73177pub fn vuzpq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
73178 unsafe {
73179 let a0: int32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73180 let b0: int32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73181 transmute((a0, b0))
73182 }
73183}
73184#[doc = "Unzip vectors"]
73185#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u8)"]
73186#[inline(always)]
73187#[target_feature(enable = "neon")]
73188#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73189#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73190#[cfg_attr(
73191 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73192 assert_instr(uzp1)
73193)]
73194#[cfg_attr(
73195 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73196 assert_instr(uzp2)
73197)]
73198#[cfg_attr(
73199 not(target_arch = "arm"),
73200 stable(feature = "neon_intrinsics", since = "1.59.0")
73201)]
73202#[cfg_attr(
73203 target_arch = "arm",
73204 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73205)]
73206pub fn vuzp_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
73207 unsafe {
73208 let a0: uint8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73209 let b0: uint8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73210 transmute((a0, b0))
73211 }
73212}
73213#[doc = "Unzip vectors"]
73214#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u8)"]
73215#[inline(always)]
73216#[target_feature(enable = "neon")]
73217#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73218#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73219#[cfg_attr(
73220 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73221 assert_instr(uzp1)
73222)]
73223#[cfg_attr(
73224 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73225 assert_instr(uzp2)
73226)]
73227#[cfg_attr(
73228 not(target_arch = "arm"),
73229 stable(feature = "neon_intrinsics", since = "1.59.0")
73230)]
73231#[cfg_attr(
73232 target_arch = "arm",
73233 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73234)]
73235pub fn vuzpq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
73236 unsafe {
73237 let a0: uint8x16_t = simd_shuffle!(
73238 a,
73239 b,
73240 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
73241 );
73242 let b0: uint8x16_t = simd_shuffle!(
73243 a,
73244 b,
73245 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
73246 );
73247 transmute((a0, b0))
73248 }
73249}
73250#[doc = "Unzip vectors"]
73251#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_u16)"]
73252#[inline(always)]
73253#[target_feature(enable = "neon")]
73254#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73255#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73256#[cfg_attr(
73257 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73258 assert_instr(uzp1)
73259)]
73260#[cfg_attr(
73261 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73262 assert_instr(uzp2)
73263)]
73264#[cfg_attr(
73265 not(target_arch = "arm"),
73266 stable(feature = "neon_intrinsics", since = "1.59.0")
73267)]
73268#[cfg_attr(
73269 target_arch = "arm",
73270 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73271)]
73272pub fn vuzp_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
73273 unsafe {
73274 let a0: uint16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73275 let b0: uint16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73276 transmute((a0, b0))
73277 }
73278}
73279#[doc = "Unzip vectors"]
73280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u16)"]
73281#[inline(always)]
73282#[target_feature(enable = "neon")]
73283#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73284#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73285#[cfg_attr(
73286 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73287 assert_instr(uzp1)
73288)]
73289#[cfg_attr(
73290 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73291 assert_instr(uzp2)
73292)]
73293#[cfg_attr(
73294 not(target_arch = "arm"),
73295 stable(feature = "neon_intrinsics", since = "1.59.0")
73296)]
73297#[cfg_attr(
73298 target_arch = "arm",
73299 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73300)]
73301pub fn vuzpq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
73302 unsafe {
73303 let a0: uint16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73304 let b0: uint16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73305 transmute((a0, b0))
73306 }
73307}
73308#[doc = "Unzip vectors"]
73309#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_u32)"]
73310#[inline(always)]
73311#[target_feature(enable = "neon")]
73312#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73313#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73314#[cfg_attr(
73315 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73316 assert_instr(uzp1)
73317)]
73318#[cfg_attr(
73319 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73320 assert_instr(uzp2)
73321)]
73322#[cfg_attr(
73323 not(target_arch = "arm"),
73324 stable(feature = "neon_intrinsics", since = "1.59.0")
73325)]
73326#[cfg_attr(
73327 target_arch = "arm",
73328 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73329)]
73330pub fn vuzpq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
73331 unsafe {
73332 let a0: uint32x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73333 let b0: uint32x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73334 transmute((a0, b0))
73335 }
73336}
73337#[doc = "Unzip vectors"]
73338#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_p8)"]
73339#[inline(always)]
73340#[target_feature(enable = "neon")]
73341#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73342#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73343#[cfg_attr(
73344 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73345 assert_instr(uzp1)
73346)]
73347#[cfg_attr(
73348 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73349 assert_instr(uzp2)
73350)]
73351#[cfg_attr(
73352 not(target_arch = "arm"),
73353 stable(feature = "neon_intrinsics", since = "1.59.0")
73354)]
73355#[cfg_attr(
73356 target_arch = "arm",
73357 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73358)]
73359pub fn vuzp_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
73360 unsafe {
73361 let a0: poly8x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73362 let b0: poly8x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73363 transmute((a0, b0))
73364 }
73365}
73366#[doc = "Unzip vectors"]
73367#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_p8)"]
73368#[inline(always)]
73369#[target_feature(enable = "neon")]
73370#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73371#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73372#[cfg_attr(
73373 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73374 assert_instr(uzp1)
73375)]
73376#[cfg_attr(
73377 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73378 assert_instr(uzp2)
73379)]
73380#[cfg_attr(
73381 not(target_arch = "arm"),
73382 stable(feature = "neon_intrinsics", since = "1.59.0")
73383)]
73384#[cfg_attr(
73385 target_arch = "arm",
73386 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73387)]
73388pub fn vuzpq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
73389 unsafe {
73390 let a0: poly8x16_t = simd_shuffle!(
73391 a,
73392 b,
73393 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
73394 );
73395 let b0: poly8x16_t = simd_shuffle!(
73396 a,
73397 b,
73398 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31]
73399 );
73400 transmute((a0, b0))
73401 }
73402}
73403#[doc = "Unzip vectors"]
73404#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzp_p16)"]
73405#[inline(always)]
73406#[target_feature(enable = "neon")]
73407#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73408#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73409#[cfg_attr(
73410 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73411 assert_instr(uzp1)
73412)]
73413#[cfg_attr(
73414 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73415 assert_instr(uzp2)
73416)]
73417#[cfg_attr(
73418 not(target_arch = "arm"),
73419 stable(feature = "neon_intrinsics", since = "1.59.0")
73420)]
73421#[cfg_attr(
73422 target_arch = "arm",
73423 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73424)]
73425pub fn vuzp_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
73426 unsafe {
73427 let a0: poly16x4_t = simd_shuffle!(a, b, [0, 2, 4, 6]);
73428 let b0: poly16x4_t = simd_shuffle!(a, b, [1, 3, 5, 7]);
73429 transmute((a0, b0))
73430 }
73431}
73432#[doc = "Unzip vectors"]
73433#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vuzpq_p16)"]
73434#[inline(always)]
73435#[target_feature(enable = "neon")]
73436#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73437#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
73438#[cfg_attr(
73439 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73440 assert_instr(uzp1)
73441)]
73442#[cfg_attr(
73443 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73444 assert_instr(uzp2)
73445)]
73446#[cfg_attr(
73447 not(target_arch = "arm"),
73448 stable(feature = "neon_intrinsics", since = "1.59.0")
73449)]
73450#[cfg_attr(
73451 target_arch = "arm",
73452 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73453)]
73454pub fn vuzpq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
73455 unsafe {
73456 let a0: poly16x8_t = simd_shuffle!(a, b, [0, 2, 4, 6, 8, 10, 12, 14]);
73457 let b0: poly16x8_t = simd_shuffle!(a, b, [1, 3, 5, 7, 9, 11, 13, 15]);
73458 transmute((a0, b0))
73459 }
73460}
73461#[doc = "Zip vectors"]
73462#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_f16)"]
73463#[inline(always)]
73464#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73465#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
73466#[cfg_attr(
73467 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73468 assert_instr(zip1)
73469)]
73470#[cfg_attr(
73471 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73472 assert_instr(zip2)
73473)]
73474#[target_feature(enable = "neon,fp16")]
73475#[cfg_attr(
73476 not(target_arch = "arm"),
73477 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
73478)]
73479#[cfg_attr(
73480 target_arch = "arm",
73481 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73482)]
73483#[cfg(not(target_arch = "arm64ec"))]
73484pub fn vzip_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
73485 unsafe {
73486 let a0: float16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
73487 let b0: float16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
73488 transmute((a0, b0))
73489 }
73490}
73491#[doc = "Zip vectors"]
73492#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_f16)"]
73493#[inline(always)]
73494#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73495#[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
73496#[cfg_attr(
73497 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73498 assert_instr(zip1)
73499)]
73500#[cfg_attr(
73501 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73502 assert_instr(zip2)
73503)]
73504#[target_feature(enable = "neon,fp16")]
73505#[cfg_attr(
73506 not(target_arch = "arm"),
73507 stable(feature = "stdarch_neon_fp16", since = "1.94.0")
73508)]
73509#[cfg_attr(
73510 target_arch = "arm",
73511 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73512)]
73513#[cfg(not(target_arch = "arm64ec"))]
73514pub fn vzipq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
73515 unsafe {
73516 let a0: float16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
73517 let b0: float16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
73518 transmute((a0, b0))
73519 }
73520}
73521#[doc = "Zip vectors"]
73522#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_f32)"]
73523#[inline(always)]
73524#[target_feature(enable = "neon")]
73525#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73526#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73527#[cfg_attr(
73528 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73529 assert_instr(zip1)
73530)]
73531#[cfg_attr(
73532 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73533 assert_instr(zip2)
73534)]
73535#[cfg_attr(
73536 not(target_arch = "arm"),
73537 stable(feature = "neon_intrinsics", since = "1.59.0")
73538)]
73539#[cfg_attr(
73540 target_arch = "arm",
73541 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73542)]
73543pub fn vzip_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
73544 unsafe {
73545 let a0: float32x2_t = simd_shuffle!(a, b, [0, 2]);
73546 let b0: float32x2_t = simd_shuffle!(a, b, [1, 3]);
73547 transmute((a0, b0))
73548 }
73549}
73550#[doc = "Zip vectors"]
73551#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s32)"]
73552#[inline(always)]
73553#[target_feature(enable = "neon")]
73554#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73555#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73556#[cfg_attr(
73557 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73558 assert_instr(zip1)
73559)]
73560#[cfg_attr(
73561 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73562 assert_instr(zip2)
73563)]
73564#[cfg_attr(
73565 not(target_arch = "arm"),
73566 stable(feature = "neon_intrinsics", since = "1.59.0")
73567)]
73568#[cfg_attr(
73569 target_arch = "arm",
73570 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73571)]
73572pub fn vzip_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
73573 unsafe {
73574 let a0: int32x2_t = simd_shuffle!(a, b, [0, 2]);
73575 let b0: int32x2_t = simd_shuffle!(a, b, [1, 3]);
73576 transmute((a0, b0))
73577 }
73578}
73579#[doc = "Zip vectors"]
73580#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u32)"]
73581#[inline(always)]
73582#[target_feature(enable = "neon")]
73583#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73584#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
73585#[cfg_attr(
73586 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73587 assert_instr(zip1)
73588)]
73589#[cfg_attr(
73590 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73591 assert_instr(zip2)
73592)]
73593#[cfg_attr(
73594 not(target_arch = "arm"),
73595 stable(feature = "neon_intrinsics", since = "1.59.0")
73596)]
73597#[cfg_attr(
73598 target_arch = "arm",
73599 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73600)]
73601pub fn vzip_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
73602 unsafe {
73603 let a0: uint32x2_t = simd_shuffle!(a, b, [0, 2]);
73604 let b0: uint32x2_t = simd_shuffle!(a, b, [1, 3]);
73605 transmute((a0, b0))
73606 }
73607}
73608#[doc = "Zip vectors"]
73609#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s8)"]
73610#[inline(always)]
73611#[target_feature(enable = "neon")]
73612#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73613#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
73614#[cfg_attr(
73615 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73616 assert_instr(zip1)
73617)]
73618#[cfg_attr(
73619 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73620 assert_instr(zip2)
73621)]
73622#[cfg_attr(
73623 not(target_arch = "arm"),
73624 stable(feature = "neon_intrinsics", since = "1.59.0")
73625)]
73626#[cfg_attr(
73627 target_arch = "arm",
73628 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73629)]
73630pub fn vzip_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
73631 unsafe {
73632 let a0: int8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
73633 let b0: int8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
73634 transmute((a0, b0))
73635 }
73636}
73637#[doc = "Zip vectors"]
73638#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_s16)"]
73639#[inline(always)]
73640#[target_feature(enable = "neon")]
73641#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73642#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
73643#[cfg_attr(
73644 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73645 assert_instr(zip1)
73646)]
73647#[cfg_attr(
73648 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73649 assert_instr(zip2)
73650)]
73651#[cfg_attr(
73652 not(target_arch = "arm"),
73653 stable(feature = "neon_intrinsics", since = "1.59.0")
73654)]
73655#[cfg_attr(
73656 target_arch = "arm",
73657 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73658)]
73659pub fn vzip_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
73660 unsafe {
73661 let a0: int16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
73662 let b0: int16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
73663 transmute((a0, b0))
73664 }
73665}
73666#[doc = "Zip vectors"]
73667#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u8)"]
73668#[inline(always)]
73669#[target_feature(enable = "neon")]
73670#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73671#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
73672#[cfg_attr(
73673 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73674 assert_instr(zip1)
73675)]
73676#[cfg_attr(
73677 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73678 assert_instr(zip2)
73679)]
73680#[cfg_attr(
73681 not(target_arch = "arm"),
73682 stable(feature = "neon_intrinsics", since = "1.59.0")
73683)]
73684#[cfg_attr(
73685 target_arch = "arm",
73686 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73687)]
73688pub fn vzip_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
73689 unsafe {
73690 let a0: uint8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
73691 let b0: uint8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
73692 transmute((a0, b0))
73693 }
73694}
73695#[doc = "Zip vectors"]
73696#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_u16)"]
73697#[inline(always)]
73698#[target_feature(enable = "neon")]
73699#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73700#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
73701#[cfg_attr(
73702 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73703 assert_instr(zip1)
73704)]
73705#[cfg_attr(
73706 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73707 assert_instr(zip2)
73708)]
73709#[cfg_attr(
73710 not(target_arch = "arm"),
73711 stable(feature = "neon_intrinsics", since = "1.59.0")
73712)]
73713#[cfg_attr(
73714 target_arch = "arm",
73715 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73716)]
73717pub fn vzip_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
73718 unsafe {
73719 let a0: uint16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
73720 let b0: uint16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
73721 transmute((a0, b0))
73722 }
73723}
73724#[doc = "Zip vectors"]
73725#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_p8)"]
73726#[inline(always)]
73727#[target_feature(enable = "neon")]
73728#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73729#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
73730#[cfg_attr(
73731 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73732 assert_instr(zip1)
73733)]
73734#[cfg_attr(
73735 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73736 assert_instr(zip2)
73737)]
73738#[cfg_attr(
73739 not(target_arch = "arm"),
73740 stable(feature = "neon_intrinsics", since = "1.59.0")
73741)]
73742#[cfg_attr(
73743 target_arch = "arm",
73744 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73745)]
73746pub fn vzip_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
73747 unsafe {
73748 let a0: poly8x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
73749 let b0: poly8x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
73750 transmute((a0, b0))
73751 }
73752}
73753#[doc = "Zip vectors"]
73754#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzip_p16)"]
73755#[inline(always)]
73756#[target_feature(enable = "neon")]
73757#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73758#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
73759#[cfg_attr(
73760 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73761 assert_instr(zip1)
73762)]
73763#[cfg_attr(
73764 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73765 assert_instr(zip2)
73766)]
73767#[cfg_attr(
73768 not(target_arch = "arm"),
73769 stable(feature = "neon_intrinsics", since = "1.59.0")
73770)]
73771#[cfg_attr(
73772 target_arch = "arm",
73773 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73774)]
73775pub fn vzip_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
73776 unsafe {
73777 let a0: poly16x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
73778 let b0: poly16x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
73779 transmute((a0, b0))
73780 }
73781}
73782#[doc = "Zip vectors"]
73783#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_f32)"]
73784#[inline(always)]
73785#[target_feature(enable = "neon")]
73786#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73787#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
73788#[cfg_attr(
73789 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73790 assert_instr(zip1)
73791)]
73792#[cfg_attr(
73793 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73794 assert_instr(zip2)
73795)]
73796#[cfg_attr(
73797 not(target_arch = "arm"),
73798 stable(feature = "neon_intrinsics", since = "1.59.0")
73799)]
73800#[cfg_attr(
73801 target_arch = "arm",
73802 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73803)]
73804pub fn vzipq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
73805 unsafe {
73806 let a0: float32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
73807 let b0: float32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
73808 transmute((a0, b0))
73809 }
73810}
73811#[doc = "Zip vectors"]
73812#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s8)"]
73813#[inline(always)]
73814#[target_feature(enable = "neon")]
73815#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73816#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
73817#[cfg_attr(
73818 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73819 assert_instr(zip1)
73820)]
73821#[cfg_attr(
73822 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73823 assert_instr(zip2)
73824)]
73825#[cfg_attr(
73826 not(target_arch = "arm"),
73827 stable(feature = "neon_intrinsics", since = "1.59.0")
73828)]
73829#[cfg_attr(
73830 target_arch = "arm",
73831 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73832)]
73833pub fn vzipq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
73834 unsafe {
73835 let a0: int8x16_t = simd_shuffle!(
73836 a,
73837 b,
73838 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
73839 );
73840 let b0: int8x16_t = simd_shuffle!(
73841 a,
73842 b,
73843 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
73844 );
73845 transmute((a0, b0))
73846 }
73847}
73848#[doc = "Zip vectors"]
73849#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s16)"]
73850#[inline(always)]
73851#[target_feature(enable = "neon")]
73852#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73853#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
73854#[cfg_attr(
73855 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73856 assert_instr(zip1)
73857)]
73858#[cfg_attr(
73859 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73860 assert_instr(zip2)
73861)]
73862#[cfg_attr(
73863 not(target_arch = "arm"),
73864 stable(feature = "neon_intrinsics", since = "1.59.0")
73865)]
73866#[cfg_attr(
73867 target_arch = "arm",
73868 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73869)]
73870pub fn vzipq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
73871 unsafe {
73872 let a0: int16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
73873 let b0: int16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
73874 transmute((a0, b0))
73875 }
73876}
73877#[doc = "Zip vectors"]
73878#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_s32)"]
73879#[inline(always)]
73880#[target_feature(enable = "neon")]
73881#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73882#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
73883#[cfg_attr(
73884 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73885 assert_instr(zip1)
73886)]
73887#[cfg_attr(
73888 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73889 assert_instr(zip2)
73890)]
73891#[cfg_attr(
73892 not(target_arch = "arm"),
73893 stable(feature = "neon_intrinsics", since = "1.59.0")
73894)]
73895#[cfg_attr(
73896 target_arch = "arm",
73897 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73898)]
73899pub fn vzipq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
73900 unsafe {
73901 let a0: int32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
73902 let b0: int32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
73903 transmute((a0, b0))
73904 }
73905}
73906#[doc = "Zip vectors"]
73907#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u8)"]
73908#[inline(always)]
73909#[target_feature(enable = "neon")]
73910#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73911#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
73912#[cfg_attr(
73913 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73914 assert_instr(zip1)
73915)]
73916#[cfg_attr(
73917 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73918 assert_instr(zip2)
73919)]
73920#[cfg_attr(
73921 not(target_arch = "arm"),
73922 stable(feature = "neon_intrinsics", since = "1.59.0")
73923)]
73924#[cfg_attr(
73925 target_arch = "arm",
73926 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73927)]
73928pub fn vzipq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
73929 unsafe {
73930 let a0: uint8x16_t = simd_shuffle!(
73931 a,
73932 b,
73933 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
73934 );
73935 let b0: uint8x16_t = simd_shuffle!(
73936 a,
73937 b,
73938 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
73939 );
73940 transmute((a0, b0))
73941 }
73942}
73943#[doc = "Zip vectors"]
73944#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u16)"]
73945#[inline(always)]
73946#[target_feature(enable = "neon")]
73947#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73948#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
73949#[cfg_attr(
73950 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73951 assert_instr(zip1)
73952)]
73953#[cfg_attr(
73954 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73955 assert_instr(zip2)
73956)]
73957#[cfg_attr(
73958 not(target_arch = "arm"),
73959 stable(feature = "neon_intrinsics", since = "1.59.0")
73960)]
73961#[cfg_attr(
73962 target_arch = "arm",
73963 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73964)]
73965pub fn vzipq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
73966 unsafe {
73967 let a0: uint16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
73968 let b0: uint16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
73969 transmute((a0, b0))
73970 }
73971}
73972#[doc = "Zip vectors"]
73973#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_u32)"]
73974#[inline(always)]
73975#[target_feature(enable = "neon")]
73976#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
73977#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
73978#[cfg_attr(
73979 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73980 assert_instr(zip1)
73981)]
73982#[cfg_attr(
73983 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
73984 assert_instr(zip2)
73985)]
73986#[cfg_attr(
73987 not(target_arch = "arm"),
73988 stable(feature = "neon_intrinsics", since = "1.59.0")
73989)]
73990#[cfg_attr(
73991 target_arch = "arm",
73992 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
73993)]
73994pub fn vzipq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
73995 unsafe {
73996 let a0: uint32x4_t = simd_shuffle!(a, b, [0, 4, 1, 5]);
73997 let b0: uint32x4_t = simd_shuffle!(a, b, [2, 6, 3, 7]);
73998 transmute((a0, b0))
73999 }
74000}
74001#[doc = "Zip vectors"]
74002#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_p8)"]
74003#[inline(always)]
74004#[target_feature(enable = "neon")]
74005#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74006#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74007#[cfg_attr(
74008 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74009 assert_instr(zip1)
74010)]
74011#[cfg_attr(
74012 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74013 assert_instr(zip2)
74014)]
74015#[cfg_attr(
74016 not(target_arch = "arm"),
74017 stable(feature = "neon_intrinsics", since = "1.59.0")
74018)]
74019#[cfg_attr(
74020 target_arch = "arm",
74021 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74022)]
74023pub fn vzipq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
74024 unsafe {
74025 let a0: poly8x16_t = simd_shuffle!(
74026 a,
74027 b,
74028 [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
74029 );
74030 let b0: poly8x16_t = simd_shuffle!(
74031 a,
74032 b,
74033 [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
74034 );
74035 transmute((a0, b0))
74036 }
74037}
74038#[doc = "Zip vectors"]
74039#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vzipq_p16)"]
74040#[inline(always)]
74041#[target_feature(enable = "neon")]
74042#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
74043#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
74044#[cfg_attr(
74045 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74046 assert_instr(zip1)
74047)]
74048#[cfg_attr(
74049 all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
74050 assert_instr(zip2)
74051)]
74052#[cfg_attr(
74053 not(target_arch = "arm"),
74054 stable(feature = "neon_intrinsics", since = "1.59.0")
74055)]
74056#[cfg_attr(
74057 target_arch = "arm",
74058 unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
74059)]
74060pub fn vzipq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
74061 unsafe {
74062 let a0: poly16x8_t = simd_shuffle!(a, b, [0, 8, 1, 9, 2, 10, 3, 11]);
74063 let b0: poly16x8_t = simd_shuffle!(a, b, [4, 12, 5, 13, 6, 14, 7, 15]);
74064 transmute((a0, b0))
74065 }
74066}