]>
git.proxmox.com Git - rustc.git/blob - library/stdarch/crates/core_arch/src/aarch64/neon/generated.rs
1 // This code is automatically generated. DO NOT MODIFY.
3 // Instead, modify `crates/stdarch-gen/neon.spec` and run the following command to re-generate this file:
6 // OUT_DIR=`pwd`/crates/core_arch cargo run -p stdarch-gen -- crates/stdarch-gen/neon.spec
10 use stdarch_test
:: assert_instr
;
12 /// Absolute difference between the arguments of Floating
14 #[target_feature(enable = "neon" )]
15 #[cfg_attr(test, assert_instr(fabd))]
16 pub unsafe fn vabd_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
17 #[allow(improper_ctypes)]
19 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fabd.v1f64" )]
20 fn vabd_f64_ ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
;
25 /// Absolute difference between the arguments of Floating
27 #[target_feature(enable = "neon" )]
28 #[cfg_attr(test, assert_instr(fabd))]
29 pub unsafe fn vabdq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
30 #[allow(improper_ctypes)]
32 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fabd.v2f64" )]
33 fn vabdq_f64_ ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
;
38 /// Unsigned Absolute difference Long
40 #[target_feature(enable = "neon" )]
41 #[cfg_attr(test, assert_instr(uabdl))]
42 pub unsafe fn vabdl_high_u8 ( a
: uint8x16_t
, b
: uint8x16_t
) -> uint16x8_t
{
43 let c
: uint8x8_t
= simd_shuffle8
!( a
, a
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
44 let d
: uint8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
45 simd_cast ( vabd_u8 ( c
, d
))
48 /// Unsigned Absolute difference Long
50 #[target_feature(enable = "neon" )]
51 #[cfg_attr(test, assert_instr(uabdl))]
52 pub unsafe fn vabdl_high_u16 ( a
: uint16x8_t
, b
: uint16x8_t
) -> uint32x4_t
{
53 let c
: uint16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
54 let d
: uint16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
55 simd_cast ( vabd_u16 ( c
, d
))
58 /// Unsigned Absolute difference Long
60 #[target_feature(enable = "neon" )]
61 #[cfg_attr(test, assert_instr(uabdl))]
62 pub unsafe fn vabdl_high_u32 ( a
: uint32x4_t
, b
: uint32x4_t
) -> uint64x2_t
{
63 let c
: uint32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
64 let d
: uint32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
65 simd_cast ( vabd_u32 ( c
, d
))
68 /// Signed Absolute difference Long
70 #[target_feature(enable = "neon" )]
71 #[cfg_attr(test, assert_instr(sabdl))]
72 pub unsafe fn vabdl_high_s8 ( a
: int8x16_t
, b
: int8x16_t
) -> int16x8_t
{
73 let c
: int8x8_t
= simd_shuffle8
!( a
, a
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
74 let d
: int8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
75 let e
: uint8x8_t
= simd_cast ( vabd_s8 ( c
, d
));
79 /// Signed Absolute difference Long
81 #[target_feature(enable = "neon" )]
82 #[cfg_attr(test, assert_instr(sabdl))]
83 pub unsafe fn vabdl_high_s16 ( a
: int16x8_t
, b
: int16x8_t
) -> int32x4_t
{
84 let c
: int16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
85 let d
: int16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
86 let e
: uint16x4_t
= simd_cast ( vabd_s16 ( c
, d
));
90 /// Signed Absolute difference Long
92 #[target_feature(enable = "neon" )]
93 #[cfg_attr(test, assert_instr(sabdl))]
94 pub unsafe fn vabdl_high_s32 ( a
: int32x4_t
, b
: int32x4_t
) -> int64x2_t
{
95 let c
: int32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
96 let d
: int32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
97 let e
: uint32x2_t
= simd_cast ( vabd_s32 ( c
, d
));
101 /// Compare bitwise Equal (vector)
103 #[target_feature(enable = "neon" )]
104 #[cfg_attr(test, assert_instr(cmeq))]
105 pub unsafe fn vceq_u64 ( a
: uint64x1_t
, b
: uint64x1_t
) -> uint64x1_t
{
109 /// Compare bitwise Equal (vector)
111 #[target_feature(enable = "neon" )]
112 #[cfg_attr(test, assert_instr(cmeq))]
113 pub unsafe fn vceqq_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
117 /// Compare bitwise Equal (vector)
119 #[target_feature(enable = "neon" )]
120 #[cfg_attr(test, assert_instr(cmeq))]
121 pub unsafe fn vceq_s64 ( a
: int64x1_t
, b
: int64x1_t
) -> uint64x1_t
{
125 /// Compare bitwise Equal (vector)
127 #[target_feature(enable = "neon" )]
128 #[cfg_attr(test, assert_instr(cmeq))]
129 pub unsafe fn vceqq_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> uint64x2_t
{
133 /// Compare bitwise Equal (vector)
135 #[target_feature(enable = "neon" )]
136 #[cfg_attr(test, assert_instr(cmeq))]
137 pub unsafe fn vceq_p64 ( a
: poly64x1_t
, b
: poly64x1_t
) -> uint64x1_t
{
141 /// Compare bitwise Equal (vector)
143 #[target_feature(enable = "neon" )]
144 #[cfg_attr(test, assert_instr(cmeq))]
145 pub unsafe fn vceqq_p64 ( a
: poly64x2_t
, b
: poly64x2_t
) -> uint64x2_t
{
149 /// Floating-point compare equal
151 #[target_feature(enable = "neon" )]
152 #[cfg_attr(test, assert_instr(fcmeq))]
153 pub unsafe fn vceq_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
{
157 /// Floating-point compare equal
159 #[target_feature(enable = "neon" )]
160 #[cfg_attr(test, assert_instr(fcmeq))]
161 pub unsafe fn vceqq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
{
165 /// Signed compare bitwise equal to zero
167 #[target_feature(enable = "neon" )]
168 #[cfg_attr(test, assert_instr(cmeq))]
169 pub unsafe fn vceqz_s8 ( a
: int8x8_t
) -> uint8x8_t
{
170 let b
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
171 simd_eq ( a
, transmute ( b
))
174 /// Signed compare bitwise equal to zero
176 #[target_feature(enable = "neon" )]
177 #[cfg_attr(test, assert_instr(cmeq))]
178 pub unsafe fn vceqzq_s8 ( a
: int8x16_t
) -> uint8x16_t
{
179 let b
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
180 simd_eq ( a
, transmute ( b
))
183 /// Signed compare bitwise equal to zero
185 #[target_feature(enable = "neon" )]
186 #[cfg_attr(test, assert_instr(cmeq))]
187 pub unsafe fn vceqz_s16 ( a
: int16x4_t
) -> uint16x4_t
{
188 let b
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
189 simd_eq ( a
, transmute ( b
))
192 /// Signed compare bitwise equal to zero
194 #[target_feature(enable = "neon" )]
195 #[cfg_attr(test, assert_instr(cmeq))]
196 pub unsafe fn vceqzq_s16 ( a
: int16x8_t
) -> uint16x8_t
{
197 let b
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
198 simd_eq ( a
, transmute ( b
))
201 /// Signed compare bitwise equal to zero
203 #[target_feature(enable = "neon" )]
204 #[cfg_attr(test, assert_instr(cmeq))]
205 pub unsafe fn vceqz_s32 ( a
: int32x2_t
) -> uint32x2_t
{
206 let b
: i32x2
= i32x2
:: new ( 0 , 0 );
207 simd_eq ( a
, transmute ( b
))
210 /// Signed compare bitwise equal to zero
212 #[target_feature(enable = "neon" )]
213 #[cfg_attr(test, assert_instr(cmeq))]
214 pub unsafe fn vceqzq_s32 ( a
: int32x4_t
) -> uint32x4_t
{
215 let b
: i32x4
= i32x4
:: new ( 0 , 0 , 0 , 0 );
216 simd_eq ( a
, transmute ( b
))
219 /// Signed compare bitwise equal to zero
221 #[target_feature(enable = "neon" )]
222 #[cfg_attr(test, assert_instr(cmeq))]
223 pub unsafe fn vceqz_s64 ( a
: int64x1_t
) -> uint64x1_t
{
224 let b
: i64x1
= i64x1
:: new ( 0 );
225 simd_eq ( a
, transmute ( b
))
228 /// Signed compare bitwise equal to zero
230 #[target_feature(enable = "neon" )]
231 #[cfg_attr(test, assert_instr(cmeq))]
232 pub unsafe fn vceqzq_s64 ( a
: int64x2_t
) -> uint64x2_t
{
233 let b
: i64x2
= i64x2
:: new ( 0 , 0 );
234 simd_eq ( a
, transmute ( b
))
237 /// Signed compare bitwise equal to zero
239 #[target_feature(enable = "neon" )]
240 #[cfg_attr(test, assert_instr(cmeq))]
241 pub unsafe fn vceqz_p8 ( a
: poly8x8_t
) -> uint8x8_t
{
242 let b
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
243 simd_eq ( a
, transmute ( b
))
246 /// Signed compare bitwise equal to zero
248 #[target_feature(enable = "neon" )]
249 #[cfg_attr(test, assert_instr(cmeq))]
250 pub unsafe fn vceqzq_p8 ( a
: poly8x16_t
) -> uint8x16_t
{
251 let b
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
252 simd_eq ( a
, transmute ( b
))
255 /// Signed compare bitwise equal to zero
257 #[target_feature(enable = "neon" )]
258 #[cfg_attr(test, assert_instr(cmeq))]
259 pub unsafe fn vceqz_p64 ( a
: poly64x1_t
) -> uint64x1_t
{
260 let b
: i64x1
= i64x1
:: new ( 0 );
261 simd_eq ( a
, transmute ( b
))
264 /// Signed compare bitwise equal to zero
266 #[target_feature(enable = "neon" )]
267 #[cfg_attr(test, assert_instr(cmeq))]
268 pub unsafe fn vceqzq_p64 ( a
: poly64x2_t
) -> uint64x2_t
{
269 let b
: i64x2
= i64x2
:: new ( 0 , 0 );
270 simd_eq ( a
, transmute ( b
))
273 /// Unsigned compare bitwise equal to zero
275 #[target_feature(enable = "neon" )]
276 #[cfg_attr(test, assert_instr(cmeq))]
277 pub unsafe fn vceqz_u8 ( a
: uint8x8_t
) -> uint8x8_t
{
278 let b
: u8x8
= u8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
279 simd_eq ( a
, transmute ( b
))
282 /// Unsigned compare bitwise equal to zero
284 #[target_feature(enable = "neon" )]
285 #[cfg_attr(test, assert_instr(cmeq))]
286 pub unsafe fn vceqzq_u8 ( a
: uint8x16_t
) -> uint8x16_t
{
287 let b
: u8x16
= u8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
288 simd_eq ( a
, transmute ( b
))
291 /// Unsigned compare bitwise equal to zero
293 #[target_feature(enable = "neon" )]
294 #[cfg_attr(test, assert_instr(cmeq))]
295 pub unsafe fn vceqz_u16 ( a
: uint16x4_t
) -> uint16x4_t
{
296 let b
: u16x4
= u16x4
:: new ( 0 , 0 , 0 , 0 );
297 simd_eq ( a
, transmute ( b
))
300 /// Unsigned compare bitwise equal to zero
302 #[target_feature(enable = "neon" )]
303 #[cfg_attr(test, assert_instr(cmeq))]
304 pub unsafe fn vceqzq_u16 ( a
: uint16x8_t
) -> uint16x8_t
{
305 let b
: u16x8
= u16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
306 simd_eq ( a
, transmute ( b
))
309 /// Unsigned compare bitwise equal to zero
311 #[target_feature(enable = "neon" )]
312 #[cfg_attr(test, assert_instr(cmeq))]
313 pub unsafe fn vceqz_u32 ( a
: uint32x2_t
) -> uint32x2_t
{
314 let b
: u32x2
= u32x2
:: new ( 0 , 0 );
315 simd_eq ( a
, transmute ( b
))
318 /// Unsigned compare bitwise equal to zero
320 #[target_feature(enable = "neon" )]
321 #[cfg_attr(test, assert_instr(cmeq))]
322 pub unsafe fn vceqzq_u32 ( a
: uint32x4_t
) -> uint32x4_t
{
323 let b
: u32x4
= u32x4
:: new ( 0 , 0 , 0 , 0 );
324 simd_eq ( a
, transmute ( b
))
327 /// Unsigned compare bitwise equal to zero
329 #[target_feature(enable = "neon" )]
330 #[cfg_attr(test, assert_instr(cmeq))]
331 pub unsafe fn vceqz_u64 ( a
: uint64x1_t
) -> uint64x1_t
{
332 let b
: u64x1
= u64x1
:: new ( 0 );
333 simd_eq ( a
, transmute ( b
))
336 /// Unsigned compare bitwise equal to zero
338 #[target_feature(enable = "neon" )]
339 #[cfg_attr(test, assert_instr(cmeq))]
340 pub unsafe fn vceqzq_u64 ( a
: uint64x2_t
) -> uint64x2_t
{
341 let b
: u64x2
= u64x2
:: new ( 0 , 0 );
342 simd_eq ( a
, transmute ( b
))
345 /// Floating-point compare bitwise equal to zero
347 #[target_feature(enable = "neon" )]
348 #[cfg_attr(test, assert_instr(fcmeq))]
349 pub unsafe fn vceqz_f32 ( a
: float32x2_t
) -> uint32x2_t
{
350 let b
: f32x2
= f32x2
:: new ( 0.0 , 0.0 );
351 simd_eq ( a
, transmute ( b
))
354 /// Floating-point compare bitwise equal to zero
356 #[target_feature(enable = "neon" )]
357 #[cfg_attr(test, assert_instr(fcmeq))]
358 pub unsafe fn vceqzq_f32 ( a
: float32x4_t
) -> uint32x4_t
{
359 let b
: f32x4
= f32x4
:: new ( 0.0 , 0.0 , 0.0 , 0.0 );
360 simd_eq ( a
, transmute ( b
))
363 /// Floating-point compare bitwise equal to zero
365 #[target_feature(enable = "neon" )]
366 #[cfg_attr(test, assert_instr(fcmeq))]
367 pub unsafe fn vceqz_f64 ( a
: float64x1_t
) -> uint64x1_t
{
369 simd_eq ( a
, transmute ( b
))
372 /// Floating-point compare bitwise equal to zero
374 #[target_feature(enable = "neon" )]
375 #[cfg_attr(test, assert_instr(fcmeq))]
376 pub unsafe fn vceqzq_f64 ( a
: float64x2_t
) -> uint64x2_t
{
377 let b
: f64x2
= f64x2
:: new ( 0.0 , 0.0 );
378 simd_eq ( a
, transmute ( b
))
381 /// Signed compare bitwise Test bits nonzero
383 #[target_feature(enable = "neon" )]
384 #[cfg_attr(test, assert_instr(cmtst))]
385 pub unsafe fn vtst_s64 ( a
: int64x1_t
, b
: int64x1_t
) -> uint64x1_t
{
386 let c
: int64x1_t
= simd_and ( a
, b
);
387 let d
: i64x1
= i64x1
:: new ( 0 );
388 simd_ne ( c
, transmute ( d
))
391 /// Signed compare bitwise Test bits nonzero
393 #[target_feature(enable = "neon" )]
394 #[cfg_attr(test, assert_instr(cmtst))]
395 pub unsafe fn vtstq_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> uint64x2_t
{
396 let c
: int64x2_t
= simd_and ( a
, b
);
397 let d
: i64x2
= i64x2
:: new ( 0 , 0 );
398 simd_ne ( c
, transmute ( d
))
401 /// Signed compare bitwise Test bits nonzero
403 #[target_feature(enable = "neon" )]
404 #[cfg_attr(test, assert_instr(cmtst))]
405 pub unsafe fn vtst_p64 ( a
: poly64x1_t
, b
: poly64x1_t
) -> uint64x1_t
{
406 let c
: poly64x1_t
= simd_and ( a
, b
);
407 let d
: i64x1
= i64x1
:: new ( 0 );
408 simd_ne ( c
, transmute ( d
))
411 /// Signed compare bitwise Test bits nonzero
413 #[target_feature(enable = "neon" )]
414 #[cfg_attr(test, assert_instr(cmtst))]
415 pub unsafe fn vtstq_p64 ( a
: poly64x2_t
, b
: poly64x2_t
) -> uint64x2_t
{
416 let c
: poly64x2_t
= simd_and ( a
, b
);
417 let d
: i64x2
= i64x2
:: new ( 0 , 0 );
418 simd_ne ( c
, transmute ( d
))
421 /// Unsigned compare bitwise Test bits nonzero
423 #[target_feature(enable = "neon" )]
424 #[cfg_attr(test, assert_instr(cmtst))]
425 pub unsafe fn vtst_u64 ( a
: uint64x1_t
, b
: uint64x1_t
) -> uint64x1_t
{
426 let c
: uint64x1_t
= simd_and ( a
, b
);
427 let d
: u64x1
= u64x1
:: new ( 0 );
428 simd_ne ( c
, transmute ( d
))
431 /// Unsigned compare bitwise Test bits nonzero
433 #[target_feature(enable = "neon" )]
434 #[cfg_attr(test, assert_instr(cmtst))]
435 pub unsafe fn vtstq_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
436 let c
: uint64x2_t
= simd_and ( a
, b
);
437 let d
: u64x2
= u64x2
:: new ( 0 , 0 );
438 simd_ne ( c
, transmute ( d
))
441 /// Floating-point absolute value
443 #[target_feature(enable = "neon" )]
444 #[cfg_attr(test, assert_instr(fabs))]
445 pub unsafe fn vabs_f64 ( a
: float64x1_t
) -> float64x1_t
{
449 /// Floating-point absolute value
451 #[target_feature(enable = "neon" )]
452 #[cfg_attr(test, assert_instr(fabs))]
453 pub unsafe fn vabsq_f64 ( a
: float64x2_t
) -> float64x2_t
{
457 /// Compare signed greater than
459 #[target_feature(enable = "neon" )]
460 #[cfg_attr(test, assert_instr(cmgt))]
461 pub unsafe fn vcgt_s64 ( a
: int64x1_t
, b
: int64x1_t
) -> uint64x1_t
{
465 /// Compare signed greater than
467 #[target_feature(enable = "neon" )]
468 #[cfg_attr(test, assert_instr(cmgt))]
469 pub unsafe fn vcgtq_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> uint64x2_t
{
473 /// Compare unsigned highe
475 #[target_feature(enable = "neon" )]
476 #[cfg_attr(test, assert_instr(cmhi))]
477 pub unsafe fn vcgt_u64 ( a
: uint64x1_t
, b
: uint64x1_t
) -> uint64x1_t
{
481 /// Compare unsigned highe
483 #[target_feature(enable = "neon" )]
484 #[cfg_attr(test, assert_instr(cmhi))]
485 pub unsafe fn vcgtq_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
489 /// Floating-point compare greater than
491 #[target_feature(enable = "neon" )]
492 #[cfg_attr(test, assert_instr(fcmgt))]
493 pub unsafe fn vcgt_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
{
497 /// Floating-point compare greater than
499 #[target_feature(enable = "neon" )]
500 #[cfg_attr(test, assert_instr(fcmgt))]
501 pub unsafe fn vcgtq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
{
505 /// Compare signed less than
507 #[target_feature(enable = "neon" )]
508 #[cfg_attr(test, assert_instr(cmgt))]
509 pub unsafe fn vclt_s64 ( a
: int64x1_t
, b
: int64x1_t
) -> uint64x1_t
{
513 /// Compare signed less than
515 #[target_feature(enable = "neon" )]
516 #[cfg_attr(test, assert_instr(cmgt))]
517 pub unsafe fn vcltq_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> uint64x2_t
{
521 /// Compare unsigned less than
523 #[target_feature(enable = "neon" )]
524 #[cfg_attr(test, assert_instr(cmhi))]
525 pub unsafe fn vclt_u64 ( a
: uint64x1_t
, b
: uint64x1_t
) -> uint64x1_t
{
529 /// Compare unsigned less than
531 #[target_feature(enable = "neon" )]
532 #[cfg_attr(test, assert_instr(cmhi))]
533 pub unsafe fn vcltq_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
537 /// Floating-point compare less than
539 #[target_feature(enable = "neon" )]
540 #[cfg_attr(test, assert_instr(fcmgt))]
541 pub unsafe fn vclt_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
{
545 /// Floating-point compare less than
547 #[target_feature(enable = "neon" )]
548 #[cfg_attr(test, assert_instr(fcmgt))]
549 pub unsafe fn vcltq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
{
553 /// Compare signed less than or equal
555 #[target_feature(enable = "neon" )]
556 #[cfg_attr(test, assert_instr(cmge))]
557 pub unsafe fn vcle_s64 ( a
: int64x1_t
, b
: int64x1_t
) -> uint64x1_t
{
561 /// Compare signed less than or equal
563 #[target_feature(enable = "neon" )]
564 #[cfg_attr(test, assert_instr(cmge))]
565 pub unsafe fn vcleq_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> uint64x2_t
{
569 /// Compare unsigned less than or equal
571 #[target_feature(enable = "neon" )]
572 #[cfg_attr(test, assert_instr(cmhs))]
573 pub unsafe fn vcle_u64 ( a
: uint64x1_t
, b
: uint64x1_t
) -> uint64x1_t
{
577 /// Compare unsigned less than or equal
579 #[target_feature(enable = "neon" )]
580 #[cfg_attr(test, assert_instr(cmhs))]
581 pub unsafe fn vcleq_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
585 /// Floating-point compare less than or equal
587 #[target_feature(enable = "neon" )]
588 #[cfg_attr(test, assert_instr(fcmge))]
589 pub unsafe fn vcle_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
{
593 /// Floating-point compare less than or equal
595 #[target_feature(enable = "neon" )]
596 #[cfg_attr(test, assert_instr(fcmge))]
597 pub unsafe fn vcleq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
{
601 /// Compare signed greater than or equal
603 #[target_feature(enable = "neon" )]
604 #[cfg_attr(test, assert_instr(cmge))]
605 pub unsafe fn vcge_s64 ( a
: int64x1_t
, b
: int64x1_t
) -> uint64x1_t
{
609 /// Compare signed greater than or equal
611 #[target_feature(enable = "neon" )]
612 #[cfg_attr(test, assert_instr(cmge))]
613 pub unsafe fn vcgeq_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> uint64x2_t
{
617 /// Compare unsigned greater than or equal
619 #[target_feature(enable = "neon" )]
620 #[cfg_attr(test, assert_instr(cmhs))]
621 pub unsafe fn vcge_u64 ( a
: uint64x1_t
, b
: uint64x1_t
) -> uint64x1_t
{
625 /// Compare unsigned greater than or equal
627 #[target_feature(enable = "neon" )]
628 #[cfg_attr(test, assert_instr(cmhs))]
629 pub unsafe fn vcgeq_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
633 /// Floating-point compare greater than or equal
635 #[target_feature(enable = "neon" )]
636 #[cfg_attr(test, assert_instr(fcmge))]
637 pub unsafe fn vcge_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
{
641 /// Floating-point compare greater than or equal
643 #[target_feature(enable = "neon" )]
644 #[cfg_attr(test, assert_instr(fcmge))]
645 pub unsafe fn vcgeq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
{
649 /// Compare signed greater than or equal to zero
651 #[target_feature(enable = "neon" )]
652 #[cfg_attr(test, assert_instr(cmge))]
653 pub unsafe fn vcgez_s8 ( a
: int8x8_t
) -> uint8x8_t
{
654 let b
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
655 simd_ge ( a
, transmute ( b
))
658 /// Compare signed greater than or equal to zero
660 #[target_feature(enable = "neon" )]
661 #[cfg_attr(test, assert_instr(cmge))]
662 pub unsafe fn vcgezq_s8 ( a
: int8x16_t
) -> uint8x16_t
{
663 let b
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
664 simd_ge ( a
, transmute ( b
))
667 /// Compare signed greater than or equal to zero
669 #[target_feature(enable = "neon" )]
670 #[cfg_attr(test, assert_instr(cmge))]
671 pub unsafe fn vcgez_s16 ( a
: int16x4_t
) -> uint16x4_t
{
672 let b
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
673 simd_ge ( a
, transmute ( b
))
676 /// Compare signed greater than or equal to zero
678 #[target_feature(enable = "neon" )]
679 #[cfg_attr(test, assert_instr(cmge))]
680 pub unsafe fn vcgezq_s16 ( a
: int16x8_t
) -> uint16x8_t
{
681 let b
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
682 simd_ge ( a
, transmute ( b
))
685 /// Compare signed greater than or equal to zero
687 #[target_feature(enable = "neon" )]
688 #[cfg_attr(test, assert_instr(cmge))]
689 pub unsafe fn vcgez_s32 ( a
: int32x2_t
) -> uint32x2_t
{
690 let b
: i32x2
= i32x2
:: new ( 0 , 0 );
691 simd_ge ( a
, transmute ( b
))
694 /// Compare signed greater than or equal to zero
696 #[target_feature(enable = "neon" )]
697 #[cfg_attr(test, assert_instr(cmge))]
698 pub unsafe fn vcgezq_s32 ( a
: int32x4_t
) -> uint32x4_t
{
699 let b
: i32x4
= i32x4
:: new ( 0 , 0 , 0 , 0 );
700 simd_ge ( a
, transmute ( b
))
703 /// Compare signed greater than or equal to zero
705 #[target_feature(enable = "neon" )]
706 #[cfg_attr(test, assert_instr(cmge))]
707 pub unsafe fn vcgez_s64 ( a
: int64x1_t
) -> uint64x1_t
{
708 let b
: i64x1
= i64x1
:: new ( 0 );
709 simd_ge ( a
, transmute ( b
))
712 /// Compare signed greater than or equal to zero
714 #[target_feature(enable = "neon" )]
715 #[cfg_attr(test, assert_instr(cmge))]
716 pub unsafe fn vcgezq_s64 ( a
: int64x2_t
) -> uint64x2_t
{
717 let b
: i64x2
= i64x2
:: new ( 0 , 0 );
718 simd_ge ( a
, transmute ( b
))
721 /// Floating-point compare greater than or equal to zero
723 #[target_feature(enable = "neon" )]
724 #[cfg_attr(test, assert_instr(fcmge))]
725 pub unsafe fn vcgez_f32 ( a
: float32x2_t
) -> uint32x2_t
{
726 let b
: f32x2
= f32x2
:: new ( 0.0 , 0.0 );
727 simd_ge ( a
, transmute ( b
))
730 /// Floating-point compare greater than or equal to zero
732 #[target_feature(enable = "neon" )]
733 #[cfg_attr(test, assert_instr(fcmge))]
734 pub unsafe fn vcgezq_f32 ( a
: float32x4_t
) -> uint32x4_t
{
735 let b
: f32x4
= f32x4
:: new ( 0.0 , 0.0 , 0.0 , 0.0 );
736 simd_ge ( a
, transmute ( b
))
739 /// Floating-point compare greater than or equal to zero
741 #[target_feature(enable = "neon" )]
742 #[cfg_attr(test, assert_instr(fcmge))]
743 pub unsafe fn vcgez_f64 ( a
: float64x1_t
) -> uint64x1_t
{
745 simd_ge ( a
, transmute ( b
))
748 /// Floating-point compare greater than or equal to zero
750 #[target_feature(enable = "neon" )]
751 #[cfg_attr(test, assert_instr(fcmge))]
752 pub unsafe fn vcgezq_f64 ( a
: float64x2_t
) -> uint64x2_t
{
753 let b
: f64x2
= f64x2
:: new ( 0.0 , 0.0 );
754 simd_ge ( a
, transmute ( b
))
757 /// Compare signed greater than zero
759 #[target_feature(enable = "neon" )]
760 #[cfg_attr(test, assert_instr(cmgt))]
761 pub unsafe fn vcgtz_s8 ( a
: int8x8_t
) -> uint8x8_t
{
762 let b
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
763 simd_gt ( a
, transmute ( b
))
766 /// Compare signed greater than zero
768 #[target_feature(enable = "neon" )]
769 #[cfg_attr(test, assert_instr(cmgt))]
770 pub unsafe fn vcgtzq_s8 ( a
: int8x16_t
) -> uint8x16_t
{
771 let b
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
772 simd_gt ( a
, transmute ( b
))
775 /// Compare signed greater than zero
777 #[target_feature(enable = "neon" )]
778 #[cfg_attr(test, assert_instr(cmgt))]
779 pub unsafe fn vcgtz_s16 ( a
: int16x4_t
) -> uint16x4_t
{
780 let b
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
781 simd_gt ( a
, transmute ( b
))
784 /// Compare signed greater than zero
786 #[target_feature(enable = "neon" )]
787 #[cfg_attr(test, assert_instr(cmgt))]
788 pub unsafe fn vcgtzq_s16 ( a
: int16x8_t
) -> uint16x8_t
{
789 let b
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
790 simd_gt ( a
, transmute ( b
))
793 /// Compare signed greater than zero
795 #[target_feature(enable = "neon" )]
796 #[cfg_attr(test, assert_instr(cmgt))]
797 pub unsafe fn vcgtz_s32 ( a
: int32x2_t
) -> uint32x2_t
{
798 let b
: i32x2
= i32x2
:: new ( 0 , 0 );
799 simd_gt ( a
, transmute ( b
))
802 /// Compare signed greater than zero
804 #[target_feature(enable = "neon" )]
805 #[cfg_attr(test, assert_instr(cmgt))]
806 pub unsafe fn vcgtzq_s32 ( a
: int32x4_t
) -> uint32x4_t
{
807 let b
: i32x4
= i32x4
:: new ( 0 , 0 , 0 , 0 );
808 simd_gt ( a
, transmute ( b
))
811 /// Compare signed greater than zero
813 #[target_feature(enable = "neon" )]
814 #[cfg_attr(test, assert_instr(cmgt))]
815 pub unsafe fn vcgtz_s64 ( a
: int64x1_t
) -> uint64x1_t
{
816 let b
: i64x1
= i64x1
:: new ( 0 );
817 simd_gt ( a
, transmute ( b
))
820 /// Compare signed greater than zero
822 #[target_feature(enable = "neon" )]
823 #[cfg_attr(test, assert_instr(cmgt))]
824 pub unsafe fn vcgtzq_s64 ( a
: int64x2_t
) -> uint64x2_t
{
825 let b
: i64x2
= i64x2
:: new ( 0 , 0 );
826 simd_gt ( a
, transmute ( b
))
829 /// Floating-point compare greater than zero
831 #[target_feature(enable = "neon" )]
832 #[cfg_attr(test, assert_instr(fcmgt))]
833 pub unsafe fn vcgtz_f32 ( a
: float32x2_t
) -> uint32x2_t
{
834 let b
: f32x2
= f32x2
:: new ( 0.0 , 0.0 );
835 simd_gt ( a
, transmute ( b
))
838 /// Floating-point compare greater than zero
840 #[target_feature(enable = "neon" )]
841 #[cfg_attr(test, assert_instr(fcmgt))]
842 pub unsafe fn vcgtzq_f32 ( a
: float32x4_t
) -> uint32x4_t
{
843 let b
: f32x4
= f32x4
:: new ( 0.0 , 0.0 , 0.0 , 0.0 );
844 simd_gt ( a
, transmute ( b
))
847 /// Floating-point compare greater than zero
849 #[target_feature(enable = "neon" )]
850 #[cfg_attr(test, assert_instr(fcmgt))]
851 pub unsafe fn vcgtz_f64 ( a
: float64x1_t
) -> uint64x1_t
{
853 simd_gt ( a
, transmute ( b
))
856 /// Floating-point compare greater than zero
858 #[target_feature(enable = "neon" )]
859 #[cfg_attr(test, assert_instr(fcmgt))]
860 pub unsafe fn vcgtzq_f64 ( a
: float64x2_t
) -> uint64x2_t
{
861 let b
: f64x2
= f64x2
:: new ( 0.0 , 0.0 );
862 simd_gt ( a
, transmute ( b
))
865 /// Compare signed less than or equal to zero
867 #[target_feature(enable = "neon" )]
868 #[cfg_attr(test, assert_instr(cmgt))]
869 pub unsafe fn vclez_s8 ( a
: int8x8_t
) -> uint8x8_t
{
870 let b
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
871 simd_le ( a
, transmute ( b
))
874 /// Compare signed less than or equal to zero
876 #[target_feature(enable = "neon" )]
877 #[cfg_attr(test, assert_instr(cmgt))]
878 pub unsafe fn vclezq_s8 ( a
: int8x16_t
) -> uint8x16_t
{
879 let b
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
880 simd_le ( a
, transmute ( b
))
883 /// Compare signed less than or equal to zero
885 #[target_feature(enable = "neon" )]
886 #[cfg_attr(test, assert_instr(cmgt))]
887 pub unsafe fn vclez_s16 ( a
: int16x4_t
) -> uint16x4_t
{
888 let b
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
889 simd_le ( a
, transmute ( b
))
892 /// Compare signed less than or equal to zero
894 #[target_feature(enable = "neon" )]
895 #[cfg_attr(test, assert_instr(cmgt))]
896 pub unsafe fn vclezq_s16 ( a
: int16x8_t
) -> uint16x8_t
{
897 let b
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
898 simd_le ( a
, transmute ( b
))
901 /// Compare signed less than or equal to zero
903 #[target_feature(enable = "neon" )]
904 #[cfg_attr(test, assert_instr(cmgt))]
905 pub unsafe fn vclez_s32 ( a
: int32x2_t
) -> uint32x2_t
{
906 let b
: i32x2
= i32x2
:: new ( 0 , 0 );
907 simd_le ( a
, transmute ( b
))
910 /// Compare signed less than or equal to zero
912 #[target_feature(enable = "neon" )]
913 #[cfg_attr(test, assert_instr(cmgt))]
914 pub unsafe fn vclezq_s32 ( a
: int32x4_t
) -> uint32x4_t
{
915 let b
: i32x4
= i32x4
:: new ( 0 , 0 , 0 , 0 );
916 simd_le ( a
, transmute ( b
))
919 /// Compare signed less than or equal to zero
921 #[target_feature(enable = "neon" )]
922 #[cfg_attr(test, assert_instr(cmgt))]
923 pub unsafe fn vclez_s64 ( a
: int64x1_t
) -> uint64x1_t
{
924 let b
: i64x1
= i64x1
:: new ( 0 );
925 simd_le ( a
, transmute ( b
))
928 /// Compare signed less than or equal to zero
930 #[target_feature(enable = "neon" )]
931 #[cfg_attr(test, assert_instr(cmgt))]
932 pub unsafe fn vclezq_s64 ( a
: int64x2_t
) -> uint64x2_t
{
933 let b
: i64x2
= i64x2
:: new ( 0 , 0 );
934 simd_le ( a
, transmute ( b
))
937 /// Floating-point compare less than or equal to zero
939 #[target_feature(enable = "neon" )]
940 #[cfg_attr(test, assert_instr(fcmle))]
941 pub unsafe fn vclez_f32 ( a
: float32x2_t
) -> uint32x2_t
{
942 let b
: f32x2
= f32x2
:: new ( 0.0 , 0.0 );
943 simd_le ( a
, transmute ( b
))
946 /// Floating-point compare less than or equal to zero
948 #[target_feature(enable = "neon" )]
949 #[cfg_attr(test, assert_instr(fcmle))]
950 pub unsafe fn vclezq_f32 ( a
: float32x4_t
) -> uint32x4_t
{
951 let b
: f32x4
= f32x4
:: new ( 0.0 , 0.0 , 0.0 , 0.0 );
952 simd_le ( a
, transmute ( b
))
955 /// Floating-point compare less than or equal to zero
957 #[target_feature(enable = "neon" )]
958 #[cfg_attr(test, assert_instr(fcmle))]
959 pub unsafe fn vclez_f64 ( a
: float64x1_t
) -> uint64x1_t
{
961 simd_le ( a
, transmute ( b
))
964 /// Floating-point compare less than or equal to zero
966 #[target_feature(enable = "neon" )]
967 #[cfg_attr(test, assert_instr(fcmle))]
968 pub unsafe fn vclezq_f64 ( a
: float64x2_t
) -> uint64x2_t
{
969 let b
: f64x2
= f64x2
:: new ( 0.0 , 0.0 );
970 simd_le ( a
, transmute ( b
))
973 /// Compare signed less than zero
975 #[target_feature(enable = "neon" )]
976 #[cfg_attr(test, assert_instr(sshr))]
977 pub unsafe fn vcltz_s8 ( a
: int8x8_t
) -> uint8x8_t
{
978 let b
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
979 simd_lt ( a
, transmute ( b
))
982 /// Compare signed less than zero
984 #[target_feature(enable = "neon" )]
985 #[cfg_attr(test, assert_instr(sshr))]
986 pub unsafe fn vcltzq_s8 ( a
: int8x16_t
) -> uint8x16_t
{
987 let b
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
988 simd_lt ( a
, transmute ( b
))
991 /// Compare signed less than zero
993 #[target_feature(enable = "neon" )]
994 #[cfg_attr(test, assert_instr(sshr))]
995 pub unsafe fn vcltz_s16 ( a
: int16x4_t
) -> uint16x4_t
{
996 let b
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
997 simd_lt ( a
, transmute ( b
))
1000 /// Compare signed less than zero
1002 #[target_feature(enable = "neon" )]
1003 #[cfg_attr(test, assert_instr(sshr))]
1004 pub unsafe fn vcltzq_s16 ( a
: int16x8_t
) -> uint16x8_t
{
1005 let b
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
1006 simd_lt ( a
, transmute ( b
))
1009 /// Compare signed less than zero
1011 #[target_feature(enable = "neon" )]
1012 #[cfg_attr(test, assert_instr(sshr))]
1013 pub unsafe fn vcltz_s32 ( a
: int32x2_t
) -> uint32x2_t
{
1014 let b
: i32x2
= i32x2
:: new ( 0 , 0 );
1015 simd_lt ( a
, transmute ( b
))
1018 /// Compare signed less than zero
1020 #[target_feature(enable = "neon" )]
1021 #[cfg_attr(test, assert_instr(sshr))]
1022 pub unsafe fn vcltzq_s32 ( a
: int32x4_t
) -> uint32x4_t
{
1023 let b
: i32x4
= i32x4
:: new ( 0 , 0 , 0 , 0 );
1024 simd_lt ( a
, transmute ( b
))
1027 /// Compare signed less than zero
1029 #[target_feature(enable = "neon" )]
1030 #[cfg_attr(test, assert_instr(sshr))]
1031 pub unsafe fn vcltz_s64 ( a
: int64x1_t
) -> uint64x1_t
{
1032 let b
: i64x1
= i64x1
:: new ( 0 );
1033 simd_lt ( a
, transmute ( b
))
1036 /// Compare signed less than zero
1038 #[target_feature(enable = "neon" )]
1039 #[cfg_attr(test, assert_instr(sshr))]
1040 pub unsafe fn vcltzq_s64 ( a
: int64x2_t
) -> uint64x2_t
{
1041 let b
: i64x2
= i64x2
:: new ( 0 , 0 );
1042 simd_lt ( a
, transmute ( b
))
1045 /// Floating-point compare less than zero
1047 #[target_feature(enable = "neon" )]
1048 #[cfg_attr(test, assert_instr(fcmlt))]
1049 pub unsafe fn vcltz_f32 ( a
: float32x2_t
) -> uint32x2_t
{
1050 let b
: f32x2
= f32x2
:: new ( 0.0 , 0.0 );
1051 simd_lt ( a
, transmute ( b
))
1054 /// Floating-point compare less than zero
1056 #[target_feature(enable = "neon" )]
1057 #[cfg_attr(test, assert_instr(fcmlt))]
1058 pub unsafe fn vcltzq_f32 ( a
: float32x4_t
) -> uint32x4_t
{
1059 let b
: f32x4
= f32x4
:: new ( 0.0 , 0.0 , 0.0 , 0.0 );
1060 simd_lt ( a
, transmute ( b
))
1063 /// Floating-point compare less than zero
1065 #[target_feature(enable = "neon" )]
1066 #[cfg_attr(test, assert_instr(fcmlt))]
1067 pub unsafe fn vcltz_f64 ( a
: float64x1_t
) -> uint64x1_t
{
1069 simd_lt ( a
, transmute ( b
))
1072 /// Floating-point compare less than zero
1074 #[target_feature(enable = "neon" )]
1075 #[cfg_attr(test, assert_instr(fcmlt))]
1076 pub unsafe fn vcltzq_f64 ( a
: float64x2_t
) -> uint64x2_t
{
1077 let b
: f64x2
= f64x2
:: new ( 0.0 , 0.0 );
1078 simd_lt ( a
, transmute ( b
))
1081 /// Floating-point absolute compare greater than
1083 #[target_feature(enable = "neon" )]
1084 #[cfg_attr(test, assert_instr(facgt))]
1085 pub unsafe fn vcagt_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
{
1086 #[allow(improper_ctypes)]
1088 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.facgt.v1i64.v1f64" )]
1089 fn vcagt_f64_ ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
;
1094 /// Floating-point absolute compare greater than
1096 #[target_feature(enable = "neon" )]
1097 #[cfg_attr(test, assert_instr(facgt))]
1098 pub unsafe fn vcagtq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
{
1099 #[allow(improper_ctypes)]
1101 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.facgt.v2i64.v2f64" )]
1102 fn vcagtq_f64_ ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
;
1107 /// Floating-point absolute compare greater than or equal
1109 #[target_feature(enable = "neon" )]
1110 #[cfg_attr(test, assert_instr(facge))]
1111 pub unsafe fn vcage_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
{
1112 #[allow(improper_ctypes)]
1114 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.facge.v1i64.v1f64" )]
1115 fn vcage_f64_ ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
;
1120 /// Floating-point absolute compare greater than or equal
1122 #[target_feature(enable = "neon" )]
1123 #[cfg_attr(test, assert_instr(facge))]
1124 pub unsafe fn vcageq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
{
1125 #[allow(improper_ctypes)]
1127 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.facge.v2i64.v2f64" )]
1128 fn vcageq_f64_ ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
;
1133 /// Floating-point absolute compare less than
1135 #[target_feature(enable = "neon" )]
1136 #[cfg_attr(test, assert_instr(facgt))]
1137 pub unsafe fn vcalt_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
{
1141 /// Floating-point absolute compare less than
1143 #[target_feature(enable = "neon" )]
1144 #[cfg_attr(test, assert_instr(facgt))]
1145 pub unsafe fn vcaltq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
{
1149 /// Floating-point absolute compare less than or equal
1151 #[target_feature(enable = "neon" )]
1152 #[cfg_attr(test, assert_instr(facge))]
1153 pub unsafe fn vcale_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> uint64x1_t
{
1157 /// Floating-point absolute compare less than or equal
1159 #[target_feature(enable = "neon" )]
1160 #[cfg_attr(test, assert_instr(facge))]
1161 pub unsafe fn vcaleq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> uint64x2_t
{
1165 /// Insert vector element from another vector element
1167 #[target_feature(enable = "neon" )]
1168 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1169 #[rustc_legacy_const_generics(1, 3)]
1170 pub unsafe fn vcopy_lane_s8
< const LANE1
: i32 , const LANE2
: i32 >( a
: int8x8_t
, b
: int8x8_t
) -> int8x8_t
{
1171 static_assert_imm3
!( LANE1
);
1172 static_assert_imm3
!( LANE2
);
1173 match LANE1
& 0b111 {
1174 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1175 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1176 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1177 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1178 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 8 + LANE2
as u32 , 5 , 6 , 7 ]),
1179 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 8 + LANE2
as u32 , 6 , 7 ]),
1180 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 8 + LANE2
as u32 , 7 ]),
1181 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 8 + LANE2
as u32 ]),
1182 _
=> unreachable_unchecked (),
1186 /// Insert vector element from another vector element
1188 #[target_feature(enable = "neon" )]
1189 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1190 #[rustc_legacy_const_generics(1, 3)]
1191 pub unsafe fn vcopyq_laneq_s8
< const LANE1
: i32 , const LANE2
: i32 >( a
: int8x16_t
, b
: int8x16_t
) -> int8x16_t
{
1192 static_assert_imm4
!( LANE1
);
1193 static_assert_imm4
!( LANE2
);
1194 match LANE1
& 0b1111 {
1195 0 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 16 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1196 1 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 16 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1197 2 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 16 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1198 3 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 16 + LANE2
as u32 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1199 4 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 16 + LANE2
as u32 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1200 5 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 16 + LANE2
as u32 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1201 6 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 16 + LANE2
as u32 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1202 7 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 + LANE2
as u32 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1203 8 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 16 + LANE2
as u32 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1204 9 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 16 + LANE2
as u32 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1205 10 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 16 + LANE2
as u32 , 11 , 12 , 13 , 14 , 15 ]),
1206 11 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 16 + LANE2
as u32 , 12 , 13 , 14 , 15 ]),
1207 12 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 16 + LANE2
as u32 , 13 , 14 , 15 ]),
1208 13 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 16 + LANE2
as u32 , 14 , 15 ]),
1209 14 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 16 + LANE2
as u32 , 15 ]),
1210 15 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 16 + LANE2
as u32 ]),
1211 _
=> unreachable_unchecked (),
1215 /// Insert vector element from another vector element
1217 #[target_feature(enable = "neon" )]
1218 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1219 #[rustc_legacy_const_generics(1, 3)]
1220 pub unsafe fn vcopy_lane_s16
< const LANE1
: i32 , const LANE2
: i32 >( a
: int16x4_t
, b
: int16x4_t
) -> int16x4_t
{
1221 static_assert_imm2
!( LANE1
);
1222 static_assert_imm2
!( LANE2
);
1223 match LANE1
& 0b11 {
1224 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 , 2 , 3 ]),
1225 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 , 2 , 3 ]),
1226 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 4 + LANE2
as u32 , 3 ]),
1227 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 4 + LANE2
as u32 ]),
1228 _
=> unreachable_unchecked (),
1232 /// Insert vector element from another vector element
1234 #[target_feature(enable = "neon" )]
1235 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1236 #[rustc_legacy_const_generics(1, 3)]
1237 pub unsafe fn vcopyq_laneq_s16
< const LANE1
: i32 , const LANE2
: i32 >( a
: int16x8_t
, b
: int16x8_t
) -> int16x8_t
{
1238 static_assert_imm3
!( LANE1
);
1239 static_assert_imm3
!( LANE2
);
1240 match LANE1
& 0b111 {
1241 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1242 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1243 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1244 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1245 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 8 + LANE2
as u32 , 5 , 6 , 7 ]),
1246 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 8 + LANE2
as u32 , 6 , 7 ]),
1247 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 8 + LANE2
as u32 , 7 ]),
1248 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 8 + LANE2
as u32 ]),
1249 _
=> unreachable_unchecked (),
1253 /// Insert vector element from another vector element
1255 #[target_feature(enable = "neon" )]
1256 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1257 #[rustc_legacy_const_generics(1, 3)]
1258 pub unsafe fn vcopy_lane_s32
< const LANE1
: i32 , const LANE2
: i32 >( a
: int32x2_t
, b
: int32x2_t
) -> int32x2_t
{
1259 static_assert_imm1
!( LANE1
);
1260 static_assert_imm1
!( LANE2
);
1262 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
1263 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
1264 _
=> unreachable_unchecked (),
1268 /// Insert vector element from another vector element
1270 #[target_feature(enable = "neon" )]
1271 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1272 #[rustc_legacy_const_generics(1, 3)]
1273 pub unsafe fn vcopyq_laneq_s32
< const LANE1
: i32 , const LANE2
: i32 >( a
: int32x4_t
, b
: int32x4_t
) -> int32x4_t
{
1274 static_assert_imm2
!( LANE1
);
1275 static_assert_imm2
!( LANE2
);
1276 match LANE1
& 0b11 {
1277 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 , 2 , 3 ]),
1278 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 , 2 , 3 ]),
1279 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 4 + LANE2
as u32 , 3 ]),
1280 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 4 + LANE2
as u32 ]),
1281 _
=> unreachable_unchecked (),
1285 /// Insert vector element from another vector element
1287 #[target_feature(enable = "neon" )]
1288 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1289 #[rustc_legacy_const_generics(1, 3)]
1290 pub unsafe fn vcopyq_laneq_s64
< const LANE1
: i32 , const LANE2
: i32 >( a
: int64x2_t
, b
: int64x2_t
) -> int64x2_t
{
1291 static_assert_imm1
!( LANE1
);
1292 static_assert_imm1
!( LANE2
);
1294 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
1295 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
1296 _
=> unreachable_unchecked (),
1300 /// Insert vector element from another vector element
1302 #[target_feature(enable = "neon" )]
1303 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1304 #[rustc_legacy_const_generics(1, 3)]
1305 pub unsafe fn vcopy_lane_u8
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint8x8_t
, b
: uint8x8_t
) -> uint8x8_t
{
1306 static_assert_imm3
!( LANE1
);
1307 static_assert_imm3
!( LANE2
);
1308 match LANE1
& 0b111 {
1309 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1310 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1311 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1312 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1313 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 8 + LANE2
as u32 , 5 , 6 , 7 ]),
1314 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 8 + LANE2
as u32 , 6 , 7 ]),
1315 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 8 + LANE2
as u32 , 7 ]),
1316 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 8 + LANE2
as u32 ]),
1317 _
=> unreachable_unchecked (),
1321 /// Insert vector element from another vector element
1323 #[target_feature(enable = "neon" )]
1324 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1325 #[rustc_legacy_const_generics(1, 3)]
1326 pub unsafe fn vcopyq_laneq_u8
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint8x16_t
, b
: uint8x16_t
) -> uint8x16_t
{
1327 static_assert_imm4
!( LANE1
);
1328 static_assert_imm4
!( LANE2
);
1329 match LANE1
& 0b1111 {
1330 0 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 16 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1331 1 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 16 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1332 2 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 16 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1333 3 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 16 + LANE2
as u32 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1334 4 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 16 + LANE2
as u32 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1335 5 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 16 + LANE2
as u32 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1336 6 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 16 + LANE2
as u32 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1337 7 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 + LANE2
as u32 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1338 8 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 16 + LANE2
as u32 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1339 9 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 16 + LANE2
as u32 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1340 10 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 16 + LANE2
as u32 , 11 , 12 , 13 , 14 , 15 ]),
1341 11 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 16 + LANE2
as u32 , 12 , 13 , 14 , 15 ]),
1342 12 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 16 + LANE2
as u32 , 13 , 14 , 15 ]),
1343 13 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 16 + LANE2
as u32 , 14 , 15 ]),
1344 14 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 16 + LANE2
as u32 , 15 ]),
1345 15 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 16 + LANE2
as u32 ]),
1346 _
=> unreachable_unchecked (),
1350 /// Insert vector element from another vector element
1352 #[target_feature(enable = "neon" )]
1353 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1354 #[rustc_legacy_const_generics(1, 3)]
1355 pub unsafe fn vcopy_lane_u16
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint16x4_t
, b
: uint16x4_t
) -> uint16x4_t
{
1356 static_assert_imm2
!( LANE1
);
1357 static_assert_imm2
!( LANE2
);
1358 match LANE1
& 0b11 {
1359 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 , 2 , 3 ]),
1360 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 , 2 , 3 ]),
1361 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 4 + LANE2
as u32 , 3 ]),
1362 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 4 + LANE2
as u32 ]),
1363 _
=> unreachable_unchecked (),
1367 /// Insert vector element from another vector element
1369 #[target_feature(enable = "neon" )]
1370 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1371 #[rustc_legacy_const_generics(1, 3)]
1372 pub unsafe fn vcopyq_laneq_u16
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint16x8_t
, b
: uint16x8_t
) -> uint16x8_t
{
1373 static_assert_imm3
!( LANE1
);
1374 static_assert_imm3
!( LANE2
);
1375 match LANE1
& 0b111 {
1376 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1377 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1378 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1379 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1380 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 8 + LANE2
as u32 , 5 , 6 , 7 ]),
1381 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 8 + LANE2
as u32 , 6 , 7 ]),
1382 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 8 + LANE2
as u32 , 7 ]),
1383 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 8 + LANE2
as u32 ]),
1384 _
=> unreachable_unchecked (),
1388 /// Insert vector element from another vector element
1390 #[target_feature(enable = "neon" )]
1391 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1392 #[rustc_legacy_const_generics(1, 3)]
1393 pub unsafe fn vcopy_lane_u32
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint32x2_t
, b
: uint32x2_t
) -> uint32x2_t
{
1394 static_assert_imm1
!( LANE1
);
1395 static_assert_imm1
!( LANE2
);
1397 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
1398 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
1399 _
=> unreachable_unchecked (),
1403 /// Insert vector element from another vector element
1405 #[target_feature(enable = "neon" )]
1406 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1407 #[rustc_legacy_const_generics(1, 3)]
1408 pub unsafe fn vcopyq_laneq_u32
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint32x4_t
, b
: uint32x4_t
) -> uint32x4_t
{
1409 static_assert_imm2
!( LANE1
);
1410 static_assert_imm2
!( LANE2
);
1411 match LANE1
& 0b11 {
1412 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 , 2 , 3 ]),
1413 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 , 2 , 3 ]),
1414 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 4 + LANE2
as u32 , 3 ]),
1415 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 4 + LANE2
as u32 ]),
1416 _
=> unreachable_unchecked (),
1420 /// Insert vector element from another vector element
1422 #[target_feature(enable = "neon" )]
1423 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1424 #[rustc_legacy_const_generics(1, 3)]
1425 pub unsafe fn vcopyq_laneq_u64
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
1426 static_assert_imm1
!( LANE1
);
1427 static_assert_imm1
!( LANE2
);
1429 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
1430 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
1431 _
=> unreachable_unchecked (),
1435 /// Insert vector element from another vector element
1437 #[target_feature(enable = "neon" )]
1438 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1439 #[rustc_legacy_const_generics(1, 3)]
1440 pub unsafe fn vcopy_lane_p8
< const LANE1
: i32 , const LANE2
: i32 >( a
: poly8x8_t
, b
: poly8x8_t
) -> poly8x8_t
{
1441 static_assert_imm3
!( LANE1
);
1442 static_assert_imm3
!( LANE2
);
1443 match LANE1
& 0b111 {
1444 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1445 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1446 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1447 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1448 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 8 + LANE2
as u32 , 5 , 6 , 7 ]),
1449 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 8 + LANE2
as u32 , 6 , 7 ]),
1450 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 8 + LANE2
as u32 , 7 ]),
1451 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 8 + LANE2
as u32 ]),
1452 _
=> unreachable_unchecked (),
1456 /// Insert vector element from another vector element
1458 #[target_feature(enable = "neon" )]
1459 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1460 #[rustc_legacy_const_generics(1, 3)]
1461 pub unsafe fn vcopyq_laneq_p8
< const LANE1
: i32 , const LANE2
: i32 >( a
: poly8x16_t
, b
: poly8x16_t
) -> poly8x16_t
{
1462 static_assert_imm4
!( LANE1
);
1463 static_assert_imm4
!( LANE2
);
1464 match LANE1
& 0b1111 {
1465 0 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 16 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1466 1 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 16 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1467 2 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 16 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1468 3 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 16 + LANE2
as u32 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1469 4 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 16 + LANE2
as u32 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1470 5 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 16 + LANE2
as u32 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1471 6 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 16 + LANE2
as u32 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1472 7 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 + LANE2
as u32 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1473 8 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 16 + LANE2
as u32 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1474 9 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 16 + LANE2
as u32 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1475 10 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 16 + LANE2
as u32 , 11 , 12 , 13 , 14 , 15 ]),
1476 11 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 16 + LANE2
as u32 , 12 , 13 , 14 , 15 ]),
1477 12 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 16 + LANE2
as u32 , 13 , 14 , 15 ]),
1478 13 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 16 + LANE2
as u32 , 14 , 15 ]),
1479 14 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 16 + LANE2
as u32 , 15 ]),
1480 15 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 16 + LANE2
as u32 ]),
1481 _
=> unreachable_unchecked (),
1485 /// Insert vector element from another vector element
1487 #[target_feature(enable = "neon" )]
1488 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1489 #[rustc_legacy_const_generics(1, 3)]
1490 pub unsafe fn vcopy_lane_p16
< const LANE1
: i32 , const LANE2
: i32 >( a
: poly16x4_t
, b
: poly16x4_t
) -> poly16x4_t
{
1491 static_assert_imm2
!( LANE1
);
1492 static_assert_imm2
!( LANE2
);
1493 match LANE1
& 0b11 {
1494 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 , 2 , 3 ]),
1495 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 , 2 , 3 ]),
1496 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 4 + LANE2
as u32 , 3 ]),
1497 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 4 + LANE2
as u32 ]),
1498 _
=> unreachable_unchecked (),
1502 /// Insert vector element from another vector element
1504 #[target_feature(enable = "neon" )]
1505 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1506 #[rustc_legacy_const_generics(1, 3)]
1507 pub unsafe fn vcopyq_laneq_p16
< const LANE1
: i32 , const LANE2
: i32 >( a
: poly16x8_t
, b
: poly16x8_t
) -> poly16x8_t
{
1508 static_assert_imm3
!( LANE1
);
1509 static_assert_imm3
!( LANE2
);
1510 match LANE1
& 0b111 {
1511 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1512 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1513 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1514 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1515 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 8 + LANE2
as u32 , 5 , 6 , 7 ]),
1516 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 8 + LANE2
as u32 , 6 , 7 ]),
1517 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 8 + LANE2
as u32 , 7 ]),
1518 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 8 + LANE2
as u32 ]),
1519 _
=> unreachable_unchecked (),
1523 /// Insert vector element from another vector element
1525 #[target_feature(enable = "neon" )]
1526 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1527 #[rustc_legacy_const_generics(1, 3)]
1528 pub unsafe fn vcopyq_laneq_p64
< const LANE1
: i32 , const LANE2
: i32 >( a
: poly64x2_t
, b
: poly64x2_t
) -> poly64x2_t
{
1529 static_assert_imm1
!( LANE1
);
1530 static_assert_imm1
!( LANE2
);
1532 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
1533 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
1534 _
=> unreachable_unchecked (),
1538 /// Insert vector element from another vector element
1540 #[target_feature(enable = "neon" )]
1541 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1542 #[rustc_legacy_const_generics(1, 3)]
1543 pub unsafe fn vcopy_lane_f32
< const LANE1
: i32 , const LANE2
: i32 >( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
1544 static_assert_imm1
!( LANE1
);
1545 static_assert_imm1
!( LANE2
);
1547 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
1548 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
1549 _
=> unreachable_unchecked (),
1553 /// Insert vector element from another vector element
1555 #[target_feature(enable = "neon" )]
1556 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1557 #[rustc_legacy_const_generics(1, 3)]
1558 pub unsafe fn vcopyq_laneq_f32
< const LANE1
: i32 , const LANE2
: i32 >( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
1559 static_assert_imm2
!( LANE1
);
1560 static_assert_imm2
!( LANE2
);
1561 match LANE1
& 0b11 {
1562 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 , 2 , 3 ]),
1563 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 , 2 , 3 ]),
1564 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 4 + LANE2
as u32 , 3 ]),
1565 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 4 + LANE2
as u32 ]),
1566 _
=> unreachable_unchecked (),
1570 /// Insert vector element from another vector element
1572 #[target_feature(enable = "neon" )]
1573 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1574 #[rustc_legacy_const_generics(1, 3)]
1575 pub unsafe fn vcopyq_laneq_f64
< const LANE1
: i32 , const LANE2
: i32 >( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
1576 static_assert_imm1
!( LANE1
);
1577 static_assert_imm1
!( LANE2
);
1579 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
1580 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
1581 _
=> unreachable_unchecked (),
1585 /// Insert vector element from another vector element
1587 #[target_feature(enable = "neon" )]
1588 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1589 #[rustc_legacy_const_generics(1, 3)]
1590 pub unsafe fn vcopy_laneq_s8
< const LANE1
: i32 , const LANE2
: i32 >( a
: int8x8_t
, b
: int8x16_t
) -> int8x8_t
{
1591 static_assert_imm3
!( LANE1
);
1592 static_assert_imm4
!( LANE2
);
1593 let a
: int8x16_t
= simd_shuffle16
!( a
, a
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
1594 match LANE1
& 0b111 {
1595 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 16 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1596 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 16 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1597 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 16 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1598 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 16 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1599 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 16 + LANE2
as u32 , 5 , 6 , 7 ]),
1600 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 16 + LANE2
as u32 , 6 , 7 ]),
1601 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 16 + LANE2
as u32 , 7 ]),
1602 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 + LANE2
as u32 ]),
1603 _
=> unreachable_unchecked (),
1607 /// Insert vector element from another vector element
1609 #[target_feature(enable = "neon" )]
1610 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1611 #[rustc_legacy_const_generics(1, 3)]
1612 pub unsafe fn vcopy_laneq_s16
< const LANE1
: i32 , const LANE2
: i32 >( a
: int16x4_t
, b
: int16x8_t
) -> int16x4_t
{
1613 static_assert_imm2
!( LANE1
);
1614 static_assert_imm3
!( LANE2
);
1615 let a
: int16x8_t
= simd_shuffle8
!( a
, a
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]);
1616 match LANE1
& 0b11 {
1617 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 ]),
1618 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 ]),
1619 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 ]),
1620 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 ]),
1621 _
=> unreachable_unchecked (),
1625 /// Insert vector element from another vector element
1627 #[target_feature(enable = "neon" )]
1628 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1629 #[rustc_legacy_const_generics(1, 3)]
1630 pub unsafe fn vcopy_laneq_s32
< const LANE1
: i32 , const LANE2
: i32 >( a
: int32x2_t
, b
: int32x4_t
) -> int32x2_t
{
1631 static_assert_imm1
!( LANE1
);
1632 static_assert_imm2
!( LANE2
);
1633 let a
: int32x4_t
= simd_shuffle4
!( a
, a
, [ 0 , 1 , 2 , 3 ]);
1635 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 ]),
1636 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 ]),
1637 _
=> unreachable_unchecked (),
1641 /// Insert vector element from another vector element
1643 #[target_feature(enable = "neon" )]
1644 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1645 #[rustc_legacy_const_generics(1, 3)]
1646 pub unsafe fn vcopy_laneq_u8
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint8x8_t
, b
: uint8x16_t
) -> uint8x8_t
{
1647 static_assert_imm3
!( LANE1
);
1648 static_assert_imm4
!( LANE2
);
1649 let a
: uint8x16_t
= simd_shuffle16
!( a
, a
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
1650 match LANE1
& 0b111 {
1651 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 16 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1652 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 16 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1653 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 16 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1654 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 16 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1655 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 16 + LANE2
as u32 , 5 , 6 , 7 ]),
1656 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 16 + LANE2
as u32 , 6 , 7 ]),
1657 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 16 + LANE2
as u32 , 7 ]),
1658 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 + LANE2
as u32 ]),
1659 _
=> unreachable_unchecked (),
1663 /// Insert vector element from another vector element
1665 #[target_feature(enable = "neon" )]
1666 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1667 #[rustc_legacy_const_generics(1, 3)]
1668 pub unsafe fn vcopy_laneq_u16
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint16x4_t
, b
: uint16x8_t
) -> uint16x4_t
{
1669 static_assert_imm2
!( LANE1
);
1670 static_assert_imm3
!( LANE2
);
1671 let a
: uint16x8_t
= simd_shuffle8
!( a
, a
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]);
1672 match LANE1
& 0b11 {
1673 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 ]),
1674 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 ]),
1675 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 ]),
1676 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 ]),
1677 _
=> unreachable_unchecked (),
1681 /// Insert vector element from another vector element
1683 #[target_feature(enable = "neon" )]
1684 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1685 #[rustc_legacy_const_generics(1, 3)]
1686 pub unsafe fn vcopy_laneq_u32
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint32x2_t
, b
: uint32x4_t
) -> uint32x2_t
{
1687 static_assert_imm1
!( LANE1
);
1688 static_assert_imm2
!( LANE2
);
1689 let a
: uint32x4_t
= simd_shuffle4
!( a
, a
, [ 0 , 1 , 2 , 3 ]);
1691 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 ]),
1692 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 ]),
1693 _
=> unreachable_unchecked (),
1697 /// Insert vector element from another vector element
1699 #[target_feature(enable = "neon" )]
1700 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1701 #[rustc_legacy_const_generics(1, 3)]
1702 pub unsafe fn vcopy_laneq_p8
< const LANE1
: i32 , const LANE2
: i32 >( a
: poly8x8_t
, b
: poly8x16_t
) -> poly8x8_t
{
1703 static_assert_imm3
!( LANE1
);
1704 static_assert_imm4
!( LANE2
);
1705 let a
: poly8x16_t
= simd_shuffle16
!( a
, a
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
1706 match LANE1
& 0b111 {
1707 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 16 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1708 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 16 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1709 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 16 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1710 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 16 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1711 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 16 + LANE2
as u32 , 5 , 6 , 7 ]),
1712 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 16 + LANE2
as u32 , 6 , 7 ]),
1713 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 16 + LANE2
as u32 , 7 ]),
1714 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 + LANE2
as u32 ]),
1715 _
=> unreachable_unchecked (),
1719 /// Insert vector element from another vector element
1721 #[target_feature(enable = "neon" )]
1722 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1723 #[rustc_legacy_const_generics(1, 3)]
1724 pub unsafe fn vcopy_laneq_p16
< const LANE1
: i32 , const LANE2
: i32 >( a
: poly16x4_t
, b
: poly16x8_t
) -> poly16x4_t
{
1725 static_assert_imm2
!( LANE1
);
1726 static_assert_imm3
!( LANE2
);
1727 let a
: poly16x8_t
= simd_shuffle8
!( a
, a
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]);
1728 match LANE1
& 0b11 {
1729 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 ]),
1730 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 ]),
1731 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 ]),
1732 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 ]),
1733 _
=> unreachable_unchecked (),
1737 /// Insert vector element from another vector element
1739 #[target_feature(enable = "neon" )]
1740 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1741 #[rustc_legacy_const_generics(1, 3)]
1742 pub unsafe fn vcopy_laneq_f32
< const LANE1
: i32 , const LANE2
: i32 >( a
: float32x2_t
, b
: float32x4_t
) -> float32x2_t
{
1743 static_assert_imm1
!( LANE1
);
1744 static_assert_imm2
!( LANE2
);
1745 let a
: float32x4_t
= simd_shuffle4
!( a
, a
, [ 0 , 1 , 2 , 3 ]);
1747 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 ]),
1748 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 ]),
1749 _
=> unreachable_unchecked (),
1753 /// Insert vector element from another vector element
1755 #[target_feature(enable = "neon" )]
1756 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1757 #[rustc_legacy_const_generics(1, 3)]
1758 pub unsafe fn vcopyq_lane_s8
< const LANE1
: i32 , const LANE2
: i32 >( a
: int8x16_t
, b
: int8x8_t
) -> int8x16_t
{
1759 static_assert_imm4
!( LANE1
);
1760 static_assert_imm3
!( LANE2
);
1761 let b
: int8x16_t
= simd_shuffle16
!( b
, b
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
1762 match LANE1
& 0b1111 {
1763 0 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 16 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1764 1 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 16 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1765 2 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 16 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1766 3 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 16 + LANE2
as u32 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1767 4 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 16 + LANE2
as u32 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1768 5 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 16 + LANE2
as u32 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1769 6 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 16 + LANE2
as u32 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1770 7 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 + LANE2
as u32 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1771 8 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 16 + LANE2
as u32 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1772 9 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 16 + LANE2
as u32 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1773 10 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 16 + LANE2
as u32 , 11 , 12 , 13 , 14 , 15 ]),
1774 11 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 16 + LANE2
as u32 , 12 , 13 , 14 , 15 ]),
1775 12 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 16 + LANE2
as u32 , 13 , 14 , 15 ]),
1776 13 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 16 + LANE2
as u32 , 14 , 15 ]),
1777 14 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 16 + LANE2
as u32 , 15 ]),
1778 15 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 16 + LANE2
as u32 ]),
1779 _
=> unreachable_unchecked (),
1783 /// Insert vector element from another vector element
1785 #[target_feature(enable = "neon" )]
1786 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1787 #[rustc_legacy_const_generics(1, 3)]
1788 pub unsafe fn vcopyq_lane_s16
< const LANE1
: i32 , const LANE2
: i32 >( a
: int16x8_t
, b
: int16x4_t
) -> int16x8_t
{
1789 static_assert_imm3
!( LANE1
);
1790 static_assert_imm2
!( LANE2
);
1791 let b
: int16x8_t
= simd_shuffle8
!( b
, b
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]);
1792 match LANE1
& 0b111 {
1793 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1794 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1795 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1796 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1797 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 8 + LANE2
as u32 , 5 , 6 , 7 ]),
1798 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 8 + LANE2
as u32 , 6 , 7 ]),
1799 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 8 + LANE2
as u32 , 7 ]),
1800 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 8 + LANE2
as u32 ]),
1801 _
=> unreachable_unchecked (),
1805 /// Insert vector element from another vector element
1807 #[target_feature(enable = "neon" )]
1808 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1809 #[rustc_legacy_const_generics(1, 3)]
1810 pub unsafe fn vcopyq_lane_s32
< const LANE1
: i32 , const LANE2
: i32 >( a
: int32x4_t
, b
: int32x2_t
) -> int32x4_t
{
1811 static_assert_imm2
!( LANE1
);
1812 static_assert_imm1
!( LANE2
);
1813 let b
: int32x4_t
= simd_shuffle4
!( b
, b
, [ 0 , 1 , 2 , 3 ]);
1814 match LANE1
& 0b11 {
1815 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 , 2 , 3 ]),
1816 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 , 2 , 3 ]),
1817 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 4 + LANE2
as u32 , 3 ]),
1818 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 4 + LANE2
as u32 ]),
1819 _
=> unreachable_unchecked (),
1823 /// Insert vector element from another vector element
1825 #[target_feature(enable = "neon" )]
1826 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1827 #[rustc_legacy_const_generics(1, 3)]
1828 pub unsafe fn vcopyq_lane_u8
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint8x16_t
, b
: uint8x8_t
) -> uint8x16_t
{
1829 static_assert_imm4
!( LANE1
);
1830 static_assert_imm3
!( LANE2
);
1831 let b
: uint8x16_t
= simd_shuffle16
!( b
, b
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
1832 match LANE1
& 0b1111 {
1833 0 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 16 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1834 1 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 16 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1835 2 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 16 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1836 3 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 16 + LANE2
as u32 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1837 4 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 16 + LANE2
as u32 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1838 5 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 16 + LANE2
as u32 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1839 6 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 16 + LANE2
as u32 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1840 7 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 + LANE2
as u32 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1841 8 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 16 + LANE2
as u32 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1842 9 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 16 + LANE2
as u32 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1843 10 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 16 + LANE2
as u32 , 11 , 12 , 13 , 14 , 15 ]),
1844 11 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 16 + LANE2
as u32 , 12 , 13 , 14 , 15 ]),
1845 12 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 16 + LANE2
as u32 , 13 , 14 , 15 ]),
1846 13 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 16 + LANE2
as u32 , 14 , 15 ]),
1847 14 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 16 + LANE2
as u32 , 15 ]),
1848 15 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 16 + LANE2
as u32 ]),
1849 _
=> unreachable_unchecked (),
1853 /// Insert vector element from another vector element
1855 #[target_feature(enable = "neon" )]
1856 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1857 #[rustc_legacy_const_generics(1, 3)]
1858 pub unsafe fn vcopyq_lane_u16
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint16x8_t
, b
: uint16x4_t
) -> uint16x8_t
{
1859 static_assert_imm3
!( LANE1
);
1860 static_assert_imm2
!( LANE2
);
1861 let b
: uint16x8_t
= simd_shuffle8
!( b
, b
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]);
1862 match LANE1
& 0b111 {
1863 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1864 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1865 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1866 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1867 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 8 + LANE2
as u32 , 5 , 6 , 7 ]),
1868 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 8 + LANE2
as u32 , 6 , 7 ]),
1869 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 8 + LANE2
as u32 , 7 ]),
1870 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 8 + LANE2
as u32 ]),
1871 _
=> unreachable_unchecked (),
1875 /// Insert vector element from another vector element
1877 #[target_feature(enable = "neon" )]
1878 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1879 #[rustc_legacy_const_generics(1, 3)]
1880 pub unsafe fn vcopyq_lane_u32
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint32x4_t
, b
: uint32x2_t
) -> uint32x4_t
{
1881 static_assert_imm2
!( LANE1
);
1882 static_assert_imm1
!( LANE2
);
1883 let b
: uint32x4_t
= simd_shuffle4
!( b
, b
, [ 0 , 1 , 2 , 3 ]);
1884 match LANE1
& 0b11 {
1885 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 , 2 , 3 ]),
1886 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 , 2 , 3 ]),
1887 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 4 + LANE2
as u32 , 3 ]),
1888 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 4 + LANE2
as u32 ]),
1889 _
=> unreachable_unchecked (),
1893 /// Insert vector element from another vector element
1895 #[target_feature(enable = "neon" )]
1896 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1897 #[rustc_legacy_const_generics(1, 3)]
1898 pub unsafe fn vcopyq_lane_p8
< const LANE1
: i32 , const LANE2
: i32 >( a
: poly8x16_t
, b
: poly8x8_t
) -> poly8x16_t
{
1899 static_assert_imm4
!( LANE1
);
1900 static_assert_imm3
!( LANE2
);
1901 let b
: poly8x16_t
= simd_shuffle16
!( b
, b
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
1902 match LANE1
& 0b1111 {
1903 0 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 16 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1904 1 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 16 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1905 2 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 16 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1906 3 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 16 + LANE2
as u32 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1907 4 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 16 + LANE2
as u32 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1908 5 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 16 + LANE2
as u32 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1909 6 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 16 + LANE2
as u32 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1910 7 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 16 + LANE2
as u32 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1911 8 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 16 + LANE2
as u32 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1912 9 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 16 + LANE2
as u32 , 10 , 11 , 12 , 13 , 14 , 15 ]),
1913 10 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 16 + LANE2
as u32 , 11 , 12 , 13 , 14 , 15 ]),
1914 11 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 16 + LANE2
as u32 , 12 , 13 , 14 , 15 ]),
1915 12 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 16 + LANE2
as u32 , 13 , 14 , 15 ]),
1916 13 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 16 + LANE2
as u32 , 14 , 15 ]),
1917 14 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 16 + LANE2
as u32 , 15 ]),
1918 15 => simd_shuffle16
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 16 + LANE2
as u32 ]),
1919 _
=> unreachable_unchecked (),
1923 /// Insert vector element from another vector element
1925 #[target_feature(enable = "neon" )]
1926 #[cfg_attr(test, assert_instr(mov, LANE1 = 0, LANE2 = 1))]
1927 #[rustc_legacy_const_generics(1, 3)]
1928 pub unsafe fn vcopyq_lane_p16
< const LANE1
: i32 , const LANE2
: i32 >( a
: poly16x8_t
, b
: poly16x4_t
) -> poly16x8_t
{
1929 static_assert_imm3
!( LANE1
);
1930 static_assert_imm2
!( LANE2
);
1931 let b
: poly16x8_t
= simd_shuffle8
!( b
, b
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]);
1932 match LANE1
& 0b111 {
1933 0 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 8 + LANE2
as u32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1934 1 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 8 + LANE2
as u32 , 2 , 3 , 4 , 5 , 6 , 7 ]),
1935 2 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 8 + LANE2
as u32 , 3 , 4 , 5 , 6 , 7 ]),
1936 3 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 8 + LANE2
as u32 , 4 , 5 , 6 , 7 ]),
1937 4 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 8 + LANE2
as u32 , 5 , 6 , 7 ]),
1938 5 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 8 + LANE2
as u32 , 6 , 7 ]),
1939 6 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 8 + LANE2
as u32 , 7 ]),
1940 7 => simd_shuffle8
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 8 + LANE2
as u32 ]),
1941 _
=> unreachable_unchecked (),
1945 /// Insert vector element from another vector element
1947 #[target_feature(enable = "neon" )]
1948 #[cfg_attr(test, assert_instr(zip1, LANE1 = 1, LANE2 = 0))]
1949 #[rustc_legacy_const_generics(1, 3)]
1950 pub unsafe fn vcopyq_lane_s64
< const LANE1
: i32 , const LANE2
: i32 >( a
: int64x2_t
, b
: int64x1_t
) -> int64x2_t
{
1951 static_assert_imm1
!( LANE1
);
1952 static_assert
!( LANE2
: i32 where LANE2
== 0 );
1953 let b
: int64x2_t
= simd_shuffle2
!( b
, b
, [ 0 , 1 ]);
1955 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
1956 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
1957 _
=> unreachable_unchecked (),
1961 /// Insert vector element from another vector element
1963 #[target_feature(enable = "neon" )]
1964 #[cfg_attr(test, assert_instr(zip1, LANE1 = 1, LANE2 = 0))]
1965 #[rustc_legacy_const_generics(1, 3)]
1966 pub unsafe fn vcopyq_lane_u64
< const LANE1
: i32 , const LANE2
: i32 >( a
: uint64x2_t
, b
: uint64x1_t
) -> uint64x2_t
{
1967 static_assert_imm1
!( LANE1
);
1968 static_assert
!( LANE2
: i32 where LANE2
== 0 );
1969 let b
: uint64x2_t
= simd_shuffle2
!( b
, b
, [ 0 , 1 ]);
1971 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
1972 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
1973 _
=> unreachable_unchecked (),
1977 /// Insert vector element from another vector element
1979 #[target_feature(enable = "neon" )]
1980 #[cfg_attr(test, assert_instr(zip1, LANE1 = 1, LANE2 = 0))]
1981 #[rustc_legacy_const_generics(1, 3)]
1982 pub unsafe fn vcopyq_lane_p64
< const LANE1
: i32 , const LANE2
: i32 >( a
: poly64x2_t
, b
: poly64x1_t
) -> poly64x2_t
{
1983 static_assert_imm1
!( LANE1
);
1984 static_assert
!( LANE2
: i32 where LANE2
== 0 );
1985 let b
: poly64x2_t
= simd_shuffle2
!( b
, b
, [ 0 , 1 ]);
1987 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
1988 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
1989 _
=> unreachable_unchecked (),
1993 /// Insert vector element from another vector element
1995 #[target_feature(enable = "neon" )]
1996 #[cfg_attr(test, assert_instr(mov, LANE1 = 1, LANE2 = 0))]
1997 #[rustc_legacy_const_generics(1, 3)]
1998 pub unsafe fn vcopyq_lane_f32
< const LANE1
: i32 , const LANE2
: i32 >( a
: float32x4_t
, b
: float32x2_t
) -> float32x4_t
{
1999 static_assert_imm2
!( LANE1
);
2000 static_assert_imm1
!( LANE2
);
2001 let b
: float32x4_t
= simd_shuffle4
!( b
, b
, [ 0 , 1 , 2 , 3 ]);
2002 match LANE1
& 0b11 {
2003 0 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 4 + LANE2
as u32 , 1 , 2 , 3 ]),
2004 1 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 4 + LANE2
as u32 , 2 , 3 ]),
2005 2 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 4 + LANE2
as u32 , 3 ]),
2006 3 => simd_shuffle4
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 1 , 2 , 4 + LANE2
as u32 ]),
2007 _
=> unreachable_unchecked (),
2011 /// Insert vector element from another vector element
2013 #[target_feature(enable = "neon" )]
2014 #[cfg_attr(test, assert_instr(zip1, LANE1 = 1, LANE2 = 0))]
2015 #[rustc_legacy_const_generics(1, 3)]
2016 pub unsafe fn vcopyq_lane_f64
< const LANE1
: i32 , const LANE2
: i32 >( a
: float64x2_t
, b
: float64x1_t
) -> float64x2_t
{
2017 static_assert_imm1
!( LANE1
);
2018 static_assert
!( LANE2
: i32 where LANE2
== 0 );
2019 let b
: float64x2_t
= simd_shuffle2
!( b
, b
, [ 0 , 1 ]);
2021 0 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 2 + LANE2
as u32 , 1 ]),
2022 1 => simd_shuffle2
!( a
, b
, < const LANE1
: i32 , const LANE2
: i32 > [ 0 , 2 + LANE2
as u32 ]),
2023 _
=> unreachable_unchecked (),
2027 /// Insert vector element from another vector element
2029 #[target_feature(enable = "neon" )]
2030 #[cfg_attr(test, assert_instr(nop))]
2031 pub unsafe fn vcreate_f64 ( a
: u64 ) -> float64x1_t
{
2035 /// Fixed-point convert to floating-point
2037 #[target_feature(enable = "neon" )]
2038 #[cfg_attr(test, assert_instr(scvtf))]
2039 pub unsafe fn vcvt_f64_s64 ( a
: int64x1_t
) -> float64x1_t
{
2043 /// Fixed-point convert to floating-point
2045 #[target_feature(enable = "neon" )]
2046 #[cfg_attr(test, assert_instr(scvtf))]
2047 pub unsafe fn vcvtq_f64_s64 ( a
: int64x2_t
) -> float64x2_t
{
2051 /// Fixed-point convert to floating-point
2053 #[target_feature(enable = "neon" )]
2054 #[cfg_attr(test, assert_instr(ucvtf))]
2055 pub unsafe fn vcvt_f64_u64 ( a
: uint64x1_t
) -> float64x1_t
{
2059 /// Fixed-point convert to floating-point
2061 #[target_feature(enable = "neon" )]
2062 #[cfg_attr(test, assert_instr(ucvtf))]
2063 pub unsafe fn vcvtq_f64_u64 ( a
: uint64x2_t
) -> float64x2_t
{
2067 /// Floating-point convert to higher precision long
2069 #[target_feature(enable = "neon" )]
2070 #[cfg_attr(test, assert_instr(fcvtl))]
2071 pub unsafe fn vcvt_f64_f32 ( a
: float32x2_t
) -> float64x2_t
{
2075 /// Floating-point convert to higher precision long
2077 #[target_feature(enable = "neon" )]
2078 #[cfg_attr(test, assert_instr(fcvtl))]
2079 pub unsafe fn vcvt_high_f64_f32 ( a
: float32x4_t
) -> float64x2_t
{
2080 let b
: float32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
2084 /// Floating-point convert to lower precision narrow
2086 #[target_feature(enable = "neon" )]
2087 #[cfg_attr(test, assert_instr(fcvtn))]
2088 pub unsafe fn vcvt_f32_f64 ( a
: float64x2_t
) -> float32x2_t
{
2092 /// Floating-point convert to lower precision narrow
2094 #[target_feature(enable = "neon" )]
2095 #[cfg_attr(test, assert_instr(fcvtn))]
2096 pub unsafe fn vcvt_high_f32_f64 ( a
: float32x2_t
, b
: float64x2_t
) -> float32x4_t
{
2097 simd_shuffle4
!( a
, simd_cast ( b
), [ 0 , 1 , 2 , 3 ])
2100 /// Floating-point convert to lower precision narrow, rounding to odd
2102 #[target_feature(enable = "neon" )]
2103 #[cfg_attr(test, assert_instr(fcvtxn))]
2104 pub unsafe fn vcvtx_f32_f64 ( a
: float64x2_t
) -> float32x2_t
{
2105 #[allow(improper_ctypes)]
2107 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtxn.v2f32.v2f64" )]
2108 fn vcvtx_f32_f64_ ( a
: float64x2_t
) -> float32x2_t
;
2113 /// Floating-point convert to lower precision narrow, rounding to odd
2115 #[target_feature(enable = "neon" )]
2116 #[cfg_attr(test, assert_instr(fcvtxn))]
2117 pub unsafe fn vcvtx_high_f32_f64 ( a
: float32x2_t
, b
: float64x2_t
) -> float32x4_t
{
2118 simd_shuffle4
!( a
, vcvtx_f32_f64 ( b
), [ 0 , 1 , 2 , 3 ])
2121 /// Fixed-point convert to floating-point
2123 #[target_feature(enable = "neon" )]
2124 #[cfg_attr(test, assert_instr(scvtf, N = 2))]
2125 #[rustc_legacy_const_generics(1)]
2126 pub unsafe fn vcvt_n_f64_s64
< const N
: i32 >( a
: int64x1_t
) -> float64x1_t
{
2127 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2128 #[allow(improper_ctypes)]
2130 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfxs2fp.v1f64.v1i64" )]
2131 fn vcvt_n_f64_s64_ ( a
: int64x1_t
, n
: i32 ) -> float64x1_t
;
2133 vcvt_n_f64_s64_ ( a
, N
)
2136 /// Fixed-point convert to floating-point
2138 #[target_feature(enable = "neon" )]
2139 #[cfg_attr(test, assert_instr(scvtf, N = 2))]
2140 #[rustc_legacy_const_generics(1)]
2141 pub unsafe fn vcvtq_n_f64_s64
< const N
: i32 >( a
: int64x2_t
) -> float64x2_t
{
2142 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2143 #[allow(improper_ctypes)]
2145 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfxs2fp.v2f64.v2i64" )]
2146 fn vcvtq_n_f64_s64_ ( a
: int64x2_t
, n
: i32 ) -> float64x2_t
;
2148 vcvtq_n_f64_s64_ ( a
, N
)
2151 /// Fixed-point convert to floating-point
2153 #[target_feature(enable = "neon" )]
2154 #[cfg_attr(test, assert_instr(scvtf, N = 2))]
2155 #[rustc_legacy_const_generics(1)]
2156 pub unsafe fn vcvts_n_f32_s32
< const N
: i32 >( a
: i32 ) -> f32 {
2157 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
2158 #[allow(improper_ctypes)]
2160 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfxs2fp.f32.i32" )]
2161 fn vcvts_n_f32_s32_ ( a
: i32 , n
: i32 ) -> f32 ;
2163 vcvts_n_f32_s32_ ( a
, N
)
2166 /// Fixed-point convert to floating-point
2168 #[target_feature(enable = "neon" )]
2169 #[cfg_attr(test, assert_instr(scvtf, N = 2))]
2170 #[rustc_legacy_const_generics(1)]
2171 pub unsafe fn vcvtd_n_f64_s64
< const N
: i32 >( a
: i64 ) -> f64 {
2172 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2173 #[allow(improper_ctypes)]
2175 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfxs2fp.f64.i64" )]
2176 fn vcvtd_n_f64_s64_ ( a
: i64 , n
: i32 ) -> f64 ;
2178 vcvtd_n_f64_s64_ ( a
, N
)
2181 /// Fixed-point convert to floating-point
2183 #[target_feature(enable = "neon" )]
2184 #[cfg_attr(test, assert_instr(ucvtf, N = 2))]
2185 #[rustc_legacy_const_generics(1)]
2186 pub unsafe fn vcvt_n_f64_u64
< const N
: i32 >( a
: uint64x1_t
) -> float64x1_t
{
2187 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2188 #[allow(improper_ctypes)]
2190 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfxu2fp.v1f64.v1i64" )]
2191 fn vcvt_n_f64_u64_ ( a
: uint64x1_t
, n
: i32 ) -> float64x1_t
;
2193 vcvt_n_f64_u64_ ( a
, N
)
2196 /// Fixed-point convert to floating-point
2198 #[target_feature(enable = "neon" )]
2199 #[cfg_attr(test, assert_instr(ucvtf, N = 2))]
2200 #[rustc_legacy_const_generics(1)]
2201 pub unsafe fn vcvtq_n_f64_u64
< const N
: i32 >( a
: uint64x2_t
) -> float64x2_t
{
2202 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2203 #[allow(improper_ctypes)]
2205 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfxu2fp.v2f64.v2i64" )]
2206 fn vcvtq_n_f64_u64_ ( a
: uint64x2_t
, n
: i32 ) -> float64x2_t
;
2208 vcvtq_n_f64_u64_ ( a
, N
)
2211 /// Fixed-point convert to floating-point
2213 #[target_feature(enable = "neon" )]
2214 #[cfg_attr(test, assert_instr(ucvtf, N = 2))]
2215 #[rustc_legacy_const_generics(1)]
2216 pub unsafe fn vcvts_n_f32_u32
< const N
: i32 >( a
: u32 ) -> f32 {
2217 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
2218 #[allow(improper_ctypes)]
2220 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfxu2fp.f32.i32" )]
2221 fn vcvts_n_f32_u32_ ( a
: u32 , n
: i32 ) -> f32 ;
2223 vcvts_n_f32_u32_ ( a
, N
)
2226 /// Fixed-point convert to floating-point
2228 #[target_feature(enable = "neon" )]
2229 #[cfg_attr(test, assert_instr(ucvtf, N = 2))]
2230 #[rustc_legacy_const_generics(1)]
2231 pub unsafe fn vcvtd_n_f64_u64
< const N
: i32 >( a
: u64 ) -> f64 {
2232 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2233 #[allow(improper_ctypes)]
2235 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfxu2fp.f64.i64" )]
2236 fn vcvtd_n_f64_u64_ ( a
: u64 , n
: i32 ) -> f64 ;
2238 vcvtd_n_f64_u64_ ( a
, N
)
2241 /// Floating-point convert to fixed-point, rounding toward zero
2243 #[target_feature(enable = "neon" )]
2244 #[cfg_attr(test, assert_instr(fcvtzs, N = 2))]
2245 #[rustc_legacy_const_generics(1)]
2246 pub unsafe fn vcvt_n_s64_f64
< const N
: i32 >( a
: float64x1_t
) -> int64x1_t
{
2247 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2248 #[allow(improper_ctypes)]
2250 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfp2fxs.v1i64.v1f64" )]
2251 fn vcvt_n_s64_f64_ ( a
: float64x1_t
, n
: i32 ) -> int64x1_t
;
2253 vcvt_n_s64_f64_ ( a
, N
)
2256 /// Floating-point convert to fixed-point, rounding toward zero
2258 #[target_feature(enable = "neon" )]
2259 #[cfg_attr(test, assert_instr(fcvtzs, N = 2))]
2260 #[rustc_legacy_const_generics(1)]
2261 pub unsafe fn vcvtq_n_s64_f64
< const N
: i32 >( a
: float64x2_t
) -> int64x2_t
{
2262 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2263 #[allow(improper_ctypes)]
2265 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfp2fxs.v2i64.v2f64" )]
2266 fn vcvtq_n_s64_f64_ ( a
: float64x2_t
, n
: i32 ) -> int64x2_t
;
2268 vcvtq_n_s64_f64_ ( a
, N
)
2271 /// Floating-point convert to fixed-point, rounding toward zero
2273 #[target_feature(enable = "neon" )]
2274 #[cfg_attr(test, assert_instr(fcvtzs, N = 2))]
2275 #[rustc_legacy_const_generics(1)]
2276 pub unsafe fn vcvts_n_s32_f32
< const N
: i32 >( a
: f32 ) -> i32 {
2277 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
2278 #[allow(improper_ctypes)]
2280 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfp2fxs.i32.f32" )]
2281 fn vcvts_n_s32_f32_ ( a
: f32 , n
: i32 ) -> i32 ;
2283 vcvts_n_s32_f32_ ( a
, N
)
2286 /// Floating-point convert to fixed-point, rounding toward zero
2288 #[target_feature(enable = "neon" )]
2289 #[cfg_attr(test, assert_instr(fcvtzs, N = 2))]
2290 #[rustc_legacy_const_generics(1)]
2291 pub unsafe fn vcvtd_n_s64_f64
< const N
: i32 >( a
: f64 ) -> i64 {
2292 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2293 #[allow(improper_ctypes)]
2295 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfp2fxs.i64.f64" )]
2296 fn vcvtd_n_s64_f64_ ( a
: f64 , n
: i32 ) -> i64 ;
2298 vcvtd_n_s64_f64_ ( a
, N
)
2301 /// Floating-point convert to fixed-point, rounding toward zero
2303 #[target_feature(enable = "neon" )]
2304 #[cfg_attr(test, assert_instr(fcvtzu, N = 2))]
2305 #[rustc_legacy_const_generics(1)]
2306 pub unsafe fn vcvt_n_u64_f64
< const N
: i32 >( a
: float64x1_t
) -> uint64x1_t
{
2307 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2308 #[allow(improper_ctypes)]
2310 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfp2fxu.v1i64.v1f64" )]
2311 fn vcvt_n_u64_f64_ ( a
: float64x1_t
, n
: i32 ) -> uint64x1_t
;
2313 vcvt_n_u64_f64_ ( a
, N
)
2316 /// Floating-point convert to fixed-point, rounding toward zero
2318 #[target_feature(enable = "neon" )]
2319 #[cfg_attr(test, assert_instr(fcvtzu, N = 2))]
2320 #[rustc_legacy_const_generics(1)]
2321 pub unsafe fn vcvtq_n_u64_f64
< const N
: i32 >( a
: float64x2_t
) -> uint64x2_t
{
2322 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2323 #[allow(improper_ctypes)]
2325 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfp2fxu.v2i64.v2f64" )]
2326 fn vcvtq_n_u64_f64_ ( a
: float64x2_t
, n
: i32 ) -> uint64x2_t
;
2328 vcvtq_n_u64_f64_ ( a
, N
)
2331 /// Floating-point convert to fixed-point, rounding toward zero
2333 #[target_feature(enable = "neon" )]
2334 #[cfg_attr(test, assert_instr(fcvtzu, N = 2))]
2335 #[rustc_legacy_const_generics(1)]
2336 pub unsafe fn vcvts_n_u32_f32
< const N
: i32 >( a
: f32 ) -> u32 {
2337 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
2338 #[allow(improper_ctypes)]
2340 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfp2fxu.i32.f32" )]
2341 fn vcvts_n_u32_f32_ ( a
: f32 , n
: i32 ) -> u32 ;
2343 vcvts_n_u32_f32_ ( a
, N
)
2346 /// Floating-point convert to fixed-point, rounding toward zero
2348 #[target_feature(enable = "neon" )]
2349 #[cfg_attr(test, assert_instr(fcvtzu, N = 2))]
2350 #[rustc_legacy_const_generics(1)]
2351 pub unsafe fn vcvtd_n_u64_f64
< const N
: i32 >( a
: f64 ) -> u64 {
2352 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
2353 #[allow(improper_ctypes)]
2355 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.vcvtfp2fxu.i64.f64" )]
2356 fn vcvtd_n_u64_f64_ ( a
: f64 , n
: i32 ) -> u64 ;
2358 vcvtd_n_u64_f64_ ( a
, N
)
2361 /// Fixed-point convert to floating-point
2363 #[target_feature(enable = "neon" )]
2364 #[cfg_attr(test, assert_instr(scvtf))]
2365 pub unsafe fn vcvts_f32_s32 ( a
: i32 ) -> f32 {
2369 /// Fixed-point convert to floating-point
2371 #[target_feature(enable = "neon" )]
2372 #[cfg_attr(test, assert_instr(scvtf))]
2373 pub unsafe fn vcvtd_f64_s64 ( a
: i64 ) -> f64 {
2377 /// Fixed-point convert to floating-point
2379 #[target_feature(enable = "neon" )]
2380 #[cfg_attr(test, assert_instr(ucvtf))]
2381 pub unsafe fn vcvts_f32_u32 ( a
: u32 ) -> f32 {
2385 /// Fixed-point convert to floating-point
2387 #[target_feature(enable = "neon" )]
2388 #[cfg_attr(test, assert_instr(ucvtf))]
2389 pub unsafe fn vcvtd_f64_u64 ( a
: u64 ) -> f64 {
2393 /// Fixed-point convert to floating-point
2395 #[target_feature(enable = "neon" )]
2396 #[cfg_attr(test, assert_instr(fcvtzs))]
2397 pub unsafe fn vcvts_s32_f32 ( a
: f32 ) -> i32 {
2401 /// Fixed-point convert to floating-point
2403 #[target_feature(enable = "neon" )]
2404 #[cfg_attr(test, assert_instr(fcvtzs))]
2405 pub unsafe fn vcvtd_s64_f64 ( a
: f64 ) -> i64 {
2409 /// Fixed-point convert to floating-point
2411 #[target_feature(enable = "neon" )]
2412 #[cfg_attr(test, assert_instr(fcvtzu))]
2413 pub unsafe fn vcvts_u32_f32 ( a
: f32 ) -> u32 {
2417 /// Fixed-point convert to floating-point
2419 #[target_feature(enable = "neon" )]
2420 #[cfg_attr(test, assert_instr(fcvtzu))]
2421 pub unsafe fn vcvtd_u64_f64 ( a
: f64 ) -> u64 {
2425 /// Floating-point convert to signed fixed-point, rounding toward zero
2427 #[target_feature(enable = "neon" )]
2428 #[cfg_attr(test, assert_instr(fcvtzs))]
2429 pub unsafe fn vcvt_s64_f64 ( a
: float64x1_t
) -> int64x1_t
{
2430 #[allow(improper_ctypes)]
2432 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.fptosi.sat.v1i64.v1f64" )]
2433 fn vcvt_s64_f64_ ( a
: float64x1_t
) -> int64x1_t
;
2438 /// Floating-point convert to signed fixed-point, rounding toward zero
2440 #[target_feature(enable = "neon" )]
2441 #[cfg_attr(test, assert_instr(fcvtzs))]
2442 pub unsafe fn vcvtq_s64_f64 ( a
: float64x2_t
) -> int64x2_t
{
2443 #[allow(improper_ctypes)]
2445 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.fptosi.sat.v2i64.v2f64" )]
2446 fn vcvtq_s64_f64_ ( a
: float64x2_t
) -> int64x2_t
;
2451 /// Floating-point convert to unsigned fixed-point, rounding toward zero
2453 #[target_feature(enable = "neon" )]
2454 #[cfg_attr(test, assert_instr(fcvtzu))]
2455 pub unsafe fn vcvt_u64_f64 ( a
: float64x1_t
) -> uint64x1_t
{
2456 #[allow(improper_ctypes)]
2458 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.fptoui.sat.v1i64.v1f64" )]
2459 fn vcvt_u64_f64_ ( a
: float64x1_t
) -> uint64x1_t
;
2464 /// Floating-point convert to unsigned fixed-point, rounding toward zero
2466 #[target_feature(enable = "neon" )]
2467 #[cfg_attr(test, assert_instr(fcvtzu))]
2468 pub unsafe fn vcvtq_u64_f64 ( a
: float64x2_t
) -> uint64x2_t
{
2469 #[allow(improper_ctypes)]
2471 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.fptoui.sat.v2i64.v2f64" )]
2472 fn vcvtq_u64_f64_ ( a
: float64x2_t
) -> uint64x2_t
;
2477 /// Floating-point convert to signed integer, rounding to nearest with ties to away
2479 #[target_feature(enable = "neon" )]
2480 #[cfg_attr(test, assert_instr(fcvtas))]
2481 pub unsafe fn vcvta_s32_f32 ( a
: float32x2_t
) -> int32x2_t
{
2482 #[allow(improper_ctypes)]
2484 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtas.v2i32.v2f32" )]
2485 fn vcvta_s32_f32_ ( a
: float32x2_t
) -> int32x2_t
;
2490 /// Floating-point convert to signed integer, rounding to nearest with ties to away
2492 #[target_feature(enable = "neon" )]
2493 #[cfg_attr(test, assert_instr(fcvtas))]
2494 pub unsafe fn vcvtaq_s32_f32 ( a
: float32x4_t
) -> int32x4_t
{
2495 #[allow(improper_ctypes)]
2497 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtas.v4i32.v4f32" )]
2498 fn vcvtaq_s32_f32_ ( a
: float32x4_t
) -> int32x4_t
;
2503 /// Floating-point convert to signed integer, rounding to nearest with ties to away
2505 #[target_feature(enable = "neon" )]
2506 #[cfg_attr(test, assert_instr(fcvtas))]
2507 pub unsafe fn vcvta_s64_f64 ( a
: float64x1_t
) -> int64x1_t
{
2508 #[allow(improper_ctypes)]
2510 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtas.v1i64.v1f64" )]
2511 fn vcvta_s64_f64_ ( a
: float64x1_t
) -> int64x1_t
;
2516 /// Floating-point convert to signed integer, rounding to nearest with ties to away
2518 #[target_feature(enable = "neon" )]
2519 #[cfg_attr(test, assert_instr(fcvtas))]
2520 pub unsafe fn vcvtaq_s64_f64 ( a
: float64x2_t
) -> int64x2_t
{
2521 #[allow(improper_ctypes)]
2523 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtas.v2i64.v2f64" )]
2524 fn vcvtaq_s64_f64_ ( a
: float64x2_t
) -> int64x2_t
;
2529 /// Floating-point convert to integer, rounding to nearest with ties to away
2531 #[target_feature(enable = "neon" )]
2532 #[cfg_attr(test, assert_instr(fcvtas))]
2533 pub unsafe fn vcvtas_s32_f32 ( a
: f32 ) -> i32 {
2534 #[allow(improper_ctypes)]
2536 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtas.i32.f32" )]
2537 fn vcvtas_s32_f32_ ( a
: f32 ) -> i32 ;
2542 /// Floating-point convert to integer, rounding to nearest with ties to away
2544 #[target_feature(enable = "neon" )]
2545 #[cfg_attr(test, assert_instr(fcvtas))]
2546 pub unsafe fn vcvtad_s64_f64 ( a
: f64 ) -> i64 {
2547 #[allow(improper_ctypes)]
2549 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtas.i64.f64" )]
2550 fn vcvtad_s64_f64_ ( a
: f64 ) -> i64 ;
2555 /// Floating-point convert to integer, rounding to nearest with ties to away
2557 #[target_feature(enable = "neon" )]
2558 #[cfg_attr(test, assert_instr(fcvtau))]
2559 pub unsafe fn vcvtas_u32_f32 ( a
: f32 ) -> u32 {
2560 #[allow(improper_ctypes)]
2562 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtau.i32.f32" )]
2563 fn vcvtas_u32_f32_ ( a
: f32 ) -> u32 ;
2568 /// Floating-point convert to integer, rounding to nearest with ties to away
2570 #[target_feature(enable = "neon" )]
2571 #[cfg_attr(test, assert_instr(fcvtau))]
2572 pub unsafe fn vcvtad_u64_f64 ( a
: f64 ) -> u64 {
2573 #[allow(improper_ctypes)]
2575 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtau.i64.f64" )]
2576 fn vcvtad_u64_f64_ ( a
: f64 ) -> u64 ;
2581 /// Floating-point convert to signed integer, rounding to nearest with ties to even
2583 #[target_feature(enable = "neon" )]
2584 #[cfg_attr(test, assert_instr(fcvtns))]
2585 pub unsafe fn vcvtn_s32_f32 ( a
: float32x2_t
) -> int32x2_t
{
2586 #[allow(improper_ctypes)]
2588 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtns.v2i32.v2f32" )]
2589 fn vcvtn_s32_f32_ ( a
: float32x2_t
) -> int32x2_t
;
2594 /// Floating-point convert to signed integer, rounding to nearest with ties to even
2596 #[target_feature(enable = "neon" )]
2597 #[cfg_attr(test, assert_instr(fcvtns))]
2598 pub unsafe fn vcvtnq_s32_f32 ( a
: float32x4_t
) -> int32x4_t
{
2599 #[allow(improper_ctypes)]
2601 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtns.v4i32.v4f32" )]
2602 fn vcvtnq_s32_f32_ ( a
: float32x4_t
) -> int32x4_t
;
2607 /// Floating-point convert to signed integer, rounding to nearest with ties to even
2609 #[target_feature(enable = "neon" )]
2610 #[cfg_attr(test, assert_instr(fcvtns))]
2611 pub unsafe fn vcvtn_s64_f64 ( a
: float64x1_t
) -> int64x1_t
{
2612 #[allow(improper_ctypes)]
2614 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtns.v1i64.v1f64" )]
2615 fn vcvtn_s64_f64_ ( a
: float64x1_t
) -> int64x1_t
;
2620 /// Floating-point convert to signed integer, rounding to nearest with ties to even
2622 #[target_feature(enable = "neon" )]
2623 #[cfg_attr(test, assert_instr(fcvtns))]
2624 pub unsafe fn vcvtnq_s64_f64 ( a
: float64x2_t
) -> int64x2_t
{
2625 #[allow(improper_ctypes)]
2627 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtns.v2i64.v2f64" )]
2628 fn vcvtnq_s64_f64_ ( a
: float64x2_t
) -> int64x2_t
;
2633 /// Floating-point convert to signed integer, rounding to nearest with ties to even
2635 #[target_feature(enable = "neon" )]
2636 #[cfg_attr(test, assert_instr(fcvtns))]
2637 pub unsafe fn vcvtns_s32_f32 ( a
: f32 ) -> i32 {
2638 #[allow(improper_ctypes)]
2640 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtns.i32.f32" )]
2641 fn vcvtns_s32_f32_ ( a
: f32 ) -> i32 ;
2646 /// Floating-point convert to signed integer, rounding to nearest with ties to even
2648 #[target_feature(enable = "neon" )]
2649 #[cfg_attr(test, assert_instr(fcvtns))]
2650 pub unsafe fn vcvtnd_s64_f64 ( a
: f64 ) -> i64 {
2651 #[allow(improper_ctypes)]
2653 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtns.i64.f64" )]
2654 fn vcvtnd_s64_f64_ ( a
: f64 ) -> i64 ;
2659 /// Floating-point convert to signed integer, rounding toward minus infinity
2661 #[target_feature(enable = "neon" )]
2662 #[cfg_attr(test, assert_instr(fcvtms))]
2663 pub unsafe fn vcvtm_s32_f32 ( a
: float32x2_t
) -> int32x2_t
{
2664 #[allow(improper_ctypes)]
2666 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtms.v2i32.v2f32" )]
2667 fn vcvtm_s32_f32_ ( a
: float32x2_t
) -> int32x2_t
;
2672 /// Floating-point convert to signed integer, rounding toward minus infinity
2674 #[target_feature(enable = "neon" )]
2675 #[cfg_attr(test, assert_instr(fcvtms))]
2676 pub unsafe fn vcvtmq_s32_f32 ( a
: float32x4_t
) -> int32x4_t
{
2677 #[allow(improper_ctypes)]
2679 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtms.v4i32.v4f32" )]
2680 fn vcvtmq_s32_f32_ ( a
: float32x4_t
) -> int32x4_t
;
2685 /// Floating-point convert to signed integer, rounding toward minus infinity
2687 #[target_feature(enable = "neon" )]
2688 #[cfg_attr(test, assert_instr(fcvtms))]
2689 pub unsafe fn vcvtm_s64_f64 ( a
: float64x1_t
) -> int64x1_t
{
2690 #[allow(improper_ctypes)]
2692 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtms.v1i64.v1f64" )]
2693 fn vcvtm_s64_f64_ ( a
: float64x1_t
) -> int64x1_t
;
2698 /// Floating-point convert to signed integer, rounding toward minus infinity
2700 #[target_feature(enable = "neon" )]
2701 #[cfg_attr(test, assert_instr(fcvtms))]
2702 pub unsafe fn vcvtmq_s64_f64 ( a
: float64x2_t
) -> int64x2_t
{
2703 #[allow(improper_ctypes)]
2705 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtms.v2i64.v2f64" )]
2706 fn vcvtmq_s64_f64_ ( a
: float64x2_t
) -> int64x2_t
;
2711 /// Floating-point convert to signed integer, rounding toward minus infinity
2713 #[target_feature(enable = "neon" )]
2714 #[cfg_attr(test, assert_instr(fcvtms))]
2715 pub unsafe fn vcvtms_s32_f32 ( a
: f32 ) -> i32 {
2716 #[allow(improper_ctypes)]
2718 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtms.i32.f32" )]
2719 fn vcvtms_s32_f32_ ( a
: f32 ) -> i32 ;
2724 /// Floating-point convert to signed integer, rounding toward minus infinity
2726 #[target_feature(enable = "neon" )]
2727 #[cfg_attr(test, assert_instr(fcvtms))]
2728 pub unsafe fn vcvtmd_s64_f64 ( a
: f64 ) -> i64 {
2729 #[allow(improper_ctypes)]
2731 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtms.i64.f64" )]
2732 fn vcvtmd_s64_f64_ ( a
: f64 ) -> i64 ;
2737 /// Floating-point convert to signed integer, rounding toward plus infinity
2739 #[target_feature(enable = "neon" )]
2740 #[cfg_attr(test, assert_instr(fcvtps))]
2741 pub unsafe fn vcvtp_s32_f32 ( a
: float32x2_t
) -> int32x2_t
{
2742 #[allow(improper_ctypes)]
2744 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtps.v2i32.v2f32" )]
2745 fn vcvtp_s32_f32_ ( a
: float32x2_t
) -> int32x2_t
;
2750 /// Floating-point convert to signed integer, rounding toward plus infinity
2752 #[target_feature(enable = "neon" )]
2753 #[cfg_attr(test, assert_instr(fcvtps))]
2754 pub unsafe fn vcvtpq_s32_f32 ( a
: float32x4_t
) -> int32x4_t
{
2755 #[allow(improper_ctypes)]
2757 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtps.v4i32.v4f32" )]
2758 fn vcvtpq_s32_f32_ ( a
: float32x4_t
) -> int32x4_t
;
2763 /// Floating-point convert to signed integer, rounding toward plus infinity
2765 #[target_feature(enable = "neon" )]
2766 #[cfg_attr(test, assert_instr(fcvtps))]
2767 pub unsafe fn vcvtp_s64_f64 ( a
: float64x1_t
) -> int64x1_t
{
2768 #[allow(improper_ctypes)]
2770 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtps.v1i64.v1f64" )]
2771 fn vcvtp_s64_f64_ ( a
: float64x1_t
) -> int64x1_t
;
2776 /// Floating-point convert to signed integer, rounding toward plus infinity
2778 #[target_feature(enable = "neon" )]
2779 #[cfg_attr(test, assert_instr(fcvtps))]
2780 pub unsafe fn vcvtpq_s64_f64 ( a
: float64x2_t
) -> int64x2_t
{
2781 #[allow(improper_ctypes)]
2783 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtps.v2i64.v2f64" )]
2784 fn vcvtpq_s64_f64_ ( a
: float64x2_t
) -> int64x2_t
;
2789 /// Floating-point convert to signed integer, rounding toward plus infinity
2791 #[target_feature(enable = "neon" )]
2792 #[cfg_attr(test, assert_instr(fcvtps))]
2793 pub unsafe fn vcvtps_s32_f32 ( a
: f32 ) -> i32 {
2794 #[allow(improper_ctypes)]
2796 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtps.i32.f32" )]
2797 fn vcvtps_s32_f32_ ( a
: f32 ) -> i32 ;
2802 /// Floating-point convert to signed integer, rounding toward plus infinity
2804 #[target_feature(enable = "neon" )]
2805 #[cfg_attr(test, assert_instr(fcvtps))]
2806 pub unsafe fn vcvtpd_s64_f64 ( a
: f64 ) -> i64 {
2807 #[allow(improper_ctypes)]
2809 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtps.i64.f64" )]
2810 fn vcvtpd_s64_f64_ ( a
: f64 ) -> i64 ;
2815 /// Floating-point convert to unsigned integer, rounding to nearest with ties to away
2817 #[target_feature(enable = "neon" )]
2818 #[cfg_attr(test, assert_instr(fcvtau))]
2819 pub unsafe fn vcvta_u32_f32 ( a
: float32x2_t
) -> uint32x2_t
{
2820 #[allow(improper_ctypes)]
2822 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtau.v2i32.v2f32" )]
2823 fn vcvta_u32_f32_ ( a
: float32x2_t
) -> uint32x2_t
;
2828 /// Floating-point convert to unsigned integer, rounding to nearest with ties to away
2830 #[target_feature(enable = "neon" )]
2831 #[cfg_attr(test, assert_instr(fcvtau))]
2832 pub unsafe fn vcvtaq_u32_f32 ( a
: float32x4_t
) -> uint32x4_t
{
2833 #[allow(improper_ctypes)]
2835 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtau.v4i32.v4f32" )]
2836 fn vcvtaq_u32_f32_ ( a
: float32x4_t
) -> uint32x4_t
;
2841 /// Floating-point convert to unsigned integer, rounding to nearest with ties to away
2843 #[target_feature(enable = "neon" )]
2844 #[cfg_attr(test, assert_instr(fcvtau))]
2845 pub unsafe fn vcvta_u64_f64 ( a
: float64x1_t
) -> uint64x1_t
{
2846 #[allow(improper_ctypes)]
2848 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtau.v1i64.v1f64" )]
2849 fn vcvta_u64_f64_ ( a
: float64x1_t
) -> uint64x1_t
;
2854 /// Floating-point convert to unsigned integer, rounding to nearest with ties to away
2856 #[target_feature(enable = "neon" )]
2857 #[cfg_attr(test, assert_instr(fcvtau))]
2858 pub unsafe fn vcvtaq_u64_f64 ( a
: float64x2_t
) -> uint64x2_t
{
2859 #[allow(improper_ctypes)]
2861 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtau.v2i64.v2f64" )]
2862 fn vcvtaq_u64_f64_ ( a
: float64x2_t
) -> uint64x2_t
;
2867 /// Floating-point convert to unsigned integer, rounding to nearest with ties to even
2869 #[target_feature(enable = "neon" )]
2870 #[cfg_attr(test, assert_instr(fcvtnu))]
2871 pub unsafe fn vcvtn_u32_f32 ( a
: float32x2_t
) -> uint32x2_t
{
2872 #[allow(improper_ctypes)]
2874 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtnu.v2i32.v2f32" )]
2875 fn vcvtn_u32_f32_ ( a
: float32x2_t
) -> uint32x2_t
;
2880 /// Floating-point convert to unsigned integer, rounding to nearest with ties to even
2882 #[target_feature(enable = "neon" )]
2883 #[cfg_attr(test, assert_instr(fcvtnu))]
2884 pub unsafe fn vcvtnq_u32_f32 ( a
: float32x4_t
) -> uint32x4_t
{
2885 #[allow(improper_ctypes)]
2887 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtnu.v4i32.v4f32" )]
2888 fn vcvtnq_u32_f32_ ( a
: float32x4_t
) -> uint32x4_t
;
2893 /// Floating-point convert to unsigned integer, rounding to nearest with ties to even
2895 #[target_feature(enable = "neon" )]
2896 #[cfg_attr(test, assert_instr(fcvtnu))]
2897 pub unsafe fn vcvtn_u64_f64 ( a
: float64x1_t
) -> uint64x1_t
{
2898 #[allow(improper_ctypes)]
2900 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtnu.v1i64.v1f64" )]
2901 fn vcvtn_u64_f64_ ( a
: float64x1_t
) -> uint64x1_t
;
2906 /// Floating-point convert to unsigned integer, rounding to nearest with ties to even
2908 #[target_feature(enable = "neon" )]
2909 #[cfg_attr(test, assert_instr(fcvtnu))]
2910 pub unsafe fn vcvtnq_u64_f64 ( a
: float64x2_t
) -> uint64x2_t
{
2911 #[allow(improper_ctypes)]
2913 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtnu.v2i64.v2f64" )]
2914 fn vcvtnq_u64_f64_ ( a
: float64x2_t
) -> uint64x2_t
;
2919 /// Floating-point convert to unsigned integer, rounding to nearest with ties to even
2921 #[target_feature(enable = "neon" )]
2922 #[cfg_attr(test, assert_instr(fcvtnu))]
2923 pub unsafe fn vcvtns_u32_f32 ( a
: f32 ) -> u32 {
2924 #[allow(improper_ctypes)]
2926 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtnu.i32.f32" )]
2927 fn vcvtns_u32_f32_ ( a
: f32 ) -> u32 ;
2932 /// Floating-point convert to unsigned integer, rounding to nearest with ties to even
2934 #[target_feature(enable = "neon" )]
2935 #[cfg_attr(test, assert_instr(fcvtnu))]
2936 pub unsafe fn vcvtnd_u64_f64 ( a
: f64 ) -> u64 {
2937 #[allow(improper_ctypes)]
2939 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtnu.i64.f64" )]
2940 fn vcvtnd_u64_f64_ ( a
: f64 ) -> u64 ;
2945 /// Floating-point convert to unsigned integer, rounding toward minus infinity
2947 #[target_feature(enable = "neon" )]
2948 #[cfg_attr(test, assert_instr(fcvtmu))]
2949 pub unsafe fn vcvtm_u32_f32 ( a
: float32x2_t
) -> uint32x2_t
{
2950 #[allow(improper_ctypes)]
2952 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtmu.v2i32.v2f32" )]
2953 fn vcvtm_u32_f32_ ( a
: float32x2_t
) -> uint32x2_t
;
2958 /// Floating-point convert to unsigned integer, rounding toward minus infinity
2960 #[target_feature(enable = "neon" )]
2961 #[cfg_attr(test, assert_instr(fcvtmu))]
2962 pub unsafe fn vcvtmq_u32_f32 ( a
: float32x4_t
) -> uint32x4_t
{
2963 #[allow(improper_ctypes)]
2965 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtmu.v4i32.v4f32" )]
2966 fn vcvtmq_u32_f32_ ( a
: float32x4_t
) -> uint32x4_t
;
2971 /// Floating-point convert to unsigned integer, rounding toward minus infinity
2973 #[target_feature(enable = "neon" )]
2974 #[cfg_attr(test, assert_instr(fcvtmu))]
2975 pub unsafe fn vcvtm_u64_f64 ( a
: float64x1_t
) -> uint64x1_t
{
2976 #[allow(improper_ctypes)]
2978 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtmu.v1i64.v1f64" )]
2979 fn vcvtm_u64_f64_ ( a
: float64x1_t
) -> uint64x1_t
;
2984 /// Floating-point convert to unsigned integer, rounding toward minus infinity
2986 #[target_feature(enable = "neon" )]
2987 #[cfg_attr(test, assert_instr(fcvtmu))]
2988 pub unsafe fn vcvtmq_u64_f64 ( a
: float64x2_t
) -> uint64x2_t
{
2989 #[allow(improper_ctypes)]
2991 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtmu.v2i64.v2f64" )]
2992 fn vcvtmq_u64_f64_ ( a
: float64x2_t
) -> uint64x2_t
;
2997 /// Floating-point convert to unsigned integer, rounding toward minus infinity
2999 #[target_feature(enable = "neon" )]
3000 #[cfg_attr(test, assert_instr(fcvtmu))]
3001 pub unsafe fn vcvtms_u32_f32 ( a
: f32 ) -> u32 {
3002 #[allow(improper_ctypes)]
3004 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtmu.i32.f32" )]
3005 fn vcvtms_u32_f32_ ( a
: f32 ) -> u32 ;
3010 /// Floating-point convert to unsigned integer, rounding toward minus infinity
3012 #[target_feature(enable = "neon" )]
3013 #[cfg_attr(test, assert_instr(fcvtmu))]
3014 pub unsafe fn vcvtmd_u64_f64 ( a
: f64 ) -> u64 {
3015 #[allow(improper_ctypes)]
3017 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtmu.i64.f64" )]
3018 fn vcvtmd_u64_f64_ ( a
: f64 ) -> u64 ;
3023 /// Floating-point convert to unsigned integer, rounding toward plus infinity
3025 #[target_feature(enable = "neon" )]
3026 #[cfg_attr(test, assert_instr(fcvtpu))]
3027 pub unsafe fn vcvtp_u32_f32 ( a
: float32x2_t
) -> uint32x2_t
{
3028 #[allow(improper_ctypes)]
3030 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtpu.v2i32.v2f32" )]
3031 fn vcvtp_u32_f32_ ( a
: float32x2_t
) -> uint32x2_t
;
3036 /// Floating-point convert to unsigned integer, rounding toward plus infinity
3038 #[target_feature(enable = "neon" )]
3039 #[cfg_attr(test, assert_instr(fcvtpu))]
3040 pub unsafe fn vcvtpq_u32_f32 ( a
: float32x4_t
) -> uint32x4_t
{
3041 #[allow(improper_ctypes)]
3043 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtpu.v4i32.v4f32" )]
3044 fn vcvtpq_u32_f32_ ( a
: float32x4_t
) -> uint32x4_t
;
3049 /// Floating-point convert to unsigned integer, rounding toward plus infinity
3051 #[target_feature(enable = "neon" )]
3052 #[cfg_attr(test, assert_instr(fcvtpu))]
3053 pub unsafe fn vcvtp_u64_f64 ( a
: float64x1_t
) -> uint64x1_t
{
3054 #[allow(improper_ctypes)]
3056 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtpu.v1i64.v1f64" )]
3057 fn vcvtp_u64_f64_ ( a
: float64x1_t
) -> uint64x1_t
;
3062 /// Floating-point convert to unsigned integer, rounding toward plus infinity
3064 #[target_feature(enable = "neon" )]
3065 #[cfg_attr(test, assert_instr(fcvtpu))]
3066 pub unsafe fn vcvtpq_u64_f64 ( a
: float64x2_t
) -> uint64x2_t
{
3067 #[allow(improper_ctypes)]
3069 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtpu.v2i64.v2f64" )]
3070 fn vcvtpq_u64_f64_ ( a
: float64x2_t
) -> uint64x2_t
;
3075 /// Floating-point convert to unsigned integer, rounding toward plus infinity
3077 #[target_feature(enable = "neon" )]
3078 #[cfg_attr(test, assert_instr(fcvtpu))]
3079 pub unsafe fn vcvtps_u32_f32 ( a
: f32 ) -> u32 {
3080 #[allow(improper_ctypes)]
3082 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtpu.i32.f32" )]
3083 fn vcvtps_u32_f32_ ( a
: f32 ) -> u32 ;
3088 /// Floating-point convert to unsigned integer, rounding toward plus infinity
3090 #[target_feature(enable = "neon" )]
3091 #[cfg_attr(test, assert_instr(fcvtpu))]
3092 pub unsafe fn vcvtpd_u64_f64 ( a
: f64 ) -> u64 {
3093 #[allow(improper_ctypes)]
3095 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fcvtpu.i64.f64" )]
3096 fn vcvtpd_u64_f64_ ( a
: f64 ) -> u64 ;
3101 /// Set all vector lanes to the same value
3103 #[target_feature(enable = "neon" )]
3104 #[cfg_attr(test, assert_instr(dup, N = 1))]
3105 #[rustc_legacy_const_generics(1)]
3106 pub unsafe fn vdupq_laneq_p64
< const N
: i32 >( a
: poly64x2_t
) -> poly64x2_t
{
3107 static_assert_imm1
!( N
);
3108 simd_shuffle2
!( a
, a
, < const N
: i32 > [ N
as u32 , N
as u32 ])
3111 /// Set all vector lanes to the same value
3113 #[target_feature(enable = "neon" )]
3114 #[cfg_attr(test, assert_instr(dup, N = 0))]
3115 #[rustc_legacy_const_generics(1)]
3116 pub unsafe fn vdupq_lane_p64
< const N
: i32 >( a
: poly64x1_t
) -> poly64x2_t
{
3117 static_assert
!( N
: i32 where N
== 0 );
3118 simd_shuffle2
!( a
, a
, < const N
: i32 > [ N
as u32 , N
as u32 ])
3121 /// Set all vector lanes to the same value
3123 #[target_feature(enable = "neon" )]
3124 #[cfg_attr(test, assert_instr(dup, N = 1))]
3125 #[rustc_legacy_const_generics(1)]
3126 pub unsafe fn vdupq_laneq_f64
< const N
: i32 >( a
: float64x2_t
) -> float64x2_t
{
3127 static_assert_imm1
!( N
);
3128 simd_shuffle2
!( a
, a
, < const N
: i32 > [ N
as u32 , N
as u32 ])
3131 /// Set all vector lanes to the same value
3133 #[target_feature(enable = "neon" )]
3134 #[cfg_attr(test, assert_instr(dup, N = 0))]
3135 #[rustc_legacy_const_generics(1)]
3136 pub unsafe fn vdupq_lane_f64
< const N
: i32 >( a
: float64x1_t
) -> float64x2_t
{
3137 static_assert
!( N
: i32 where N
== 0 );
3138 simd_shuffle2
!( a
, a
, < const N
: i32 > [ N
as u32 , N
as u32 ])
3141 /// Set all vector lanes to the same value
3143 #[target_feature(enable = "neon" )]
3144 #[cfg_attr(test, assert_instr(nop, N = 0))]
3145 #[rustc_legacy_const_generics(1)]
3146 pub unsafe fn vdup_lane_p64
< const N
: i32 >( a
: poly64x1_t
) -> poly64x1_t
{
3147 static_assert
!( N
: i32 where N
== 0 );
3151 /// Set all vector lanes to the same value
3153 #[target_feature(enable = "neon" )]
3154 #[cfg_attr(test, assert_instr(nop, N = 0))]
3155 #[rustc_legacy_const_generics(1)]
3156 pub unsafe fn vdup_lane_f64
< const N
: i32 >( a
: float64x1_t
) -> float64x1_t
{
3157 static_assert
!( N
: i32 where N
== 0 );
3161 /// Set all vector lanes to the same value
3163 #[target_feature(enable = "neon" )]
3164 #[cfg_attr(test, assert_instr(nop, N = 1))]
3165 #[rustc_legacy_const_generics(1)]
3166 pub unsafe fn vdup_laneq_p64
< const N
: i32 >( a
: poly64x2_t
) -> poly64x1_t
{
3167 static_assert_imm1
!( N
);
3168 transmute
::< u64 , _
>( simd_extract ( a
, N
as u32 ))
3171 /// Set all vector lanes to the same value
3173 #[target_feature(enable = "neon" )]
3174 #[cfg_attr(test, assert_instr(nop, N = 1))]
3175 #[rustc_legacy_const_generics(1)]
3176 pub unsafe fn vdup_laneq_f64
< const N
: i32 >( a
: float64x2_t
) -> float64x1_t
{
3177 static_assert_imm1
!( N
);
3178 transmute
::< f64 , _
>( simd_extract ( a
, N
as u32 ))
3181 /// Set all vector lanes to the same value
3183 #[target_feature(enable = "neon" )]
3184 #[cfg_attr(test, assert_instr(nop, N = 4))]
3185 #[rustc_legacy_const_generics(1)]
3186 pub unsafe fn vdupb_lane_s8
< const N
: i32 >( a
: int8x8_t
) -> i8 {
3187 static_assert_imm3
!( N
);
3188 simd_extract ( a
, N
as u32 )
3191 /// Set all vector lanes to the same value
3193 #[target_feature(enable = "neon" )]
3194 #[cfg_attr(test, assert_instr(nop, N = 8))]
3195 #[rustc_legacy_const_generics(1)]
3196 pub unsafe fn vdupb_laneq_s8
< const N
: i32 >( a
: int8x16_t
) -> i8 {
3197 static_assert_imm4
!( N
);
3198 simd_extract ( a
, N
as u32 )
3201 /// Set all vector lanes to the same value
3203 #[target_feature(enable = "neon" )]
3204 #[cfg_attr(test, assert_instr(nop, N = 2))]
3205 #[rustc_legacy_const_generics(1)]
3206 pub unsafe fn vduph_lane_s16
< const N
: i32 >( a
: int16x4_t
) -> i16 {
3207 static_assert_imm2
!( N
);
3208 simd_extract ( a
, N
as u32 )
3211 /// Set all vector lanes to the same value
3213 #[target_feature(enable = "neon" )]
3214 #[cfg_attr(test, assert_instr(nop, N = 4))]
3215 #[rustc_legacy_const_generics(1)]
3216 pub unsafe fn vduph_laneq_s16
< const N
: i32 >( a
: int16x8_t
) -> i16 {
3217 static_assert_imm3
!( N
);
3218 simd_extract ( a
, N
as u32 )
3221 /// Set all vector lanes to the same value
3223 #[target_feature(enable = "neon" )]
3224 #[cfg_attr(test, assert_instr(nop, N = 1))]
3225 #[rustc_legacy_const_generics(1)]
3226 pub unsafe fn vdups_lane_s32
< const N
: i32 >( a
: int32x2_t
) -> i32 {
3227 static_assert_imm1
!( N
);
3228 simd_extract ( a
, N
as u32 )
3231 /// Set all vector lanes to the same value
3233 #[target_feature(enable = "neon" )]
3234 #[cfg_attr(test, assert_instr(nop, N = 2))]
3235 #[rustc_legacy_const_generics(1)]
3236 pub unsafe fn vdups_laneq_s32
< const N
: i32 >( a
: int32x4_t
) -> i32 {
3237 static_assert_imm2
!( N
);
3238 simd_extract ( a
, N
as u32 )
3241 /// Set all vector lanes to the same value
3243 #[target_feature(enable = "neon" )]
3244 #[cfg_attr(test, assert_instr(nop, N = 0))]
3245 #[rustc_legacy_const_generics(1)]
3246 pub unsafe fn vdupd_lane_s64
< const N
: i32 >( a
: int64x1_t
) -> i64 {
3247 static_assert
!( N
: i32 where N
== 0 );
3248 simd_extract ( a
, N
as u32 )
3251 /// Set all vector lanes to the same value
3253 #[target_feature(enable = "neon" )]
3254 #[cfg_attr(test, assert_instr(nop, N = 1))]
3255 #[rustc_legacy_const_generics(1)]
3256 pub unsafe fn vdupd_laneq_s64
< const N
: i32 >( a
: int64x2_t
) -> i64 {
3257 static_assert_imm1
!( N
);
3258 simd_extract ( a
, N
as u32 )
3261 /// Set all vector lanes to the same value
3263 #[target_feature(enable = "neon" )]
3264 #[cfg_attr(test, assert_instr(nop, N = 4))]
3265 #[rustc_legacy_const_generics(1)]
3266 pub unsafe fn vdupb_lane_u8
< const N
: i32 >( a
: uint8x8_t
) -> u8 {
3267 static_assert_imm3
!( N
);
3268 simd_extract ( a
, N
as u32 )
3271 /// Set all vector lanes to the same value
3273 #[target_feature(enable = "neon" )]
3274 #[cfg_attr(test, assert_instr(nop, N = 8))]
3275 #[rustc_legacy_const_generics(1)]
3276 pub unsafe fn vdupb_laneq_u8
< const N
: i32 >( a
: uint8x16_t
) -> u8 {
3277 static_assert_imm4
!( N
);
3278 simd_extract ( a
, N
as u32 )
3281 /// Set all vector lanes to the same value
3283 #[target_feature(enable = "neon" )]
3284 #[cfg_attr(test, assert_instr(nop, N = 2))]
3285 #[rustc_legacy_const_generics(1)]
3286 pub unsafe fn vduph_lane_u16
< const N
: i32 >( a
: uint16x4_t
) -> u16 {
3287 static_assert_imm2
!( N
);
3288 simd_extract ( a
, N
as u32 )
3291 /// Set all vector lanes to the same value
3293 #[target_feature(enable = "neon" )]
3294 #[cfg_attr(test, assert_instr(nop, N = 4))]
3295 #[rustc_legacy_const_generics(1)]
3296 pub unsafe fn vduph_laneq_u16
< const N
: i32 >( a
: uint16x8_t
) -> u16 {
3297 static_assert_imm3
!( N
);
3298 simd_extract ( a
, N
as u32 )
3301 /// Set all vector lanes to the same value
3303 #[target_feature(enable = "neon" )]
3304 #[cfg_attr(test, assert_instr(nop, N = 1))]
3305 #[rustc_legacy_const_generics(1)]
3306 pub unsafe fn vdups_lane_u32
< const N
: i32 >( a
: uint32x2_t
) -> u32 {
3307 static_assert_imm1
!( N
);
3308 simd_extract ( a
, N
as u32 )
3311 /// Set all vector lanes to the same value
3313 #[target_feature(enable = "neon" )]
3314 #[cfg_attr(test, assert_instr(nop, N = 2))]
3315 #[rustc_legacy_const_generics(1)]
3316 pub unsafe fn vdups_laneq_u32
< const N
: i32 >( a
: uint32x4_t
) -> u32 {
3317 static_assert_imm2
!( N
);
3318 simd_extract ( a
, N
as u32 )
3321 /// Set all vector lanes to the same value
3323 #[target_feature(enable = "neon" )]
3324 #[cfg_attr(test, assert_instr(nop, N = 0))]
3325 #[rustc_legacy_const_generics(1)]
3326 pub unsafe fn vdupd_lane_u64
< const N
: i32 >( a
: uint64x1_t
) -> u64 {
3327 static_assert
!( N
: i32 where N
== 0 );
3328 simd_extract ( a
, N
as u32 )
3331 /// Set all vector lanes to the same value
3333 #[target_feature(enable = "neon" )]
3334 #[cfg_attr(test, assert_instr(nop, N = 1))]
3335 #[rustc_legacy_const_generics(1)]
3336 pub unsafe fn vdupd_laneq_u64
< const N
: i32 >( a
: uint64x2_t
) -> u64 {
3337 static_assert_imm1
!( N
);
3338 simd_extract ( a
, N
as u32 )
3341 /// Set all vector lanes to the same value
3343 #[target_feature(enable = "neon" )]
3344 #[cfg_attr(test, assert_instr(nop, N = 4))]
3345 #[rustc_legacy_const_generics(1)]
3346 pub unsafe fn vdupb_lane_p8
< const N
: i32 >( a
: poly8x8_t
) -> p8
{
3347 static_assert_imm3
!( N
);
3348 simd_extract ( a
, N
as u32 )
3351 /// Set all vector lanes to the same value
3353 #[target_feature(enable = "neon" )]
3354 #[cfg_attr(test, assert_instr(nop, N = 8))]
3355 #[rustc_legacy_const_generics(1)]
3356 pub unsafe fn vdupb_laneq_p8
< const N
: i32 >( a
: poly8x16_t
) -> p8
{
3357 static_assert_imm4
!( N
);
3358 simd_extract ( a
, N
as u32 )
3361 /// Set all vector lanes to the same value
3363 #[target_feature(enable = "neon" )]
3364 #[cfg_attr(test, assert_instr(nop, N = 2))]
3365 #[rustc_legacy_const_generics(1)]
3366 pub unsafe fn vduph_lane_p16
< const N
: i32 >( a
: poly16x4_t
) -> p16
{
3367 static_assert_imm2
!( N
);
3368 simd_extract ( a
, N
as u32 )
3371 /// Set all vector lanes to the same value
3373 #[target_feature(enable = "neon" )]
3374 #[cfg_attr(test, assert_instr(nop, N = 4))]
3375 #[rustc_legacy_const_generics(1)]
3376 pub unsafe fn vduph_laneq_p16
< const N
: i32 >( a
: poly16x8_t
) -> p16
{
3377 static_assert_imm3
!( N
);
3378 simd_extract ( a
, N
as u32 )
3381 /// Set all vector lanes to the same value
3383 #[target_feature(enable = "neon" )]
3384 #[cfg_attr(test, assert_instr(nop, N = 1))]
3385 #[rustc_legacy_const_generics(1)]
3386 pub unsafe fn vdups_lane_f32
< const N
: i32 >( a
: float32x2_t
) -> f32 {
3387 static_assert_imm1
!( N
);
3388 simd_extract ( a
, N
as u32 )
3391 /// Set all vector lanes to the same value
3393 #[target_feature(enable = "neon" )]
3394 #[cfg_attr(test, assert_instr(nop, N = 2))]
3395 #[rustc_legacy_const_generics(1)]
3396 pub unsafe fn vdups_laneq_f32
< const N
: i32 >( a
: float32x4_t
) -> f32 {
3397 static_assert_imm2
!( N
);
3398 simd_extract ( a
, N
as u32 )
3401 /// Set all vector lanes to the same value
3403 #[target_feature(enable = "neon" )]
3404 #[cfg_attr(test, assert_instr(nop, N = 0))]
3405 #[rustc_legacy_const_generics(1)]
3406 pub unsafe fn vdupd_lane_f64
< const N
: i32 >( a
: float64x1_t
) -> f64 {
3407 static_assert
!( N
: i32 where N
== 0 );
3408 simd_extract ( a
, N
as u32 )
3411 /// Set all vector lanes to the same value
3413 #[target_feature(enable = "neon" )]
3414 #[cfg_attr(test, assert_instr(nop, N = 1))]
3415 #[rustc_legacy_const_generics(1)]
3416 pub unsafe fn vdupd_laneq_f64
< const N
: i32 >( a
: float64x2_t
) -> f64 {
3417 static_assert_imm1
!( N
);
3418 simd_extract ( a
, N
as u32 )
3421 /// Extract vector from pair of vectors
3423 #[target_feature(enable = "neon" )]
3424 #[cfg_attr(test, assert_instr(ext, N = 1))]
3425 #[rustc_legacy_const_generics(2)]
3426 pub unsafe fn vextq_p64
< const N
: i32 >( a
: poly64x2_t
, b
: poly64x2_t
) -> poly64x2_t
{
3427 static_assert_imm1
!( N
);
3429 0 => simd_shuffle2
!( a
, b
, [ 0 , 1 ]),
3430 1 => simd_shuffle2
!( a
, b
, [ 1 , 2 ]),
3431 _
=> unreachable_unchecked (),
3435 /// Extract vector from pair of vectors
3437 #[target_feature(enable = "neon" )]
3438 #[cfg_attr(test, assert_instr(ext, N = 1))]
3439 #[rustc_legacy_const_generics(2)]
3440 pub unsafe fn vextq_f64
< const N
: i32 >( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
3441 static_assert_imm1
!( N
);
3443 0 => simd_shuffle2
!( a
, b
, [ 0 , 1 ]),
3444 1 => simd_shuffle2
!( a
, b
, [ 1 , 2 ]),
3445 _
=> unreachable_unchecked (),
3449 /// Floating-point multiply-add to accumulator
3451 #[target_feature(enable = "neon" )]
3452 #[cfg_attr(test, assert_instr(fmul))]
3453 pub unsafe fn vmla_f64 ( a
: float64x1_t
, b
: float64x1_t
, c
: float64x1_t
) -> float64x1_t
{
3454 simd_add ( a
, simd_mul ( b
, c
))
3457 /// Floating-point multiply-add to accumulator
3459 #[target_feature(enable = "neon" )]
3460 #[cfg_attr(test, assert_instr(fmul))]
3461 pub unsafe fn vmlaq_f64 ( a
: float64x2_t
, b
: float64x2_t
, c
: float64x2_t
) -> float64x2_t
{
3462 simd_add ( a
, simd_mul ( b
, c
))
3465 /// Signed multiply-add long
3467 #[target_feature(enable = "neon" )]
3468 #[cfg_attr(test, assert_instr(smlal2))]
3469 pub unsafe fn vmlal_high_s8 ( a
: int16x8_t
, b
: int8x16_t
, c
: int8x16_t
) -> int16x8_t
{
3470 let b
: int8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
3471 let c
: int8x8_t
= simd_shuffle8
!( c
, c
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
3475 /// Signed multiply-add long
3477 #[target_feature(enable = "neon" )]
3478 #[cfg_attr(test, assert_instr(smlal2))]
3479 pub unsafe fn vmlal_high_s16 ( a
: int32x4_t
, b
: int16x8_t
, c
: int16x8_t
) -> int32x4_t
{
3480 let b
: int16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
3481 let c
: int16x4_t
= simd_shuffle4
!( c
, c
, [ 4 , 5 , 6 , 7 ]);
3485 /// Signed multiply-add long
3487 #[target_feature(enable = "neon" )]
3488 #[cfg_attr(test, assert_instr(smlal2))]
3489 pub unsafe fn vmlal_high_s32 ( a
: int64x2_t
, b
: int32x4_t
, c
: int32x4_t
) -> int64x2_t
{
3490 let b
: int32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
3491 let c
: int32x2_t
= simd_shuffle2
!( c
, c
, [ 2 , 3 ]);
3495 /// Unsigned multiply-add long
3497 #[target_feature(enable = "neon" )]
3498 #[cfg_attr(test, assert_instr(umlal2))]
3499 pub unsafe fn vmlal_high_u8 ( a
: uint16x8_t
, b
: uint8x16_t
, c
: uint8x16_t
) -> uint16x8_t
{
3500 let b
: uint8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
3501 let c
: uint8x8_t
= simd_shuffle8
!( c
, c
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
3505 /// Unsigned multiply-add long
3507 #[target_feature(enable = "neon" )]
3508 #[cfg_attr(test, assert_instr(umlal2))]
3509 pub unsafe fn vmlal_high_u16 ( a
: uint32x4_t
, b
: uint16x8_t
, c
: uint16x8_t
) -> uint32x4_t
{
3510 let b
: uint16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
3511 let c
: uint16x4_t
= simd_shuffle4
!( c
, c
, [ 4 , 5 , 6 , 7 ]);
3515 /// Unsigned multiply-add long
3517 #[target_feature(enable = "neon" )]
3518 #[cfg_attr(test, assert_instr(umlal2))]
3519 pub unsafe fn vmlal_high_u32 ( a
: uint64x2_t
, b
: uint32x4_t
, c
: uint32x4_t
) -> uint64x2_t
{
3520 let b
: uint32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
3521 let c
: uint32x2_t
= simd_shuffle2
!( c
, c
, [ 2 , 3 ]);
3525 /// Multiply-add long
3527 #[target_feature(enable = "neon" )]
3528 #[cfg_attr(test, assert_instr(smlal2))]
3529 pub unsafe fn vmlal_high_n_s16 ( a
: int32x4_t
, b
: int16x8_t
, c
: i16 ) -> int32x4_t
{
3530 vmlal_high_s16 ( a
, b
, vdupq_n_s16 ( c
))
3533 /// Multiply-add long
3535 #[target_feature(enable = "neon" )]
3536 #[cfg_attr(test, assert_instr(smlal2))]
3537 pub unsafe fn vmlal_high_n_s32 ( a
: int64x2_t
, b
: int32x4_t
, c
: i32 ) -> int64x2_t
{
3538 vmlal_high_s32 ( a
, b
, vdupq_n_s32 ( c
))
3541 /// Multiply-add long
3543 #[target_feature(enable = "neon" )]
3544 #[cfg_attr(test, assert_instr(umlal2))]
3545 pub unsafe fn vmlal_high_n_u16 ( a
: uint32x4_t
, b
: uint16x8_t
, c
: u16 ) -> uint32x4_t
{
3546 vmlal_high_u16 ( a
, b
, vdupq_n_u16 ( c
))
3549 /// Multiply-add long
3551 #[target_feature(enable = "neon" )]
3552 #[cfg_attr(test, assert_instr(umlal2))]
3553 pub unsafe fn vmlal_high_n_u32 ( a
: uint64x2_t
, b
: uint32x4_t
, c
: u32 ) -> uint64x2_t
{
3554 vmlal_high_u32 ( a
, b
, vdupq_n_u32 ( c
))
3557 /// Multiply-add long
3559 #[target_feature(enable = "neon" )]
3560 #[cfg_attr(test, assert_instr(smlal2, LANE = 1))]
3561 #[rustc_legacy_const_generics(3)]
3562 pub unsafe fn vmlal_high_lane_s16
< const LANE
: i32 >( a
: int32x4_t
, b
: int16x8_t
, c
: int16x4_t
) -> int32x4_t
{
3563 static_assert_imm2
!( LANE
);
3564 vmlal_high_s16 ( a
, b
, simd_shuffle8
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3567 /// Multiply-add long
3569 #[target_feature(enable = "neon" )]
3570 #[cfg_attr(test, assert_instr(smlal2, LANE = 1))]
3571 #[rustc_legacy_const_generics(3)]
3572 pub unsafe fn vmlal_high_laneq_s16
< const LANE
: i32 >( a
: int32x4_t
, b
: int16x8_t
, c
: int16x8_t
) -> int32x4_t
{
3573 static_assert_imm3
!( LANE
);
3574 vmlal_high_s16 ( a
, b
, simd_shuffle8
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3577 /// Multiply-add long
3579 #[target_feature(enable = "neon" )]
3580 #[cfg_attr(test, assert_instr(smlal2, LANE = 1))]
3581 #[rustc_legacy_const_generics(3)]
3582 pub unsafe fn vmlal_high_lane_s32
< const LANE
: i32 >( a
: int64x2_t
, b
: int32x4_t
, c
: int32x2_t
) -> int64x2_t
{
3583 static_assert_imm1
!( LANE
);
3584 vmlal_high_s32 ( a
, b
, simd_shuffle4
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3587 /// Multiply-add long
3589 #[target_feature(enable = "neon" )]
3590 #[cfg_attr(test, assert_instr(smlal2, LANE = 1))]
3591 #[rustc_legacy_const_generics(3)]
3592 pub unsafe fn vmlal_high_laneq_s32
< const LANE
: i32 >( a
: int64x2_t
, b
: int32x4_t
, c
: int32x4_t
) -> int64x2_t
{
3593 static_assert_imm2
!( LANE
);
3594 vmlal_high_s32 ( a
, b
, simd_shuffle4
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3597 /// Multiply-add long
3599 #[target_feature(enable = "neon" )]
3600 #[cfg_attr(test, assert_instr(umlal2, LANE = 1))]
3601 #[rustc_legacy_const_generics(3)]
3602 pub unsafe fn vmlal_high_lane_u16
< const LANE
: i32 >( a
: uint32x4_t
, b
: uint16x8_t
, c
: uint16x4_t
) -> uint32x4_t
{
3603 static_assert_imm2
!( LANE
);
3604 vmlal_high_u16 ( a
, b
, simd_shuffle8
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3607 /// Multiply-add long
3609 #[target_feature(enable = "neon" )]
3610 #[cfg_attr(test, assert_instr(umlal2, LANE = 1))]
3611 #[rustc_legacy_const_generics(3)]
3612 pub unsafe fn vmlal_high_laneq_u16
< const LANE
: i32 >( a
: uint32x4_t
, b
: uint16x8_t
, c
: uint16x8_t
) -> uint32x4_t
{
3613 static_assert_imm3
!( LANE
);
3614 vmlal_high_u16 ( a
, b
, simd_shuffle8
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3617 /// Multiply-add long
3619 #[target_feature(enable = "neon" )]
3620 #[cfg_attr(test, assert_instr(umlal2, LANE = 1))]
3621 #[rustc_legacy_const_generics(3)]
3622 pub unsafe fn vmlal_high_lane_u32
< const LANE
: i32 >( a
: uint64x2_t
, b
: uint32x4_t
, c
: uint32x2_t
) -> uint64x2_t
{
3623 static_assert_imm1
!( LANE
);
3624 vmlal_high_u32 ( a
, b
, simd_shuffle4
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3627 /// Multiply-add long
3629 #[target_feature(enable = "neon" )]
3630 #[cfg_attr(test, assert_instr(umlal2, LANE = 1))]
3631 #[rustc_legacy_const_generics(3)]
3632 pub unsafe fn vmlal_high_laneq_u32
< const LANE
: i32 >( a
: uint64x2_t
, b
: uint32x4_t
, c
: uint32x4_t
) -> uint64x2_t
{
3633 static_assert_imm2
!( LANE
);
3634 vmlal_high_u32 ( a
, b
, simd_shuffle4
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3637 /// Floating-point multiply-subtract from accumulator
3639 #[target_feature(enable = "neon" )]
3640 #[cfg_attr(test, assert_instr(fmul))]
3641 pub unsafe fn vmls_f64 ( a
: float64x1_t
, b
: float64x1_t
, c
: float64x1_t
) -> float64x1_t
{
3642 simd_sub ( a
, simd_mul ( b
, c
))
3645 /// Floating-point multiply-subtract from accumulator
3647 #[target_feature(enable = "neon" )]
3648 #[cfg_attr(test, assert_instr(fmul))]
3649 pub unsafe fn vmlsq_f64 ( a
: float64x2_t
, b
: float64x2_t
, c
: float64x2_t
) -> float64x2_t
{
3650 simd_sub ( a
, simd_mul ( b
, c
))
3653 /// Signed multiply-subtract long
3655 #[target_feature(enable = "neon" )]
3656 #[cfg_attr(test, assert_instr(smlsl2))]
3657 pub unsafe fn vmlsl_high_s8 ( a
: int16x8_t
, b
: int8x16_t
, c
: int8x16_t
) -> int16x8_t
{
3658 let b
: int8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
3659 let c
: int8x8_t
= simd_shuffle8
!( c
, c
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
3663 /// Signed multiply-subtract long
3665 #[target_feature(enable = "neon" )]
3666 #[cfg_attr(test, assert_instr(smlsl2))]
3667 pub unsafe fn vmlsl_high_s16 ( a
: int32x4_t
, b
: int16x8_t
, c
: int16x8_t
) -> int32x4_t
{
3668 let b
: int16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
3669 let c
: int16x4_t
= simd_shuffle4
!( c
, c
, [ 4 , 5 , 6 , 7 ]);
3673 /// Signed multiply-subtract long
3675 #[target_feature(enable = "neon" )]
3676 #[cfg_attr(test, assert_instr(smlsl2))]
3677 pub unsafe fn vmlsl_high_s32 ( a
: int64x2_t
, b
: int32x4_t
, c
: int32x4_t
) -> int64x2_t
{
3678 let b
: int32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
3679 let c
: int32x2_t
= simd_shuffle2
!( c
, c
, [ 2 , 3 ]);
3683 /// Unsigned multiply-subtract long
3685 #[target_feature(enable = "neon" )]
3686 #[cfg_attr(test, assert_instr(umlsl2))]
3687 pub unsafe fn vmlsl_high_u8 ( a
: uint16x8_t
, b
: uint8x16_t
, c
: uint8x16_t
) -> uint16x8_t
{
3688 let b
: uint8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
3689 let c
: uint8x8_t
= simd_shuffle8
!( c
, c
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
3693 /// Unsigned multiply-subtract long
3695 #[target_feature(enable = "neon" )]
3696 #[cfg_attr(test, assert_instr(umlsl2))]
3697 pub unsafe fn vmlsl_high_u16 ( a
: uint32x4_t
, b
: uint16x8_t
, c
: uint16x8_t
) -> uint32x4_t
{
3698 let b
: uint16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
3699 let c
: uint16x4_t
= simd_shuffle4
!( c
, c
, [ 4 , 5 , 6 , 7 ]);
3703 /// Unsigned multiply-subtract long
3705 #[target_feature(enable = "neon" )]
3706 #[cfg_attr(test, assert_instr(umlsl2))]
3707 pub unsafe fn vmlsl_high_u32 ( a
: uint64x2_t
, b
: uint32x4_t
, c
: uint32x4_t
) -> uint64x2_t
{
3708 let b
: uint32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
3709 let c
: uint32x2_t
= simd_shuffle2
!( c
, c
, [ 2 , 3 ]);
3713 /// Multiply-subtract long
3715 #[target_feature(enable = "neon" )]
3716 #[cfg_attr(test, assert_instr(smlsl2))]
3717 pub unsafe fn vmlsl_high_n_s16 ( a
: int32x4_t
, b
: int16x8_t
, c
: i16 ) -> int32x4_t
{
3718 vmlsl_high_s16 ( a
, b
, vdupq_n_s16 ( c
))
3721 /// Multiply-subtract long
3723 #[target_feature(enable = "neon" )]
3724 #[cfg_attr(test, assert_instr(smlsl2))]
3725 pub unsafe fn vmlsl_high_n_s32 ( a
: int64x2_t
, b
: int32x4_t
, c
: i32 ) -> int64x2_t
{
3726 vmlsl_high_s32 ( a
, b
, vdupq_n_s32 ( c
))
3729 /// Multiply-subtract long
3731 #[target_feature(enable = "neon" )]
3732 #[cfg_attr(test, assert_instr(umlsl2))]
3733 pub unsafe fn vmlsl_high_n_u16 ( a
: uint32x4_t
, b
: uint16x8_t
, c
: u16 ) -> uint32x4_t
{
3734 vmlsl_high_u16 ( a
, b
, vdupq_n_u16 ( c
))
3737 /// Multiply-subtract long
3739 #[target_feature(enable = "neon" )]
3740 #[cfg_attr(test, assert_instr(umlsl2))]
3741 pub unsafe fn vmlsl_high_n_u32 ( a
: uint64x2_t
, b
: uint32x4_t
, c
: u32 ) -> uint64x2_t
{
3742 vmlsl_high_u32 ( a
, b
, vdupq_n_u32 ( c
))
3745 /// Multiply-subtract long
3747 #[target_feature(enable = "neon" )]
3748 #[cfg_attr(test, assert_instr(smlsl2, LANE = 1))]
3749 #[rustc_legacy_const_generics(3)]
3750 pub unsafe fn vmlsl_high_lane_s16
< const LANE
: i32 >( a
: int32x4_t
, b
: int16x8_t
, c
: int16x4_t
) -> int32x4_t
{
3751 static_assert_imm2
!( LANE
);
3752 vmlsl_high_s16 ( a
, b
, simd_shuffle8
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3755 /// Multiply-subtract long
3757 #[target_feature(enable = "neon" )]
3758 #[cfg_attr(test, assert_instr(smlsl2, LANE = 1))]
3759 #[rustc_legacy_const_generics(3)]
3760 pub unsafe fn vmlsl_high_laneq_s16
< const LANE
: i32 >( a
: int32x4_t
, b
: int16x8_t
, c
: int16x8_t
) -> int32x4_t
{
3761 static_assert_imm3
!( LANE
);
3762 vmlsl_high_s16 ( a
, b
, simd_shuffle8
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3765 /// Multiply-subtract long
3767 #[target_feature(enable = "neon" )]
3768 #[cfg_attr(test, assert_instr(smlsl2, LANE = 1))]
3769 #[rustc_legacy_const_generics(3)]
3770 pub unsafe fn vmlsl_high_lane_s32
< const LANE
: i32 >( a
: int64x2_t
, b
: int32x4_t
, c
: int32x2_t
) -> int64x2_t
{
3771 static_assert_imm1
!( LANE
);
3772 vmlsl_high_s32 ( a
, b
, simd_shuffle4
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3775 /// Multiply-subtract long
3777 #[target_feature(enable = "neon" )]
3778 #[cfg_attr(test, assert_instr(smlsl2, LANE = 1))]
3779 #[rustc_legacy_const_generics(3)]
3780 pub unsafe fn vmlsl_high_laneq_s32
< const LANE
: i32 >( a
: int64x2_t
, b
: int32x4_t
, c
: int32x4_t
) -> int64x2_t
{
3781 static_assert_imm2
!( LANE
);
3782 vmlsl_high_s32 ( a
, b
, simd_shuffle4
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3785 /// Multiply-subtract long
3787 #[target_feature(enable = "neon" )]
3788 #[cfg_attr(test, assert_instr(umlsl2, LANE = 1))]
3789 #[rustc_legacy_const_generics(3)]
3790 pub unsafe fn vmlsl_high_lane_u16
< const LANE
: i32 >( a
: uint32x4_t
, b
: uint16x8_t
, c
: uint16x4_t
) -> uint32x4_t
{
3791 static_assert_imm2
!( LANE
);
3792 vmlsl_high_u16 ( a
, b
, simd_shuffle8
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3795 /// Multiply-subtract long
3797 #[target_feature(enable = "neon" )]
3798 #[cfg_attr(test, assert_instr(umlsl2, LANE = 1))]
3799 #[rustc_legacy_const_generics(3)]
3800 pub unsafe fn vmlsl_high_laneq_u16
< const LANE
: i32 >( a
: uint32x4_t
, b
: uint16x8_t
, c
: uint16x8_t
) -> uint32x4_t
{
3801 static_assert_imm3
!( LANE
);
3802 vmlsl_high_u16 ( a
, b
, simd_shuffle8
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3805 /// Multiply-subtract long
3807 #[target_feature(enable = "neon" )]
3808 #[cfg_attr(test, assert_instr(umlsl2, LANE = 1))]
3809 #[rustc_legacy_const_generics(3)]
3810 pub unsafe fn vmlsl_high_lane_u32
< const LANE
: i32 >( a
: uint64x2_t
, b
: uint32x4_t
, c
: uint32x2_t
) -> uint64x2_t
{
3811 static_assert_imm1
!( LANE
);
3812 vmlsl_high_u32 ( a
, b
, simd_shuffle4
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3815 /// Multiply-subtract long
3817 #[target_feature(enable = "neon" )]
3818 #[cfg_attr(test, assert_instr(umlsl2, LANE = 1))]
3819 #[rustc_legacy_const_generics(3)]
3820 pub unsafe fn vmlsl_high_laneq_u32
< const LANE
: i32 >( a
: uint64x2_t
, b
: uint32x4_t
, c
: uint32x4_t
) -> uint64x2_t
{
3821 static_assert_imm2
!( LANE
);
3822 vmlsl_high_u32 ( a
, b
, simd_shuffle4
!( c
, c
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
3827 #[target_feature(enable = "neon" )]
3828 #[cfg_attr(test, assert_instr(xtn2))]
3829 pub unsafe fn vmovn_high_s16 ( a
: int8x8_t
, b
: int16x8_t
) -> int8x16_t
{
3830 let c
: int8x8_t
= simd_cast ( b
);
3831 simd_shuffle16
!( a
, c
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
3836 #[target_feature(enable = "neon" )]
3837 #[cfg_attr(test, assert_instr(xtn2))]
3838 pub unsafe fn vmovn_high_s32 ( a
: int16x4_t
, b
: int32x4_t
) -> int16x8_t
{
3839 let c
: int16x4_t
= simd_cast ( b
);
3840 simd_shuffle8
!( a
, c
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
3845 #[target_feature(enable = "neon" )]
3846 #[cfg_attr(test, assert_instr(xtn2))]
3847 pub unsafe fn vmovn_high_s64 ( a
: int32x2_t
, b
: int64x2_t
) -> int32x4_t
{
3848 let c
: int32x2_t
= simd_cast ( b
);
3849 simd_shuffle4
!( a
, c
, [ 0 , 1 , 2 , 3 ])
3854 #[target_feature(enable = "neon" )]
3855 #[cfg_attr(test, assert_instr(xtn2))]
3856 pub unsafe fn vmovn_high_u16 ( a
: uint8x8_t
, b
: uint16x8_t
) -> uint8x16_t
{
3857 let c
: uint8x8_t
= simd_cast ( b
);
3858 simd_shuffle16
!( a
, c
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
3863 #[target_feature(enable = "neon" )]
3864 #[cfg_attr(test, assert_instr(xtn2))]
3865 pub unsafe fn vmovn_high_u32 ( a
: uint16x4_t
, b
: uint32x4_t
) -> uint16x8_t
{
3866 let c
: uint16x4_t
= simd_cast ( b
);
3867 simd_shuffle8
!( a
, c
, [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
3872 #[target_feature(enable = "neon" )]
3873 #[cfg_attr(test, assert_instr(xtn2))]
3874 pub unsafe fn vmovn_high_u64 ( a
: uint32x2_t
, b
: uint64x2_t
) -> uint32x4_t
{
3875 let c
: uint32x2_t
= simd_cast ( b
);
3876 simd_shuffle4
!( a
, c
, [ 0 , 1 , 2 , 3 ])
3881 #[target_feature(enable = "neon" )]
3882 #[cfg_attr(test, assert_instr(neg))]
3883 pub unsafe fn vneg_s64 ( a
: int64x1_t
) -> int64x1_t
{
3889 #[target_feature(enable = "neon" )]
3890 #[cfg_attr(test, assert_instr(neg))]
3891 pub unsafe fn vnegq_s64 ( a
: int64x2_t
) -> int64x2_t
{
3897 #[target_feature(enable = "neon" )]
3898 #[cfg_attr(test, assert_instr(fneg))]
3899 pub unsafe fn vneg_f64 ( a
: float64x1_t
) -> float64x1_t
{
3905 #[target_feature(enable = "neon" )]
3906 #[cfg_attr(test, assert_instr(fneg))]
3907 pub unsafe fn vnegq_f64 ( a
: float64x2_t
) -> float64x2_t
{
3911 /// Signed saturating negate
3913 #[target_feature(enable = "neon" )]
3914 #[cfg_attr(test, assert_instr(sqneg))]
3915 pub unsafe fn vqneg_s64 ( a
: int64x1_t
) -> int64x1_t
{
3916 #[allow(improper_ctypes)]
3918 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqneg.v1i64" )]
3919 fn vqneg_s64_ ( a
: int64x1_t
) -> int64x1_t
;
3924 /// Signed saturating negate
3926 #[target_feature(enable = "neon" )]
3927 #[cfg_attr(test, assert_instr(sqneg))]
3928 pub unsafe fn vqnegq_s64 ( a
: int64x2_t
) -> int64x2_t
{
3929 #[allow(improper_ctypes)]
3931 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqneg.v2i64" )]
3932 fn vqnegq_s64_ ( a
: int64x2_t
) -> int64x2_t
;
3937 /// Saturating subtract
3939 #[target_feature(enable = "neon" )]
3940 #[cfg_attr(test, assert_instr(sqsub))]
3941 pub unsafe fn vqsubb_s8 ( a
: i8 , b
: i8 ) -> i8 {
3942 let a
: int8x8_t
= vdup_n_s8 ( a
);
3943 let b
: int8x8_t
= vdup_n_s8 ( b
);
3944 simd_extract ( vqsub_s8 ( a
, b
), 0 )
3947 /// Saturating subtract
3949 #[target_feature(enable = "neon" )]
3950 #[cfg_attr(test, assert_instr(sqsub))]
3951 pub unsafe fn vqsubh_s16 ( a
: i16 , b
: i16 ) -> i16 {
3952 let a
: int16x4_t
= vdup_n_s16 ( a
);
3953 let b
: int16x4_t
= vdup_n_s16 ( b
);
3954 simd_extract ( vqsub_s16 ( a
, b
), 0 )
3957 /// Saturating subtract
3959 #[target_feature(enable = "neon" )]
3960 #[cfg_attr(test, assert_instr(uqsub))]
3961 pub unsafe fn vqsubb_u8 ( a
: u8 , b
: u8 ) -> u8 {
3962 let a
: uint8x8_t
= vdup_n_u8 ( a
);
3963 let b
: uint8x8_t
= vdup_n_u8 ( b
);
3964 simd_extract ( vqsub_u8 ( a
, b
), 0 )
3967 /// Saturating subtract
3969 #[target_feature(enable = "neon" )]
3970 #[cfg_attr(test, assert_instr(uqsub))]
3971 pub unsafe fn vqsubh_u16 ( a
: u16 , b
: u16 ) -> u16 {
3972 let a
: uint16x4_t
= vdup_n_u16 ( a
);
3973 let b
: uint16x4_t
= vdup_n_u16 ( b
);
3974 simd_extract ( vqsub_u16 ( a
, b
), 0 )
3977 /// Saturating subtract
3979 #[target_feature(enable = "neon" )]
3980 #[cfg_attr(test, assert_instr(uqsub))]
3981 pub unsafe fn vqsubs_u32 ( a
: u32 , b
: u32 ) -> u32 {
3982 #[allow(improper_ctypes)]
3984 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uqsub.i32" )]
3985 fn vqsubs_u32_ ( a
: u32 , b
: u32 ) -> u32 ;
3990 /// Saturating subtract
3992 #[target_feature(enable = "neon" )]
3993 #[cfg_attr(test, assert_instr(uqsub))]
3994 pub unsafe fn vqsubd_u64 ( a
: u64 , b
: u64 ) -> u64 {
3995 #[allow(improper_ctypes)]
3997 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uqsub.i64" )]
3998 fn vqsubd_u64_ ( a
: u64 , b
: u64 ) -> u64 ;
4003 /// Saturating subtract
4005 #[target_feature(enable = "neon" )]
4006 #[cfg_attr(test, assert_instr(sqsub))]
4007 pub unsafe fn vqsubs_s32 ( a
: i32 , b
: i32 ) -> i32 {
4008 #[allow(improper_ctypes)]
4010 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqsub.i32" )]
4011 fn vqsubs_s32_ ( a
: i32 , b
: i32 ) -> i32 ;
4016 /// Saturating subtract
4018 #[target_feature(enable = "neon" )]
4019 #[cfg_attr(test, assert_instr(sqsub))]
4020 pub unsafe fn vqsubd_s64 ( a
: i64 , b
: i64 ) -> i64 {
4021 #[allow(improper_ctypes)]
4023 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqsub.i64" )]
4024 fn vqsubd_s64_ ( a
: i64 , b
: i64 ) -> i64 ;
4029 /// Reverse bit order
4031 #[target_feature(enable = "neon" )]
4032 #[cfg_attr(test, assert_instr(rbit))]
4033 pub unsafe fn vrbit_s8 ( a
: int8x8_t
) -> int8x8_t
{
4034 #[allow(improper_ctypes)]
4036 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.rbit.v8i8" )]
4037 fn vrbit_s8_ ( a
: int8x8_t
) -> int8x8_t
;
4042 /// Reverse bit order
4044 #[target_feature(enable = "neon" )]
4045 #[cfg_attr(test, assert_instr(rbit))]
4046 pub unsafe fn vrbitq_s8 ( a
: int8x16_t
) -> int8x16_t
{
4047 #[allow(improper_ctypes)]
4049 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.rbit.v16i8" )]
4050 fn vrbitq_s8_ ( a
: int8x16_t
) -> int8x16_t
;
4055 /// Reverse bit order
4057 #[target_feature(enable = "neon" )]
4058 #[cfg_attr(test, assert_instr(rbit))]
4059 pub unsafe fn vrbit_u8 ( a
: uint8x8_t
) -> uint8x8_t
{
4060 transmute ( vrbit_s8 ( transmute ( a
)))
4063 /// Reverse bit order
4065 #[target_feature(enable = "neon" )]
4066 #[cfg_attr(test, assert_instr(rbit))]
4067 pub unsafe fn vrbitq_u8 ( a
: uint8x16_t
) -> uint8x16_t
{
4068 transmute ( vrbitq_s8 ( transmute ( a
)))
4071 /// Reverse bit order
4073 #[target_feature(enable = "neon" )]
4074 #[cfg_attr(test, assert_instr(rbit))]
4075 pub unsafe fn vrbit_p8 ( a
: poly8x8_t
) -> poly8x8_t
{
4076 transmute ( vrbit_s8 ( transmute ( a
)))
4079 /// Reverse bit order
4081 #[target_feature(enable = "neon" )]
4082 #[cfg_attr(test, assert_instr(rbit))]
4083 pub unsafe fn vrbitq_p8 ( a
: poly8x16_t
) -> poly8x16_t
{
4084 transmute ( vrbitq_s8 ( transmute ( a
)))
4087 /// Floating-point round to integral exact, using current rounding mode
4089 #[target_feature(enable = "neon" )]
4090 #[cfg_attr(test, assert_instr(frintx))]
4091 pub unsafe fn vrndx_f32 ( a
: float32x2_t
) -> float32x2_t
{
4092 #[allow(improper_ctypes)]
4094 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.rint.v2f32" )]
4095 fn vrndx_f32_ ( a
: float32x2_t
) -> float32x2_t
;
4100 /// Floating-point round to integral exact, using current rounding mode
4102 #[target_feature(enable = "neon" )]
4103 #[cfg_attr(test, assert_instr(frintx))]
4104 pub unsafe fn vrndxq_f32 ( a
: float32x4_t
) -> float32x4_t
{
4105 #[allow(improper_ctypes)]
4107 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.rint.v4f32" )]
4108 fn vrndxq_f32_ ( a
: float32x4_t
) -> float32x4_t
;
4113 /// Floating-point round to integral exact, using current rounding mode
4115 #[target_feature(enable = "neon" )]
4116 #[cfg_attr(test, assert_instr(frintx))]
4117 pub unsafe fn vrndx_f64 ( a
: float64x1_t
) -> float64x1_t
{
4118 #[allow(improper_ctypes)]
4120 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.rint.v1f64" )]
4121 fn vrndx_f64_ ( a
: float64x1_t
) -> float64x1_t
;
4126 /// Floating-point round to integral exact, using current rounding mode
4128 #[target_feature(enable = "neon" )]
4129 #[cfg_attr(test, assert_instr(frintx))]
4130 pub unsafe fn vrndxq_f64 ( a
: float64x2_t
) -> float64x2_t
{
4131 #[allow(improper_ctypes)]
4133 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.rint.v2f64" )]
4134 fn vrndxq_f64_ ( a
: float64x2_t
) -> float64x2_t
;
4139 /// Floating-point round to integral, to nearest with ties to away
4141 #[target_feature(enable = "neon" )]
4142 #[cfg_attr(test, assert_instr(frinta))]
4143 pub unsafe fn vrnda_f32 ( a
: float32x2_t
) -> float32x2_t
{
4144 #[allow(improper_ctypes)]
4146 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.round.v2f32" )]
4147 fn vrnda_f32_ ( a
: float32x2_t
) -> float32x2_t
;
4152 /// Floating-point round to integral, to nearest with ties to away
4154 #[target_feature(enable = "neon" )]
4155 #[cfg_attr(test, assert_instr(frinta))]
4156 pub unsafe fn vrndaq_f32 ( a
: float32x4_t
) -> float32x4_t
{
4157 #[allow(improper_ctypes)]
4159 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.round.v4f32" )]
4160 fn vrndaq_f32_ ( a
: float32x4_t
) -> float32x4_t
;
4165 /// Floating-point round to integral, to nearest with ties to away
4167 #[target_feature(enable = "neon" )]
4168 #[cfg_attr(test, assert_instr(frinta))]
4169 pub unsafe fn vrnda_f64 ( a
: float64x1_t
) -> float64x1_t
{
4170 #[allow(improper_ctypes)]
4172 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.round.v1f64" )]
4173 fn vrnda_f64_ ( a
: float64x1_t
) -> float64x1_t
;
4178 /// Floating-point round to integral, to nearest with ties to away
4180 #[target_feature(enable = "neon" )]
4181 #[cfg_attr(test, assert_instr(frinta))]
4182 pub unsafe fn vrndaq_f64 ( a
: float64x2_t
) -> float64x2_t
{
4183 #[allow(improper_ctypes)]
4185 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.round.v2f64" )]
4186 fn vrndaq_f64_ ( a
: float64x2_t
) -> float64x2_t
;
4191 /// Floating-point round to integral, to nearest with ties to even
4193 #[target_feature(enable = "neon" )]
4194 #[cfg_attr(test, assert_instr(frintn))]
4195 pub unsafe fn vrndn_f64 ( a
: float64x1_t
) -> float64x1_t
{
4196 #[allow(improper_ctypes)]
4198 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.frintn.v1f64" )]
4199 fn vrndn_f64_ ( a
: float64x1_t
) -> float64x1_t
;
4204 /// Floating-point round to integral, to nearest with ties to even
4206 #[target_feature(enable = "neon" )]
4207 #[cfg_attr(test, assert_instr(frintn))]
4208 pub unsafe fn vrndnq_f64 ( a
: float64x2_t
) -> float64x2_t
{
4209 #[allow(improper_ctypes)]
4211 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.frintn.v2f64" )]
4212 fn vrndnq_f64_ ( a
: float64x2_t
) -> float64x2_t
;
4217 /// Floating-point round to integral, toward minus infinity
4219 #[target_feature(enable = "neon" )]
4220 #[cfg_attr(test, assert_instr(frintm))]
4221 pub unsafe fn vrndm_f32 ( a
: float32x2_t
) -> float32x2_t
{
4222 #[allow(improper_ctypes)]
4224 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.floor.v2f32" )]
4225 fn vrndm_f32_ ( a
: float32x2_t
) -> float32x2_t
;
4230 /// Floating-point round to integral, toward minus infinity
4232 #[target_feature(enable = "neon" )]
4233 #[cfg_attr(test, assert_instr(frintm))]
4234 pub unsafe fn vrndmq_f32 ( a
: float32x4_t
) -> float32x4_t
{
4235 #[allow(improper_ctypes)]
4237 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.floor.v4f32" )]
4238 fn vrndmq_f32_ ( a
: float32x4_t
) -> float32x4_t
;
4243 /// Floating-point round to integral, toward minus infinity
4245 #[target_feature(enable = "neon" )]
4246 #[cfg_attr(test, assert_instr(frintm))]
4247 pub unsafe fn vrndm_f64 ( a
: float64x1_t
) -> float64x1_t
{
4248 #[allow(improper_ctypes)]
4250 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.floor.v1f64" )]
4251 fn vrndm_f64_ ( a
: float64x1_t
) -> float64x1_t
;
4256 /// Floating-point round to integral, toward minus infinity
4258 #[target_feature(enable = "neon" )]
4259 #[cfg_attr(test, assert_instr(frintm))]
4260 pub unsafe fn vrndmq_f64 ( a
: float64x2_t
) -> float64x2_t
{
4261 #[allow(improper_ctypes)]
4263 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.floor.v2f64" )]
4264 fn vrndmq_f64_ ( a
: float64x2_t
) -> float64x2_t
;
4269 /// Floating-point round to integral, toward plus infinity
4271 #[target_feature(enable = "neon" )]
4272 #[cfg_attr(test, assert_instr(frintp))]
4273 pub unsafe fn vrndp_f32 ( a
: float32x2_t
) -> float32x2_t
{
4274 #[allow(improper_ctypes)]
4276 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.ceil.v2f32" )]
4277 fn vrndp_f32_ ( a
: float32x2_t
) -> float32x2_t
;
4282 /// Floating-point round to integral, toward plus infinity
4284 #[target_feature(enable = "neon" )]
4285 #[cfg_attr(test, assert_instr(frintp))]
4286 pub unsafe fn vrndpq_f32 ( a
: float32x4_t
) -> float32x4_t
{
4287 #[allow(improper_ctypes)]
4289 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.ceil.v4f32" )]
4290 fn vrndpq_f32_ ( a
: float32x4_t
) -> float32x4_t
;
4295 /// Floating-point round to integral, toward plus infinity
4297 #[target_feature(enable = "neon" )]
4298 #[cfg_attr(test, assert_instr(frintp))]
4299 pub unsafe fn vrndp_f64 ( a
: float64x1_t
) -> float64x1_t
{
4300 #[allow(improper_ctypes)]
4302 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.ceil.v1f64" )]
4303 fn vrndp_f64_ ( a
: float64x1_t
) -> float64x1_t
;
4308 /// Floating-point round to integral, toward plus infinity
4310 #[target_feature(enable = "neon" )]
4311 #[cfg_attr(test, assert_instr(frintp))]
4312 pub unsafe fn vrndpq_f64 ( a
: float64x2_t
) -> float64x2_t
{
4313 #[allow(improper_ctypes)]
4315 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.ceil.v2f64" )]
4316 fn vrndpq_f64_ ( a
: float64x2_t
) -> float64x2_t
;
4321 /// Floating-point round to integral, toward zero
4323 #[target_feature(enable = "neon" )]
4324 #[cfg_attr(test, assert_instr(frintz))]
4325 pub unsafe fn vrnd_f32 ( a
: float32x2_t
) -> float32x2_t
{
4326 #[allow(improper_ctypes)]
4328 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.trunc.v2f32" )]
4329 fn vrnd_f32_ ( a
: float32x2_t
) -> float32x2_t
;
4334 /// Floating-point round to integral, toward zero
4336 #[target_feature(enable = "neon" )]
4337 #[cfg_attr(test, assert_instr(frintz))]
4338 pub unsafe fn vrndq_f32 ( a
: float32x4_t
) -> float32x4_t
{
4339 #[allow(improper_ctypes)]
4341 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.trunc.v4f32" )]
4342 fn vrndq_f32_ ( a
: float32x4_t
) -> float32x4_t
;
4347 /// Floating-point round to integral, toward zero
4349 #[target_feature(enable = "neon" )]
4350 #[cfg_attr(test, assert_instr(frintz))]
4351 pub unsafe fn vrnd_f64 ( a
: float64x1_t
) -> float64x1_t
{
4352 #[allow(improper_ctypes)]
4354 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.trunc.v1f64" )]
4355 fn vrnd_f64_ ( a
: float64x1_t
) -> float64x1_t
;
4360 /// Floating-point round to integral, toward zero
4362 #[target_feature(enable = "neon" )]
4363 #[cfg_attr(test, assert_instr(frintz))]
4364 pub unsafe fn vrndq_f64 ( a
: float64x2_t
) -> float64x2_t
{
4365 #[allow(improper_ctypes)]
4367 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.trunc.v2f64" )]
4368 fn vrndq_f64_ ( a
: float64x2_t
) -> float64x2_t
;
4373 /// Floating-point round to integral, using current rounding mode
4375 #[target_feature(enable = "neon" )]
4376 #[cfg_attr(test, assert_instr(frinti))]
4377 pub unsafe fn vrndi_f32 ( a
: float32x2_t
) -> float32x2_t
{
4378 #[allow(improper_ctypes)]
4380 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.nearbyint.v2f32" )]
4381 fn vrndi_f32_ ( a
: float32x2_t
) -> float32x2_t
;
4386 /// Floating-point round to integral, using current rounding mode
4388 #[target_feature(enable = "neon" )]
4389 #[cfg_attr(test, assert_instr(frinti))]
4390 pub unsafe fn vrndiq_f32 ( a
: float32x4_t
) -> float32x4_t
{
4391 #[allow(improper_ctypes)]
4393 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.nearbyint.v4f32" )]
4394 fn vrndiq_f32_ ( a
: float32x4_t
) -> float32x4_t
;
4399 /// Floating-point round to integral, using current rounding mode
4401 #[target_feature(enable = "neon" )]
4402 #[cfg_attr(test, assert_instr(frinti))]
4403 pub unsafe fn vrndi_f64 ( a
: float64x1_t
) -> float64x1_t
{
4404 #[allow(improper_ctypes)]
4406 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.nearbyint.v1f64" )]
4407 fn vrndi_f64_ ( a
: float64x1_t
) -> float64x1_t
;
4412 /// Floating-point round to integral, using current rounding mode
4414 #[target_feature(enable = "neon" )]
4415 #[cfg_attr(test, assert_instr(frinti))]
4416 pub unsafe fn vrndiq_f64 ( a
: float64x2_t
) -> float64x2_t
{
4417 #[allow(improper_ctypes)]
4419 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.nearbyint.v2f64" )]
4420 fn vrndiq_f64_ ( a
: float64x2_t
) -> float64x2_t
;
4427 #[target_feature(enable = "neon" )]
4428 #[cfg_attr(test, assert_instr(sqadd))]
4429 pub unsafe fn vqaddb_s8 ( a
: i8 , b
: i8 ) -> i8 {
4430 let a
: int8x8_t
= vdup_n_s8 ( a
);
4431 let b
: int8x8_t
= vdup_n_s8 ( b
);
4432 simd_extract ( vqadd_s8 ( a
, b
), 0 )
4437 #[target_feature(enable = "neon" )]
4438 #[cfg_attr(test, assert_instr(sqadd))]
4439 pub unsafe fn vqaddh_s16 ( a
: i16 , b
: i16 ) -> i16 {
4440 let a
: int16x4_t
= vdup_n_s16 ( a
);
4441 let b
: int16x4_t
= vdup_n_s16 ( b
);
4442 simd_extract ( vqadd_s16 ( a
, b
), 0 )
4447 #[target_feature(enable = "neon" )]
4448 #[cfg_attr(test, assert_instr(uqadd))]
4449 pub unsafe fn vqaddb_u8 ( a
: u8 , b
: u8 ) -> u8 {
4450 let a
: uint8x8_t
= vdup_n_u8 ( a
);
4451 let b
: uint8x8_t
= vdup_n_u8 ( b
);
4452 simd_extract ( vqadd_u8 ( a
, b
), 0 )
4457 #[target_feature(enable = "neon" )]
4458 #[cfg_attr(test, assert_instr(uqadd))]
4459 pub unsafe fn vqaddh_u16 ( a
: u16 , b
: u16 ) -> u16 {
4460 let a
: uint16x4_t
= vdup_n_u16 ( a
);
4461 let b
: uint16x4_t
= vdup_n_u16 ( b
);
4462 simd_extract ( vqadd_u16 ( a
, b
), 0 )
4467 #[target_feature(enable = "neon" )]
4468 #[cfg_attr(test, assert_instr(uqadd))]
4469 pub unsafe fn vqadds_u32 ( a
: u32 , b
: u32 ) -> u32 {
4470 #[allow(improper_ctypes)]
4472 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uqadd.i32" )]
4473 fn vqadds_u32_ ( a
: u32 , b
: u32 ) -> u32 ;
4480 #[target_feature(enable = "neon" )]
4481 #[cfg_attr(test, assert_instr(uqadd))]
4482 pub unsafe fn vqaddd_u64 ( a
: u64 , b
: u64 ) -> u64 {
4483 #[allow(improper_ctypes)]
4485 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uqadd.i64" )]
4486 fn vqaddd_u64_ ( a
: u64 , b
: u64 ) -> u64 ;
4493 #[target_feature(enable = "neon" )]
4494 #[cfg_attr(test, assert_instr(sqadd))]
4495 pub unsafe fn vqadds_s32 ( a
: i32 , b
: i32 ) -> i32 {
4496 #[allow(improper_ctypes)]
4498 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqadd.i32" )]
4499 fn vqadds_s32_ ( a
: i32 , b
: i32 ) -> i32 ;
4506 #[target_feature(enable = "neon" )]
4507 #[cfg_attr(test, assert_instr(sqadd))]
4508 pub unsafe fn vqaddd_s64 ( a
: i64 , b
: i64 ) -> i64 {
4509 #[allow(improper_ctypes)]
4511 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqadd.i64" )]
4512 fn vqaddd_s64_ ( a
: i64 , b
: i64 ) -> i64 ;
4519 #[target_feature(enable = "neon" )]
4520 #[cfg_attr(test, assert_instr(fmul))]
4521 pub unsafe fn vmul_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
4527 #[target_feature(enable = "neon" )]
4528 #[cfg_attr(test, assert_instr(fmul))]
4529 pub unsafe fn vmulq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
4533 /// Vector multiply by scalar
4535 #[target_feature(enable = "neon" )]
4536 #[cfg_attr(test, assert_instr(fmul))]
4537 pub unsafe fn vmul_n_f64 ( a
: float64x1_t
, b
: f64 ) -> float64x1_t
{
4538 simd_mul ( a
, vdup_n_f64 ( b
))
4541 /// Vector multiply by scalar
4543 #[target_feature(enable = "neon" )]
4544 #[cfg_attr(test, assert_instr(fmul))]
4545 pub unsafe fn vmulq_n_f64 ( a
: float64x2_t
, b
: f64 ) -> float64x2_t
{
4546 simd_mul ( a
, vdupq_n_f64 ( b
))
4549 /// Floating-point multiply
4551 #[target_feature(enable = "neon" )]
4552 #[cfg_attr(test, assert_instr(fmul, LANE = 0))]
4553 #[rustc_legacy_const_generics(2)]
4554 pub unsafe fn vmul_lane_f64
< const LANE
: i32 >( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
4555 static_assert
!( LANE
: i32 where LANE
== 0 );
4556 simd_mul ( a
, transmute
::< f64 , _
>( simd_extract ( b
, LANE
as u32 )))
4559 /// Floating-point multiply
4561 #[target_feature(enable = "neon" )]
4562 #[cfg_attr(test, assert_instr(fmul, LANE = 0))]
4563 #[rustc_legacy_const_generics(2)]
4564 pub unsafe fn vmul_laneq_f64
< const LANE
: i32 >( a
: float64x1_t
, b
: float64x2_t
) -> float64x1_t
{
4565 static_assert_imm1
!( LANE
);
4566 simd_mul ( a
, transmute
::< f64 , _
>( simd_extract ( b
, LANE
as u32 )))
4569 /// Floating-point multiply
4571 #[target_feature(enable = "neon" )]
4572 #[cfg_attr(test, assert_instr(fmul, LANE = 0))]
4573 #[rustc_legacy_const_generics(2)]
4574 pub unsafe fn vmulq_lane_f64
< const LANE
: i32 >( a
: float64x2_t
, b
: float64x1_t
) -> float64x2_t
{
4575 static_assert
!( LANE
: i32 where LANE
== 0 );
4576 simd_mul ( a
, simd_shuffle2
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 ]))
4579 /// Floating-point multiply
4581 #[target_feature(enable = "neon" )]
4582 #[cfg_attr(test, assert_instr(fmul, LANE = 0))]
4583 #[rustc_legacy_const_generics(2)]
4584 pub unsafe fn vmulq_laneq_f64
< const LANE
: i32 >( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
4585 static_assert_imm1
!( LANE
);
4586 simd_mul ( a
, simd_shuffle2
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 ]))
4589 /// Floating-point multiply
4591 #[target_feature(enable = "neon" )]
4592 #[cfg_attr(test, assert_instr(fmul, LANE = 0))]
4593 #[rustc_legacy_const_generics(2)]
4594 pub unsafe fn vmuls_lane_f32
< const LANE
: i32 >( a
: f32 , b
: float32x2_t
) -> f32 {
4595 static_assert_imm1
!( LANE
);
4596 let b
: f32 = simd_extract ( b
, LANE
as u32 );
4600 /// Floating-point multiply
4602 #[target_feature(enable = "neon" )]
4603 #[cfg_attr(test, assert_instr(fmul, LANE = 0))]
4604 #[rustc_legacy_const_generics(2)]
4605 pub unsafe fn vmuls_laneq_f32
< const LANE
: i32 >( a
: f32 , b
: float32x4_t
) -> f32 {
4606 static_assert_imm2
!( LANE
);
4607 let b
: f32 = simd_extract ( b
, LANE
as u32 );
4611 /// Floating-point multiply
4613 #[target_feature(enable = "neon" )]
4614 #[cfg_attr(test, assert_instr(fmul, LANE = 0))]
4615 #[rustc_legacy_const_generics(2)]
4616 pub unsafe fn vmuld_lane_f64
< const LANE
: i32 >( a
: f64 , b
: float64x1_t
) -> f64 {
4617 static_assert
!( LANE
: i32 where LANE
== 0 );
4618 let b
: f64 = simd_extract ( b
, LANE
as u32 );
4622 /// Floating-point multiply
4624 #[target_feature(enable = "neon" )]
4625 #[cfg_attr(test, assert_instr(fmul, LANE = 0))]
4626 #[rustc_legacy_const_generics(2)]
4627 pub unsafe fn vmuld_laneq_f64
< const LANE
: i32 >( a
: f64 , b
: float64x2_t
) -> f64 {
4628 static_assert_imm1
!( LANE
);
4629 let b
: f64 = simd_extract ( b
, LANE
as u32 );
4633 /// Signed multiply long
4635 #[target_feature(enable = "neon" )]
4636 #[cfg_attr(test, assert_instr(smull2))]
4637 pub unsafe fn vmull_high_s8 ( a
: int8x16_t
, b
: int8x16_t
) -> int16x8_t
{
4638 let a
: int8x8_t
= simd_shuffle8
!( a
, a
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
4639 let b
: int8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
4643 /// Signed multiply long
4645 #[target_feature(enable = "neon" )]
4646 #[cfg_attr(test, assert_instr(smull2))]
4647 pub unsafe fn vmull_high_s16 ( a
: int16x8_t
, b
: int16x8_t
) -> int32x4_t
{
4648 let a
: int16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
4649 let b
: int16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
4653 /// Signed multiply long
4655 #[target_feature(enable = "neon" )]
4656 #[cfg_attr(test, assert_instr(smull2))]
4657 pub unsafe fn vmull_high_s32 ( a
: int32x4_t
, b
: int32x4_t
) -> int64x2_t
{
4658 let a
: int32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
4659 let b
: int32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
4663 /// Unsigned multiply long
4665 #[target_feature(enable = "neon" )]
4666 #[cfg_attr(test, assert_instr(umull2))]
4667 pub unsafe fn vmull_high_u8 ( a
: uint8x16_t
, b
: uint8x16_t
) -> uint16x8_t
{
4668 let a
: uint8x8_t
= simd_shuffle8
!( a
, a
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
4669 let b
: uint8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
4673 /// Unsigned multiply long
4675 #[target_feature(enable = "neon" )]
4676 #[cfg_attr(test, assert_instr(umull2))]
4677 pub unsafe fn vmull_high_u16 ( a
: uint16x8_t
, b
: uint16x8_t
) -> uint32x4_t
{
4678 let a
: uint16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
4679 let b
: uint16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
4683 /// Unsigned multiply long
4685 #[target_feature(enable = "neon" )]
4686 #[cfg_attr(test, assert_instr(umull2))]
4687 pub unsafe fn vmull_high_u32 ( a
: uint32x4_t
, b
: uint32x4_t
) -> uint64x2_t
{
4688 let a
: uint32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
4689 let b
: uint32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
4693 /// Polynomial multiply long
4695 #[target_feature(enable = "neon,aes" )]
4696 #[cfg_attr(test, assert_instr(pmull))]
4697 pub unsafe fn vmull_p64 ( a
: p64
, b
: p64
) -> p128
{
4698 #[allow(improper_ctypes)]
4700 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.pmull64" )]
4701 fn vmull_p64_ ( a
: p64
, b
: p64
) -> int8x16_t
;
4703 transmute ( vmull_p64_ ( a
, b
))
4706 /// Polynomial multiply long
4708 #[target_feature(enable = "neon" )]
4709 #[cfg_attr(test, assert_instr(pmull))]
4710 pub unsafe fn vmull_high_p8 ( a
: poly8x16_t
, b
: poly8x16_t
) -> poly16x8_t
{
4711 let a
: poly8x8_t
= simd_shuffle8
!( a
, a
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
4712 let b
: poly8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
4716 /// Polynomial multiply long
4718 #[target_feature(enable = "neon,aes" )]
4719 #[cfg_attr(test, assert_instr(pmull))]
4720 pub unsafe fn vmull_high_p64 ( a
: poly64x2_t
, b
: poly64x2_t
) -> p128
{
4721 vmull_p64 ( simd_extract ( a
, 1 ), simd_extract ( b
, 1 ))
4726 #[target_feature(enable = "neon" )]
4727 #[cfg_attr(test, assert_instr(smull2))]
4728 pub unsafe fn vmull_high_n_s16 ( a
: int16x8_t
, b
: i16 ) -> int32x4_t
{
4729 vmull_high_s16 ( a
, vdupq_n_s16 ( b
))
4734 #[target_feature(enable = "neon" )]
4735 #[cfg_attr(test, assert_instr(smull2))]
4736 pub unsafe fn vmull_high_n_s32 ( a
: int32x4_t
, b
: i32 ) -> int64x2_t
{
4737 vmull_high_s32 ( a
, vdupq_n_s32 ( b
))
4742 #[target_feature(enable = "neon" )]
4743 #[cfg_attr(test, assert_instr(umull2))]
4744 pub unsafe fn vmull_high_n_u16 ( a
: uint16x8_t
, b
: u16 ) -> uint32x4_t
{
4745 vmull_high_u16 ( a
, vdupq_n_u16 ( b
))
4750 #[target_feature(enable = "neon" )]
4751 #[cfg_attr(test, assert_instr(umull2))]
4752 pub unsafe fn vmull_high_n_u32 ( a
: uint32x4_t
, b
: u32 ) -> uint64x2_t
{
4753 vmull_high_u32 ( a
, vdupq_n_u32 ( b
))
4758 #[target_feature(enable = "neon" )]
4759 #[cfg_attr(test, assert_instr(smull2, LANE = 1))]
4760 #[rustc_legacy_const_generics(2)]
4761 pub unsafe fn vmull_high_lane_s16
< const LANE
: i32 >( a
: int16x8_t
, b
: int16x4_t
) -> int32x4_t
{
4762 static_assert_imm2
!( LANE
);
4763 vmull_high_s16 ( a
, simd_shuffle8
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
4768 #[target_feature(enable = "neon" )]
4769 #[cfg_attr(test, assert_instr(smull2, LANE = 1))]
4770 #[rustc_legacy_const_generics(2)]
4771 pub unsafe fn vmull_high_laneq_s16
< const LANE
: i32 >( a
: int16x8_t
, b
: int16x8_t
) -> int32x4_t
{
4772 static_assert_imm3
!( LANE
);
4773 vmull_high_s16 ( a
, simd_shuffle8
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
4778 #[target_feature(enable = "neon" )]
4779 #[cfg_attr(test, assert_instr(smull2, LANE = 1))]
4780 #[rustc_legacy_const_generics(2)]
4781 pub unsafe fn vmull_high_lane_s32
< const LANE
: i32 >( a
: int32x4_t
, b
: int32x2_t
) -> int64x2_t
{
4782 static_assert_imm1
!( LANE
);
4783 vmull_high_s32 ( a
, simd_shuffle4
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
4788 #[target_feature(enable = "neon" )]
4789 #[cfg_attr(test, assert_instr(smull2, LANE = 1))]
4790 #[rustc_legacy_const_generics(2)]
4791 pub unsafe fn vmull_high_laneq_s32
< const LANE
: i32 >( a
: int32x4_t
, b
: int32x4_t
) -> int64x2_t
{
4792 static_assert_imm2
!( LANE
);
4793 vmull_high_s32 ( a
, simd_shuffle4
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
4798 #[target_feature(enable = "neon" )]
4799 #[cfg_attr(test, assert_instr(umull2, LANE = 1))]
4800 #[rustc_legacy_const_generics(2)]
4801 pub unsafe fn vmull_high_lane_u16
< const LANE
: i32 >( a
: uint16x8_t
, b
: uint16x4_t
) -> uint32x4_t
{
4802 static_assert_imm2
!( LANE
);
4803 vmull_high_u16 ( a
, simd_shuffle8
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
4808 #[target_feature(enable = "neon" )]
4809 #[cfg_attr(test, assert_instr(umull2, LANE = 1))]
4810 #[rustc_legacy_const_generics(2)]
4811 pub unsafe fn vmull_high_laneq_u16
< const LANE
: i32 >( a
: uint16x8_t
, b
: uint16x8_t
) -> uint32x4_t
{
4812 static_assert_imm3
!( LANE
);
4813 vmull_high_u16 ( a
, simd_shuffle8
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
4818 #[target_feature(enable = "neon" )]
4819 #[cfg_attr(test, assert_instr(umull2, LANE = 1))]
4820 #[rustc_legacy_const_generics(2)]
4821 pub unsafe fn vmull_high_lane_u32
< const LANE
: i32 >( a
: uint32x4_t
, b
: uint32x2_t
) -> uint64x2_t
{
4822 static_assert_imm1
!( LANE
);
4823 vmull_high_u32 ( a
, simd_shuffle4
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
4828 #[target_feature(enable = "neon" )]
4829 #[cfg_attr(test, assert_instr(umull2, LANE = 1))]
4830 #[rustc_legacy_const_generics(2)]
4831 pub unsafe fn vmull_high_laneq_u32
< const LANE
: i32 >( a
: uint32x4_t
, b
: uint32x4_t
) -> uint64x2_t
{
4832 static_assert_imm2
!( LANE
);
4833 vmull_high_u32 ( a
, simd_shuffle4
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
4836 /// Floating-point multiply extended
4838 #[target_feature(enable = "neon" )]
4839 #[cfg_attr(test, assert_instr(fmulx))]
4840 pub unsafe fn vmulx_f32 ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
4841 #[allow(improper_ctypes)]
4843 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmulx.v2f32" )]
4844 fn vmulx_f32_ ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
;
4849 /// Floating-point multiply extended
4851 #[target_feature(enable = "neon" )]
4852 #[cfg_attr(test, assert_instr(fmulx))]
4853 pub unsafe fn vmulxq_f32 ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
4854 #[allow(improper_ctypes)]
4856 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmulx.v4f32" )]
4857 fn vmulxq_f32_ ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
;
4862 /// Floating-point multiply extended
4864 #[target_feature(enable = "neon" )]
4865 #[cfg_attr(test, assert_instr(fmulx))]
4866 pub unsafe fn vmulx_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
4867 #[allow(improper_ctypes)]
4869 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmulx.v1f64" )]
4870 fn vmulx_f64_ ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
;
4875 /// Floating-point multiply extended
4877 #[target_feature(enable = "neon" )]
4878 #[cfg_attr(test, assert_instr(fmulx))]
4879 pub unsafe fn vmulxq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
4880 #[allow(improper_ctypes)]
4882 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmulx.v2f64" )]
4883 fn vmulxq_f64_ ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
;
4888 /// Floating-point multiply extended
4890 #[target_feature(enable = "neon" )]
4891 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
4892 #[rustc_legacy_const_generics(2)]
4893 pub unsafe fn vmulx_lane_f64
< const LANE
: i32 >( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
4894 static_assert
!( LANE
: i32 where LANE
== 0 );
4895 vmulx_f64 ( a
, transmute
::< f64 , _
>( simd_extract ( b
, LANE
as u32 )))
4898 /// Floating-point multiply extended
4900 #[target_feature(enable = "neon" )]
4901 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
4902 #[rustc_legacy_const_generics(2)]
4903 pub unsafe fn vmulx_laneq_f64
< const LANE
: i32 >( a
: float64x1_t
, b
: float64x2_t
) -> float64x1_t
{
4904 static_assert_imm1
!( LANE
);
4905 vmulx_f64 ( a
, transmute
::< f64 , _
>( simd_extract ( b
, LANE
as u32 )))
4908 /// Floating-point multiply extended
4910 #[target_feature(enable = "neon" )]
4911 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
4912 #[rustc_legacy_const_generics(2)]
4913 pub unsafe fn vmulx_lane_f32
< const LANE
: i32 >( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
4914 static_assert_imm1
!( LANE
);
4915 vmulx_f32 ( a
, simd_shuffle2
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 ]))
4918 /// Floating-point multiply extended
4920 #[target_feature(enable = "neon" )]
4921 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
4922 #[rustc_legacy_const_generics(2)]
4923 pub unsafe fn vmulx_laneq_f32
< const LANE
: i32 >( a
: float32x2_t
, b
: float32x4_t
) -> float32x2_t
{
4924 static_assert_imm2
!( LANE
);
4925 vmulx_f32 ( a
, simd_shuffle2
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 ]))
4928 /// Floating-point multiply extended
4930 #[target_feature(enable = "neon" )]
4931 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
4932 #[rustc_legacy_const_generics(2)]
4933 pub unsafe fn vmulxq_lane_f32
< const LANE
: i32 >( a
: float32x4_t
, b
: float32x2_t
) -> float32x4_t
{
4934 static_assert_imm1
!( LANE
);
4935 vmulxq_f32 ( a
, simd_shuffle4
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
4938 /// Floating-point multiply extended
4940 #[target_feature(enable = "neon" )]
4941 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
4942 #[rustc_legacy_const_generics(2)]
4943 pub unsafe fn vmulxq_laneq_f32
< const LANE
: i32 >( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
4944 static_assert_imm2
!( LANE
);
4945 vmulxq_f32 ( a
, simd_shuffle4
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 , LANE
as u32 , LANE
as u32 ]))
4948 /// Floating-point multiply extended
4950 #[target_feature(enable = "neon" )]
4951 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
4952 #[rustc_legacy_const_generics(2)]
4953 pub unsafe fn vmulxq_lane_f64
< const LANE
: i32 >( a
: float64x2_t
, b
: float64x1_t
) -> float64x2_t
{
4954 static_assert
!( LANE
: i32 where LANE
== 0 );
4955 vmulxq_f64 ( a
, simd_shuffle2
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 ]))
4958 /// Floating-point multiply extended
4960 #[target_feature(enable = "neon" )]
4961 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
4962 #[rustc_legacy_const_generics(2)]
4963 pub unsafe fn vmulxq_laneq_f64
< const LANE
: i32 >( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
4964 static_assert_imm1
!( LANE
);
4965 vmulxq_f64 ( a
, simd_shuffle2
!( b
, b
, < const LANE
: i32 > [ LANE
as u32 , LANE
as u32 ]))
4968 /// Floating-point multiply extended
4970 #[target_feature(enable = "neon" )]
4971 #[cfg_attr(test, assert_instr(fmulx))]
4972 pub unsafe fn vmulxs_f32 ( a
: f32 , b
: f32 ) -> f32 {
4973 #[allow(improper_ctypes)]
4975 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmulx.f32" )]
4976 fn vmulxs_f32_ ( a
: f32 , b
: f32 ) -> f32 ;
4981 /// Floating-point multiply extended
4983 #[target_feature(enable = "neon" )]
4984 #[cfg_attr(test, assert_instr(fmulx))]
4985 pub unsafe fn vmulxd_f64 ( a
: f64 , b
: f64 ) -> f64 {
4986 #[allow(improper_ctypes)]
4988 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmulx.f64" )]
4989 fn vmulxd_f64_ ( a
: f64 , b
: f64 ) -> f64 ;
4994 /// Floating-point multiply extended
4996 #[target_feature(enable = "neon" )]
4997 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
4998 #[rustc_legacy_const_generics(2)]
4999 pub unsafe fn vmulxs_lane_f32
< const LANE
: i32 >( a
: f32 , b
: float32x2_t
) -> f32 {
5000 static_assert_imm1
!( LANE
);
5001 vmulxs_f32 ( a
, simd_extract ( b
, LANE
as u32 ))
5004 /// Floating-point multiply extended
5006 #[target_feature(enable = "neon" )]
5007 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
5008 #[rustc_legacy_const_generics(2)]
5009 pub unsafe fn vmulxs_laneq_f32
< const LANE
: i32 >( a
: f32 , b
: float32x4_t
) -> f32 {
5010 static_assert_imm2
!( LANE
);
5011 vmulxs_f32 ( a
, simd_extract ( b
, LANE
as u32 ))
5014 /// Floating-point multiply extended
5016 #[target_feature(enable = "neon" )]
5017 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
5018 #[rustc_legacy_const_generics(2)]
5019 pub unsafe fn vmulxd_lane_f64
< const LANE
: i32 >( a
: f64 , b
: float64x1_t
) -> f64 {
5020 static_assert
!( LANE
: i32 where LANE
== 0 );
5021 vmulxd_f64 ( a
, simd_extract ( b
, LANE
as u32 ))
5024 /// Floating-point multiply extended
5026 #[target_feature(enable = "neon" )]
5027 #[cfg_attr(test, assert_instr(fmulx, LANE = 0))]
5028 #[rustc_legacy_const_generics(2)]
5029 pub unsafe fn vmulxd_laneq_f64
< const LANE
: i32 >( a
: f64 , b
: float64x2_t
) -> f64 {
5030 static_assert_imm1
!( LANE
);
5031 vmulxd_f64 ( a
, simd_extract ( b
, LANE
as u32 ))
5034 /// Floating-point fused Multiply-Add to accumulator(vector)
5036 #[target_feature(enable = "neon" )]
5037 #[cfg_attr(test, assert_instr(fmadd))]
5038 pub unsafe fn vfma_f64 ( a
: float64x1_t
, b
: float64x1_t
, c
: float64x1_t
) -> float64x1_t
{
5039 #[allow(improper_ctypes)]
5041 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.fma.v1f64" )]
5042 fn vfma_f64_ ( a
: float64x1_t
, b
: float64x1_t
, c
: float64x1_t
) -> float64x1_t
;
5047 /// Floating-point fused Multiply-Add to accumulator(vector)
5049 #[target_feature(enable = "neon" )]
5050 #[cfg_attr(test, assert_instr(fmla))]
5051 pub unsafe fn vfmaq_f64 ( a
: float64x2_t
, b
: float64x2_t
, c
: float64x2_t
) -> float64x2_t
{
5052 #[allow(improper_ctypes)]
5054 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.fma.v2f64" )]
5055 fn vfmaq_f64_ ( a
: float64x2_t
, b
: float64x2_t
, c
: float64x2_t
) -> float64x2_t
;
5060 /// Floating-point fused Multiply-Add to accumulator(vector)
5062 #[target_feature(enable = "neon" )]
5063 #[cfg_attr(test, assert_instr(fmadd))]
5064 pub unsafe fn vfma_n_f64 ( a
: float64x1_t
, b
: float64x1_t
, c
: f64 ) -> float64x1_t
{
5065 vfma_f64 ( a
, b
, vdup_n_f64 ( c
))
5068 /// Floating-point fused Multiply-Add to accumulator(vector)
5070 #[target_feature(enable = "neon" )]
5071 #[cfg_attr(test, assert_instr(fmla))]
5072 pub unsafe fn vfmaq_n_f64 ( a
: float64x2_t
, b
: float64x2_t
, c
: f64 ) -> float64x2_t
{
5073 vfmaq_f64 ( a
, b
, vdupq_n_f64 ( c
))
5076 /// Floating-point fused multiply-add to accumulator
5078 #[target_feature(enable = "neon" )]
5079 #[cfg_attr(test, assert_instr(fmla, LANE = 0))]
5080 #[rustc_legacy_const_generics(3)]
5081 pub unsafe fn vfma_lane_f32
< const LANE
: i32 >( a
: float32x2_t
, b
: float32x2_t
, c
: float32x2_t
) -> float32x2_t
{
5082 static_assert_imm1
!( LANE
);
5083 vfma_f32 ( a
, b
, vdup_n_f32 ( simd_extract ( c
, LANE
as u32 )))
5086 /// Floating-point fused multiply-add to accumulator
5088 #[target_feature(enable = "neon" )]
5089 #[cfg_attr(test, assert_instr(fmla, LANE = 0))]
5090 #[rustc_legacy_const_generics(3)]
5091 pub unsafe fn vfma_laneq_f32
< const LANE
: i32 >( a
: float32x2_t
, b
: float32x2_t
, c
: float32x4_t
) -> float32x2_t
{
5092 static_assert_imm2
!( LANE
);
5093 vfma_f32 ( a
, b
, vdup_n_f32 ( simd_extract ( c
, LANE
as u32 )))
5096 /// Floating-point fused multiply-add to accumulator
5098 #[target_feature(enable = "neon" )]
5099 #[cfg_attr(test, assert_instr(fmla, LANE = 0))]
5100 #[rustc_legacy_const_generics(3)]
5101 pub unsafe fn vfmaq_lane_f32
< const LANE
: i32 >( a
: float32x4_t
, b
: float32x4_t
, c
: float32x2_t
) -> float32x4_t
{
5102 static_assert_imm1
!( LANE
);
5103 vfmaq_f32 ( a
, b
, vdupq_n_f32 ( simd_extract ( c
, LANE
as u32 )))
5106 /// Floating-point fused multiply-add to accumulator
5108 #[target_feature(enable = "neon" )]
5109 #[cfg_attr(test, assert_instr(fmla, LANE = 0))]
5110 #[rustc_legacy_const_generics(3)]
5111 pub unsafe fn vfmaq_laneq_f32
< const LANE
: i32 >( a
: float32x4_t
, b
: float32x4_t
, c
: float32x4_t
) -> float32x4_t
{
5112 static_assert_imm2
!( LANE
);
5113 vfmaq_f32 ( a
, b
, vdupq_n_f32 ( simd_extract ( c
, LANE
as u32 )))
5116 /// Floating-point fused multiply-add to accumulator
5118 #[target_feature(enable = "neon" )]
5119 #[cfg_attr(test, assert_instr(fmadd, LANE = 0))]
5120 #[rustc_legacy_const_generics(3)]
5121 pub unsafe fn vfma_lane_f64
< const LANE
: i32 >( a
: float64x1_t
, b
: float64x1_t
, c
: float64x1_t
) -> float64x1_t
{
5122 static_assert
!( LANE
: i32 where LANE
== 0 );
5123 vfma_f64 ( a
, b
, vdup_n_f64 ( simd_extract ( c
, LANE
as u32 )))
5126 /// Floating-point fused multiply-add to accumulator
5128 #[target_feature(enable = "neon" )]
5129 #[cfg_attr(test, assert_instr(fmla, LANE = 0))]
5130 #[rustc_legacy_const_generics(3)]
5131 pub unsafe fn vfma_laneq_f64
< const LANE
: i32 >( a
: float64x1_t
, b
: float64x1_t
, c
: float64x2_t
) -> float64x1_t
{
5132 static_assert_imm1
!( LANE
);
5133 vfma_f64 ( a
, b
, vdup_n_f64 ( simd_extract ( c
, LANE
as u32 )))
5136 /// Floating-point fused multiply-add to accumulator
5138 #[target_feature(enable = "neon" )]
5139 #[cfg_attr(test, assert_instr(fmla, LANE = 0))]
5140 #[rustc_legacy_const_generics(3)]
5141 pub unsafe fn vfmaq_lane_f64
< const LANE
: i32 >( a
: float64x2_t
, b
: float64x2_t
, c
: float64x1_t
) -> float64x2_t
{
5142 static_assert
!( LANE
: i32 where LANE
== 0 );
5143 vfmaq_f64 ( a
, b
, vdupq_n_f64 ( simd_extract ( c
, LANE
as u32 )))
5146 /// Floating-point fused multiply-add to accumulator
5148 #[target_feature(enable = "neon" )]
5149 #[cfg_attr(test, assert_instr(fmla, LANE = 0))]
5150 #[rustc_legacy_const_generics(3)]
5151 pub unsafe fn vfmaq_laneq_f64
< const LANE
: i32 >( a
: float64x2_t
, b
: float64x2_t
, c
: float64x2_t
) -> float64x2_t
{
5152 static_assert_imm1
!( LANE
);
5153 vfmaq_f64 ( a
, b
, vdupq_n_f64 ( simd_extract ( c
, LANE
as u32 )))
5156 /// Floating-point fused multiply-add to accumulator
5158 #[target_feature(enable = "neon" )]
5159 #[cfg_attr(test, assert_instr(fmla, LANE = 0))]
5160 #[rustc_legacy_const_generics(3)]
5161 pub unsafe fn vfmas_lane_f32
< const LANE
: i32 >( a
: f32 , b
: f32 , c
: float32x2_t
) -> f32 {
5162 #[allow(improper_ctypes)]
5164 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.fma.f32" )]
5165 fn vfmas_lane_f32_ ( a
: f32 , b
: f32 , c
: f32 ) -> f32 ;
5167 static_assert_imm1
!( LANE
);
5168 let c
: f32 = simd_extract ( c
, LANE
as u32 );
5169 vfmas_lane_f32_ ( b
, c
, a
)
5172 /// Floating-point fused multiply-add to accumulator
5174 #[target_feature(enable = "neon" )]
5175 #[cfg_attr(test, assert_instr(fmla, LANE = 0))]
5176 #[rustc_legacy_const_generics(3)]
5177 pub unsafe fn vfmas_laneq_f32
< const LANE
: i32 >( a
: f32 , b
: f32 , c
: float32x4_t
) -> f32 {
5178 #[allow(improper_ctypes)]
5180 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.fma.f32" )]
5181 fn vfmas_laneq_f32_ ( a
: f32 , b
: f32 , c
: f32 ) -> f32 ;
5183 static_assert_imm2
!( LANE
);
5184 let c
: f32 = simd_extract ( c
, LANE
as u32 );
5185 vfmas_laneq_f32_ ( b
, c
, a
)
5188 /// Floating-point fused multiply-add to accumulator
5190 #[target_feature(enable = "neon" )]
5191 #[cfg_attr(test, assert_instr(fmadd, LANE = 0))]
5192 #[rustc_legacy_const_generics(3)]
5193 pub unsafe fn vfmad_lane_f64
< const LANE
: i32 >( a
: f64 , b
: f64 , c
: float64x1_t
) -> f64 {
5194 #[allow(improper_ctypes)]
5196 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.fma.f64" )]
5197 fn vfmad_lane_f64_ ( a
: f64 , b
: f64 , c
: f64 ) -> f64 ;
5199 static_assert
!( LANE
: i32 where LANE
== 0 );
5200 let c
: f64 = simd_extract ( c
, LANE
as u32 );
5201 vfmad_lane_f64_ ( b
, c
, a
)
5204 /// Floating-point fused multiply-add to accumulator
5206 #[target_feature(enable = "neon" )]
5207 #[cfg_attr(test, assert_instr(fmla, LANE = 0))]
5208 #[rustc_legacy_const_generics(3)]
5209 pub unsafe fn vfmad_laneq_f64
< const LANE
: i32 >( a
: f64 , b
: f64 , c
: float64x2_t
) -> f64 {
5210 #[allow(improper_ctypes)]
5212 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.fma.f64" )]
5213 fn vfmad_laneq_f64_ ( a
: f64 , b
: f64 , c
: f64 ) -> f64 ;
5215 static_assert_imm1
!( LANE
);
5216 let c
: f64 = simd_extract ( c
, LANE
as u32 );
5217 vfmad_laneq_f64_ ( b
, c
, a
)
5220 /// Floating-point fused multiply-subtract from accumulator
5222 #[target_feature(enable = "neon" )]
5223 #[cfg_attr(test, assert_instr(fmsub))]
5224 pub unsafe fn vfms_f64 ( a
: float64x1_t
, b
: float64x1_t
, c
: float64x1_t
) -> float64x1_t
{
5225 let b
: float64x1_t
= simd_neg ( b
);
5229 /// Floating-point fused multiply-subtract from accumulator
5231 #[target_feature(enable = "neon" )]
5232 #[cfg_attr(test, assert_instr(fmls))]
5233 pub unsafe fn vfmsq_f64 ( a
: float64x2_t
, b
: float64x2_t
, c
: float64x2_t
) -> float64x2_t
{
5234 let b
: float64x2_t
= simd_neg ( b
);
5238 /// Floating-point fused Multiply-subtract to accumulator(vector)
5240 #[target_feature(enable = "neon" )]
5241 #[cfg_attr(test, assert_instr(fmsub))]
5242 pub unsafe fn vfms_n_f64 ( a
: float64x1_t
, b
: float64x1_t
, c
: f64 ) -> float64x1_t
{
5243 vfms_f64 ( a
, b
, vdup_n_f64 ( c
))
5246 /// Floating-point fused Multiply-subtract to accumulator(vector)
5248 #[target_feature(enable = "neon" )]
5249 #[cfg_attr(test, assert_instr(fmls))]
5250 pub unsafe fn vfmsq_n_f64 ( a
: float64x2_t
, b
: float64x2_t
, c
: f64 ) -> float64x2_t
{
5251 vfmsq_f64 ( a
, b
, vdupq_n_f64 ( c
))
5254 /// Floating-point fused multiply-subtract to accumulator
5256 #[target_feature(enable = "neon" )]
5257 #[cfg_attr(test, assert_instr(fmls, LANE = 0))]
5258 #[rustc_legacy_const_generics(3)]
5259 pub unsafe fn vfms_lane_f32
< const LANE
: i32 >( a
: float32x2_t
, b
: float32x2_t
, c
: float32x2_t
) -> float32x2_t
{
5260 static_assert_imm1
!( LANE
);
5261 vfms_f32 ( a
, b
, vdup_n_f32 ( simd_extract ( c
, LANE
as u32 )))
5264 /// Floating-point fused multiply-subtract to accumulator
5266 #[target_feature(enable = "neon" )]
5267 #[cfg_attr(test, assert_instr(fmls, LANE = 0))]
5268 #[rustc_legacy_const_generics(3)]
5269 pub unsafe fn vfms_laneq_f32
< const LANE
: i32 >( a
: float32x2_t
, b
: float32x2_t
, c
: float32x4_t
) -> float32x2_t
{
5270 static_assert_imm2
!( LANE
);
5271 vfms_f32 ( a
, b
, vdup_n_f32 ( simd_extract ( c
, LANE
as u32 )))
5274 /// Floating-point fused multiply-subtract to accumulator
5276 #[target_feature(enable = "neon" )]
5277 #[cfg_attr(test, assert_instr(fmls, LANE = 0))]
5278 #[rustc_legacy_const_generics(3)]
5279 pub unsafe fn vfmsq_lane_f32
< const LANE
: i32 >( a
: float32x4_t
, b
: float32x4_t
, c
: float32x2_t
) -> float32x4_t
{
5280 static_assert_imm1
!( LANE
);
5281 vfmsq_f32 ( a
, b
, vdupq_n_f32 ( simd_extract ( c
, LANE
as u32 )))
5284 /// Floating-point fused multiply-subtract to accumulator
5286 #[target_feature(enable = "neon" )]
5287 #[cfg_attr(test, assert_instr(fmls, LANE = 0))]
5288 #[rustc_legacy_const_generics(3)]
5289 pub unsafe fn vfmsq_laneq_f32
< const LANE
: i32 >( a
: float32x4_t
, b
: float32x4_t
, c
: float32x4_t
) -> float32x4_t
{
5290 static_assert_imm2
!( LANE
);
5291 vfmsq_f32 ( a
, b
, vdupq_n_f32 ( simd_extract ( c
, LANE
as u32 )))
5294 /// Floating-point fused multiply-subtract to accumulator
5296 #[target_feature(enable = "neon" )]
5297 #[cfg_attr(test, assert_instr(fmsub, LANE = 0))]
5298 #[rustc_legacy_const_generics(3)]
5299 pub unsafe fn vfms_lane_f64
< const LANE
: i32 >( a
: float64x1_t
, b
: float64x1_t
, c
: float64x1_t
) -> float64x1_t
{
5300 static_assert
!( LANE
: i32 where LANE
== 0 );
5301 vfms_f64 ( a
, b
, vdup_n_f64 ( simd_extract ( c
, LANE
as u32 )))
5304 /// Floating-point fused multiply-subtract to accumulator
5306 #[target_feature(enable = "neon" )]
5307 #[cfg_attr(test, assert_instr(fmls, LANE = 0))]
5308 #[rustc_legacy_const_generics(3)]
5309 pub unsafe fn vfms_laneq_f64
< const LANE
: i32 >( a
: float64x1_t
, b
: float64x1_t
, c
: float64x2_t
) -> float64x1_t
{
5310 static_assert_imm1
!( LANE
);
5311 vfms_f64 ( a
, b
, vdup_n_f64 ( simd_extract ( c
, LANE
as u32 )))
5314 /// Floating-point fused multiply-subtract to accumulator
5316 #[target_feature(enable = "neon" )]
5317 #[cfg_attr(test, assert_instr(fmls, LANE = 0))]
5318 #[rustc_legacy_const_generics(3)]
5319 pub unsafe fn vfmsq_lane_f64
< const LANE
: i32 >( a
: float64x2_t
, b
: float64x2_t
, c
: float64x1_t
) -> float64x2_t
{
5320 static_assert
!( LANE
: i32 where LANE
== 0 );
5321 vfmsq_f64 ( a
, b
, vdupq_n_f64 ( simd_extract ( c
, LANE
as u32 )))
5324 /// Floating-point fused multiply-subtract to accumulator
5326 #[target_feature(enable = "neon" )]
5327 #[cfg_attr(test, assert_instr(fmls, LANE = 0))]
5328 #[rustc_legacy_const_generics(3)]
5329 pub unsafe fn vfmsq_laneq_f64
< const LANE
: i32 >( a
: float64x2_t
, b
: float64x2_t
, c
: float64x2_t
) -> float64x2_t
{
5330 static_assert_imm1
!( LANE
);
5331 vfmsq_f64 ( a
, b
, vdupq_n_f64 ( simd_extract ( c
, LANE
as u32 )))
5334 /// Floating-point fused multiply-subtract to accumulator
5336 #[target_feature(enable = "neon" )]
5337 #[cfg_attr(test, assert_instr(fmls, LANE = 0))]
5338 #[rustc_legacy_const_generics(3)]
5339 pub unsafe fn vfmss_lane_f32
< const LANE
: i32 >( a
: f32 , b
: f32 , c
: float32x2_t
) -> f32 {
5340 vfmas_lane_f32
::< LANE
>( a
, - b
, c
)
5343 /// Floating-point fused multiply-subtract to accumulator
5345 #[target_feature(enable = "neon" )]
5346 #[cfg_attr(test, assert_instr(fmls, LANE = 0))]
5347 #[rustc_legacy_const_generics(3)]
5348 pub unsafe fn vfmss_laneq_f32
< const LANE
: i32 >( a
: f32 , b
: f32 , c
: float32x4_t
) -> f32 {
5349 vfmas_laneq_f32
::< LANE
>( a
, - b
, c
)
5352 /// Floating-point fused multiply-subtract to accumulator
5354 #[target_feature(enable = "neon" )]
5355 #[cfg_attr(test, assert_instr(fmsub, LANE = 0))]
5356 #[rustc_legacy_const_generics(3)]
5357 pub unsafe fn vfmsd_lane_f64
< const LANE
: i32 >( a
: f64 , b
: f64 , c
: float64x1_t
) -> f64 {
5358 vfmad_lane_f64
::< LANE
>( a
, - b
, c
)
5361 /// Floating-point fused multiply-subtract to accumulator
5363 #[target_feature(enable = "neon" )]
5364 #[cfg_attr(test, assert_instr(fmls, LANE = 0))]
5365 #[rustc_legacy_const_generics(3)]
5366 pub unsafe fn vfmsd_laneq_f64
< const LANE
: i32 >( a
: f64 , b
: f64 , c
: float64x2_t
) -> f64 {
5367 vfmad_laneq_f64
::< LANE
>( a
, - b
, c
)
5372 #[target_feature(enable = "neon" )]
5373 #[cfg_attr(test, assert_instr(fdiv))]
5374 pub unsafe fn vdiv_f32 ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
5380 #[target_feature(enable = "neon" )]
5381 #[cfg_attr(test, assert_instr(fdiv))]
5382 pub unsafe fn vdivq_f32 ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
5388 #[target_feature(enable = "neon" )]
5389 #[cfg_attr(test, assert_instr(fdiv))]
5390 pub unsafe fn vdiv_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
5396 #[target_feature(enable = "neon" )]
5397 #[cfg_attr(test, assert_instr(fdiv))]
5398 pub unsafe fn vdivq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
5404 #[target_feature(enable = "neon" )]
5405 #[cfg_attr(test, assert_instr(fsub))]
5406 pub unsafe fn vsub_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
5412 #[target_feature(enable = "neon" )]
5413 #[cfg_attr(test, assert_instr(fsub))]
5414 pub unsafe fn vsubq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
5418 /// Signed Add Long across Vector
5420 #[target_feature(enable = "neon" )]
5421 #[cfg_attr(test, assert_instr(saddlv))]
5422 pub unsafe fn vaddlv_s16 ( a
: int16x4_t
) -> i32 {
5423 #[allow(improper_ctypes)]
5425 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.saddlv.i32.v4i16" )]
5426 fn vaddlv_s16_ ( a
: int16x4_t
) -> i32 ;
5431 /// Signed Add Long across Vector
5433 #[target_feature(enable = "neon" )]
5434 #[cfg_attr(test, assert_instr(saddlv))]
5435 pub unsafe fn vaddlvq_s16 ( a
: int16x8_t
) -> i32 {
5436 #[allow(improper_ctypes)]
5438 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.saddlv.i32.v8i16" )]
5439 fn vaddlvq_s16_ ( a
: int16x8_t
) -> i32 ;
5444 /// Signed Add Long across Vector
5446 #[target_feature(enable = "neon" )]
5447 #[cfg_attr(test, assert_instr(saddlp))]
5448 pub unsafe fn vaddlv_s32 ( a
: int32x2_t
) -> i64 {
5449 #[allow(improper_ctypes)]
5451 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.saddlv.i64.v2i32" )]
5452 fn vaddlv_s32_ ( a
: int32x2_t
) -> i64 ;
5457 /// Signed Add Long across Vector
5459 #[target_feature(enable = "neon" )]
5460 #[cfg_attr(test, assert_instr(saddlv))]
5461 pub unsafe fn vaddlvq_s32 ( a
: int32x4_t
) -> i64 {
5462 #[allow(improper_ctypes)]
5464 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.saddlv.i64.v4i32" )]
5465 fn vaddlvq_s32_ ( a
: int32x4_t
) -> i64 ;
5470 /// Unsigned Add Long across Vector
5472 #[target_feature(enable = "neon" )]
5473 #[cfg_attr(test, assert_instr(uaddlv))]
5474 pub unsafe fn vaddlv_u16 ( a
: uint16x4_t
) -> u32 {
5475 #[allow(improper_ctypes)]
5477 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uaddlv.i32.v4i16" )]
5478 fn vaddlv_u16_ ( a
: uint16x4_t
) -> u32 ;
5483 /// Unsigned Add Long across Vector
5485 #[target_feature(enable = "neon" )]
5486 #[cfg_attr(test, assert_instr(uaddlv))]
5487 pub unsafe fn vaddlvq_u16 ( a
: uint16x8_t
) -> u32 {
5488 #[allow(improper_ctypes)]
5490 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uaddlv.i32.v8i16" )]
5491 fn vaddlvq_u16_ ( a
: uint16x8_t
) -> u32 ;
5496 /// Unsigned Add Long across Vector
5498 #[target_feature(enable = "neon" )]
5499 #[cfg_attr(test, assert_instr(uaddlp))]
5500 pub unsafe fn vaddlv_u32 ( a
: uint32x2_t
) -> u64 {
5501 #[allow(improper_ctypes)]
5503 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uaddlv.i64.v2i32" )]
5504 fn vaddlv_u32_ ( a
: uint32x2_t
) -> u64 ;
5509 /// Unsigned Add Long across Vector
5511 #[target_feature(enable = "neon" )]
5512 #[cfg_attr(test, assert_instr(uaddlv))]
5513 pub unsafe fn vaddlvq_u32 ( a
: uint32x4_t
) -> u64 {
5514 #[allow(improper_ctypes)]
5516 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uaddlv.i64.v4i32" )]
5517 fn vaddlvq_u32_ ( a
: uint32x4_t
) -> u64 ;
5522 /// Signed Subtract Wide
5524 #[target_feature(enable = "neon" )]
5525 #[cfg_attr(test, assert_instr(ssubw))]
5526 pub unsafe fn vsubw_high_s8 ( a
: int16x8_t
, b
: int8x16_t
) -> int16x8_t
{
5527 let c
: int8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
5528 simd_sub ( a
, simd_cast ( c
))
5531 /// Signed Subtract Wide
5533 #[target_feature(enable = "neon" )]
5534 #[cfg_attr(test, assert_instr(ssubw))]
5535 pub unsafe fn vsubw_high_s16 ( a
: int32x4_t
, b
: int16x8_t
) -> int32x4_t
{
5536 let c
: int16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
5537 simd_sub ( a
, simd_cast ( c
))
5540 /// Signed Subtract Wide
5542 #[target_feature(enable = "neon" )]
5543 #[cfg_attr(test, assert_instr(ssubw))]
5544 pub unsafe fn vsubw_high_s32 ( a
: int64x2_t
, b
: int32x4_t
) -> int64x2_t
{
5545 let c
: int32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
5546 simd_sub ( a
, simd_cast ( c
))
5549 /// Unsigned Subtract Wide
5551 #[target_feature(enable = "neon" )]
5552 #[cfg_attr(test, assert_instr(usubw))]
5553 pub unsafe fn vsubw_high_u8 ( a
: uint16x8_t
, b
: uint8x16_t
) -> uint16x8_t
{
5554 let c
: uint8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
5555 simd_sub ( a
, simd_cast ( c
))
5558 /// Unsigned Subtract Wide
5560 #[target_feature(enable = "neon" )]
5561 #[cfg_attr(test, assert_instr(usubw))]
5562 pub unsafe fn vsubw_high_u16 ( a
: uint32x4_t
, b
: uint16x8_t
) -> uint32x4_t
{
5563 let c
: uint16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
5564 simd_sub ( a
, simd_cast ( c
))
5567 /// Unsigned Subtract Wide
5569 #[target_feature(enable = "neon" )]
5570 #[cfg_attr(test, assert_instr(usubw))]
5571 pub unsafe fn vsubw_high_u32 ( a
: uint64x2_t
, b
: uint32x4_t
) -> uint64x2_t
{
5572 let c
: uint32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
5573 simd_sub ( a
, simd_cast ( c
))
5576 /// Signed Subtract Long
5578 #[target_feature(enable = "neon" )]
5579 #[cfg_attr(test, assert_instr(ssubl))]
5580 pub unsafe fn vsubl_high_s8 ( a
: int8x16_t
, b
: int8x16_t
) -> int16x8_t
{
5581 let c
: int8x8_t
= simd_shuffle8
!( a
, a
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
5582 let d
: int16x8_t
= simd_cast ( c
);
5583 let e
: int8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
5584 let f
: int16x8_t
= simd_cast ( e
);
5588 /// Signed Subtract Long
5590 #[target_feature(enable = "neon" )]
5591 #[cfg_attr(test, assert_instr(ssubl))]
5592 pub unsafe fn vsubl_high_s16 ( a
: int16x8_t
, b
: int16x8_t
) -> int32x4_t
{
5593 let c
: int16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
5594 let d
: int32x4_t
= simd_cast ( c
);
5595 let e
: int16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
5596 let f
: int32x4_t
= simd_cast ( e
);
5600 /// Signed Subtract Long
5602 #[target_feature(enable = "neon" )]
5603 #[cfg_attr(test, assert_instr(ssubl))]
5604 pub unsafe fn vsubl_high_s32 ( a
: int32x4_t
, b
: int32x4_t
) -> int64x2_t
{
5605 let c
: int32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
5606 let d
: int64x2_t
= simd_cast ( c
);
5607 let e
: int32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
5608 let f
: int64x2_t
= simd_cast ( e
);
5612 /// Unsigned Subtract Long
5614 #[target_feature(enable = "neon" )]
5615 #[cfg_attr(test, assert_instr(usubl))]
5616 pub unsafe fn vsubl_high_u8 ( a
: uint8x16_t
, b
: uint8x16_t
) -> uint16x8_t
{
5617 let c
: uint8x8_t
= simd_shuffle8
!( a
, a
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
5618 let d
: uint16x8_t
= simd_cast ( c
);
5619 let e
: uint8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
5620 let f
: uint16x8_t
= simd_cast ( e
);
5624 /// Unsigned Subtract Long
5626 #[target_feature(enable = "neon" )]
5627 #[cfg_attr(test, assert_instr(usubl))]
5628 pub unsafe fn vsubl_high_u16 ( a
: uint16x8_t
, b
: uint16x8_t
) -> uint32x4_t
{
5629 let c
: uint16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
5630 let d
: uint32x4_t
= simd_cast ( c
);
5631 let e
: uint16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
5632 let f
: uint32x4_t
= simd_cast ( e
);
5636 /// Unsigned Subtract Long
5638 #[target_feature(enable = "neon" )]
5639 #[cfg_attr(test, assert_instr(usubl))]
5640 pub unsafe fn vsubl_high_u32 ( a
: uint32x4_t
, b
: uint32x4_t
) -> uint64x2_t
{
5641 let c
: uint32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
5642 let d
: uint64x2_t
= simd_cast ( c
);
5643 let e
: uint32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
5644 let f
: uint64x2_t
= simd_cast ( e
);
5648 /// Maximum (vector)
5650 #[target_feature(enable = "neon" )]
5651 #[cfg_attr(test, assert_instr(fmax))]
5652 pub unsafe fn vmax_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
5653 #[allow(improper_ctypes)]
5655 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmax.v1f64" )]
5656 fn vmax_f64_ ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
;
5661 /// Maximum (vector)
5663 #[target_feature(enable = "neon" )]
5664 #[cfg_attr(test, assert_instr(fmax))]
5665 pub unsafe fn vmaxq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
5666 #[allow(improper_ctypes)]
5668 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmax.v2f64" )]
5669 fn vmaxq_f64_ ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
;
5674 /// Floating-point Maximun Number (vector)
5676 #[target_feature(enable = "neon" )]
5677 #[cfg_attr(test, assert_instr(fmaxnm))]
5678 pub unsafe fn vmaxnm_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
5679 #[allow(improper_ctypes)]
5681 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmaxnm.v1f64" )]
5682 fn vmaxnm_f64_ ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
;
5687 /// Floating-point Maximun Number (vector)
5689 #[target_feature(enable = "neon" )]
5690 #[cfg_attr(test, assert_instr(fmaxnm))]
5691 pub unsafe fn vmaxnmq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
5692 #[allow(improper_ctypes)]
5694 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmaxnm.v2f64" )]
5695 fn vmaxnmq_f64_ ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
;
5700 /// Floating-point Maximum Number Pairwise (vector).
5702 #[target_feature(enable = "neon" )]
5703 #[cfg_attr(test, assert_instr(fmaxnmp))]
5704 pub unsafe fn vpmaxnm_f32 ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
5705 #[allow(improper_ctypes)]
5707 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmaxnmp.v2f32" )]
5708 fn vpmaxnm_f32_ ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
;
5713 /// Floating-point Maximum Number Pairwise (vector).
5715 #[target_feature(enable = "neon" )]
5716 #[cfg_attr(test, assert_instr(fmaxnmp))]
5717 pub unsafe fn vpmaxnmq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
5718 #[allow(improper_ctypes)]
5720 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmaxnmp.v2f64" )]
5721 fn vpmaxnmq_f64_ ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
;
5726 /// Floating-point Maximum Number Pairwise (vector).
5728 #[target_feature(enable = "neon" )]
5729 #[cfg_attr(test, assert_instr(fmaxnmp))]
5730 pub unsafe fn vpmaxnmq_f32 ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
5731 #[allow(improper_ctypes)]
5733 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmaxnmp.v4f32" )]
5734 fn vpmaxnmq_f32_ ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
;
5739 /// Minimum (vector)
5741 #[target_feature(enable = "neon" )]
5742 #[cfg_attr(test, assert_instr(fmin))]
5743 pub unsafe fn vmin_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
5744 #[allow(improper_ctypes)]
5746 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmin.v1f64" )]
5747 fn vmin_f64_ ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
;
5752 /// Minimum (vector)
5754 #[target_feature(enable = "neon" )]
5755 #[cfg_attr(test, assert_instr(fmin))]
5756 pub unsafe fn vminq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
5757 #[allow(improper_ctypes)]
5759 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fmin.v2f64" )]
5760 fn vminq_f64_ ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
;
5765 /// Floating-point Minimun Number (vector)
5767 #[target_feature(enable = "neon" )]
5768 #[cfg_attr(test, assert_instr(fminnm))]
5769 pub unsafe fn vminnm_f64 ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
{
5770 #[allow(improper_ctypes)]
5772 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fminnm.v1f64" )]
5773 fn vminnm_f64_ ( a
: float64x1_t
, b
: float64x1_t
) -> float64x1_t
;
5778 /// Floating-point Minimun Number (vector)
5780 #[target_feature(enable = "neon" )]
5781 #[cfg_attr(test, assert_instr(fminnm))]
5782 pub unsafe fn vminnmq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
5783 #[allow(improper_ctypes)]
5785 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fminnm.v2f64" )]
5786 fn vminnmq_f64_ ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
;
5791 /// Floating-point Minimum Number Pairwise (vector).
5793 #[target_feature(enable = "neon" )]
5794 #[cfg_attr(test, assert_instr(fminnmp))]
5795 pub unsafe fn vpminnm_f32 ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
5796 #[allow(improper_ctypes)]
5798 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fminnmp.v2f32" )]
5799 fn vpminnm_f32_ ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
;
5804 /// Floating-point Minimum Number Pairwise (vector).
5806 #[target_feature(enable = "neon" )]
5807 #[cfg_attr(test, assert_instr(fminnmp))]
5808 pub unsafe fn vpminnmq_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
5809 #[allow(improper_ctypes)]
5811 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fminnmp.v2f64" )]
5812 fn vpminnmq_f64_ ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
;
5817 /// Floating-point Minimum Number Pairwise (vector).
5819 #[target_feature(enable = "neon" )]
5820 #[cfg_attr(test, assert_instr(fminnmp))]
5821 pub unsafe fn vpminnmq_f32 ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
5822 #[allow(improper_ctypes)]
5824 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.fminnmp.v4f32" )]
5825 fn vpminnmq_f32_ ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
;
5830 /// Signed saturating doubling multiply long
5832 #[target_feature(enable = "neon" )]
5833 #[cfg_attr(test, assert_instr(sqdmull))]
5834 pub unsafe fn vqdmullh_s16 ( a
: i16 , b
: i16 ) -> i32 {
5835 let a
: int16x4_t
= vdup_n_s16 ( a
);
5836 let b
: int16x4_t
= vdup_n_s16 ( b
);
5837 simd_extract ( vqdmull_s16 ( a
, b
), 0 )
5840 /// Signed saturating doubling multiply long
5842 #[target_feature(enable = "neon" )]
5843 #[cfg_attr(test, assert_instr(sqdmull))]
5844 pub unsafe fn vqdmulls_s32 ( a
: i32 , b
: i32 ) -> i64 {
5845 #[allow(improper_ctypes)]
5847 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqdmulls.scalar" )]
5848 fn vqdmulls_s32_ ( a
: i32 , b
: i32 ) -> i64 ;
5853 /// Signed saturating doubling multiply long
5855 #[target_feature(enable = "neon" )]
5856 #[cfg_attr(test, assert_instr(sqdmull2))]
5857 pub unsafe fn vqdmull_high_s16 ( a
: int16x8_t
, b
: int16x8_t
) -> int32x4_t
{
5858 let a
: int16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
5859 let b
: int16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
5863 /// Signed saturating doubling multiply long
5865 #[target_feature(enable = "neon" )]
5866 #[cfg_attr(test, assert_instr(sqdmull2))]
5867 pub unsafe fn vqdmull_high_s32 ( a
: int32x4_t
, b
: int32x4_t
) -> int64x2_t
{
5868 let a
: int32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
5869 let b
: int32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
5873 /// Signed saturating doubling multiply long
5875 #[target_feature(enable = "neon" )]
5876 #[cfg_attr(test, assert_instr(sqdmull2))]
5877 pub unsafe fn vqdmull_high_n_s16 ( a
: int16x8_t
, b
: i16 ) -> int32x4_t
{
5878 let a
: int16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
5879 let b
: int16x4_t
= vdup_n_s16 ( b
);
5883 /// Signed saturating doubling multiply long
5885 #[target_feature(enable = "neon" )]
5886 #[cfg_attr(test, assert_instr(sqdmull2))]
5887 pub unsafe fn vqdmull_high_n_s32 ( a
: int32x4_t
, b
: i32 ) -> int64x2_t
{
5888 let a
: int32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
5889 let b
: int32x2_t
= vdup_n_s32 ( b
);
5893 /// Vector saturating doubling long multiply by scalar
5895 #[target_feature(enable = "neon" )]
5896 #[cfg_attr(test, assert_instr(sqdmull, N = 4))]
5897 #[rustc_legacy_const_generics(2)]
5898 pub unsafe fn vqdmull_laneq_s16
< const N
: i32 >( a
: int16x4_t
, b
: int16x8_t
) -> int32x4_t
{
5899 static_assert_imm3
!( N
);
5900 let b
: int16x4_t
= simd_shuffle4
!( b
, b
, < const N
: i32 > [ N
as u32 , N
as u32 , N
as u32 , N
as u32 ]);
5904 /// Vector saturating doubling long multiply by scalar
5906 #[target_feature(enable = "neon" )]
5907 #[cfg_attr(test, assert_instr(sqdmull, N = 2))]
5908 #[rustc_legacy_const_generics(2)]
5909 pub unsafe fn vqdmull_laneq_s32
< const N
: i32 >( a
: int32x2_t
, b
: int32x4_t
) -> int64x2_t
{
5910 static_assert_imm2
!( N
);
5911 let b
: int32x2_t
= simd_shuffle2
!( b
, b
, < const N
: i32 > [ N
as u32 , N
as u32 ]);
5915 /// Signed saturating doubling multiply long
5917 #[target_feature(enable = "neon" )]
5918 #[cfg_attr(test, assert_instr(sqdmull, N = 2))]
5919 #[rustc_legacy_const_generics(2)]
5920 pub unsafe fn vqdmullh_lane_s16
< const N
: i32 >( a
: i16 , b
: int16x4_t
) -> i32 {
5921 static_assert_imm2
!( N
);
5922 let b
: i16 = simd_extract ( b
, N
as u32 );
5926 /// Signed saturating doubling multiply long
5928 #[target_feature(enable = "neon" )]
5929 #[cfg_attr(test, assert_instr(sqdmull, N = 4))]
5930 #[rustc_legacy_const_generics(2)]
5931 pub unsafe fn vqdmullh_laneq_s16
< const N
: i32 >( a
: i16 , b
: int16x8_t
) -> i32 {
5932 static_assert_imm3
!( N
);
5933 let b
: i16 = simd_extract ( b
, N
as u32 );
5937 /// Signed saturating doubling multiply long
5939 #[target_feature(enable = "neon" )]
5940 #[cfg_attr(test, assert_instr(sqdmull, N = 1))]
5941 #[rustc_legacy_const_generics(2)]
5942 pub unsafe fn vqdmulls_lane_s32
< const N
: i32 >( a
: i32 , b
: int32x2_t
) -> i64 {
5943 static_assert_imm1
!( N
);
5944 let b
: i32 = simd_extract ( b
, N
as u32 );
5948 /// Signed saturating doubling multiply long
5950 #[target_feature(enable = "neon" )]
5951 #[cfg_attr(test, assert_instr(sqdmull, N = 2))]
5952 #[rustc_legacy_const_generics(2)]
5953 pub unsafe fn vqdmulls_laneq_s32
< const N
: i32 >( a
: i32 , b
: int32x4_t
) -> i64 {
5954 static_assert_imm2
!( N
);
5955 let b
: i32 = simd_extract ( b
, N
as u32 );
5959 /// Signed saturating doubling multiply long
5961 #[target_feature(enable = "neon" )]
5962 #[cfg_attr(test, assert_instr(sqdmull2, N = 2))]
5963 #[rustc_legacy_const_generics(2)]
5964 pub unsafe fn vqdmull_high_lane_s16
< const N
: i32 >( a
: int16x8_t
, b
: int16x4_t
) -> int32x4_t
{
5965 static_assert_imm2
!( N
);
5966 let a
: int16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
5967 let b
: int16x4_t
= simd_shuffle4
!( b
, b
, < const N
: i32 > [ N
as u32 , N
as u32 , N
as u32 , N
as u32 ]);
5971 /// Signed saturating doubling multiply long
5973 #[target_feature(enable = "neon" )]
5974 #[cfg_attr(test, assert_instr(sqdmull2, N = 1))]
5975 #[rustc_legacy_const_generics(2)]
5976 pub unsafe fn vqdmull_high_lane_s32
< const N
: i32 >( a
: int32x4_t
, b
: int32x2_t
) -> int64x2_t
{
5977 static_assert_imm1
!( N
);
5978 let a
: int32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
5979 let b
: int32x2_t
= simd_shuffle2
!( b
, b
, < const N
: i32 > [ N
as u32 , N
as u32 ]);
5983 /// Signed saturating doubling multiply long
5985 #[target_feature(enable = "neon" )]
5986 #[cfg_attr(test, assert_instr(sqdmull2, N = 4))]
5987 #[rustc_legacy_const_generics(2)]
5988 pub unsafe fn vqdmull_high_laneq_s16
< const N
: i32 >( a
: int16x8_t
, b
: int16x8_t
) -> int32x4_t
{
5989 static_assert_imm3
!( N
);
5990 let a
: int16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
5991 let b
: int16x4_t
= simd_shuffle4
!( b
, b
, < const N
: i32 > [ N
as u32 , N
as u32 , N
as u32 , N
as u32 ]);
5995 /// Signed saturating doubling multiply long
5997 #[target_feature(enable = "neon" )]
5998 #[cfg_attr(test, assert_instr(sqdmull2, N = 2))]
5999 #[rustc_legacy_const_generics(2)]
6000 pub unsafe fn vqdmull_high_laneq_s32
< const N
: i32 >( a
: int32x4_t
, b
: int32x4_t
) -> int64x2_t
{
6001 static_assert_imm2
!( N
);
6002 let a
: int32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
6003 let b
: int32x2_t
= simd_shuffle2
!( b
, b
, < const N
: i32 > [ N
as u32 , N
as u32 ]);
6007 /// Signed saturating doubling multiply-add long
6009 #[target_feature(enable = "neon" )]
6010 #[cfg_attr(test, assert_instr(sqdmlal2))]
6011 pub unsafe fn vqdmlal_high_s16 ( a
: int32x4_t
, b
: int16x8_t
, c
: int16x8_t
) -> int32x4_t
{
6012 vqaddq_s32 ( a
, vqdmull_high_s16 ( b
, c
))
6015 /// Signed saturating doubling multiply-add long
6017 #[target_feature(enable = "neon" )]
6018 #[cfg_attr(test, assert_instr(sqdmlal2))]
6019 pub unsafe fn vqdmlal_high_s32 ( a
: int64x2_t
, b
: int32x4_t
, c
: int32x4_t
) -> int64x2_t
{
6020 vqaddq_s64 ( a
, vqdmull_high_s32 ( b
, c
))
6023 /// Signed saturating doubling multiply-add long
6025 #[target_feature(enable = "neon" )]
6026 #[cfg_attr(test, assert_instr(sqdmlal2))]
6027 pub unsafe fn vqdmlal_high_n_s16 ( a
: int32x4_t
, b
: int16x8_t
, c
: i16 ) -> int32x4_t
{
6028 vqaddq_s32 ( a
, vqdmull_high_n_s16 ( b
, c
))
6031 /// Signed saturating doubling multiply-add long
6033 #[target_feature(enable = "neon" )]
6034 #[cfg_attr(test, assert_instr(sqdmlal2))]
6035 pub unsafe fn vqdmlal_high_n_s32 ( a
: int64x2_t
, b
: int32x4_t
, c
: i32 ) -> int64x2_t
{
6036 vqaddq_s64 ( a
, vqdmull_high_n_s32 ( b
, c
))
6039 /// Vector widening saturating doubling multiply accumulate with scalar
6041 #[target_feature(enable = "neon" )]
6042 #[cfg_attr(test, assert_instr(sqdmlal, N = 2))]
6043 #[rustc_legacy_const_generics(3)]
6044 pub unsafe fn vqdmlal_laneq_s16
< const N
: i32 >( a
: int32x4_t
, b
: int16x4_t
, c
: int16x8_t
) -> int32x4_t
{
6045 static_assert_imm3
!( N
);
6046 vqaddq_s32 ( a
, vqdmull_laneq_s16
::< N
>( b
, c
))
6049 /// Vector widening saturating doubling multiply accumulate with scalar
6051 #[target_feature(enable = "neon" )]
6052 #[cfg_attr(test, assert_instr(sqdmlal, N = 1))]
6053 #[rustc_legacy_const_generics(3)]
6054 pub unsafe fn vqdmlal_laneq_s32
< const N
: i32 >( a
: int64x2_t
, b
: int32x2_t
, c
: int32x4_t
) -> int64x2_t
{
6055 static_assert_imm2
!( N
);
6056 vqaddq_s64 ( a
, vqdmull_laneq_s32
::< N
>( b
, c
))
6059 /// Signed saturating doubling multiply-add long
6061 #[target_feature(enable = "neon" )]
6062 #[cfg_attr(test, assert_instr(sqdmlal2, N = 1))]
6063 #[rustc_legacy_const_generics(3)]
6064 pub unsafe fn vqdmlal_high_lane_s16
< const N
: i32 >( a
: int32x4_t
, b
: int16x8_t
, c
: int16x4_t
) -> int32x4_t
{
6065 static_assert_imm2
!( N
);
6066 vqaddq_s32 ( a
, vqdmull_high_lane_s16
::< N
>( b
, c
))
6069 /// Signed saturating doubling multiply-add long
6071 #[target_feature(enable = "neon" )]
6072 #[cfg_attr(test, assert_instr(sqdmlal2, N = 1))]
6073 #[rustc_legacy_const_generics(3)]
6074 pub unsafe fn vqdmlal_high_laneq_s16
< const N
: i32 >( a
: int32x4_t
, b
: int16x8_t
, c
: int16x8_t
) -> int32x4_t
{
6075 static_assert_imm3
!( N
);
6076 vqaddq_s32 ( a
, vqdmull_high_laneq_s16
::< N
>( b
, c
))
6079 /// Signed saturating doubling multiply-add long
6081 #[target_feature(enable = "neon" )]
6082 #[cfg_attr(test, assert_instr(sqdmlal2, N = 1))]
6083 #[rustc_legacy_const_generics(3)]
6084 pub unsafe fn vqdmlal_high_lane_s32
< const N
: i32 >( a
: int64x2_t
, b
: int32x4_t
, c
: int32x2_t
) -> int64x2_t
{
6085 static_assert_imm1
!( N
);
6086 vqaddq_s64 ( a
, vqdmull_high_lane_s32
::< N
>( b
, c
))
6089 /// Signed saturating doubling multiply-add long
6091 #[target_feature(enable = "neon" )]
6092 #[cfg_attr(test, assert_instr(sqdmlal2, N = 1))]
6093 #[rustc_legacy_const_generics(3)]
6094 pub unsafe fn vqdmlal_high_laneq_s32
< const N
: i32 >( a
: int64x2_t
, b
: int32x4_t
, c
: int32x4_t
) -> int64x2_t
{
6095 static_assert_imm2
!( N
);
6096 vqaddq_s64 ( a
, vqdmull_high_laneq_s32
::< N
>( b
, c
))
6099 /// Signed saturating doubling multiply-subtract long
6101 #[target_feature(enable = "neon" )]
6102 #[cfg_attr(test, assert_instr(sqdmlsl2))]
6103 pub unsafe fn vqdmlsl_high_s16 ( a
: int32x4_t
, b
: int16x8_t
, c
: int16x8_t
) -> int32x4_t
{
6104 vqsubq_s32 ( a
, vqdmull_high_s16 ( b
, c
))
6107 /// Signed saturating doubling multiply-subtract long
6109 #[target_feature(enable = "neon" )]
6110 #[cfg_attr(test, assert_instr(sqdmlsl2))]
6111 pub unsafe fn vqdmlsl_high_s32 ( a
: int64x2_t
, b
: int32x4_t
, c
: int32x4_t
) -> int64x2_t
{
6112 vqsubq_s64 ( a
, vqdmull_high_s32 ( b
, c
))
6115 /// Signed saturating doubling multiply-subtract long
6117 #[target_feature(enable = "neon" )]
6118 #[cfg_attr(test, assert_instr(sqdmlsl2))]
6119 pub unsafe fn vqdmlsl_high_n_s16 ( a
: int32x4_t
, b
: int16x8_t
, c
: i16 ) -> int32x4_t
{
6120 vqsubq_s32 ( a
, vqdmull_high_n_s16 ( b
, c
))
6123 /// Signed saturating doubling multiply-subtract long
6125 #[target_feature(enable = "neon" )]
6126 #[cfg_attr(test, assert_instr(sqdmlsl2))]
6127 pub unsafe fn vqdmlsl_high_n_s32 ( a
: int64x2_t
, b
: int32x4_t
, c
: i32 ) -> int64x2_t
{
6128 vqsubq_s64 ( a
, vqdmull_high_n_s32 ( b
, c
))
6131 /// Vector widening saturating doubling multiply subtract with scalar
6133 #[target_feature(enable = "neon" )]
6134 #[cfg_attr(test, assert_instr(sqdmlsl, N = 2))]
6135 #[rustc_legacy_const_generics(3)]
6136 pub unsafe fn vqdmlsl_laneq_s16
< const N
: i32 >( a
: int32x4_t
, b
: int16x4_t
, c
: int16x8_t
) -> int32x4_t
{
6137 static_assert_imm3
!( N
);
6138 vqsubq_s32 ( a
, vqdmull_laneq_s16
::< N
>( b
, c
))
6141 /// Vector widening saturating doubling multiply subtract with scalar
6143 #[target_feature(enable = "neon" )]
6144 #[cfg_attr(test, assert_instr(sqdmlsl, N = 1))]
6145 #[rustc_legacy_const_generics(3)]
6146 pub unsafe fn vqdmlsl_laneq_s32
< const N
: i32 >( a
: int64x2_t
, b
: int32x2_t
, c
: int32x4_t
) -> int64x2_t
{
6147 static_assert_imm2
!( N
);
6148 vqsubq_s64 ( a
, vqdmull_laneq_s32
::< N
>( b
, c
))
6151 /// Signed saturating doubling multiply-subtract long
6153 #[target_feature(enable = "neon" )]
6154 #[cfg_attr(test, assert_instr(sqdmlsl2, N = 1))]
6155 #[rustc_legacy_const_generics(3)]
6156 pub unsafe fn vqdmlsl_high_lane_s16
< const N
: i32 >( a
: int32x4_t
, b
: int16x8_t
, c
: int16x4_t
) -> int32x4_t
{
6157 static_assert_imm2
!( N
);
6158 vqsubq_s32 ( a
, vqdmull_high_lane_s16
::< N
>( b
, c
))
6161 /// Signed saturating doubling multiply-subtract long
6163 #[target_feature(enable = "neon" )]
6164 #[cfg_attr(test, assert_instr(sqdmlsl2, N = 1))]
6165 #[rustc_legacy_const_generics(3)]
6166 pub unsafe fn vqdmlsl_high_laneq_s16
< const N
: i32 >( a
: int32x4_t
, b
: int16x8_t
, c
: int16x8_t
) -> int32x4_t
{
6167 static_assert_imm3
!( N
);
6168 vqsubq_s32 ( a
, vqdmull_high_laneq_s16
::< N
>( b
, c
))
6171 /// Signed saturating doubling multiply-subtract long
6173 #[target_feature(enable = "neon" )]
6174 #[cfg_attr(test, assert_instr(sqdmlsl2, N = 1))]
6175 #[rustc_legacy_const_generics(3)]
6176 pub unsafe fn vqdmlsl_high_lane_s32
< const N
: i32 >( a
: int64x2_t
, b
: int32x4_t
, c
: int32x2_t
) -> int64x2_t
{
6177 static_assert_imm1
!( N
);
6178 vqsubq_s64 ( a
, vqdmull_high_lane_s32
::< N
>( b
, c
))
6181 /// Signed saturating doubling multiply-subtract long
6183 #[target_feature(enable = "neon" )]
6184 #[cfg_attr(test, assert_instr(sqdmlsl2, N = 1))]
6185 #[rustc_legacy_const_generics(3)]
6186 pub unsafe fn vqdmlsl_high_laneq_s32
< const N
: i32 >( a
: int64x2_t
, b
: int32x4_t
, c
: int32x4_t
) -> int64x2_t
{
6187 static_assert_imm2
!( N
);
6188 vqsubq_s64 ( a
, vqdmull_high_laneq_s32
::< N
>( b
, c
))
6191 /// Signed saturating doubling multiply returning high half
6193 #[target_feature(enable = "neon" )]
6194 #[cfg_attr(test, assert_instr(sqdmulh))]
6195 pub unsafe fn vqdmulhh_s16 ( a
: i16 , b
: i16 ) -> i16 {
6196 let a
: int16x4_t
= vdup_n_s16 ( a
);
6197 let b
: int16x4_t
= vdup_n_s16 ( b
);
6198 simd_extract ( vqdmulh_s16 ( a
, b
), 0 )
6201 /// Signed saturating doubling multiply returning high half
6203 #[target_feature(enable = "neon" )]
6204 #[cfg_attr(test, assert_instr(sqdmulh))]
6205 pub unsafe fn vqdmulhs_s32 ( a
: i32 , b
: i32 ) -> i32 {
6206 let a
: int32x2_t
= vdup_n_s32 ( a
);
6207 let b
: int32x2_t
= vdup_n_s32 ( b
);
6208 simd_extract ( vqdmulh_s32 ( a
, b
), 0 )
6211 /// Signed saturating doubling multiply returning high half
6213 #[target_feature(enable = "neon" )]
6214 #[cfg_attr(test, assert_instr(sqdmulh, N = 2))]
6215 #[rustc_legacy_const_generics(2)]
6216 pub unsafe fn vqdmulhh_lane_s16
< const N
: i32 >( a
: i16 , b
: int16x4_t
) -> i16 {
6217 static_assert_imm2
!( N
);
6218 let b
: i16 = simd_extract ( b
, N
as u32 );
6222 /// Signed saturating doubling multiply returning high half
6224 #[target_feature(enable = "neon" )]
6225 #[cfg_attr(test, assert_instr(sqdmulh, N = 2))]
6226 #[rustc_legacy_const_generics(2)]
6227 pub unsafe fn vqdmulhh_laneq_s16
< const N
: i32 >( a
: i16 , b
: int16x8_t
) -> i16 {
6228 static_assert_imm3
!( N
);
6229 let b
: i16 = simd_extract ( b
, N
as u32 );
6233 /// Signed saturating doubling multiply returning high half
6235 #[target_feature(enable = "neon" )]
6236 #[cfg_attr(test, assert_instr(sqdmulh, N = 1))]
6237 #[rustc_legacy_const_generics(2)]
6238 pub unsafe fn vqdmulhs_lane_s32
< const N
: i32 >( a
: i32 , b
: int32x2_t
) -> i32 {
6239 static_assert_imm1
!( N
);
6240 let b
: i32 = simd_extract ( b
, N
as u32 );
6244 /// Signed saturating doubling multiply returning high half
6246 #[target_feature(enable = "neon" )]
6247 #[cfg_attr(test, assert_instr(sqdmulh, N = 1))]
6248 #[rustc_legacy_const_generics(2)]
6249 pub unsafe fn vqdmulhs_laneq_s32
< const N
: i32 >( a
: i32 , b
: int32x4_t
) -> i32 {
6250 static_assert_imm2
!( N
);
6251 let b
: i32 = simd_extract ( b
, N
as u32 );
6255 /// Saturating extract narrow
6257 #[target_feature(enable = "neon" )]
6258 #[cfg_attr(test, assert_instr(sqxtn))]
6259 pub unsafe fn vqmovnh_s16 ( a
: i16 ) -> i8 {
6260 simd_extract ( vqmovn_s16 ( vdupq_n_s16 ( a
)), 0 )
6263 /// Saturating extract narrow
6265 #[target_feature(enable = "neon" )]
6266 #[cfg_attr(test, assert_instr(sqxtn))]
6267 pub unsafe fn vqmovns_s32 ( a
: i32 ) -> i16 {
6268 simd_extract ( vqmovn_s32 ( vdupq_n_s32 ( a
)), 0 )
6271 /// Saturating extract narrow
6273 #[target_feature(enable = "neon" )]
6274 #[cfg_attr(test, assert_instr(uqxtn))]
6275 pub unsafe fn vqmovnh_u16 ( a
: u16 ) -> u8 {
6276 simd_extract ( vqmovn_u16 ( vdupq_n_u16 ( a
)), 0 )
6279 /// Saturating extract narrow
6281 #[target_feature(enable = "neon" )]
6282 #[cfg_attr(test, assert_instr(uqxtn))]
6283 pub unsafe fn vqmovns_u32 ( a
: u32 ) -> u16 {
6284 simd_extract ( vqmovn_u32 ( vdupq_n_u32 ( a
)), 0 )
6287 /// Saturating extract narrow
6289 #[target_feature(enable = "neon" )]
6290 #[cfg_attr(test, assert_instr(sqxtn))]
6291 pub unsafe fn vqmovnd_s64 ( a
: i64 ) -> i32 {
6292 #[allow(improper_ctypes)]
6294 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.scalar.sqxtn.i32.i64" )]
6295 fn vqmovnd_s64_ ( a
: i64 ) -> i32 ;
6300 /// Saturating extract narrow
6302 #[target_feature(enable = "neon" )]
6303 #[cfg_attr(test, assert_instr(uqxtn))]
6304 pub unsafe fn vqmovnd_u64 ( a
: u64 ) -> u32 {
6305 #[allow(improper_ctypes)]
6307 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.scalar.uqxtn.i32.i64" )]
6308 fn vqmovnd_u64_ ( a
: u64 ) -> u32 ;
6313 /// Signed saturating extract narrow
6315 #[target_feature(enable = "neon" )]
6316 #[cfg_attr(test, assert_instr(sqxtn2))]
6317 pub unsafe fn vqmovn_high_s16 ( a
: int8x8_t
, b
: int16x8_t
) -> int8x16_t
{
6318 simd_shuffle16
!( a
, vqmovn_s16 ( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
6321 /// Signed saturating extract narrow
6323 #[target_feature(enable = "neon" )]
6324 #[cfg_attr(test, assert_instr(sqxtn2))]
6325 pub unsafe fn vqmovn_high_s32 ( a
: int16x4_t
, b
: int32x4_t
) -> int16x8_t
{
6326 simd_shuffle8
!( a
, vqmovn_s32 ( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
6329 /// Signed saturating extract narrow
6331 #[target_feature(enable = "neon" )]
6332 #[cfg_attr(test, assert_instr(sqxtn2))]
6333 pub unsafe fn vqmovn_high_s64 ( a
: int32x2_t
, b
: int64x2_t
) -> int32x4_t
{
6334 simd_shuffle4
!( a
, vqmovn_s64 ( b
), [ 0 , 1 , 2 , 3 ])
6337 /// Signed saturating extract narrow
6339 #[target_feature(enable = "neon" )]
6340 #[cfg_attr(test, assert_instr(uqxtn2))]
6341 pub unsafe fn vqmovn_high_u16 ( a
: uint8x8_t
, b
: uint16x8_t
) -> uint8x16_t
{
6342 simd_shuffle16
!( a
, vqmovn_u16 ( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
6345 /// Signed saturating extract narrow
6347 #[target_feature(enable = "neon" )]
6348 #[cfg_attr(test, assert_instr(uqxtn2))]
6349 pub unsafe fn vqmovn_high_u32 ( a
: uint16x4_t
, b
: uint32x4_t
) -> uint16x8_t
{
6350 simd_shuffle8
!( a
, vqmovn_u32 ( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
6353 /// Signed saturating extract narrow
6355 #[target_feature(enable = "neon" )]
6356 #[cfg_attr(test, assert_instr(uqxtn2))]
6357 pub unsafe fn vqmovn_high_u64 ( a
: uint32x2_t
, b
: uint64x2_t
) -> uint32x4_t
{
6358 simd_shuffle4
!( a
, vqmovn_u64 ( b
), [ 0 , 1 , 2 , 3 ])
6361 /// Signed saturating extract unsigned narrow
6363 #[target_feature(enable = "neon" )]
6364 #[cfg_attr(test, assert_instr(sqxtun))]
6365 pub unsafe fn vqmovunh_s16 ( a
: i16 ) -> u8 {
6366 simd_extract ( vqmovun_s16 ( vdupq_n_s16 ( a
)), 0 )
6369 /// Signed saturating extract unsigned narrow
6371 #[target_feature(enable = "neon" )]
6372 #[cfg_attr(test, assert_instr(sqxtun))]
6373 pub unsafe fn vqmovuns_s32 ( a
: i32 ) -> u16 {
6374 simd_extract ( vqmovun_s32 ( vdupq_n_s32 ( a
)), 0 )
6377 /// Signed saturating extract unsigned narrow
6379 #[target_feature(enable = "neon" )]
6380 #[cfg_attr(test, assert_instr(sqxtun))]
6381 pub unsafe fn vqmovund_s64 ( a
: i64 ) -> u32 {
6382 simd_extract ( vqmovun_s64 ( vdupq_n_s64 ( a
)), 0 )
6385 /// Signed saturating extract unsigned narrow
6387 #[target_feature(enable = "neon" )]
6388 #[cfg_attr(test, assert_instr(sqxtun2))]
6389 pub unsafe fn vqmovun_high_s16 ( a
: uint8x8_t
, b
: int16x8_t
) -> uint8x16_t
{
6390 simd_shuffle16
!( a
, vqmovun_s16 ( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
6393 /// Signed saturating extract unsigned narrow
6395 #[target_feature(enable = "neon" )]
6396 #[cfg_attr(test, assert_instr(sqxtun2))]
6397 pub unsafe fn vqmovun_high_s32 ( a
: uint16x4_t
, b
: int32x4_t
) -> uint16x8_t
{
6398 simd_shuffle8
!( a
, vqmovun_s32 ( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
6401 /// Signed saturating extract unsigned narrow
6403 #[target_feature(enable = "neon" )]
6404 #[cfg_attr(test, assert_instr(sqxtun2))]
6405 pub unsafe fn vqmovun_high_s64 ( a
: uint32x2_t
, b
: int64x2_t
) -> uint32x4_t
{
6406 simd_shuffle4
!( a
, vqmovun_s64 ( b
), [ 0 , 1 , 2 , 3 ])
6409 /// Signed saturating rounding doubling multiply returning high half
6411 #[target_feature(enable = "neon" )]
6412 #[cfg_attr(test, assert_instr(sqrdmulh))]
6413 pub unsafe fn vqrdmulhh_s16 ( a
: i16 , b
: i16 ) -> i16 {
6414 simd_extract ( vqrdmulh_s16 ( vdup_n_s16 ( a
), vdup_n_s16 ( b
)), 0 )
6417 /// Signed saturating rounding doubling multiply returning high half
6419 #[target_feature(enable = "neon" )]
6420 #[cfg_attr(test, assert_instr(sqrdmulh))]
6421 pub unsafe fn vqrdmulhs_s32 ( a
: i32 , b
: i32 ) -> i32 {
6422 simd_extract ( vqrdmulh_s32 ( vdup_n_s32 ( a
), vdup_n_s32 ( b
)), 0 )
6425 /// Signed saturating rounding doubling multiply returning high half
6427 #[target_feature(enable = "neon" )]
6428 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6429 #[rustc_legacy_const_generics(2)]
6430 pub unsafe fn vqrdmulhh_lane_s16
< const LANE
: i32 >( a
: i16 , b
: int16x4_t
) -> i16 {
6431 static_assert_imm2
!( LANE
);
6432 vqrdmulhh_s16 ( a
, simd_extract ( b
, LANE
as u32 ))
6435 /// Signed saturating rounding doubling multiply returning high half
6437 #[target_feature(enable = "neon" )]
6438 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6439 #[rustc_legacy_const_generics(2)]
6440 pub unsafe fn vqrdmulhh_laneq_s16
< const LANE
: i32 >( a
: i16 , b
: int16x8_t
) -> i16 {
6441 static_assert_imm3
!( LANE
);
6442 vqrdmulhh_s16 ( a
, simd_extract ( b
, LANE
as u32 ))
6445 /// Signed saturating rounding doubling multiply returning high half
6447 #[target_feature(enable = "neon" )]
6448 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6449 #[rustc_legacy_const_generics(2)]
6450 pub unsafe fn vqrdmulhs_lane_s32
< const LANE
: i32 >( a
: i32 , b
: int32x2_t
) -> i32 {
6451 static_assert_imm1
!( LANE
);
6452 vqrdmulhs_s32 ( a
, simd_extract ( b
, LANE
as u32 ))
6455 /// Signed saturating rounding doubling multiply returning high half
6457 #[target_feature(enable = "neon" )]
6458 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6459 #[rustc_legacy_const_generics(2)]
6460 pub unsafe fn vqrdmulhs_laneq_s32
< const LANE
: i32 >( a
: i32 , b
: int32x4_t
) -> i32 {
6461 static_assert_imm2
!( LANE
);
6462 vqrdmulhs_s32 ( a
, simd_extract ( b
, LANE
as u32 ))
6465 /// Signed saturating rounding doubling multiply accumulate returning high half
6467 #[target_feature(enable = "neon" )]
6468 #[cfg_attr(test, assert_instr(sqrdmulh))]
6469 pub unsafe fn vqrdmlahh_s16 ( a
: i16 , b
: i16 , c
: i16 ) -> i16 {
6470 vqaddh_s16 ( a
, vqrdmulhh_s16 ( b
, c
))
6473 /// Signed saturating rounding doubling multiply accumulate returning high half
6475 #[target_feature(enable = "neon" )]
6476 #[cfg_attr(test, assert_instr(sqrdmulh))]
6477 pub unsafe fn vqrdmlahs_s32 ( a
: i32 , b
: i32 , c
: i32 ) -> i32 {
6478 vqadds_s32 ( a
, vqrdmulhs_s32 ( b
, c
))
6481 /// Signed saturating rounding doubling multiply accumulate returning high half
6483 #[target_feature(enable = "neon" )]
6484 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6485 #[rustc_legacy_const_generics(3)]
6486 pub unsafe fn vqrdmlahh_lane_s16
< const LANE
: i32 >( a
: i16 , b
: i16 , c
: int16x4_t
) -> i16 {
6487 static_assert_imm2
!( LANE
);
6488 vqaddh_s16 ( a
, vqrdmulhh_lane_s16
::< LANE
>( b
, c
))
6491 /// Signed saturating rounding doubling multiply accumulate returning high half
6493 #[target_feature(enable = "neon" )]
6494 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6495 #[rustc_legacy_const_generics(3)]
6496 pub unsafe fn vqrdmlahh_laneq_s16
< const LANE
: i32 >( a
: i16 , b
: i16 , c
: int16x8_t
) -> i16 {
6497 static_assert_imm3
!( LANE
);
6498 vqaddh_s16 ( a
, vqrdmulhh_laneq_s16
::< LANE
>( b
, c
))
6501 /// Signed saturating rounding doubling multiply accumulate returning high half
6503 #[target_feature(enable = "neon" )]
6504 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6505 #[rustc_legacy_const_generics(3)]
6506 pub unsafe fn vqrdmlahs_lane_s32
< const LANE
: i32 >( a
: i32 , b
: i32 , c
: int32x2_t
) -> i32 {
6507 static_assert_imm1
!( LANE
);
6508 vqadds_s32 ( a
, vqrdmulhs_lane_s32
::< LANE
>( b
, c
))
6511 /// Signed saturating rounding doubling multiply accumulate returning high half
6513 #[target_feature(enable = "neon" )]
6514 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6515 #[rustc_legacy_const_generics(3)]
6516 pub unsafe fn vqrdmlahs_laneq_s32
< const LANE
: i32 >( a
: i32 , b
: i32 , c
: int32x4_t
) -> i32 {
6517 static_assert_imm2
!( LANE
);
6518 vqadds_s32 ( a
, vqrdmulhs_laneq_s32
::< LANE
>( b
, c
))
6521 /// Signed saturating rounding doubling multiply subtract returning high half
6523 #[target_feature(enable = "neon" )]
6524 #[cfg_attr(test, assert_instr(sqrdmulh))]
6525 pub unsafe fn vqrdmlshh_s16 ( a
: i16 , b
: i16 , c
: i16 ) -> i16 {
6526 vqsubh_s16 ( a
, vqrdmulhh_s16 ( b
, c
))
6529 /// Signed saturating rounding doubling multiply subtract returning high half
6531 #[target_feature(enable = "neon" )]
6532 #[cfg_attr(test, assert_instr(sqrdmulh))]
6533 pub unsafe fn vqrdmlshs_s32 ( a
: i32 , b
: i32 , c
: i32 ) -> i32 {
6534 vqsubs_s32 ( a
, vqrdmulhs_s32 ( b
, c
))
6537 /// Signed saturating rounding doubling multiply subtract returning high half
6539 #[target_feature(enable = "neon" )]
6540 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6541 #[rustc_legacy_const_generics(3)]
6542 pub unsafe fn vqrdmlshh_lane_s16
< const LANE
: i32 >( a
: i16 , b
: i16 , c
: int16x4_t
) -> i16 {
6543 static_assert_imm2
!( LANE
);
6544 vqsubh_s16 ( a
, vqrdmulhh_lane_s16
::< LANE
>( b
, c
))
6547 /// Signed saturating rounding doubling multiply subtract returning high half
6549 #[target_feature(enable = "neon" )]
6550 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6551 #[rustc_legacy_const_generics(3)]
6552 pub unsafe fn vqrdmlshh_laneq_s16
< const LANE
: i32 >( a
: i16 , b
: i16 , c
: int16x8_t
) -> i16 {
6553 static_assert_imm3
!( LANE
);
6554 vqsubh_s16 ( a
, vqrdmulhh_laneq_s16
::< LANE
>( b
, c
))
6557 /// Signed saturating rounding doubling multiply subtract returning high half
6559 #[target_feature(enable = "neon" )]
6560 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6561 #[rustc_legacy_const_generics(3)]
6562 pub unsafe fn vqrdmlshs_lane_s32
< const LANE
: i32 >( a
: i32 , b
: i32 , c
: int32x2_t
) -> i32 {
6563 static_assert_imm1
!( LANE
);
6564 vqsubs_s32 ( a
, vqrdmulhs_lane_s32
::< LANE
>( b
, c
))
6567 /// Signed saturating rounding doubling multiply subtract returning high half
6569 #[target_feature(enable = "neon" )]
6570 #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
6571 #[rustc_legacy_const_generics(3)]
6572 pub unsafe fn vqrdmlshs_laneq_s32
< const LANE
: i32 >( a
: i32 , b
: i32 , c
: int32x4_t
) -> i32 {
6573 static_assert_imm2
!( LANE
);
6574 vqsubs_s32 ( a
, vqrdmulhs_laneq_s32
::< LANE
>( b
, c
))
6577 /// Signed saturating rounding shift left
6579 #[target_feature(enable = "neon" )]
6580 #[cfg_attr(test, assert_instr(sqrshl))]
6581 pub unsafe fn vqrshls_s32 ( a
: i32 , b
: i32 ) -> i32 {
6582 #[allow(improper_ctypes)]
6584 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqrshl.i32" )]
6585 fn vqrshls_s32_ ( a
: i32 , b
: i32 ) -> i32 ;
6590 /// Signed saturating rounding shift left
6592 #[target_feature(enable = "neon" )]
6593 #[cfg_attr(test, assert_instr(sqrshl))]
6594 pub unsafe fn vqrshld_s64 ( a
: i64 , b
: i64 ) -> i64 {
6595 #[allow(improper_ctypes)]
6597 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqrshl.i64" )]
6598 fn vqrshld_s64_ ( a
: i64 , b
: i64 ) -> i64 ;
6603 /// Signed saturating rounding shift left
6605 #[target_feature(enable = "neon" )]
6606 #[cfg_attr(test, assert_instr(sqrshl))]
6607 pub unsafe fn vqrshlb_s8 ( a
: i8 , b
: i8 ) -> i8 {
6608 let a
: int8x8_t
= vdup_n_s8 ( a
);
6609 let b
: int8x8_t
= vdup_n_s8 ( b
);
6610 simd_extract ( vqrshl_s8 ( a
, b
), 0 )
6613 /// Signed saturating rounding shift left
6615 #[target_feature(enable = "neon" )]
6616 #[cfg_attr(test, assert_instr(sqrshl))]
6617 pub unsafe fn vqrshlh_s16 ( a
: i16 , b
: i16 ) -> i16 {
6618 let a
: int16x4_t
= vdup_n_s16 ( a
);
6619 let b
: int16x4_t
= vdup_n_s16 ( b
);
6620 simd_extract ( vqrshl_s16 ( a
, b
), 0 )
6623 /// Unsigned signed saturating rounding shift left
6625 #[target_feature(enable = "neon" )]
6626 #[cfg_attr(test, assert_instr(uqrshl))]
6627 pub unsafe fn vqrshls_u32 ( a
: u32 , b
: i32 ) -> u32 {
6628 #[allow(improper_ctypes)]
6630 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uqrshl.i32" )]
6631 fn vqrshls_u32_ ( a
: u32 , b
: i32 ) -> u32 ;
6636 /// Unsigned signed saturating rounding shift left
6638 #[target_feature(enable = "neon" )]
6639 #[cfg_attr(test, assert_instr(uqrshl))]
6640 pub unsafe fn vqrshld_u64 ( a
: u64 , b
: i64 ) -> u64 {
6641 #[allow(improper_ctypes)]
6643 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uqrshl.i64" )]
6644 fn vqrshld_u64_ ( a
: u64 , b
: i64 ) -> u64 ;
6649 /// Unsigned signed saturating rounding shift left
6651 #[target_feature(enable = "neon" )]
6652 #[cfg_attr(test, assert_instr(uqrshl))]
6653 pub unsafe fn vqrshlb_u8 ( a
: u8 , b
: i8 ) -> u8 {
6654 let a
: uint8x8_t
= vdup_n_u8 ( a
);
6655 let b
: int8x8_t
= vdup_n_s8 ( b
);
6656 simd_extract ( vqrshl_u8 ( a
, b
), 0 )
6659 /// Unsigned signed saturating rounding shift left
6661 #[target_feature(enable = "neon" )]
6662 #[cfg_attr(test, assert_instr(uqrshl))]
6663 pub unsafe fn vqrshlh_u16 ( a
: u16 , b
: i16 ) -> u16 {
6664 let a
: uint16x4_t
= vdup_n_u16 ( a
);
6665 let b
: int16x4_t
= vdup_n_s16 ( b
);
6666 simd_extract ( vqrshl_u16 ( a
, b
), 0 )
6669 /// Signed saturating rounded shift right narrow
6671 #[target_feature(enable = "neon" )]
6672 #[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
6673 #[rustc_legacy_const_generics(1)]
6674 pub unsafe fn vqrshrnh_n_s16
< const N
: i32 >( a
: i16 ) -> i8 {
6675 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
6676 let a
: int16x8_t
= vdupq_n_s16 ( a
);
6677 simd_extract ( vqrshrn_n_s16
::< N
>( a
), 0 )
6680 /// Signed saturating rounded shift right narrow
6682 #[target_feature(enable = "neon" )]
6683 #[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
6684 #[rustc_legacy_const_generics(1)]
6685 pub unsafe fn vqrshrns_n_s32
< const N
: i32 >( a
: i32 ) -> i16 {
6686 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
6687 let a
: int32x4_t
= vdupq_n_s32 ( a
);
6688 simd_extract ( vqrshrn_n_s32
::< N
>( a
), 0 )
6691 /// Signed saturating rounded shift right narrow
6693 #[target_feature(enable = "neon" )]
6694 #[cfg_attr(test, assert_instr(sqrshrn, N = 2))]
6695 #[rustc_legacy_const_generics(1)]
6696 pub unsafe fn vqrshrnd_n_s64
< const N
: i32 >( a
: i64 ) -> i32 {
6697 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
6698 let a
: int64x2_t
= vdupq_n_s64 ( a
);
6699 simd_extract ( vqrshrn_n_s64
::< N
>( a
), 0 )
6702 /// Signed saturating rounded shift right narrow
6704 #[target_feature(enable = "neon" )]
6705 #[cfg_attr(test, assert_instr(sqrshrn2, N = 2))]
6706 #[rustc_legacy_const_generics(2)]
6707 pub unsafe fn vqrshrn_high_n_s16
< const N
: i32 >( a
: int8x8_t
, b
: int16x8_t
) -> int8x16_t
{
6708 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
6709 simd_shuffle16
!( a
, vqrshrn_n_s16
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
6712 /// Signed saturating rounded shift right narrow
6714 #[target_feature(enable = "neon" )]
6715 #[cfg_attr(test, assert_instr(sqrshrn2, N = 2))]
6716 #[rustc_legacy_const_generics(2)]
6717 pub unsafe fn vqrshrn_high_n_s32
< const N
: i32 >( a
: int16x4_t
, b
: int32x4_t
) -> int16x8_t
{
6718 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
6719 simd_shuffle8
!( a
, vqrshrn_n_s32
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
6722 /// Signed saturating rounded shift right narrow
6724 #[target_feature(enable = "neon" )]
6725 #[cfg_attr(test, assert_instr(sqrshrn2, N = 2))]
6726 #[rustc_legacy_const_generics(2)]
6727 pub unsafe fn vqrshrn_high_n_s64
< const N
: i32 >( a
: int32x2_t
, b
: int64x2_t
) -> int32x4_t
{
6728 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
6729 simd_shuffle4
!( a
, vqrshrn_n_s64
::< N
>( b
), [ 0 , 1 , 2 , 3 ])
6732 /// Unsigned saturating rounded shift right narrow
6734 #[target_feature(enable = "neon" )]
6735 #[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
6736 #[rustc_legacy_const_generics(1)]
6737 pub unsafe fn vqrshrnh_n_u16
< const N
: i32 >( a
: u16 ) -> u8 {
6738 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
6739 let a
: uint16x8_t
= vdupq_n_u16 ( a
);
6740 simd_extract ( vqrshrn_n_u16
::< N
>( a
), 0 )
6743 /// Unsigned saturating rounded shift right narrow
6745 #[target_feature(enable = "neon" )]
6746 #[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
6747 #[rustc_legacy_const_generics(1)]
6748 pub unsafe fn vqrshrns_n_u32
< const N
: i32 >( a
: u32 ) -> u16 {
6749 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
6750 let a
: uint32x4_t
= vdupq_n_u32 ( a
);
6751 simd_extract ( vqrshrn_n_u32
::< N
>( a
), 0 )
6754 /// Unsigned saturating rounded shift right narrow
6756 #[target_feature(enable = "neon" )]
6757 #[cfg_attr(test, assert_instr(uqrshrn, N = 2))]
6758 #[rustc_legacy_const_generics(1)]
6759 pub unsafe fn vqrshrnd_n_u64
< const N
: i32 >( a
: u64 ) -> u32 {
6760 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
6761 let a
: uint64x2_t
= vdupq_n_u64 ( a
);
6762 simd_extract ( vqrshrn_n_u64
::< N
>( a
), 0 )
6765 /// Unsigned saturating rounded shift right narrow
6767 #[target_feature(enable = "neon" )]
6768 #[cfg_attr(test, assert_instr(uqrshrn2, N = 2))]
6769 #[rustc_legacy_const_generics(2)]
6770 pub unsafe fn vqrshrn_high_n_u16
< const N
: i32 >( a
: uint8x8_t
, b
: uint16x8_t
) -> uint8x16_t
{
6771 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
6772 simd_shuffle16
!( a
, vqrshrn_n_u16
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
6775 /// Unsigned saturating rounded shift right narrow
6777 #[target_feature(enable = "neon" )]
6778 #[cfg_attr(test, assert_instr(uqrshrn2, N = 2))]
6779 #[rustc_legacy_const_generics(2)]
6780 pub unsafe fn vqrshrn_high_n_u32
< const N
: i32 >( a
: uint16x4_t
, b
: uint32x4_t
) -> uint16x8_t
{
6781 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
6782 simd_shuffle8
!( a
, vqrshrn_n_u32
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
6785 /// Unsigned saturating rounded shift right narrow
6787 #[target_feature(enable = "neon" )]
6788 #[cfg_attr(test, assert_instr(uqrshrn2, N = 2))]
6789 #[rustc_legacy_const_generics(2)]
6790 pub unsafe fn vqrshrn_high_n_u64
< const N
: i32 >( a
: uint32x2_t
, b
: uint64x2_t
) -> uint32x4_t
{
6791 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
6792 simd_shuffle4
!( a
, vqrshrn_n_u64
::< N
>( b
), [ 0 , 1 , 2 , 3 ])
6795 /// Signed saturating rounded shift right unsigned narrow
6797 #[target_feature(enable = "neon" )]
6798 #[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
6799 #[rustc_legacy_const_generics(1)]
6800 pub unsafe fn vqrshrunh_n_s16
< const N
: i32 >( a
: i16 ) -> u8 {
6801 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
6802 let a
: int16x8_t
= vdupq_n_s16 ( a
);
6803 simd_extract ( vqrshrun_n_s16
::< N
>( a
), 0 )
6806 /// Signed saturating rounded shift right unsigned narrow
6808 #[target_feature(enable = "neon" )]
6809 #[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
6810 #[rustc_legacy_const_generics(1)]
6811 pub unsafe fn vqrshruns_n_s32
< const N
: i32 >( a
: i32 ) -> u16 {
6812 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
6813 let a
: int32x4_t
= vdupq_n_s32 ( a
);
6814 simd_extract ( vqrshrun_n_s32
::< N
>( a
), 0 )
6817 /// Signed saturating rounded shift right unsigned narrow
6819 #[target_feature(enable = "neon" )]
6820 #[cfg_attr(test, assert_instr(sqrshrun, N = 2))]
6821 #[rustc_legacy_const_generics(1)]
6822 pub unsafe fn vqrshrund_n_s64
< const N
: i32 >( a
: i64 ) -> u32 {
6823 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
6824 let a
: int64x2_t
= vdupq_n_s64 ( a
);
6825 simd_extract ( vqrshrun_n_s64
::< N
>( a
), 0 )
6828 /// Signed saturating rounded shift right unsigned narrow
6830 #[target_feature(enable = "neon" )]
6831 #[cfg_attr(test, assert_instr(sqrshrun2, N = 2))]
6832 #[rustc_legacy_const_generics(2)]
6833 pub unsafe fn vqrshrun_high_n_s16
< const N
: i32 >( a
: uint8x8_t
, b
: int16x8_t
) -> uint8x16_t
{
6834 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
6835 simd_shuffle16
!( a
, vqrshrun_n_s16
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
6838 /// Signed saturating rounded shift right unsigned narrow
6840 #[target_feature(enable = "neon" )]
6841 #[cfg_attr(test, assert_instr(sqrshrun2, N = 2))]
6842 #[rustc_legacy_const_generics(2)]
6843 pub unsafe fn vqrshrun_high_n_s32
< const N
: i32 >( a
: uint16x4_t
, b
: int32x4_t
) -> uint16x8_t
{
6844 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
6845 simd_shuffle8
!( a
, vqrshrun_n_s32
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
6848 /// Signed saturating rounded shift right unsigned narrow
6850 #[target_feature(enable = "neon" )]
6851 #[cfg_attr(test, assert_instr(sqrshrun2, N = 2))]
6852 #[rustc_legacy_const_generics(2)]
6853 pub unsafe fn vqrshrun_high_n_s64
< const N
: i32 >( a
: uint32x2_t
, b
: int64x2_t
) -> uint32x4_t
{
6854 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
6855 simd_shuffle4
!( a
, vqrshrun_n_s64
::< N
>( b
), [ 0 , 1 , 2 , 3 ])
6858 /// Signed saturating shift left
6860 #[target_feature(enable = "neon" )]
6861 #[cfg_attr(test, assert_instr(sqshl))]
6862 pub unsafe fn vqshld_s64 ( a
: i64 , b
: i64 ) -> i64 {
6863 #[allow(improper_ctypes)]
6865 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqshl.i64" )]
6866 fn vqshld_s64_ ( a
: i64 , b
: i64 ) -> i64 ;
6871 /// Signed saturating shift left
6873 #[target_feature(enable = "neon" )]
6874 #[cfg_attr(test, assert_instr(sqshl))]
6875 pub unsafe fn vqshlb_s8 ( a
: i8 , b
: i8 ) -> i8 {
6876 let c
: int8x8_t
= vqshl_s8 ( vdup_n_s8 ( a
), vdup_n_s8 ( b
));
6880 /// Signed saturating shift left
6882 #[target_feature(enable = "neon" )]
6883 #[cfg_attr(test, assert_instr(sqshl))]
6884 pub unsafe fn vqshlh_s16 ( a
: i16 , b
: i16 ) -> i16 {
6885 let c
: int16x4_t
= vqshl_s16 ( vdup_n_s16 ( a
), vdup_n_s16 ( b
));
6889 /// Signed saturating shift left
6891 #[target_feature(enable = "neon" )]
6892 #[cfg_attr(test, assert_instr(sqshl))]
6893 pub unsafe fn vqshls_s32 ( a
: i32 , b
: i32 ) -> i32 {
6894 let c
: int32x2_t
= vqshl_s32 ( vdup_n_s32 ( a
), vdup_n_s32 ( b
));
6898 /// Unsigned saturating shift left
6900 #[target_feature(enable = "neon" )]
6901 #[cfg_attr(test, assert_instr(uqshl))]
6902 pub unsafe fn vqshld_u64 ( a
: u64 , b
: i64 ) -> u64 {
6903 #[allow(improper_ctypes)]
6905 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uqshl.i64" )]
6906 fn vqshld_u64_ ( a
: u64 , b
: i64 ) -> u64 ;
6911 /// Unsigned saturating shift left
6913 #[target_feature(enable = "neon" )]
6914 #[cfg_attr(test, assert_instr(uqshl))]
6915 pub unsafe fn vqshlb_u8 ( a
: u8 , b
: i8 ) -> u8 {
6916 let c
: uint8x8_t
= vqshl_u8 ( vdup_n_u8 ( a
), vdup_n_s8 ( b
));
6920 /// Unsigned saturating shift left
6922 #[target_feature(enable = "neon" )]
6923 #[cfg_attr(test, assert_instr(uqshl))]
6924 pub unsafe fn vqshlh_u16 ( a
: u16 , b
: i16 ) -> u16 {
6925 let c
: uint16x4_t
= vqshl_u16 ( vdup_n_u16 ( a
), vdup_n_s16 ( b
));
6929 /// Unsigned saturating shift left
6931 #[target_feature(enable = "neon" )]
6932 #[cfg_attr(test, assert_instr(uqshl))]
6933 pub unsafe fn vqshls_u32 ( a
: u32 , b
: i32 ) -> u32 {
6934 let c
: uint32x2_t
= vqshl_u32 ( vdup_n_u32 ( a
), vdup_n_s32 ( b
));
6938 /// Signed saturating shift left
6940 #[target_feature(enable = "neon" )]
6941 #[cfg_attr(test, assert_instr(sqshl, N = 2))]
6942 #[rustc_legacy_const_generics(1)]
6943 pub unsafe fn vqshlb_n_s8
< const N
: i32 >( a
: i8 ) -> i8 {
6944 static_assert_imm3
!( N
);
6945 simd_extract ( vqshl_n_s8
::< N
>( vdup_n_s8 ( a
)), 0 )
6948 /// Signed saturating shift left
6950 #[target_feature(enable = "neon" )]
6951 #[cfg_attr(test, assert_instr(sqshl, N = 2))]
6952 #[rustc_legacy_const_generics(1)]
6953 pub unsafe fn vqshlh_n_s16
< const N
: i32 >( a
: i16 ) -> i16 {
6954 static_assert_imm4
!( N
);
6955 simd_extract ( vqshl_n_s16
::< N
>( vdup_n_s16 ( a
)), 0 )
6958 /// Signed saturating shift left
6960 #[target_feature(enable = "neon" )]
6961 #[cfg_attr(test, assert_instr(sqshl, N = 2))]
6962 #[rustc_legacy_const_generics(1)]
6963 pub unsafe fn vqshls_n_s32
< const N
: i32 >( a
: i32 ) -> i32 {
6964 static_assert_imm5
!( N
);
6965 simd_extract ( vqshl_n_s32
::< N
>( vdup_n_s32 ( a
)), 0 )
6968 /// Signed saturating shift left
6970 #[target_feature(enable = "neon" )]
6971 #[cfg_attr(test, assert_instr(sqshl, N = 2))]
6972 #[rustc_legacy_const_generics(1)]
6973 pub unsafe fn vqshld_n_s64
< const N
: i32 >( a
: i64 ) -> i64 {
6974 static_assert_imm6
!( N
);
6975 simd_extract ( vqshl_n_s64
::< N
>( vdup_n_s64 ( a
)), 0 )
6978 /// Unsigned saturating shift left
6980 #[target_feature(enable = "neon" )]
6981 #[cfg_attr(test, assert_instr(uqshl, N = 2))]
6982 #[rustc_legacy_const_generics(1)]
6983 pub unsafe fn vqshlb_n_u8
< const N
: i32 >( a
: u8 ) -> u8 {
6984 static_assert_imm3
!( N
);
6985 simd_extract ( vqshl_n_u8
::< N
>( vdup_n_u8 ( a
)), 0 )
6988 /// Unsigned saturating shift left
6990 #[target_feature(enable = "neon" )]
6991 #[cfg_attr(test, assert_instr(uqshl, N = 2))]
6992 #[rustc_legacy_const_generics(1)]
6993 pub unsafe fn vqshlh_n_u16
< const N
: i32 >( a
: u16 ) -> u16 {
6994 static_assert_imm4
!( N
);
6995 simd_extract ( vqshl_n_u16
::< N
>( vdup_n_u16 ( a
)), 0 )
6998 /// Unsigned saturating shift left
7000 #[target_feature(enable = "neon" )]
7001 #[cfg_attr(test, assert_instr(uqshl, N = 2))]
7002 #[rustc_legacy_const_generics(1)]
7003 pub unsafe fn vqshls_n_u32
< const N
: i32 >( a
: u32 ) -> u32 {
7004 static_assert_imm5
!( N
);
7005 simd_extract ( vqshl_n_u32
::< N
>( vdup_n_u32 ( a
)), 0 )
7008 /// Unsigned saturating shift left
7010 #[target_feature(enable = "neon" )]
7011 #[cfg_attr(test, assert_instr(uqshl, N = 2))]
7012 #[rustc_legacy_const_generics(1)]
7013 pub unsafe fn vqshld_n_u64
< const N
: i32 >( a
: u64 ) -> u64 {
7014 static_assert_imm6
!( N
);
7015 simd_extract ( vqshl_n_u64
::< N
>( vdup_n_u64 ( a
)), 0 )
7018 /// Signed saturating shift right narrow
7020 #[target_feature(enable = "neon" )]
7021 #[cfg_attr(test, assert_instr(sqshrn, N = 2))]
7022 #[rustc_legacy_const_generics(1)]
7023 pub unsafe fn vqshrnd_n_s64
< const N
: i32 >( a
: i64 ) -> i32 {
7024 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
7025 #[allow(improper_ctypes)]
7027 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqshrn.i32" )]
7028 fn vqshrnd_n_s64_ ( a
: i64 , n
: i32 ) -> i32 ;
7030 vqshrnd_n_s64_ ( a
, N
)
7033 /// Signed saturating shift right narrow
7035 #[target_feature(enable = "neon" )]
7036 #[cfg_attr(test, assert_instr(sqshrn, N = 2))]
7037 #[rustc_legacy_const_generics(1)]
7038 pub unsafe fn vqshrnh_n_s16
< const N
: i32 >( a
: i16 ) -> i8 {
7039 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
7040 simd_extract ( vqshrn_n_s16
::< N
>( vdupq_n_s16 ( a
)), 0 )
7043 /// Signed saturating shift right narrow
7045 #[target_feature(enable = "neon" )]
7046 #[cfg_attr(test, assert_instr(sqshrn, N = 2))]
7047 #[rustc_legacy_const_generics(1)]
7048 pub unsafe fn vqshrns_n_s32
< const N
: i32 >( a
: i32 ) -> i16 {
7049 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
7050 simd_extract ( vqshrn_n_s32
::< N
>( vdupq_n_s32 ( a
)), 0 )
7053 /// Signed saturating shift right narrow
7055 #[target_feature(enable = "neon" )]
7056 #[cfg_attr(test, assert_instr(sqshrn2, N = 2))]
7057 #[rustc_legacy_const_generics(2)]
7058 pub unsafe fn vqshrn_high_n_s16
< const N
: i32 >( a
: int8x8_t
, b
: int16x8_t
) -> int8x16_t
{
7059 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
7060 simd_shuffle16
!( a
, vqshrn_n_s16
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
7063 /// Signed saturating shift right narrow
7065 #[target_feature(enable = "neon" )]
7066 #[cfg_attr(test, assert_instr(sqshrn2, N = 2))]
7067 #[rustc_legacy_const_generics(2)]
7068 pub unsafe fn vqshrn_high_n_s32
< const N
: i32 >( a
: int16x4_t
, b
: int32x4_t
) -> int16x8_t
{
7069 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
7070 simd_shuffle8
!( a
, vqshrn_n_s32
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
7073 /// Signed saturating shift right narrow
7075 #[target_feature(enable = "neon" )]
7076 #[cfg_attr(test, assert_instr(sqshrn2, N = 2))]
7077 #[rustc_legacy_const_generics(2)]
7078 pub unsafe fn vqshrn_high_n_s64
< const N
: i32 >( a
: int32x2_t
, b
: int64x2_t
) -> int32x4_t
{
7079 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
7080 simd_shuffle4
!( a
, vqshrn_n_s64
::< N
>( b
), [ 0 , 1 , 2 , 3 ])
7083 /// Unsigned saturating shift right narrow
7085 #[target_feature(enable = "neon" )]
7086 #[cfg_attr(test, assert_instr(uqshrn, N = 2))]
7087 #[rustc_legacy_const_generics(1)]
7088 pub unsafe fn vqshrnd_n_u64
< const N
: i32 >( a
: u64 ) -> u32 {
7089 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
7090 #[allow(improper_ctypes)]
7092 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.uqshrn.i32" )]
7093 fn vqshrnd_n_u64_ ( a
: u64 , n
: i32 ) -> u32 ;
7095 vqshrnd_n_u64_ ( a
, N
)
7098 /// Unsigned saturating shift right narrow
7100 #[target_feature(enable = "neon" )]
7101 #[cfg_attr(test, assert_instr(uqshrn, N = 2))]
7102 #[rustc_legacy_const_generics(1)]
7103 pub unsafe fn vqshrnh_n_u16
< const N
: i32 >( a
: u16 ) -> u8 {
7104 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
7105 simd_extract ( vqshrn_n_u16
::< N
>( vdupq_n_u16 ( a
)), 0 )
7108 /// Unsigned saturating shift right narrow
7110 #[target_feature(enable = "neon" )]
7111 #[cfg_attr(test, assert_instr(uqshrn, N = 2))]
7112 #[rustc_legacy_const_generics(1)]
7113 pub unsafe fn vqshrns_n_u32
< const N
: i32 >( a
: u32 ) -> u16 {
7114 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
7115 simd_extract ( vqshrn_n_u32
::< N
>( vdupq_n_u32 ( a
)), 0 )
7118 /// Unsigned saturating shift right narrow
7120 #[target_feature(enable = "neon" )]
7121 #[cfg_attr(test, assert_instr(uqshrn2, N = 2))]
7122 #[rustc_legacy_const_generics(2)]
7123 pub unsafe fn vqshrn_high_n_u16
< const N
: i32 >( a
: uint8x8_t
, b
: uint16x8_t
) -> uint8x16_t
{
7124 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
7125 simd_shuffle16
!( a
, vqshrn_n_u16
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
7128 /// Unsigned saturating shift right narrow
7130 #[target_feature(enable = "neon" )]
7131 #[cfg_attr(test, assert_instr(uqshrn2, N = 2))]
7132 #[rustc_legacy_const_generics(2)]
7133 pub unsafe fn vqshrn_high_n_u32
< const N
: i32 >( a
: uint16x4_t
, b
: uint32x4_t
) -> uint16x8_t
{
7134 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
7135 simd_shuffle8
!( a
, vqshrn_n_u32
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
7138 /// Unsigned saturating shift right narrow
7140 #[target_feature(enable = "neon" )]
7141 #[cfg_attr(test, assert_instr(uqshrn2, N = 2))]
7142 #[rustc_legacy_const_generics(2)]
7143 pub unsafe fn vqshrn_high_n_u64
< const N
: i32 >( a
: uint32x2_t
, b
: uint64x2_t
) -> uint32x4_t
{
7144 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
7145 simd_shuffle4
!( a
, vqshrn_n_u64
::< N
>( b
), [ 0 , 1 , 2 , 3 ])
7148 /// Signed saturating shift right unsigned narrow
7150 #[target_feature(enable = "neon" )]
7151 #[cfg_attr(test, assert_instr(sqshrun, N = 2))]
7152 #[rustc_legacy_const_generics(1)]
7153 pub unsafe fn vqshrunh_n_s16
< const N
: i32 >( a
: i16 ) -> u8 {
7154 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
7155 simd_extract ( vqshrun_n_s16
::< N
>( vdupq_n_s16 ( a
)), 0 )
7158 /// Signed saturating shift right unsigned narrow
7160 #[target_feature(enable = "neon" )]
7161 #[cfg_attr(test, assert_instr(sqshrun, N = 2))]
7162 #[rustc_legacy_const_generics(1)]
7163 pub unsafe fn vqshruns_n_s32
< const N
: i32 >( a
: i32 ) -> u16 {
7164 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
7165 simd_extract ( vqshrun_n_s32
::< N
>( vdupq_n_s32 ( a
)), 0 )
7168 /// Signed saturating shift right unsigned narrow
7170 #[target_feature(enable = "neon" )]
7171 #[cfg_attr(test, assert_instr(sqshrun, N = 2))]
7172 #[rustc_legacy_const_generics(1)]
7173 pub unsafe fn vqshrund_n_s64
< const N
: i32 >( a
: i64 ) -> u32 {
7174 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
7175 simd_extract ( vqshrun_n_s64
::< N
>( vdupq_n_s64 ( a
)), 0 )
7178 /// Signed saturating shift right unsigned narrow
7180 #[target_feature(enable = "neon" )]
7181 #[cfg_attr(test, assert_instr(sqshrun2, N = 2))]
7182 #[rustc_legacy_const_generics(2)]
7183 pub unsafe fn vqshrun_high_n_s16
< const N
: i32 >( a
: uint8x8_t
, b
: int16x8_t
) -> uint8x16_t
{
7184 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
7185 simd_shuffle16
!( a
, vqshrun_n_s16
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
7188 /// Signed saturating shift right unsigned narrow
7190 #[target_feature(enable = "neon" )]
7191 #[cfg_attr(test, assert_instr(sqshrun2, N = 2))]
7192 #[rustc_legacy_const_generics(2)]
7193 pub unsafe fn vqshrun_high_n_s32
< const N
: i32 >( a
: uint16x4_t
, b
: int32x4_t
) -> uint16x8_t
{
7194 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
7195 simd_shuffle8
!( a
, vqshrun_n_s32
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
7198 /// Signed saturating shift right unsigned narrow
7200 #[target_feature(enable = "neon" )]
7201 #[cfg_attr(test, assert_instr(sqshrun2, N = 2))]
7202 #[rustc_legacy_const_generics(2)]
7203 pub unsafe fn vqshrun_high_n_s64
< const N
: i32 >( a
: uint32x2_t
, b
: int64x2_t
) -> uint32x4_t
{
7204 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
7205 simd_shuffle4
!( a
, vqshrun_n_s64
::< N
>( b
), [ 0 , 1 , 2 , 3 ])
7208 /// Calculates the square root of each lane.
7210 #[target_feature(enable = "neon" )]
7211 #[cfg_attr(test, assert_instr(fsqrt))]
7212 pub unsafe fn vsqrt_f32 ( a
: float32x2_t
) -> float32x2_t
{
7216 /// Calculates the square root of each lane.
7218 #[target_feature(enable = "neon" )]
7219 #[cfg_attr(test, assert_instr(fsqrt))]
7220 pub unsafe fn vsqrtq_f32 ( a
: float32x4_t
) -> float32x4_t
{
7224 /// Calculates the square root of each lane.
7226 #[target_feature(enable = "neon" )]
7227 #[cfg_attr(test, assert_instr(fsqrt))]
7228 pub unsafe fn vsqrt_f64 ( a
: float64x1_t
) -> float64x1_t
{
7232 /// Calculates the square root of each lane.
7234 #[target_feature(enable = "neon" )]
7235 #[cfg_attr(test, assert_instr(fsqrt))]
7236 pub unsafe fn vsqrtq_f64 ( a
: float64x2_t
) -> float64x2_t
{
7240 /// Reciprocal square-root estimate.
7242 #[target_feature(enable = "neon" )]
7243 #[cfg_attr(test, assert_instr(frsqrte))]
7244 pub unsafe fn vrsqrte_f64 ( a
: float64x1_t
) -> float64x1_t
{
7245 #[allow(improper_ctypes)]
7247 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.frsqrte.v1f64" )]
7248 fn vrsqrte_f64_ ( a
: float64x1_t
) -> float64x1_t
;
7253 /// Reciprocal square-root estimate.
7255 #[target_feature(enable = "neon" )]
7256 #[cfg_attr(test, assert_instr(frsqrte))]
7257 pub unsafe fn vrsqrteq_f64 ( a
: float64x2_t
) -> float64x2_t
{
7258 #[allow(improper_ctypes)]
7260 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.frsqrte.v2f64" )]
7261 fn vrsqrteq_f64_ ( a
: float64x2_t
) -> float64x2_t
;
7266 /// Reciprocal estimate.
7268 #[target_feature(enable = "neon" )]
7269 #[cfg_attr(test, assert_instr(frecpe))]
7270 pub unsafe fn vrecpe_f64 ( a
: float64x1_t
) -> float64x1_t
{
7271 #[allow(improper_ctypes)]
7273 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.frecpe.v1f64" )]
7274 fn vrecpe_f64_ ( a
: float64x1_t
) -> float64x1_t
;
7279 /// Reciprocal estimate.
7281 #[target_feature(enable = "neon" )]
7282 #[cfg_attr(test, assert_instr(frecpe))]
7283 pub unsafe fn vrecpeq_f64 ( a
: float64x2_t
) -> float64x2_t
{
7284 #[allow(improper_ctypes)]
7286 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.frecpe.v2f64" )]
7287 fn vrecpeq_f64_ ( a
: float64x2_t
) -> float64x2_t
;
7292 /// Vector reinterpret cast operation
7294 #[target_feature(enable = "neon" )]
7295 #[cfg_attr(test, assert_instr(str))]
7296 pub unsafe fn vreinterpret_s64_p64 ( a
: poly64x1_t
) -> int64x1_t
{
7300 /// Vector reinterpret cast operation
7302 #[target_feature(enable = "neon" )]
7303 #[cfg_attr(test, assert_instr(str))]
7304 pub unsafe fn vreinterpret_u64_p64 ( a
: poly64x1_t
) -> uint64x1_t
{
7308 /// Vector reinterpret cast operation
7310 #[target_feature(enable = "neon" )]
7311 #[cfg_attr(test, assert_instr(str))]
7312 pub unsafe fn vreinterpret_p64_s64 ( a
: int64x1_t
) -> poly64x1_t
{
7316 /// Vector reinterpret cast operation
7318 #[target_feature(enable = "neon" )]
7319 #[cfg_attr(test, assert_instr(str))]
7320 pub unsafe fn vreinterpret_p64_u64 ( a
: uint64x1_t
) -> poly64x1_t
{
7324 /// Vector reinterpret cast operation
7326 #[target_feature(enable = "neon" )]
7327 #[cfg_attr(test, assert_instr(str))]
7328 pub unsafe fn vreinterpretq_s64_p64 ( a
: poly64x2_t
) -> int64x2_t
{
7332 /// Vector reinterpret cast operation
7334 #[target_feature(enable = "neon" )]
7335 #[cfg_attr(test, assert_instr(str))]
7336 pub unsafe fn vreinterpretq_u64_p64 ( a
: poly64x2_t
) -> uint64x2_t
{
7340 /// Vector reinterpret cast operation
7342 #[target_feature(enable = "neon" )]
7343 #[cfg_attr(test, assert_instr(str))]
7344 pub unsafe fn vreinterpretq_p64_s64 ( a
: int64x2_t
) -> poly64x2_t
{
7348 /// Vector reinterpret cast operation
7350 #[target_feature(enable = "neon" )]
7351 #[cfg_attr(test, assert_instr(str))]
7352 pub unsafe fn vreinterpretq_p64_u64 ( a
: uint64x2_t
) -> poly64x2_t
{
7356 /// Vector reinterpret cast operation
7358 #[target_feature(enable = "neon" )]
7359 #[cfg_attr(test, assert_instr(str))]
7360 pub unsafe fn vreinterpret_s32_p64 ( a
: poly64x1_t
) -> int32x2_t
{
7364 /// Vector reinterpret cast operation
7366 #[target_feature(enable = "neon" )]
7367 #[cfg_attr(test, assert_instr(str))]
7368 pub unsafe fn vreinterpret_u32_p64 ( a
: poly64x1_t
) -> uint32x2_t
{
7372 /// Vector reinterpret cast operation
7374 #[target_feature(enable = "neon" )]
7375 #[cfg_attr(test, assert_instr(str))]
7376 pub unsafe fn vreinterpretq_s32_p64 ( a
: poly64x2_t
) -> int32x4_t
{
7380 /// Vector reinterpret cast operation
7382 #[target_feature(enable = "neon" )]
7383 #[cfg_attr(test, assert_instr(str))]
7384 pub unsafe fn vreinterpretq_u32_p64 ( a
: poly64x2_t
) -> uint32x4_t
{
7388 /// Vector reinterpret cast operation
7390 #[target_feature(enable = "neon" )]
7391 #[cfg_attr(test, assert_instr(str))]
7392 pub unsafe fn vreinterpret_p64_s32 ( a
: int32x2_t
) -> poly64x1_t
{
7396 /// Vector reinterpret cast operation
7398 #[target_feature(enable = "neon" )]
7399 #[cfg_attr(test, assert_instr(str))]
7400 pub unsafe fn vreinterpret_p64_u32 ( a
: uint32x2_t
) -> poly64x1_t
{
7404 /// Vector reinterpret cast operation
7406 #[target_feature(enable = "neon" )]
7407 #[cfg_attr(test, assert_instr(str))]
7408 pub unsafe fn vreinterpretq_p64_s32 ( a
: int32x4_t
) -> poly64x2_t
{
7412 /// Vector reinterpret cast operation
7414 #[target_feature(enable = "neon" )]
7415 #[cfg_attr(test, assert_instr(str))]
7416 pub unsafe fn vreinterpretq_p64_u32 ( a
: uint32x4_t
) -> poly64x2_t
{
7420 /// Vector reinterpret cast operation
7422 #[target_feature(enable = "neon" )]
7423 #[cfg_attr(test, assert_instr(str))]
7424 pub unsafe fn vreinterpret_s16_p64 ( a
: poly64x1_t
) -> int16x4_t
{
7428 /// Vector reinterpret cast operation
7430 #[target_feature(enable = "neon" )]
7431 #[cfg_attr(test, assert_instr(str))]
7432 pub unsafe fn vreinterpret_u16_p64 ( a
: poly64x1_t
) -> uint16x4_t
{
7436 /// Vector reinterpret cast operation
7438 #[target_feature(enable = "neon" )]
7439 #[cfg_attr(test, assert_instr(str))]
7440 pub unsafe fn vreinterpret_p16_p64 ( a
: poly64x1_t
) -> poly16x4_t
{
7444 /// Vector reinterpret cast operation
7446 #[target_feature(enable = "neon" )]
7447 #[cfg_attr(test, assert_instr(str))]
7448 pub unsafe fn vreinterpretq_s16_p64 ( a
: poly64x2_t
) -> int16x8_t
{
7452 /// Vector reinterpret cast operation
7454 #[target_feature(enable = "neon" )]
7455 #[cfg_attr(test, assert_instr(str))]
7456 pub unsafe fn vreinterpretq_u16_p64 ( a
: poly64x2_t
) -> uint16x8_t
{
7460 /// Vector reinterpret cast operation
7462 #[target_feature(enable = "neon" )]
7463 #[cfg_attr(test, assert_instr(str))]
7464 pub unsafe fn vreinterpretq_p16_p64 ( a
: poly64x2_t
) -> poly16x8_t
{
7468 /// Vector reinterpret cast operation
7470 #[target_feature(enable = "neon" )]
7471 #[cfg_attr(test, assert_instr(str))]
7472 pub unsafe fn vreinterpret_p64_p16 ( a
: poly16x4_t
) -> poly64x1_t
{
7476 /// Vector reinterpret cast operation
7478 #[target_feature(enable = "neon" )]
7479 #[cfg_attr(test, assert_instr(str))]
7480 pub unsafe fn vreinterpret_p64_s16 ( a
: int16x4_t
) -> poly64x1_t
{
7484 /// Vector reinterpret cast operation
7486 #[target_feature(enable = "neon" )]
7487 #[cfg_attr(test, assert_instr(str))]
7488 pub unsafe fn vreinterpret_p64_u16 ( a
: uint16x4_t
) -> poly64x1_t
{
7492 /// Vector reinterpret cast operation
7494 #[target_feature(enable = "neon" )]
7495 #[cfg_attr(test, assert_instr(str))]
7496 pub unsafe fn vreinterpretq_p64_p16 ( a
: poly16x8_t
) -> poly64x2_t
{
7500 /// Vector reinterpret cast operation
7502 #[target_feature(enable = "neon" )]
7503 #[cfg_attr(test, assert_instr(str))]
7504 pub unsafe fn vreinterpretq_p64_s16 ( a
: int16x8_t
) -> poly64x2_t
{
7508 /// Vector reinterpret cast operation
7510 #[target_feature(enable = "neon" )]
7511 #[cfg_attr(test, assert_instr(str))]
7512 pub unsafe fn vreinterpretq_p64_u16 ( a
: uint16x8_t
) -> poly64x2_t
{
7516 /// Vector reinterpret cast operation
7518 #[target_feature(enable = "neon" )]
7519 #[cfg_attr(test, assert_instr(str))]
7520 pub unsafe fn vreinterpret_s8_p64 ( a
: poly64x1_t
) -> int8x8_t
{
7524 /// Vector reinterpret cast operation
7526 #[target_feature(enable = "neon" )]
7527 #[cfg_attr(test, assert_instr(str))]
7528 pub unsafe fn vreinterpret_u8_p64 ( a
: poly64x1_t
) -> uint8x8_t
{
7532 /// Vector reinterpret cast operation
7534 #[target_feature(enable = "neon" )]
7535 #[cfg_attr(test, assert_instr(str))]
7536 pub unsafe fn vreinterpret_p8_p64 ( a
: poly64x1_t
) -> poly8x8_t
{
7540 /// Vector reinterpret cast operation
7542 #[target_feature(enable = "neon" )]
7543 #[cfg_attr(test, assert_instr(str))]
7544 pub unsafe fn vreinterpretq_s8_p64 ( a
: poly64x2_t
) -> int8x16_t
{
7548 /// Vector reinterpret cast operation
7550 #[target_feature(enable = "neon" )]
7551 #[cfg_attr(test, assert_instr(str))]
7552 pub unsafe fn vreinterpretq_u8_p64 ( a
: poly64x2_t
) -> uint8x16_t
{
7556 /// Vector reinterpret cast operation
7558 #[target_feature(enable = "neon" )]
7559 #[cfg_attr(test, assert_instr(str))]
7560 pub unsafe fn vreinterpretq_p8_p64 ( a
: poly64x2_t
) -> poly8x16_t
{
7564 /// Vector reinterpret cast operation
7566 #[target_feature(enable = "neon" )]
7567 #[cfg_attr(test, assert_instr(str))]
7568 pub unsafe fn vreinterpret_p64_p8 ( a
: poly8x8_t
) -> poly64x1_t
{
7572 /// Vector reinterpret cast operation
7574 #[target_feature(enable = "neon" )]
7575 #[cfg_attr(test, assert_instr(str))]
7576 pub unsafe fn vreinterpret_p64_s8 ( a
: int8x8_t
) -> poly64x1_t
{
7580 /// Vector reinterpret cast operation
7582 #[target_feature(enable = "neon" )]
7583 #[cfg_attr(test, assert_instr(str))]
7584 pub unsafe fn vreinterpret_p64_u8 ( a
: uint8x8_t
) -> poly64x1_t
{
7588 /// Vector reinterpret cast operation
7590 #[target_feature(enable = "neon" )]
7591 #[cfg_attr(test, assert_instr(str))]
7592 pub unsafe fn vreinterpretq_p64_p8 ( a
: poly8x16_t
) -> poly64x2_t
{
7596 /// Vector reinterpret cast operation
7598 #[target_feature(enable = "neon" )]
7599 #[cfg_attr(test, assert_instr(str))]
7600 pub unsafe fn vreinterpretq_p64_s8 ( a
: int8x16_t
) -> poly64x2_t
{
7604 /// Vector reinterpret cast operation
7606 #[target_feature(enable = "neon" )]
7607 #[cfg_attr(test, assert_instr(str))]
7608 pub unsafe fn vreinterpretq_p64_u8 ( a
: uint8x16_t
) -> poly64x2_t
{
7612 /// Vector reinterpret cast operation
7614 #[target_feature(enable = "neon" )]
7615 #[cfg_attr(test, assert_instr(str))]
7616 pub unsafe fn vreinterpret_s8_f64 ( a
: float64x1_t
) -> int8x8_t
{
7620 /// Vector reinterpret cast operation
7622 #[target_feature(enable = "neon" )]
7623 #[cfg_attr(test, assert_instr(str))]
7624 pub unsafe fn vreinterpret_s16_f64 ( a
: float64x1_t
) -> int16x4_t
{
7628 /// Vector reinterpret cast operation
7630 #[target_feature(enable = "neon" )]
7631 #[cfg_attr(test, assert_instr(str))]
7632 pub unsafe fn vreinterpret_s32_f64 ( a
: float64x1_t
) -> int32x2_t
{
7636 /// Vector reinterpret cast operation
7638 #[target_feature(enable = "neon" )]
7639 #[cfg_attr(test, assert_instr(str))]
7640 pub unsafe fn vreinterpret_s64_f64 ( a
: float64x1_t
) -> int64x1_t
{
7644 /// Vector reinterpret cast operation
7646 #[target_feature(enable = "neon" )]
7647 #[cfg_attr(test, assert_instr(str))]
7648 pub unsafe fn vreinterpretq_s8_f64 ( a
: float64x2_t
) -> int8x16_t
{
7652 /// Vector reinterpret cast operation
7654 #[target_feature(enable = "neon" )]
7655 #[cfg_attr(test, assert_instr(str))]
7656 pub unsafe fn vreinterpretq_s16_f64 ( a
: float64x2_t
) -> int16x8_t
{
7660 /// Vector reinterpret cast operation
7662 #[target_feature(enable = "neon" )]
7663 #[cfg_attr(test, assert_instr(str))]
7664 pub unsafe fn vreinterpretq_s32_f64 ( a
: float64x2_t
) -> int32x4_t
{
7668 /// Vector reinterpret cast operation
7670 #[target_feature(enable = "neon" )]
7671 #[cfg_attr(test, assert_instr(str))]
7672 pub unsafe fn vreinterpretq_s64_f64 ( a
: float64x2_t
) -> int64x2_t
{
7676 /// Vector reinterpret cast operation
7678 #[target_feature(enable = "neon" )]
7679 #[cfg_attr(test, assert_instr(str))]
7680 pub unsafe fn vreinterpret_u8_f64 ( a
: float64x1_t
) -> uint8x8_t
{
7684 /// Vector reinterpret cast operation
7686 #[target_feature(enable = "neon" )]
7687 #[cfg_attr(test, assert_instr(str))]
7688 pub unsafe fn vreinterpret_u16_f64 ( a
: float64x1_t
) -> uint16x4_t
{
7692 /// Vector reinterpret cast operation
7694 #[target_feature(enable = "neon" )]
7695 #[cfg_attr(test, assert_instr(str))]
7696 pub unsafe fn vreinterpret_u32_f64 ( a
: float64x1_t
) -> uint32x2_t
{
7700 /// Vector reinterpret cast operation
7702 #[target_feature(enable = "neon" )]
7703 #[cfg_attr(test, assert_instr(str))]
7704 pub unsafe fn vreinterpret_u64_f64 ( a
: float64x1_t
) -> uint64x1_t
{
7708 /// Vector reinterpret cast operation
7710 #[target_feature(enable = "neon" )]
7711 #[cfg_attr(test, assert_instr(str))]
7712 pub unsafe fn vreinterpretq_u8_f64 ( a
: float64x2_t
) -> uint8x16_t
{
7716 /// Vector reinterpret cast operation
7718 #[target_feature(enable = "neon" )]
7719 #[cfg_attr(test, assert_instr(str))]
7720 pub unsafe fn vreinterpretq_u16_f64 ( a
: float64x2_t
) -> uint16x8_t
{
7724 /// Vector reinterpret cast operation
7726 #[target_feature(enable = "neon" )]
7727 #[cfg_attr(test, assert_instr(str))]
7728 pub unsafe fn vreinterpretq_u32_f64 ( a
: float64x2_t
) -> uint32x4_t
{
7732 /// Vector reinterpret cast operation
7734 #[target_feature(enable = "neon" )]
7735 #[cfg_attr(test, assert_instr(str))]
7736 pub unsafe fn vreinterpretq_u64_f64 ( a
: float64x2_t
) -> uint64x2_t
{
7740 /// Vector reinterpret cast operation
7742 #[target_feature(enable = "neon" )]
7743 #[cfg_attr(test, assert_instr(str))]
7744 pub unsafe fn vreinterpret_p8_f64 ( a
: float64x1_t
) -> poly8x8_t
{
7748 /// Vector reinterpret cast operation
7750 #[target_feature(enable = "neon" )]
7751 #[cfg_attr(test, assert_instr(str))]
7752 pub unsafe fn vreinterpret_p16_f64 ( a
: float64x1_t
) -> poly16x4_t
{
7756 /// Vector reinterpret cast operation
7758 #[target_feature(enable = "neon" )]
7759 #[cfg_attr(test, assert_instr(str))]
7760 pub unsafe fn vreinterpret_p64_f32 ( a
: float32x2_t
) -> poly64x1_t
{
7764 /// Vector reinterpret cast operation
7766 #[target_feature(enable = "neon" )]
7767 #[cfg_attr(test, assert_instr(str))]
7768 pub unsafe fn vreinterpret_p64_f64 ( a
: float64x1_t
) -> poly64x1_t
{
7772 /// Vector reinterpret cast operation
7774 #[target_feature(enable = "neon" )]
7775 #[cfg_attr(test, assert_instr(str))]
7776 pub unsafe fn vreinterpretq_p8_f64 ( a
: float64x2_t
) -> poly8x16_t
{
7780 /// Vector reinterpret cast operation
7782 #[target_feature(enable = "neon" )]
7783 #[cfg_attr(test, assert_instr(str))]
7784 pub unsafe fn vreinterpretq_p16_f64 ( a
: float64x2_t
) -> poly16x8_t
{
7788 /// Vector reinterpret cast operation
7790 #[target_feature(enable = "neon" )]
7791 #[cfg_attr(test, assert_instr(str))]
7792 pub unsafe fn vreinterpretq_p64_f32 ( a
: float32x4_t
) -> poly64x2_t
{
7796 /// Vector reinterpret cast operation
7798 #[target_feature(enable = "neon" )]
7799 #[cfg_attr(test, assert_instr(str))]
7800 pub unsafe fn vreinterpretq_p64_f64 ( a
: float64x2_t
) -> poly64x2_t
{
7804 /// Vector reinterpret cast operation
7806 #[target_feature(enable = "neon" )]
7807 #[cfg_attr(test, assert_instr(str))]
7808 pub unsafe fn vreinterpret_f64_s8 ( a
: int8x8_t
) -> float64x1_t
{
7812 /// Vector reinterpret cast operation
7814 #[target_feature(enable = "neon" )]
7815 #[cfg_attr(test, assert_instr(str))]
7816 pub unsafe fn vreinterpret_f64_s16 ( a
: int16x4_t
) -> float64x1_t
{
7820 /// Vector reinterpret cast operation
7822 #[target_feature(enable = "neon" )]
7823 #[cfg_attr(test, assert_instr(str))]
7824 pub unsafe fn vreinterpret_f64_s32 ( a
: int32x2_t
) -> float64x1_t
{
7828 /// Vector reinterpret cast operation
7830 #[target_feature(enable = "neon" )]
7831 #[cfg_attr(test, assert_instr(str))]
7832 pub unsafe fn vreinterpret_f64_s64 ( a
: int64x1_t
) -> float64x1_t
{
7836 /// Vector reinterpret cast operation
7838 #[target_feature(enable = "neon" )]
7839 #[cfg_attr(test, assert_instr(str))]
7840 pub unsafe fn vreinterpretq_f64_s8 ( a
: int8x16_t
) -> float64x2_t
{
7844 /// Vector reinterpret cast operation
7846 #[target_feature(enable = "neon" )]
7847 #[cfg_attr(test, assert_instr(str))]
7848 pub unsafe fn vreinterpretq_f64_s16 ( a
: int16x8_t
) -> float64x2_t
{
7852 /// Vector reinterpret cast operation
7854 #[target_feature(enable = "neon" )]
7855 #[cfg_attr(test, assert_instr(str))]
7856 pub unsafe fn vreinterpretq_f64_s32 ( a
: int32x4_t
) -> float64x2_t
{
7860 /// Vector reinterpret cast operation
7862 #[target_feature(enable = "neon" )]
7863 #[cfg_attr(test, assert_instr(str))]
7864 pub unsafe fn vreinterpretq_f64_s64 ( a
: int64x2_t
) -> float64x2_t
{
7868 /// Vector reinterpret cast operation
7870 #[target_feature(enable = "neon" )]
7871 #[cfg_attr(test, assert_instr(str))]
7872 pub unsafe fn vreinterpret_f64_p8 ( a
: poly8x8_t
) -> float64x1_t
{
7876 /// Vector reinterpret cast operation
7878 #[target_feature(enable = "neon" )]
7879 #[cfg_attr(test, assert_instr(str))]
7880 pub unsafe fn vreinterpret_f64_u16 ( a
: uint16x4_t
) -> float64x1_t
{
7884 /// Vector reinterpret cast operation
7886 #[target_feature(enable = "neon" )]
7887 #[cfg_attr(test, assert_instr(str))]
7888 pub unsafe fn vreinterpret_f64_u32 ( a
: uint32x2_t
) -> float64x1_t
{
7892 /// Vector reinterpret cast operation
7894 #[target_feature(enable = "neon" )]
7895 #[cfg_attr(test, assert_instr(str))]
7896 pub unsafe fn vreinterpret_f64_u64 ( a
: uint64x1_t
) -> float64x1_t
{
7900 /// Vector reinterpret cast operation
7902 #[target_feature(enable = "neon" )]
7903 #[cfg_attr(test, assert_instr(str))]
7904 pub unsafe fn vreinterpretq_f64_p8 ( a
: poly8x16_t
) -> float64x2_t
{
7908 /// Vector reinterpret cast operation
7910 #[target_feature(enable = "neon" )]
7911 #[cfg_attr(test, assert_instr(str))]
7912 pub unsafe fn vreinterpretq_f64_u16 ( a
: uint16x8_t
) -> float64x2_t
{
7916 /// Vector reinterpret cast operation
7918 #[target_feature(enable = "neon" )]
7919 #[cfg_attr(test, assert_instr(str))]
7920 pub unsafe fn vreinterpretq_f64_u32 ( a
: uint32x4_t
) -> float64x2_t
{
7924 /// Vector reinterpret cast operation
7926 #[target_feature(enable = "neon" )]
7927 #[cfg_attr(test, assert_instr(str))]
7928 pub unsafe fn vreinterpretq_f64_u64 ( a
: uint64x2_t
) -> float64x2_t
{
7932 /// Vector reinterpret cast operation
7934 #[target_feature(enable = "neon" )]
7935 #[cfg_attr(test, assert_instr(str))]
7936 pub unsafe fn vreinterpret_f64_u8 ( a
: uint8x8_t
) -> float64x1_t
{
7940 /// Vector reinterpret cast operation
7942 #[target_feature(enable = "neon" )]
7943 #[cfg_attr(test, assert_instr(str))]
7944 pub unsafe fn vreinterpret_f64_p16 ( a
: poly16x4_t
) -> float64x1_t
{
7948 /// Vector reinterpret cast operation
7950 #[target_feature(enable = "neon" )]
7951 #[cfg_attr(test, assert_instr(str))]
7952 pub unsafe fn vreinterpret_f64_p64 ( a
: poly64x1_t
) -> float64x1_t
{
7956 /// Vector reinterpret cast operation
7958 #[target_feature(enable = "neon" )]
7959 #[cfg_attr(test, assert_instr(str))]
7960 pub unsafe fn vreinterpret_f32_p64 ( a
: poly64x1_t
) -> float32x2_t
{
7964 /// Vector reinterpret cast operation
7966 #[target_feature(enable = "neon" )]
7967 #[cfg_attr(test, assert_instr(str))]
7968 pub unsafe fn vreinterpretq_f64_u8 ( a
: uint8x16_t
) -> float64x2_t
{
7972 /// Vector reinterpret cast operation
7974 #[target_feature(enable = "neon" )]
7975 #[cfg_attr(test, assert_instr(str))]
7976 pub unsafe fn vreinterpretq_f64_p16 ( a
: poly16x8_t
) -> float64x2_t
{
7980 /// Vector reinterpret cast operation
7982 #[target_feature(enable = "neon" )]
7983 #[cfg_attr(test, assert_instr(str))]
7984 pub unsafe fn vreinterpretq_f64_p64 ( a
: poly64x2_t
) -> float64x2_t
{
7988 /// Vector reinterpret cast operation
7990 #[target_feature(enable = "neon" )]
7991 #[cfg_attr(test, assert_instr(str))]
7992 pub unsafe fn vreinterpretq_f32_p64 ( a
: poly64x2_t
) -> float32x4_t
{
7996 /// Vector reinterpret cast operation
7998 #[target_feature(enable = "neon" )]
7999 #[cfg_attr(test, assert_instr(str))]
8000 pub unsafe fn vreinterpret_f64_f32 ( a
: float32x2_t
) -> float64x1_t
{
8004 /// Vector reinterpret cast operation
8006 #[target_feature(enable = "neon" )]
8007 #[cfg_attr(test, assert_instr(str))]
8008 pub unsafe fn vreinterpret_f32_f64 ( a
: float64x1_t
) -> float32x2_t
{
8012 /// Vector reinterpret cast operation
8014 #[target_feature(enable = "neon" )]
8015 #[cfg_attr(test, assert_instr(str))]
8016 pub unsafe fn vreinterpretq_f64_f32 ( a
: float32x4_t
) -> float64x2_t
{
8020 /// Vector reinterpret cast operation
8022 #[target_feature(enable = "neon" )]
8023 #[cfg_attr(test, assert_instr(str))]
8024 pub unsafe fn vreinterpretq_f32_f64 ( a
: float64x2_t
) -> float32x4_t
{
8028 /// Signed rounding shift left
8030 #[target_feature(enable = "neon" )]
8031 #[cfg_attr(test, assert_instr(srshl))]
8032 pub unsafe fn vrshld_s64 ( a
: i64 , b
: i64 ) -> i64 {
8033 #[allow(improper_ctypes)]
8035 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.srshl.i64" )]
8036 fn vrshld_s64_ ( a
: i64 , b
: i64 ) -> i64 ;
8041 /// Unsigned rounding shift left
8043 #[target_feature(enable = "neon" )]
8044 #[cfg_attr(test, assert_instr(urshl))]
8045 pub unsafe fn vrshld_u64 ( a
: u64 , b
: i64 ) -> u64 {
8046 #[allow(improper_ctypes)]
8048 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.urshl.i64" )]
8049 fn vrshld_u64_ ( a
: u64 , b
: i64 ) -> u64 ;
8054 /// Signed rounding shift right
8056 #[target_feature(enable = "neon" )]
8057 #[cfg_attr(test, assert_instr(srshr, N = 2))]
8058 #[rustc_legacy_const_generics(1)]
8059 pub unsafe fn vrshrd_n_s64
< const N
: i32 >( a
: i64 ) -> i64 {
8060 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
8061 vrshld_s64 ( a
, - N
as i64 )
8064 /// Unsigned rounding shift right
8066 #[target_feature(enable = "neon" )]
8067 #[cfg_attr(test, assert_instr(urshr, N = 2))]
8068 #[rustc_legacy_const_generics(1)]
8069 pub unsafe fn vrshrd_n_u64
< const N
: i32 >( a
: u64 ) -> u64 {
8070 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
8071 vrshld_u64 ( a
, - N
as i64 )
8074 /// Rounding shift right narrow
8076 #[target_feature(enable = "neon" )]
8077 #[cfg_attr(test, assert_instr(rshrn2, N = 2))]
8078 #[rustc_legacy_const_generics(2)]
8079 pub unsafe fn vrshrn_high_n_s16
< const N
: i32 >( a
: int8x8_t
, b
: int16x8_t
) -> int8x16_t
{
8080 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
8081 simd_shuffle16
!( a
, vrshrn_n_s16
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
8084 /// Rounding shift right narrow
8086 #[target_feature(enable = "neon" )]
8087 #[cfg_attr(test, assert_instr(rshrn2, N = 2))]
8088 #[rustc_legacy_const_generics(2)]
8089 pub unsafe fn vrshrn_high_n_s32
< const N
: i32 >( a
: int16x4_t
, b
: int32x4_t
) -> int16x8_t
{
8090 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
8091 simd_shuffle8
!( a
, vrshrn_n_s32
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
8094 /// Rounding shift right narrow
8096 #[target_feature(enable = "neon" )]
8097 #[cfg_attr(test, assert_instr(rshrn2, N = 2))]
8098 #[rustc_legacy_const_generics(2)]
8099 pub unsafe fn vrshrn_high_n_s64
< const N
: i32 >( a
: int32x2_t
, b
: int64x2_t
) -> int32x4_t
{
8100 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
8101 simd_shuffle4
!( a
, vrshrn_n_s64
::< N
>( b
), [ 0 , 1 , 2 , 3 ])
8104 /// Rounding shift right narrow
8106 #[target_feature(enable = "neon" )]
8107 #[cfg_attr(test, assert_instr(rshrn2, N = 2))]
8108 #[rustc_legacy_const_generics(2)]
8109 pub unsafe fn vrshrn_high_n_u16
< const N
: i32 >( a
: uint8x8_t
, b
: uint16x8_t
) -> uint8x16_t
{
8110 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
8111 simd_shuffle16
!( a
, vrshrn_n_u16
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
8114 /// Rounding shift right narrow
8116 #[target_feature(enable = "neon" )]
8117 #[cfg_attr(test, assert_instr(rshrn2, N = 2))]
8118 #[rustc_legacy_const_generics(2)]
8119 pub unsafe fn vrshrn_high_n_u32
< const N
: i32 >( a
: uint16x4_t
, b
: uint32x4_t
) -> uint16x8_t
{
8120 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
8121 simd_shuffle8
!( a
, vrshrn_n_u32
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
8124 /// Rounding shift right narrow
8126 #[target_feature(enable = "neon" )]
8127 #[cfg_attr(test, assert_instr(rshrn2, N = 2))]
8128 #[rustc_legacy_const_generics(2)]
8129 pub unsafe fn vrshrn_high_n_u64
< const N
: i32 >( a
: uint32x2_t
, b
: uint64x2_t
) -> uint32x4_t
{
8130 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
8131 simd_shuffle4
!( a
, vrshrn_n_u64
::< N
>( b
), [ 0 , 1 , 2 , 3 ])
8134 /// Signed rounding shift right and accumulate.
8136 #[target_feature(enable = "neon" )]
8137 #[cfg_attr(test, assert_instr(srsra, N = 2))]
8138 #[rustc_legacy_const_generics(2)]
8139 pub unsafe fn vrsrad_n_s64
< const N
: i32 >( a
: i64 , b
: i64 ) -> i64 {
8140 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
8141 let b
: i64 = vrshrd_n_s64
::< N
>( b
);
8145 /// Ungisned rounding shift right and accumulate.
8147 #[target_feature(enable = "neon" )]
8148 #[cfg_attr(test, assert_instr(ursra, N = 2))]
8149 #[rustc_legacy_const_generics(2)]
8150 pub unsafe fn vrsrad_n_u64
< const N
: i32 >( a
: u64 , b
: u64 ) -> u64 {
8151 static_assert
!( N
: i32 where N
>= 1 && N
<= 64 );
8152 let b
: u64 = vrshrd_n_u64
::< N
>( b
);
8156 /// Insert vector element from another vector element
8158 #[target_feature(enable = "neon" )]
8159 #[cfg_attr(test, assert_instr(nop, LANE = 0))]
8160 #[rustc_legacy_const_generics(2)]
8161 pub unsafe fn vset_lane_f64
< const LANE
: i32 >( a
: f64 , b
: float64x1_t
) -> float64x1_t
{
8162 static_assert
!( LANE
: i32 where LANE
== 0 );
8163 simd_insert ( b
, LANE
as u32 , a
)
8166 /// Insert vector element from another vector element
8168 #[target_feature(enable = "neon" )]
8169 #[cfg_attr(test, assert_instr(nop, LANE = 0))]
8170 #[rustc_legacy_const_generics(2)]
8171 pub unsafe fn vsetq_lane_f64
< const LANE
: i32 >( a
: f64 , b
: float64x2_t
) -> float64x2_t
{
8172 static_assert_imm1
!( LANE
);
8173 simd_insert ( b
, LANE
as u32 , a
)
8176 /// Signed Shift left
8178 #[target_feature(enable = "neon" )]
8179 #[cfg_attr(test, assert_instr(sshl))]
8180 pub unsafe fn vshld_s64 ( a
: i64 , b
: i64 ) -> i64 {
8181 transmute ( vshl_s64 ( transmute ( a
), transmute ( b
)))
8184 /// Unsigned Shift left
8186 #[target_feature(enable = "neon" )]
8187 #[cfg_attr(test, assert_instr(ushl))]
8188 pub unsafe fn vshld_u64 ( a
: u64 , b
: i64 ) -> u64 {
8189 transmute ( vshl_u64 ( transmute ( a
), transmute ( b
)))
8192 /// Signed shift left long
8194 #[target_feature(enable = "neon" )]
8195 #[cfg_attr(test, assert_instr(sshll2, N = 2))]
8196 #[rustc_legacy_const_generics(1)]
8197 pub unsafe fn vshll_high_n_s8
< const N
: i32 >( a
: int8x16_t
) -> int16x8_t
{
8198 static_assert
!( N
: i32 where N
>= 0 && N
<= 8 );
8199 let b
: int8x8_t
= simd_shuffle8
!( a
, a
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
8203 /// Signed shift left long
8205 #[target_feature(enable = "neon" )]
8206 #[cfg_attr(test, assert_instr(sshll2, N = 2))]
8207 #[rustc_legacy_const_generics(1)]
8208 pub unsafe fn vshll_high_n_s16
< const N
: i32 >( a
: int16x8_t
) -> int32x4_t
{
8209 static_assert
!( N
: i32 where N
>= 0 && N
<= 16 );
8210 let b
: int16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
8214 /// Signed shift left long
8216 #[target_feature(enable = "neon" )]
8217 #[cfg_attr(test, assert_instr(sshll2, N = 2))]
8218 #[rustc_legacy_const_generics(1)]
8219 pub unsafe fn vshll_high_n_s32
< const N
: i32 >( a
: int32x4_t
) -> int64x2_t
{
8220 static_assert
!( N
: i32 where N
>= 0 && N
<= 32 );
8221 let b
: int32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
8225 /// Signed shift left long
8227 #[target_feature(enable = "neon" )]
8228 #[cfg_attr(test, assert_instr(ushll2, N = 2))]
8229 #[rustc_legacy_const_generics(1)]
8230 pub unsafe fn vshll_high_n_u8
< const N
: i32 >( a
: uint8x16_t
) -> uint16x8_t
{
8231 static_assert
!( N
: i32 where N
>= 0 && N
<= 8 );
8232 let b
: uint8x8_t
= simd_shuffle8
!( a
, a
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
8236 /// Signed shift left long
8238 #[target_feature(enable = "neon" )]
8239 #[cfg_attr(test, assert_instr(ushll2, N = 2))]
8240 #[rustc_legacy_const_generics(1)]
8241 pub unsafe fn vshll_high_n_u16
< const N
: i32 >( a
: uint16x8_t
) -> uint32x4_t
{
8242 static_assert
!( N
: i32 where N
>= 0 && N
<= 16 );
8243 let b
: uint16x4_t
= simd_shuffle4
!( a
, a
, [ 4 , 5 , 6 , 7 ]);
8247 /// Signed shift left long
8249 #[target_feature(enable = "neon" )]
8250 #[cfg_attr(test, assert_instr(ushll2, N = 2))]
8251 #[rustc_legacy_const_generics(1)]
8252 pub unsafe fn vshll_high_n_u32
< const N
: i32 >( a
: uint32x4_t
) -> uint64x2_t
{
8253 static_assert
!( N
: i32 where N
>= 0 && N
<= 32 );
8254 let b
: uint32x2_t
= simd_shuffle2
!( a
, a
, [ 2 , 3 ]);
8258 /// Shift right narrow
8260 #[target_feature(enable = "neon" )]
8261 #[cfg_attr(test, assert_instr(shrn2, N = 2))]
8262 #[rustc_legacy_const_generics(2)]
8263 pub unsafe fn vshrn_high_n_s16
< const N
: i32 >( a
: int8x8_t
, b
: int16x8_t
) -> int8x16_t
{
8264 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
8265 simd_shuffle16
!( a
, vshrn_n_s16
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
8268 /// Shift right narrow
8270 #[target_feature(enable = "neon" )]
8271 #[cfg_attr(test, assert_instr(shrn2, N = 2))]
8272 #[rustc_legacy_const_generics(2)]
8273 pub unsafe fn vshrn_high_n_s32
< const N
: i32 >( a
: int16x4_t
, b
: int32x4_t
) -> int16x8_t
{
8274 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
8275 simd_shuffle8
!( a
, vshrn_n_s32
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
8278 /// Shift right narrow
8280 #[target_feature(enable = "neon" )]
8281 #[cfg_attr(test, assert_instr(shrn2, N = 2))]
8282 #[rustc_legacy_const_generics(2)]
8283 pub unsafe fn vshrn_high_n_s64
< const N
: i32 >( a
: int32x2_t
, b
: int64x2_t
) -> int32x4_t
{
8284 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
8285 simd_shuffle4
!( a
, vshrn_n_s64
::< N
>( b
), [ 0 , 1 , 2 , 3 ])
8288 /// Shift right narrow
8290 #[target_feature(enable = "neon" )]
8291 #[cfg_attr(test, assert_instr(shrn2, N = 2))]
8292 #[rustc_legacy_const_generics(2)]
8293 pub unsafe fn vshrn_high_n_u16
< const N
: i32 >( a
: uint8x8_t
, b
: uint16x8_t
) -> uint8x16_t
{
8294 static_assert
!( N
: i32 where N
>= 1 && N
<= 8 );
8295 simd_shuffle16
!( a
, vshrn_n_u16
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ])
8298 /// Shift right narrow
8300 #[target_feature(enable = "neon" )]
8301 #[cfg_attr(test, assert_instr(shrn2, N = 2))]
8302 #[rustc_legacy_const_generics(2)]
8303 pub unsafe fn vshrn_high_n_u32
< const N
: i32 >( a
: uint16x4_t
, b
: uint32x4_t
) -> uint16x8_t
{
8304 static_assert
!( N
: i32 where N
>= 1 && N
<= 16 );
8305 simd_shuffle8
!( a
, vshrn_n_u32
::< N
>( b
), [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ])
8308 /// Shift right narrow
8310 #[target_feature(enable = "neon" )]
8311 #[cfg_attr(test, assert_instr(shrn2, N = 2))]
8312 #[rustc_legacy_const_generics(2)]
8313 pub unsafe fn vshrn_high_n_u64
< const N
: i32 >( a
: uint32x2_t
, b
: uint64x2_t
) -> uint32x4_t
{
8314 static_assert
!( N
: i32 where N
>= 1 && N
<= 32 );
8315 simd_shuffle4
!( a
, vshrn_n_u64
::< N
>( b
), [ 0 , 1 , 2 , 3 ])
8318 /// Transpose vectors
8320 #[target_feature(enable = "neon" )]
8321 #[cfg_attr(test, assert_instr(trn1))]
8322 pub unsafe fn vtrn1_s8 ( a
: int8x8_t
, b
: int8x8_t
) -> int8x8_t
{
8323 simd_shuffle8
!( a
, b
, [ 0 , 8 , 2 , 10 , 4 , 12 , 6 , 14 ])
8326 /// Transpose vectors
8328 #[target_feature(enable = "neon" )]
8329 #[cfg_attr(test, assert_instr(trn1))]
8330 pub unsafe fn vtrn1q_s8 ( a
: int8x16_t
, b
: int8x16_t
) -> int8x16_t
{
8331 simd_shuffle16
!( a
, b
, [ 0 , 16 , 2 , 18 , 4 , 20 , 6 , 22 , 8 , 24 , 10 , 26 , 12 , 28 , 14 , 30 ])
8334 /// Transpose vectors
8336 #[target_feature(enable = "neon" )]
8337 #[cfg_attr(test, assert_instr(trn1))]
8338 pub unsafe fn vtrn1_s16 ( a
: int16x4_t
, b
: int16x4_t
) -> int16x4_t
{
8339 simd_shuffle4
!( a
, b
, [ 0 , 4 , 2 , 6 ])
8342 /// Transpose vectors
8344 #[target_feature(enable = "neon" )]
8345 #[cfg_attr(test, assert_instr(trn1))]
8346 pub unsafe fn vtrn1q_s16 ( a
: int16x8_t
, b
: int16x8_t
) -> int16x8_t
{
8347 simd_shuffle8
!( a
, b
, [ 0 , 8 , 2 , 10 , 4 , 12 , 6 , 14 ])
8350 /// Transpose vectors
8352 #[target_feature(enable = "neon" )]
8353 #[cfg_attr(test, assert_instr(trn1))]
8354 pub unsafe fn vtrn1q_s32 ( a
: int32x4_t
, b
: int32x4_t
) -> int32x4_t
{
8355 simd_shuffle4
!( a
, b
, [ 0 , 4 , 2 , 6 ])
8358 /// Transpose vectors
8360 #[target_feature(enable = "neon" )]
8361 #[cfg_attr(test, assert_instr(trn1))]
8362 pub unsafe fn vtrn1_u8 ( a
: uint8x8_t
, b
: uint8x8_t
) -> uint8x8_t
{
8363 simd_shuffle8
!( a
, b
, [ 0 , 8 , 2 , 10 , 4 , 12 , 6 , 14 ])
8366 /// Transpose vectors
8368 #[target_feature(enable = "neon" )]
8369 #[cfg_attr(test, assert_instr(trn1))]
8370 pub unsafe fn vtrn1q_u8 ( a
: uint8x16_t
, b
: uint8x16_t
) -> uint8x16_t
{
8371 simd_shuffle16
!( a
, b
, [ 0 , 16 , 2 , 18 , 4 , 20 , 6 , 22 , 8 , 24 , 10 , 26 , 12 , 28 , 14 , 30 ])
8374 /// Transpose vectors
8376 #[target_feature(enable = "neon" )]
8377 #[cfg_attr(test, assert_instr(trn1))]
8378 pub unsafe fn vtrn1_u16 ( a
: uint16x4_t
, b
: uint16x4_t
) -> uint16x4_t
{
8379 simd_shuffle4
!( a
, b
, [ 0 , 4 , 2 , 6 ])
8382 /// Transpose vectors
8384 #[target_feature(enable = "neon" )]
8385 #[cfg_attr(test, assert_instr(trn1))]
8386 pub unsafe fn vtrn1q_u16 ( a
: uint16x8_t
, b
: uint16x8_t
) -> uint16x8_t
{
8387 simd_shuffle8
!( a
, b
, [ 0 , 8 , 2 , 10 , 4 , 12 , 6 , 14 ])
8390 /// Transpose vectors
8392 #[target_feature(enable = "neon" )]
8393 #[cfg_attr(test, assert_instr(trn1))]
8394 pub unsafe fn vtrn1q_u32 ( a
: uint32x4_t
, b
: uint32x4_t
) -> uint32x4_t
{
8395 simd_shuffle4
!( a
, b
, [ 0 , 4 , 2 , 6 ])
8398 /// Transpose vectors
8400 #[target_feature(enable = "neon" )]
8401 #[cfg_attr(test, assert_instr(trn1))]
8402 pub unsafe fn vtrn1_p8 ( a
: poly8x8_t
, b
: poly8x8_t
) -> poly8x8_t
{
8403 simd_shuffle8
!( a
, b
, [ 0 , 8 , 2 , 10 , 4 , 12 , 6 , 14 ])
8406 /// Transpose vectors
8408 #[target_feature(enable = "neon" )]
8409 #[cfg_attr(test, assert_instr(trn1))]
8410 pub unsafe fn vtrn1q_p8 ( a
: poly8x16_t
, b
: poly8x16_t
) -> poly8x16_t
{
8411 simd_shuffle16
!( a
, b
, [ 0 , 16 , 2 , 18 , 4 , 20 , 6 , 22 , 8 , 24 , 10 , 26 , 12 , 28 , 14 , 30 ])
8414 /// Transpose vectors
8416 #[target_feature(enable = "neon" )]
8417 #[cfg_attr(test, assert_instr(trn1))]
8418 pub unsafe fn vtrn1_p16 ( a
: poly16x4_t
, b
: poly16x4_t
) -> poly16x4_t
{
8419 simd_shuffle4
!( a
, b
, [ 0 , 4 , 2 , 6 ])
8422 /// Transpose vectors
8424 #[target_feature(enable = "neon" )]
8425 #[cfg_attr(test, assert_instr(trn1))]
8426 pub unsafe fn vtrn1q_p16 ( a
: poly16x8_t
, b
: poly16x8_t
) -> poly16x8_t
{
8427 simd_shuffle8
!( a
, b
, [ 0 , 8 , 2 , 10 , 4 , 12 , 6 , 14 ])
8430 /// Transpose vectors
8432 #[target_feature(enable = "neon" )]
8433 #[cfg_attr(test, assert_instr(zip1))]
8434 pub unsafe fn vtrn1_s32 ( a
: int32x2_t
, b
: int32x2_t
) -> int32x2_t
{
8435 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8438 /// Transpose vectors
8440 #[target_feature(enable = "neon" )]
8441 #[cfg_attr(test, assert_instr(zip1))]
8442 pub unsafe fn vtrn1q_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> int64x2_t
{
8443 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8446 /// Transpose vectors
8448 #[target_feature(enable = "neon" )]
8449 #[cfg_attr(test, assert_instr(zip1))]
8450 pub unsafe fn vtrn1_u32 ( a
: uint32x2_t
, b
: uint32x2_t
) -> uint32x2_t
{
8451 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8454 /// Transpose vectors
8456 #[target_feature(enable = "neon" )]
8457 #[cfg_attr(test, assert_instr(zip1))]
8458 pub unsafe fn vtrn1q_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
8459 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8462 /// Transpose vectors
8464 #[target_feature(enable = "neon" )]
8465 #[cfg_attr(test, assert_instr(zip1))]
8466 pub unsafe fn vtrn1q_p64 ( a
: poly64x2_t
, b
: poly64x2_t
) -> poly64x2_t
{
8467 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8470 /// Transpose vectors
8472 #[target_feature(enable = "neon" )]
8473 #[cfg_attr(test, assert_instr(trn1))]
8474 pub unsafe fn vtrn1q_f32 ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
8475 simd_shuffle4
!( a
, b
, [ 0 , 4 , 2 , 6 ])
8478 /// Transpose vectors
8480 #[target_feature(enable = "neon" )]
8481 #[cfg_attr(test, assert_instr(zip1))]
8482 pub unsafe fn vtrn1_f32 ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
8483 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8486 /// Transpose vectors
8488 #[target_feature(enable = "neon" )]
8489 #[cfg_attr(test, assert_instr(zip1))]
8490 pub unsafe fn vtrn1q_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
8491 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8494 /// Transpose vectors
8496 #[target_feature(enable = "neon" )]
8497 #[cfg_attr(test, assert_instr(trn2))]
8498 pub unsafe fn vtrn2_s8 ( a
: int8x8_t
, b
: int8x8_t
) -> int8x8_t
{
8499 simd_shuffle8
!( a
, b
, [ 1 , 9 , 3 , 11 , 5 , 13 , 7 , 15 ])
8502 /// Transpose vectors
8504 #[target_feature(enable = "neon" )]
8505 #[cfg_attr(test, assert_instr(trn2))]
8506 pub unsafe fn vtrn2q_s8 ( a
: int8x16_t
, b
: int8x16_t
) -> int8x16_t
{
8507 simd_shuffle16
!( a
, b
, [ 1 , 17 , 3 , 19 , 5 , 21 , 7 , 23 , 9 , 25 , 11 , 27 , 13 , 29 , 15 , 31 ])
8510 /// Transpose vectors
8512 #[target_feature(enable = "neon" )]
8513 #[cfg_attr(test, assert_instr(trn2))]
8514 pub unsafe fn vtrn2_s16 ( a
: int16x4_t
, b
: int16x4_t
) -> int16x4_t
{
8515 simd_shuffle4
!( a
, b
, [ 1 , 5 , 3 , 7 ])
8518 /// Transpose vectors
8520 #[target_feature(enable = "neon" )]
8521 #[cfg_attr(test, assert_instr(trn2))]
8522 pub unsafe fn vtrn2q_s16 ( a
: int16x8_t
, b
: int16x8_t
) -> int16x8_t
{
8523 simd_shuffle8
!( a
, b
, [ 1 , 9 , 3 , 11 , 5 , 13 , 7 , 15 ])
8526 /// Transpose vectors
8528 #[target_feature(enable = "neon" )]
8529 #[cfg_attr(test, assert_instr(trn2))]
8530 pub unsafe fn vtrn2q_s32 ( a
: int32x4_t
, b
: int32x4_t
) -> int32x4_t
{
8531 simd_shuffle4
!( a
, b
, [ 1 , 5 , 3 , 7 ])
8534 /// Transpose vectors
8536 #[target_feature(enable = "neon" )]
8537 #[cfg_attr(test, assert_instr(trn2))]
8538 pub unsafe fn vtrn2_u8 ( a
: uint8x8_t
, b
: uint8x8_t
) -> uint8x8_t
{
8539 simd_shuffle8
!( a
, b
, [ 1 , 9 , 3 , 11 , 5 , 13 , 7 , 15 ])
8542 /// Transpose vectors
8544 #[target_feature(enable = "neon" )]
8545 #[cfg_attr(test, assert_instr(trn2))]
8546 pub unsafe fn vtrn2q_u8 ( a
: uint8x16_t
, b
: uint8x16_t
) -> uint8x16_t
{
8547 simd_shuffle16
!( a
, b
, [ 1 , 17 , 3 , 19 , 5 , 21 , 7 , 23 , 9 , 25 , 11 , 27 , 13 , 29 , 15 , 31 ])
8550 /// Transpose vectors
8552 #[target_feature(enable = "neon" )]
8553 #[cfg_attr(test, assert_instr(trn2))]
8554 pub unsafe fn vtrn2_u16 ( a
: uint16x4_t
, b
: uint16x4_t
) -> uint16x4_t
{
8555 simd_shuffle4
!( a
, b
, [ 1 , 5 , 3 , 7 ])
8558 /// Transpose vectors
8560 #[target_feature(enable = "neon" )]
8561 #[cfg_attr(test, assert_instr(trn2))]
8562 pub unsafe fn vtrn2q_u16 ( a
: uint16x8_t
, b
: uint16x8_t
) -> uint16x8_t
{
8563 simd_shuffle8
!( a
, b
, [ 1 , 9 , 3 , 11 , 5 , 13 , 7 , 15 ])
8566 /// Transpose vectors
8568 #[target_feature(enable = "neon" )]
8569 #[cfg_attr(test, assert_instr(trn2))]
8570 pub unsafe fn vtrn2q_u32 ( a
: uint32x4_t
, b
: uint32x4_t
) -> uint32x4_t
{
8571 simd_shuffle4
!( a
, b
, [ 1 , 5 , 3 , 7 ])
8574 /// Transpose vectors
8576 #[target_feature(enable = "neon" )]
8577 #[cfg_attr(test, assert_instr(trn2))]
8578 pub unsafe fn vtrn2_p8 ( a
: poly8x8_t
, b
: poly8x8_t
) -> poly8x8_t
{
8579 simd_shuffle8
!( a
, b
, [ 1 , 9 , 3 , 11 , 5 , 13 , 7 , 15 ])
8582 /// Transpose vectors
8584 #[target_feature(enable = "neon" )]
8585 #[cfg_attr(test, assert_instr(trn2))]
8586 pub unsafe fn vtrn2q_p8 ( a
: poly8x16_t
, b
: poly8x16_t
) -> poly8x16_t
{
8587 simd_shuffle16
!( a
, b
, [ 1 , 17 , 3 , 19 , 5 , 21 , 7 , 23 , 9 , 25 , 11 , 27 , 13 , 29 , 15 , 31 ])
8590 /// Transpose vectors
8592 #[target_feature(enable = "neon" )]
8593 #[cfg_attr(test, assert_instr(trn2))]
8594 pub unsafe fn vtrn2_p16 ( a
: poly16x4_t
, b
: poly16x4_t
) -> poly16x4_t
{
8595 simd_shuffle4
!( a
, b
, [ 1 , 5 , 3 , 7 ])
8598 /// Transpose vectors
8600 #[target_feature(enable = "neon" )]
8601 #[cfg_attr(test, assert_instr(trn2))]
8602 pub unsafe fn vtrn2q_p16 ( a
: poly16x8_t
, b
: poly16x8_t
) -> poly16x8_t
{
8603 simd_shuffle8
!( a
, b
, [ 1 , 9 , 3 , 11 , 5 , 13 , 7 , 15 ])
8606 /// Transpose vectors
8608 #[target_feature(enable = "neon" )]
8609 #[cfg_attr(test, assert_instr(zip2))]
8610 pub unsafe fn vtrn2_s32 ( a
: int32x2_t
, b
: int32x2_t
) -> int32x2_t
{
8611 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8614 /// Transpose vectors
8616 #[target_feature(enable = "neon" )]
8617 #[cfg_attr(test, assert_instr(zip2))]
8618 pub unsafe fn vtrn2q_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> int64x2_t
{
8619 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8622 /// Transpose vectors
8624 #[target_feature(enable = "neon" )]
8625 #[cfg_attr(test, assert_instr(zip2))]
8626 pub unsafe fn vtrn2_u32 ( a
: uint32x2_t
, b
: uint32x2_t
) -> uint32x2_t
{
8627 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8630 /// Transpose vectors
8632 #[target_feature(enable = "neon" )]
8633 #[cfg_attr(test, assert_instr(zip2))]
8634 pub unsafe fn vtrn2q_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
8635 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8638 /// Transpose vectors
8640 #[target_feature(enable = "neon" )]
8641 #[cfg_attr(test, assert_instr(zip2))]
8642 pub unsafe fn vtrn2q_p64 ( a
: poly64x2_t
, b
: poly64x2_t
) -> poly64x2_t
{
8643 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8646 /// Transpose vectors
8648 #[target_feature(enable = "neon" )]
8649 #[cfg_attr(test, assert_instr(trn2))]
8650 pub unsafe fn vtrn2q_f32 ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
8651 simd_shuffle4
!( a
, b
, [ 1 , 5 , 3 , 7 ])
8654 /// Transpose vectors
8656 #[target_feature(enable = "neon" )]
8657 #[cfg_attr(test, assert_instr(zip2))]
8658 pub unsafe fn vtrn2_f32 ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
8659 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8662 /// Transpose vectors
8664 #[target_feature(enable = "neon" )]
8665 #[cfg_attr(test, assert_instr(zip2))]
8666 pub unsafe fn vtrn2q_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
8667 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8672 #[target_feature(enable = "neon" )]
8673 #[cfg_attr(test, assert_instr(zip1))]
8674 pub unsafe fn vzip1_s8 ( a
: int8x8_t
, b
: int8x8_t
) -> int8x8_t
{
8675 simd_shuffle8
!( a
, b
, [ 0 , 8 , 1 , 9 , 2 , 10 , 3 , 11 ])
8680 #[target_feature(enable = "neon" )]
8681 #[cfg_attr(test, assert_instr(zip1))]
8682 pub unsafe fn vzip1q_s8 ( a
: int8x16_t
, b
: int8x16_t
) -> int8x16_t
{
8683 simd_shuffle16
!( a
, b
, [ 0 , 16 , 1 , 17 , 2 , 18 , 3 , 19 , 4 , 20 , 5 , 21 , 6 , 22 , 7 , 23 ])
8688 #[target_feature(enable = "neon" )]
8689 #[cfg_attr(test, assert_instr(zip1))]
8690 pub unsafe fn vzip1_s16 ( a
: int16x4_t
, b
: int16x4_t
) -> int16x4_t
{
8691 simd_shuffle4
!( a
, b
, [ 0 , 4 , 1 , 5 ])
8696 #[target_feature(enable = "neon" )]
8697 #[cfg_attr(test, assert_instr(zip1))]
8698 pub unsafe fn vzip1q_s16 ( a
: int16x8_t
, b
: int16x8_t
) -> int16x8_t
{
8699 simd_shuffle8
!( a
, b
, [ 0 , 8 , 1 , 9 , 2 , 10 , 3 , 11 ])
8704 #[target_feature(enable = "neon" )]
8705 #[cfg_attr(test, assert_instr(zip1))]
8706 pub unsafe fn vzip1_s32 ( a
: int32x2_t
, b
: int32x2_t
) -> int32x2_t
{
8707 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8712 #[target_feature(enable = "neon" )]
8713 #[cfg_attr(test, assert_instr(zip1))]
8714 pub unsafe fn vzip1q_s32 ( a
: int32x4_t
, b
: int32x4_t
) -> int32x4_t
{
8715 simd_shuffle4
!( a
, b
, [ 0 , 4 , 1 , 5 ])
8720 #[target_feature(enable = "neon" )]
8721 #[cfg_attr(test, assert_instr(zip1))]
8722 pub unsafe fn vzip1q_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> int64x2_t
{
8723 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8728 #[target_feature(enable = "neon" )]
8729 #[cfg_attr(test, assert_instr(zip1))]
8730 pub unsafe fn vzip1_u8 ( a
: uint8x8_t
, b
: uint8x8_t
) -> uint8x8_t
{
8731 simd_shuffle8
!( a
, b
, [ 0 , 8 , 1 , 9 , 2 , 10 , 3 , 11 ])
8736 #[target_feature(enable = "neon" )]
8737 #[cfg_attr(test, assert_instr(zip1))]
8738 pub unsafe fn vzip1q_u8 ( a
: uint8x16_t
, b
: uint8x16_t
) -> uint8x16_t
{
8739 simd_shuffle16
!( a
, b
, [ 0 , 16 , 1 , 17 , 2 , 18 , 3 , 19 , 4 , 20 , 5 , 21 , 6 , 22 , 7 , 23 ])
8744 #[target_feature(enable = "neon" )]
8745 #[cfg_attr(test, assert_instr(zip1))]
8746 pub unsafe fn vzip1_u16 ( a
: uint16x4_t
, b
: uint16x4_t
) -> uint16x4_t
{
8747 simd_shuffle4
!( a
, b
, [ 0 , 4 , 1 , 5 ])
8752 #[target_feature(enable = "neon" )]
8753 #[cfg_attr(test, assert_instr(zip1))]
8754 pub unsafe fn vzip1q_u16 ( a
: uint16x8_t
, b
: uint16x8_t
) -> uint16x8_t
{
8755 simd_shuffle8
!( a
, b
, [ 0 , 8 , 1 , 9 , 2 , 10 , 3 , 11 ])
8760 #[target_feature(enable = "neon" )]
8761 #[cfg_attr(test, assert_instr(zip1))]
8762 pub unsafe fn vzip1_u32 ( a
: uint32x2_t
, b
: uint32x2_t
) -> uint32x2_t
{
8763 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8768 #[target_feature(enable = "neon" )]
8769 #[cfg_attr(test, assert_instr(zip1))]
8770 pub unsafe fn vzip1q_u32 ( a
: uint32x4_t
, b
: uint32x4_t
) -> uint32x4_t
{
8771 simd_shuffle4
!( a
, b
, [ 0 , 4 , 1 , 5 ])
8776 #[target_feature(enable = "neon" )]
8777 #[cfg_attr(test, assert_instr(zip1))]
8778 pub unsafe fn vzip1q_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
8779 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8784 #[target_feature(enable = "neon" )]
8785 #[cfg_attr(test, assert_instr(zip1))]
8786 pub unsafe fn vzip1_p8 ( a
: poly8x8_t
, b
: poly8x8_t
) -> poly8x8_t
{
8787 simd_shuffle8
!( a
, b
, [ 0 , 8 , 1 , 9 , 2 , 10 , 3 , 11 ])
8792 #[target_feature(enable = "neon" )]
8793 #[cfg_attr(test, assert_instr(zip1))]
8794 pub unsafe fn vzip1q_p8 ( a
: poly8x16_t
, b
: poly8x16_t
) -> poly8x16_t
{
8795 simd_shuffle16
!( a
, b
, [ 0 , 16 , 1 , 17 , 2 , 18 , 3 , 19 , 4 , 20 , 5 , 21 , 6 , 22 , 7 , 23 ])
8800 #[target_feature(enable = "neon" )]
8801 #[cfg_attr(test, assert_instr(zip1))]
8802 pub unsafe fn vzip1_p16 ( a
: poly16x4_t
, b
: poly16x4_t
) -> poly16x4_t
{
8803 simd_shuffle4
!( a
, b
, [ 0 , 4 , 1 , 5 ])
8808 #[target_feature(enable = "neon" )]
8809 #[cfg_attr(test, assert_instr(zip1))]
8810 pub unsafe fn vzip1q_p16 ( a
: poly16x8_t
, b
: poly16x8_t
) -> poly16x8_t
{
8811 simd_shuffle8
!( a
, b
, [ 0 , 8 , 1 , 9 , 2 , 10 , 3 , 11 ])
8816 #[target_feature(enable = "neon" )]
8817 #[cfg_attr(test, assert_instr(zip1))]
8818 pub unsafe fn vzip1q_p64 ( a
: poly64x2_t
, b
: poly64x2_t
) -> poly64x2_t
{
8819 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8824 #[target_feature(enable = "neon" )]
8825 #[cfg_attr(test, assert_instr(zip1))]
8826 pub unsafe fn vzip1_f32 ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
8827 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8832 #[target_feature(enable = "neon" )]
8833 #[cfg_attr(test, assert_instr(zip1))]
8834 pub unsafe fn vzip1q_f32 ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
8835 simd_shuffle4
!( a
, b
, [ 0 , 4 , 1 , 5 ])
8840 #[target_feature(enable = "neon" )]
8841 #[cfg_attr(test, assert_instr(zip1))]
8842 pub unsafe fn vzip1q_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
8843 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
8848 #[target_feature(enable = "neon" )]
8849 #[cfg_attr(test, assert_instr(zip2))]
8850 pub unsafe fn vzip2_s8 ( a
: int8x8_t
, b
: int8x8_t
) -> int8x8_t
{
8851 simd_shuffle8
!( a
, b
, [ 4 , 12 , 5 , 13 , 6 , 14 , 7 , 15 ])
8856 #[target_feature(enable = "neon" )]
8857 #[cfg_attr(test, assert_instr(zip2))]
8858 pub unsafe fn vzip2q_s8 ( a
: int8x16_t
, b
: int8x16_t
) -> int8x16_t
{
8859 simd_shuffle16
!( a
, b
, [ 8 , 24 , 9 , 25 , 10 , 26 , 11 , 27 , 12 , 28 , 13 , 29 , 14 , 30 , 15 , 31 ])
8864 #[target_feature(enable = "neon" )]
8865 #[cfg_attr(test, assert_instr(zip2))]
8866 pub unsafe fn vzip2_s16 ( a
: int16x4_t
, b
: int16x4_t
) -> int16x4_t
{
8867 simd_shuffle4
!( a
, b
, [ 2 , 6 , 3 , 7 ])
8872 #[target_feature(enable = "neon" )]
8873 #[cfg_attr(test, assert_instr(zip2))]
8874 pub unsafe fn vzip2q_s16 ( a
: int16x8_t
, b
: int16x8_t
) -> int16x8_t
{
8875 simd_shuffle8
!( a
, b
, [ 4 , 12 , 5 , 13 , 6 , 14 , 7 , 15 ])
8880 #[target_feature(enable = "neon" )]
8881 #[cfg_attr(test, assert_instr(zip2))]
8882 pub unsafe fn vzip2_s32 ( a
: int32x2_t
, b
: int32x2_t
) -> int32x2_t
{
8883 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8888 #[target_feature(enable = "neon" )]
8889 #[cfg_attr(test, assert_instr(zip2))]
8890 pub unsafe fn vzip2q_s32 ( a
: int32x4_t
, b
: int32x4_t
) -> int32x4_t
{
8891 simd_shuffle4
!( a
, b
, [ 2 , 6 , 3 , 7 ])
8896 #[target_feature(enable = "neon" )]
8897 #[cfg_attr(test, assert_instr(zip2))]
8898 pub unsafe fn vzip2q_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> int64x2_t
{
8899 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8904 #[target_feature(enable = "neon" )]
8905 #[cfg_attr(test, assert_instr(zip2))]
8906 pub unsafe fn vzip2_u8 ( a
: uint8x8_t
, b
: uint8x8_t
) -> uint8x8_t
{
8907 simd_shuffle8
!( a
, b
, [ 4 , 12 , 5 , 13 , 6 , 14 , 7 , 15 ])
8912 #[target_feature(enable = "neon" )]
8913 #[cfg_attr(test, assert_instr(zip2))]
8914 pub unsafe fn vzip2q_u8 ( a
: uint8x16_t
, b
: uint8x16_t
) -> uint8x16_t
{
8915 simd_shuffle16
!( a
, b
, [ 8 , 24 , 9 , 25 , 10 , 26 , 11 , 27 , 12 , 28 , 13 , 29 , 14 , 30 , 15 , 31 ])
8920 #[target_feature(enable = "neon" )]
8921 #[cfg_attr(test, assert_instr(zip2))]
8922 pub unsafe fn vzip2_u16 ( a
: uint16x4_t
, b
: uint16x4_t
) -> uint16x4_t
{
8923 simd_shuffle4
!( a
, b
, [ 2 , 6 , 3 , 7 ])
8928 #[target_feature(enable = "neon" )]
8929 #[cfg_attr(test, assert_instr(zip2))]
8930 pub unsafe fn vzip2q_u16 ( a
: uint16x8_t
, b
: uint16x8_t
) -> uint16x8_t
{
8931 simd_shuffle8
!( a
, b
, [ 4 , 12 , 5 , 13 , 6 , 14 , 7 , 15 ])
8936 #[target_feature(enable = "neon" )]
8937 #[cfg_attr(test, assert_instr(zip2))]
8938 pub unsafe fn vzip2_u32 ( a
: uint32x2_t
, b
: uint32x2_t
) -> uint32x2_t
{
8939 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8944 #[target_feature(enable = "neon" )]
8945 #[cfg_attr(test, assert_instr(zip2))]
8946 pub unsafe fn vzip2q_u32 ( a
: uint32x4_t
, b
: uint32x4_t
) -> uint32x4_t
{
8947 simd_shuffle4
!( a
, b
, [ 2 , 6 , 3 , 7 ])
8952 #[target_feature(enable = "neon" )]
8953 #[cfg_attr(test, assert_instr(zip2))]
8954 pub unsafe fn vzip2q_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
8955 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
8960 #[target_feature(enable = "neon" )]
8961 #[cfg_attr(test, assert_instr(zip2))]
8962 pub unsafe fn vzip2_p8 ( a
: poly8x8_t
, b
: poly8x8_t
) -> poly8x8_t
{
8963 simd_shuffle8
!( a
, b
, [ 4 , 12 , 5 , 13 , 6 , 14 , 7 , 15 ])
8968 #[target_feature(enable = "neon" )]
8969 #[cfg_attr(test, assert_instr(zip2))]
8970 pub unsafe fn vzip2q_p8 ( a
: poly8x16_t
, b
: poly8x16_t
) -> poly8x16_t
{
8971 simd_shuffle16
!( a
, b
, [ 8 , 24 , 9 , 25 , 10 , 26 , 11 , 27 , 12 , 28 , 13 , 29 , 14 , 30 , 15 , 31 ])
8976 #[target_feature(enable = "neon" )]
8977 #[cfg_attr(test, assert_instr(zip2))]
8978 pub unsafe fn vzip2_p16 ( a
: poly16x4_t
, b
: poly16x4_t
) -> poly16x4_t
{
8979 simd_shuffle4
!( a
, b
, [ 2 , 6 , 3 , 7 ])
8984 #[target_feature(enable = "neon" )]
8985 #[cfg_attr(test, assert_instr(zip2))]
8986 pub unsafe fn vzip2q_p16 ( a
: poly16x8_t
, b
: poly16x8_t
) -> poly16x8_t
{
8987 simd_shuffle8
!( a
, b
, [ 4 , 12 , 5 , 13 , 6 , 14 , 7 , 15 ])
8992 #[target_feature(enable = "neon" )]
8993 #[cfg_attr(test, assert_instr(zip2))]
8994 pub unsafe fn vzip2q_p64 ( a
: poly64x2_t
, b
: poly64x2_t
) -> poly64x2_t
{
8995 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
9000 #[target_feature(enable = "neon" )]
9001 #[cfg_attr(test, assert_instr(zip2))]
9002 pub unsafe fn vzip2_f32 ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
9003 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
9008 #[target_feature(enable = "neon" )]
9009 #[cfg_attr(test, assert_instr(zip2))]
9010 pub unsafe fn vzip2q_f32 ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
9011 simd_shuffle4
!( a
, b
, [ 2 , 6 , 3 , 7 ])
9016 #[target_feature(enable = "neon" )]
9017 #[cfg_attr(test, assert_instr(zip2))]
9018 pub unsafe fn vzip2q_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
9019 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
9024 #[target_feature(enable = "neon" )]
9025 #[cfg_attr(test, assert_instr(uzp1))]
9026 pub unsafe fn vuzp1_s8 ( a
: int8x8_t
, b
: int8x8_t
) -> int8x8_t
{
9027 simd_shuffle8
!( a
, b
, [ 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 ])
9032 #[target_feature(enable = "neon" )]
9033 #[cfg_attr(test, assert_instr(uzp1))]
9034 pub unsafe fn vuzp1q_s8 ( a
: int8x16_t
, b
: int8x16_t
) -> int8x16_t
{
9035 simd_shuffle16
!( a
, b
, [ 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 ])
9040 #[target_feature(enable = "neon" )]
9041 #[cfg_attr(test, assert_instr(uzp1))]
9042 pub unsafe fn vuzp1_s16 ( a
: int16x4_t
, b
: int16x4_t
) -> int16x4_t
{
9043 simd_shuffle4
!( a
, b
, [ 0 , 2 , 4 , 6 ])
9048 #[target_feature(enable = "neon" )]
9049 #[cfg_attr(test, assert_instr(uzp1))]
9050 pub unsafe fn vuzp1q_s16 ( a
: int16x8_t
, b
: int16x8_t
) -> int16x8_t
{
9051 simd_shuffle8
!( a
, b
, [ 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 ])
9056 #[target_feature(enable = "neon" )]
9057 #[cfg_attr(test, assert_instr(uzp1))]
9058 pub unsafe fn vuzp1q_s32 ( a
: int32x4_t
, b
: int32x4_t
) -> int32x4_t
{
9059 simd_shuffle4
!( a
, b
, [ 0 , 2 , 4 , 6 ])
9064 #[target_feature(enable = "neon" )]
9065 #[cfg_attr(test, assert_instr(uzp1))]
9066 pub unsafe fn vuzp1_u8 ( a
: uint8x8_t
, b
: uint8x8_t
) -> uint8x8_t
{
9067 simd_shuffle8
!( a
, b
, [ 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 ])
9072 #[target_feature(enable = "neon" )]
9073 #[cfg_attr(test, assert_instr(uzp1))]
9074 pub unsafe fn vuzp1q_u8 ( a
: uint8x16_t
, b
: uint8x16_t
) -> uint8x16_t
{
9075 simd_shuffle16
!( a
, b
, [ 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 ])
9080 #[target_feature(enable = "neon" )]
9081 #[cfg_attr(test, assert_instr(uzp1))]
9082 pub unsafe fn vuzp1_u16 ( a
: uint16x4_t
, b
: uint16x4_t
) -> uint16x4_t
{
9083 simd_shuffle4
!( a
, b
, [ 0 , 2 , 4 , 6 ])
9088 #[target_feature(enable = "neon" )]
9089 #[cfg_attr(test, assert_instr(uzp1))]
9090 pub unsafe fn vuzp1q_u16 ( a
: uint16x8_t
, b
: uint16x8_t
) -> uint16x8_t
{
9091 simd_shuffle8
!( a
, b
, [ 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 ])
9096 #[target_feature(enable = "neon" )]
9097 #[cfg_attr(test, assert_instr(uzp1))]
9098 pub unsafe fn vuzp1q_u32 ( a
: uint32x4_t
, b
: uint32x4_t
) -> uint32x4_t
{
9099 simd_shuffle4
!( a
, b
, [ 0 , 2 , 4 , 6 ])
9104 #[target_feature(enable = "neon" )]
9105 #[cfg_attr(test, assert_instr(uzp1))]
9106 pub unsafe fn vuzp1_p8 ( a
: poly8x8_t
, b
: poly8x8_t
) -> poly8x8_t
{
9107 simd_shuffle8
!( a
, b
, [ 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 ])
9112 #[target_feature(enable = "neon" )]
9113 #[cfg_attr(test, assert_instr(uzp1))]
9114 pub unsafe fn vuzp1q_p8 ( a
: poly8x16_t
, b
: poly8x16_t
) -> poly8x16_t
{
9115 simd_shuffle16
!( a
, b
, [ 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 ])
9120 #[target_feature(enable = "neon" )]
9121 #[cfg_attr(test, assert_instr(uzp1))]
9122 pub unsafe fn vuzp1_p16 ( a
: poly16x4_t
, b
: poly16x4_t
) -> poly16x4_t
{
9123 simd_shuffle4
!( a
, b
, [ 0 , 2 , 4 , 6 ])
9128 #[target_feature(enable = "neon" )]
9129 #[cfg_attr(test, assert_instr(uzp1))]
9130 pub unsafe fn vuzp1q_p16 ( a
: poly16x8_t
, b
: poly16x8_t
) -> poly16x8_t
{
9131 simd_shuffle8
!( a
, b
, [ 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 ])
9136 #[target_feature(enable = "neon" )]
9137 #[cfg_attr(test, assert_instr(zip1))]
9138 pub unsafe fn vuzp1_s32 ( a
: int32x2_t
, b
: int32x2_t
) -> int32x2_t
{
9139 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
9144 #[target_feature(enable = "neon" )]
9145 #[cfg_attr(test, assert_instr(zip1))]
9146 pub unsafe fn vuzp1q_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> int64x2_t
{
9147 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
9152 #[target_feature(enable = "neon" )]
9153 #[cfg_attr(test, assert_instr(zip1))]
9154 pub unsafe fn vuzp1_u32 ( a
: uint32x2_t
, b
: uint32x2_t
) -> uint32x2_t
{
9155 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
9160 #[target_feature(enable = "neon" )]
9161 #[cfg_attr(test, assert_instr(zip1))]
9162 pub unsafe fn vuzp1q_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
9163 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
9168 #[target_feature(enable = "neon" )]
9169 #[cfg_attr(test, assert_instr(zip1))]
9170 pub unsafe fn vuzp1q_p64 ( a
: poly64x2_t
, b
: poly64x2_t
) -> poly64x2_t
{
9171 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
9176 #[target_feature(enable = "neon" )]
9177 #[cfg_attr(test, assert_instr(uzp1))]
9178 pub unsafe fn vuzp1q_f32 ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
9179 simd_shuffle4
!( a
, b
, [ 0 , 2 , 4 , 6 ])
9184 #[target_feature(enable = "neon" )]
9185 #[cfg_attr(test, assert_instr(zip1))]
9186 pub unsafe fn vuzp1_f32 ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
9187 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
9192 #[target_feature(enable = "neon" )]
9193 #[cfg_attr(test, assert_instr(zip1))]
9194 pub unsafe fn vuzp1q_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
9195 simd_shuffle2
!( a
, b
, [ 0 , 2 ])
9200 #[target_feature(enable = "neon" )]
9201 #[cfg_attr(test, assert_instr(uzp2))]
9202 pub unsafe fn vuzp2_s8 ( a
: int8x8_t
, b
: int8x8_t
) -> int8x8_t
{
9203 simd_shuffle8
!( a
, b
, [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 ])
9208 #[target_feature(enable = "neon" )]
9209 #[cfg_attr(test, assert_instr(uzp2))]
9210 pub unsafe fn vuzp2q_s8 ( a
: int8x16_t
, b
: int8x16_t
) -> int8x16_t
{
9211 simd_shuffle16
!( a
, b
, [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 ])
9216 #[target_feature(enable = "neon" )]
9217 #[cfg_attr(test, assert_instr(uzp2))]
9218 pub unsafe fn vuzp2_s16 ( a
: int16x4_t
, b
: int16x4_t
) -> int16x4_t
{
9219 simd_shuffle4
!( a
, b
, [ 1 , 3 , 5 , 7 ])
9224 #[target_feature(enable = "neon" )]
9225 #[cfg_attr(test, assert_instr(uzp2))]
9226 pub unsafe fn vuzp2q_s16 ( a
: int16x8_t
, b
: int16x8_t
) -> int16x8_t
{
9227 simd_shuffle8
!( a
, b
, [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 ])
9232 #[target_feature(enable = "neon" )]
9233 #[cfg_attr(test, assert_instr(uzp2))]
9234 pub unsafe fn vuzp2q_s32 ( a
: int32x4_t
, b
: int32x4_t
) -> int32x4_t
{
9235 simd_shuffle4
!( a
, b
, [ 1 , 3 , 5 , 7 ])
9240 #[target_feature(enable = "neon" )]
9241 #[cfg_attr(test, assert_instr(uzp2))]
9242 pub unsafe fn vuzp2_u8 ( a
: uint8x8_t
, b
: uint8x8_t
) -> uint8x8_t
{
9243 simd_shuffle8
!( a
, b
, [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 ])
9248 #[target_feature(enable = "neon" )]
9249 #[cfg_attr(test, assert_instr(uzp2))]
9250 pub unsafe fn vuzp2q_u8 ( a
: uint8x16_t
, b
: uint8x16_t
) -> uint8x16_t
{
9251 simd_shuffle16
!( a
, b
, [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 ])
9256 #[target_feature(enable = "neon" )]
9257 #[cfg_attr(test, assert_instr(uzp2))]
9258 pub unsafe fn vuzp2_u16 ( a
: uint16x4_t
, b
: uint16x4_t
) -> uint16x4_t
{
9259 simd_shuffle4
!( a
, b
, [ 1 , 3 , 5 , 7 ])
9264 #[target_feature(enable = "neon" )]
9265 #[cfg_attr(test, assert_instr(uzp2))]
9266 pub unsafe fn vuzp2q_u16 ( a
: uint16x8_t
, b
: uint16x8_t
) -> uint16x8_t
{
9267 simd_shuffle8
!( a
, b
, [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 ])
9272 #[target_feature(enable = "neon" )]
9273 #[cfg_attr(test, assert_instr(uzp2))]
9274 pub unsafe fn vuzp2q_u32 ( a
: uint32x4_t
, b
: uint32x4_t
) -> uint32x4_t
{
9275 simd_shuffle4
!( a
, b
, [ 1 , 3 , 5 , 7 ])
9280 #[target_feature(enable = "neon" )]
9281 #[cfg_attr(test, assert_instr(uzp2))]
9282 pub unsafe fn vuzp2_p8 ( a
: poly8x8_t
, b
: poly8x8_t
) -> poly8x8_t
{
9283 simd_shuffle8
!( a
, b
, [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 ])
9288 #[target_feature(enable = "neon" )]
9289 #[cfg_attr(test, assert_instr(uzp2))]
9290 pub unsafe fn vuzp2q_p8 ( a
: poly8x16_t
, b
: poly8x16_t
) -> poly8x16_t
{
9291 simd_shuffle16
!( a
, b
, [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 ])
9296 #[target_feature(enable = "neon" )]
9297 #[cfg_attr(test, assert_instr(uzp2))]
9298 pub unsafe fn vuzp2_p16 ( a
: poly16x4_t
, b
: poly16x4_t
) -> poly16x4_t
{
9299 simd_shuffle4
!( a
, b
, [ 1 , 3 , 5 , 7 ])
9304 #[target_feature(enable = "neon" )]
9305 #[cfg_attr(test, assert_instr(uzp2))]
9306 pub unsafe fn vuzp2q_p16 ( a
: poly16x8_t
, b
: poly16x8_t
) -> poly16x8_t
{
9307 simd_shuffle8
!( a
, b
, [ 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 ])
9312 #[target_feature(enable = "neon" )]
9313 #[cfg_attr(test, assert_instr(zip2))]
9314 pub unsafe fn vuzp2_s32 ( a
: int32x2_t
, b
: int32x2_t
) -> int32x2_t
{
9315 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
9320 #[target_feature(enable = "neon" )]
9321 #[cfg_attr(test, assert_instr(zip2))]
9322 pub unsafe fn vuzp2q_s64 ( a
: int64x2_t
, b
: int64x2_t
) -> int64x2_t
{
9323 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
9328 #[target_feature(enable = "neon" )]
9329 #[cfg_attr(test, assert_instr(zip2))]
9330 pub unsafe fn vuzp2_u32 ( a
: uint32x2_t
, b
: uint32x2_t
) -> uint32x2_t
{
9331 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
9336 #[target_feature(enable = "neon" )]
9337 #[cfg_attr(test, assert_instr(zip2))]
9338 pub unsafe fn vuzp2q_u64 ( a
: uint64x2_t
, b
: uint64x2_t
) -> uint64x2_t
{
9339 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
9344 #[target_feature(enable = "neon" )]
9345 #[cfg_attr(test, assert_instr(zip2))]
9346 pub unsafe fn vuzp2q_p64 ( a
: poly64x2_t
, b
: poly64x2_t
) -> poly64x2_t
{
9347 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
9352 #[target_feature(enable = "neon" )]
9353 #[cfg_attr(test, assert_instr(uzp2))]
9354 pub unsafe fn vuzp2q_f32 ( a
: float32x4_t
, b
: float32x4_t
) -> float32x4_t
{
9355 simd_shuffle4
!( a
, b
, [ 1 , 3 , 5 , 7 ])
9360 #[target_feature(enable = "neon" )]
9361 #[cfg_attr(test, assert_instr(zip2))]
9362 pub unsafe fn vuzp2_f32 ( a
: float32x2_t
, b
: float32x2_t
) -> float32x2_t
{
9363 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
9368 #[target_feature(enable = "neon" )]
9369 #[cfg_attr(test, assert_instr(zip2))]
9370 pub unsafe fn vuzp2q_f64 ( a
: float64x2_t
, b
: float64x2_t
) -> float64x2_t
{
9371 simd_shuffle2
!( a
, b
, [ 1 , 3 ])
9374 /// Unsigned Absolute difference and Accumulate Long
9376 #[target_feature(enable = "neon" )]
9377 #[cfg_attr(test, assert_instr(uabal))]
9378 pub unsafe fn vabal_high_u8 ( a
: uint16x8_t
, b
: uint8x16_t
, c
: uint8x16_t
) -> uint16x8_t
{
9379 let d
: uint8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
9380 let e
: uint8x8_t
= simd_shuffle8
!( c
, c
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
9381 let f
: uint8x8_t
= vabd_u8 ( d
, e
);
9382 simd_add ( a
, simd_cast ( f
))
9385 /// Unsigned Absolute difference and Accumulate Long
9387 #[target_feature(enable = "neon" )]
9388 #[cfg_attr(test, assert_instr(uabal))]
9389 pub unsafe fn vabal_high_u16 ( a
: uint32x4_t
, b
: uint16x8_t
, c
: uint16x8_t
) -> uint32x4_t
{
9390 let d
: uint16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
9391 let e
: uint16x4_t
= simd_shuffle4
!( c
, c
, [ 4 , 5 , 6 , 7 ]);
9392 let f
: uint16x4_t
= vabd_u16 ( d
, e
);
9393 simd_add ( a
, simd_cast ( f
))
9396 /// Unsigned Absolute difference and Accumulate Long
9398 #[target_feature(enable = "neon" )]
9399 #[cfg_attr(test, assert_instr(uabal))]
9400 pub unsafe fn vabal_high_u32 ( a
: uint64x2_t
, b
: uint32x4_t
, c
: uint32x4_t
) -> uint64x2_t
{
9401 let d
: uint32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
9402 let e
: uint32x2_t
= simd_shuffle2
!( c
, c
, [ 2 , 3 ]);
9403 let f
: uint32x2_t
= vabd_u32 ( d
, e
);
9404 simd_add ( a
, simd_cast ( f
))
9407 /// Signed Absolute difference and Accumulate Long
9409 #[target_feature(enable = "neon" )]
9410 #[cfg_attr(test, assert_instr(sabal))]
9411 pub unsafe fn vabal_high_s8 ( a
: int16x8_t
, b
: int8x16_t
, c
: int8x16_t
) -> int16x8_t
{
9412 let d
: int8x8_t
= simd_shuffle8
!( b
, b
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
9413 let e
: int8x8_t
= simd_shuffle8
!( c
, c
, [ 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ]);
9414 let f
: int8x8_t
= vabd_s8 ( d
, e
);
9415 let f
: uint8x8_t
= simd_cast ( f
);
9416 simd_add ( a
, simd_cast ( f
))
9419 /// Signed Absolute difference and Accumulate Long
9421 #[target_feature(enable = "neon" )]
9422 #[cfg_attr(test, assert_instr(sabal))]
9423 pub unsafe fn vabal_high_s16 ( a
: int32x4_t
, b
: int16x8_t
, c
: int16x8_t
) -> int32x4_t
{
9424 let d
: int16x4_t
= simd_shuffle4
!( b
, b
, [ 4 , 5 , 6 , 7 ]);
9425 let e
: int16x4_t
= simd_shuffle4
!( c
, c
, [ 4 , 5 , 6 , 7 ]);
9426 let f
: int16x4_t
= vabd_s16 ( d
, e
);
9427 let f
: uint16x4_t
= simd_cast ( f
);
9428 simd_add ( a
, simd_cast ( f
))
9431 /// Signed Absolute difference and Accumulate Long
9433 #[target_feature(enable = "neon" )]
9434 #[cfg_attr(test, assert_instr(sabal))]
9435 pub unsafe fn vabal_high_s32 ( a
: int64x2_t
, b
: int32x4_t
, c
: int32x4_t
) -> int64x2_t
{
9436 let d
: int32x2_t
= simd_shuffle2
!( b
, b
, [ 2 , 3 ]);
9437 let e
: int32x2_t
= simd_shuffle2
!( c
, c
, [ 2 , 3 ]);
9438 let f
: int32x2_t
= vabd_s32 ( d
, e
);
9439 let f
: uint32x2_t
= simd_cast ( f
);
9440 simd_add ( a
, simd_cast ( f
))
9443 /// Singned saturating Absolute value
9445 #[target_feature(enable = "neon" )]
9446 #[cfg_attr(test, assert_instr(sqabs))]
9447 pub unsafe fn vqabs_s64 ( a
: int64x1_t
) -> int64x1_t
{
9448 #[allow(improper_ctypes)]
9450 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqabs.v1i64" )]
9451 fn vqabs_s64_ ( a
: int64x1_t
) -> int64x1_t
;
9456 /// Singned saturating Absolute value
9458 #[target_feature(enable = "neon" )]
9459 #[cfg_attr(test, assert_instr(sqabs))]
9460 pub unsafe fn vqabsq_s64 ( a
: int64x2_t
) -> int64x2_t
{
9461 #[allow(improper_ctypes)]
9463 #[cfg_attr(target_arch = "aarch64" , link_name = "llvm.aarch64.neon.sqabs.v2i64" )]
9464 fn vqabsq_s64_ ( a
: int64x2_t
) -> int64x2_t
;
9472 use crate :: core_arch
:: simd
::*;
9473 use std
:: mem
:: transmute
;
9474 use stdarch_test
:: simd_test
;
9476 #[simd_test(enable = "neon" )]
9477 unsafe fn test_vabd_f64 () {
9481 let r
: f64 = transmute ( vabd_f64 ( transmute ( a
), transmute ( b
)));
9485 #[simd_test(enable = "neon" )]
9486 unsafe fn test_vabdq_f64 () {
9487 let a
: f64x2
= f64x2
:: new ( 1.0 , 2.0 );
9488 let b
: f64x2
= f64x2
:: new ( 9.0 , 3.0 );
9489 let e
: f64x2
= f64x2
:: new ( 8.0 , 1.0 );
9490 let r
: f64x2
= transmute ( vabdq_f64 ( transmute ( a
), transmute ( b
)));
9494 #[simd_test(enable = "neon" )]
9495 unsafe fn test_vabdl_high_u8 () {
9496 let a
: u8x16
= u8x16
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
9497 let b
: u8x16
= u8x16
:: new ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 );
9498 let e
: u16x8
= u16x8
:: new ( 1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 );
9499 let r
: u16x8
= transmute ( vabdl_high_u8 ( transmute ( a
), transmute ( b
)));
9503 #[simd_test(enable = "neon" )]
9504 unsafe fn test_vabdl_high_u16 () {
9505 let a
: u16x8
= u16x8
:: new ( 1 , 2 , 3 , 4 , 8 , 9 , 11 , 12 );
9506 let b
: u16x8
= u16x8
:: new ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 );
9507 let e
: u32x4
= u32x4
:: new ( 2 , 1 , 1 , 2 );
9508 let r
: u32x4
= transmute ( vabdl_high_u16 ( transmute ( a
), transmute ( b
)));
9512 #[simd_test(enable = "neon" )]
9513 unsafe fn test_vabdl_high_u32 () {
9514 let a
: u32x4
= u32x4
:: new ( 1 , 2 , 3 , 4 );
9515 let b
: u32x4
= u32x4
:: new ( 10 , 10 , 10 , 10 );
9516 let e
: u64x2
= u64x2
:: new ( 7 , 6 );
9517 let r
: u64x2
= transmute ( vabdl_high_u32 ( transmute ( a
), transmute ( b
)));
9521 #[simd_test(enable = "neon" )]
9522 unsafe fn test_vabdl_high_s8 () {
9523 let a
: i8x16
= i8x16
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
9524 let b
: i8x16
= i8x16
:: new ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 );
9525 let e
: i16x8
= i16x8
:: new ( 1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 );
9526 let r
: i16x8
= transmute ( vabdl_high_s8 ( transmute ( a
), transmute ( b
)));
9530 #[simd_test(enable = "neon" )]
9531 unsafe fn test_vabdl_high_s16 () {
9532 let a
: i16x8
= i16x8
:: new ( 1 , 2 , 3 , 4 , 9 , 10 , 11 , 12 );
9533 let b
: i16x8
= i16x8
:: new ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 );
9534 let e
: i32x4
= i32x4
:: new ( 1 , 0 , 1 , 2 );
9535 let r
: i32x4
= transmute ( vabdl_high_s16 ( transmute ( a
), transmute ( b
)));
9539 #[simd_test(enable = "neon" )]
9540 unsafe fn test_vabdl_high_s32 () {
9541 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 3 , 4 );
9542 let b
: i32x4
= i32x4
:: new ( 10 , 10 , 10 , 10 );
9543 let e
: i64x2
= i64x2
:: new ( 7 , 6 );
9544 let r
: i64x2
= transmute ( vabdl_high_s32 ( transmute ( a
), transmute ( b
)));
9548 #[simd_test(enable = "neon" )]
9549 unsafe fn test_vceq_u64 () {
9550 let a
: u64x1
= u64x1
:: new ( 0 );
9551 let b
: u64x1
= u64x1
:: new ( 0 );
9552 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9553 let r
: u64x1
= transmute ( vceq_u64 ( transmute ( a
), transmute ( b
)));
9556 let a
: u64x1
= u64x1
:: new ( 0 );
9557 let b
: u64x1
= u64x1
:: new ( 0 );
9558 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9559 let r
: u64x1
= transmute ( vceq_u64 ( transmute ( a
), transmute ( b
)));
9563 #[simd_test(enable = "neon" )]
9564 unsafe fn test_vceqq_u64 () {
9565 let a
: u64x2
= u64x2
:: new ( 0 , 0x01 );
9566 let b
: u64x2
= u64x2
:: new ( 0 , 0x01 );
9567 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9568 let r
: u64x2
= transmute ( vceqq_u64 ( transmute ( a
), transmute ( b
)));
9571 let a
: u64x2
= u64x2
:: new ( 0 , 0 );
9572 let b
: u64x2
= u64x2
:: new ( 0 , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9573 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0 );
9574 let r
: u64x2
= transmute ( vceqq_u64 ( transmute ( a
), transmute ( b
)));
9578 #[simd_test(enable = "neon" )]
9579 unsafe fn test_vceq_s64 () {
9580 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9581 let b
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9582 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9583 let r
: u64x1
= transmute ( vceq_s64 ( transmute ( a
), transmute ( b
)));
9586 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9587 let b
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9588 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9589 let r
: u64x1
= transmute ( vceq_s64 ( transmute ( a
), transmute ( b
)));
9593 #[simd_test(enable = "neon" )]
9594 unsafe fn test_vceqq_s64 () {
9595 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x01 );
9596 let b
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x01 );
9597 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9598 let r
: u64x2
= transmute ( vceqq_s64 ( transmute ( a
), transmute ( b
)));
9601 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , - 9223372036854775808 );
9602 let b
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x7F_FF_FF_FF_FF_FF_FF_FF );
9603 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0 );
9604 let r
: u64x2
= transmute ( vceqq_s64 ( transmute ( a
), transmute ( b
)));
9608 #[simd_test(enable = "neon" )]
9609 unsafe fn test_vceq_p64 () {
9610 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9611 let b
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9612 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9613 let r
: u64x1
= transmute ( vceq_p64 ( transmute ( a
), transmute ( b
)));
9616 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9617 let b
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9618 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9619 let r
: u64x1
= transmute ( vceq_p64 ( transmute ( a
), transmute ( b
)));
9623 #[simd_test(enable = "neon" )]
9624 unsafe fn test_vceqq_p64 () {
9625 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x01 );
9626 let b
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x01 );
9627 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9628 let r
: u64x2
= transmute ( vceqq_p64 ( transmute ( a
), transmute ( b
)));
9631 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , - 9223372036854775808 );
9632 let b
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x7F_FF_FF_FF_FF_FF_FF_FF );
9633 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0 );
9634 let r
: u64x2
= transmute ( vceqq_p64 ( transmute ( a
), transmute ( b
)));
9638 #[simd_test(enable = "neon" )]
9639 unsafe fn test_vceq_f64 () {
9642 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9643 let r
: u64x1
= transmute ( vceq_f64 ( transmute ( a
), transmute ( b
)));
9647 #[simd_test(enable = "neon" )]
9648 unsafe fn test_vceqq_f64 () {
9649 let a
: f64x2
= f64x2
:: new ( 1.2 , 3.4 );
9650 let b
: f64x2
= f64x2
:: new ( 1.2 , 3.4 );
9651 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9652 let r
: u64x2
= transmute ( vceqq_f64 ( transmute ( a
), transmute ( b
)));
9656 #[simd_test(enable = "neon" )]
9657 unsafe fn test_vceqz_s8 () {
9658 let a
: i8x8
= i8x8
:: new (- 128 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 );
9659 let e
: u8x8
= u8x8
:: new ( 0 , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 );
9660 let r
: u8x8
= transmute ( vceqz_s8 ( transmute ( a
)));
9664 #[simd_test(enable = "neon" )]
9665 unsafe fn test_vceqzq_s8 () {
9666 let a
: i8x16
= i8x16
:: new (- 128 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0A , 0x0B , 0x0C , 0x0D , 0x7F );
9667 let e
: u8x16
= u8x16
:: new ( 0 , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
9668 let r
: u8x16
= transmute ( vceqzq_s8 ( transmute ( a
)));
9672 #[simd_test(enable = "neon" )]
9673 unsafe fn test_vceqz_s16 () {
9674 let a
: i16x4
= i16x4
:: new (- 32768 , 0x00 , 0x01 , 0x02 );
9675 let e
: u16x4
= u16x4
:: new ( 0 , 0xFF_FF , 0 , 0 );
9676 let r
: u16x4
= transmute ( vceqz_s16 ( transmute ( a
)));
9680 #[simd_test(enable = "neon" )]
9681 unsafe fn test_vceqzq_s16 () {
9682 let a
: i16x8
= i16x8
:: new (- 32768 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 );
9683 let e
: u16x8
= u16x8
:: new ( 0 , 0xFF_FF , 0 , 0 , 0 , 0 , 0 , 0 );
9684 let r
: u16x8
= transmute ( vceqzq_s16 ( transmute ( a
)));
9688 #[simd_test(enable = "neon" )]
9689 unsafe fn test_vceqz_s32 () {
9690 let a
: i32x2
= i32x2
:: new (- 2147483648 , 0x00 );
9691 let e
: u32x2
= u32x2
:: new ( 0 , 0xFF_FF_FF_FF );
9692 let r
: u32x2
= transmute ( vceqz_s32 ( transmute ( a
)));
9696 #[simd_test(enable = "neon" )]
9697 unsafe fn test_vceqzq_s32 () {
9698 let a
: i32x4
= i32x4
:: new (- 2147483648 , 0x00 , 0x01 , 0x02 );
9699 let e
: u32x4
= u32x4
:: new ( 0 , 0xFF_FF_FF_FF , 0 , 0 );
9700 let r
: u32x4
= transmute ( vceqzq_s32 ( transmute ( a
)));
9704 #[simd_test(enable = "neon" )]
9705 unsafe fn test_vceqz_s64 () {
9706 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9707 let e
: u64x1
= u64x1
:: new ( 0 );
9708 let r
: u64x1
= transmute ( vceqz_s64 ( transmute ( a
)));
9712 #[simd_test(enable = "neon" )]
9713 unsafe fn test_vceqzq_s64 () {
9714 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x00 );
9715 let e
: u64x2
= u64x2
:: new ( 0 , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9716 let r
: u64x2
= transmute ( vceqzq_s64 ( transmute ( a
)));
9720 #[simd_test(enable = "neon" )]
9721 unsafe fn test_vceqz_p8 () {
9722 let a
: i8x8
= i8x8
:: new (- 128 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 );
9723 let e
: u8x8
= u8x8
:: new ( 0 , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 );
9724 let r
: u8x8
= transmute ( vceqz_p8 ( transmute ( a
)));
9728 #[simd_test(enable = "neon" )]
9729 unsafe fn test_vceqzq_p8 () {
9730 let a
: i8x16
= i8x16
:: new (- 128 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0A , 0x0B , 0x0C , 0x0D , 0x7F );
9731 let e
: u8x16
= u8x16
:: new ( 0 , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
9732 let r
: u8x16
= transmute ( vceqzq_p8 ( transmute ( a
)));
9736 #[simd_test(enable = "neon" )]
9737 unsafe fn test_vceqz_p64 () {
9738 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9739 let e
: u64x1
= u64x1
:: new ( 0 );
9740 let r
: u64x1
= transmute ( vceqz_p64 ( transmute ( a
)));
9744 #[simd_test(enable = "neon" )]
9745 unsafe fn test_vceqzq_p64 () {
9746 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x00 );
9747 let e
: u64x2
= u64x2
:: new ( 0 , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9748 let r
: u64x2
= transmute ( vceqzq_p64 ( transmute ( a
)));
9752 #[simd_test(enable = "neon" )]
9753 unsafe fn test_vceqz_u8 () {
9754 let a
: u8x8
= u8x8
:: new ( 0 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 );
9755 let e
: u8x8
= u8x8
:: new ( 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 );
9756 let r
: u8x8
= transmute ( vceqz_u8 ( transmute ( a
)));
9760 #[simd_test(enable = "neon" )]
9761 unsafe fn test_vceqzq_u8 () {
9762 let a
: u8x16
= u8x16
:: new ( 0 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0A , 0x0B , 0x0C , 0x0D , 0xFF );
9763 let e
: u8x16
= u8x16
:: new ( 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
9764 let r
: u8x16
= transmute ( vceqzq_u8 ( transmute ( a
)));
9768 #[simd_test(enable = "neon" )]
9769 unsafe fn test_vceqz_u16 () {
9770 let a
: u16x4
= u16x4
:: new ( 0 , 0x00 , 0x01 , 0x02 );
9771 let e
: u16x4
= u16x4
:: new ( 0xFF_FF , 0xFF_FF , 0 , 0 );
9772 let r
: u16x4
= transmute ( vceqz_u16 ( transmute ( a
)));
9776 #[simd_test(enable = "neon" )]
9777 unsafe fn test_vceqzq_u16 () {
9778 let a
: u16x8
= u16x8
:: new ( 0 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 );
9779 let e
: u16x8
= u16x8
:: new ( 0xFF_FF , 0xFF_FF , 0 , 0 , 0 , 0 , 0 , 0 );
9780 let r
: u16x8
= transmute ( vceqzq_u16 ( transmute ( a
)));
9784 #[simd_test(enable = "neon" )]
9785 unsafe fn test_vceqz_u32 () {
9786 let a
: u32x2
= u32x2
:: new ( 0 , 0x00 );
9787 let e
: u32x2
= u32x2
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF );
9788 let r
: u32x2
= transmute ( vceqz_u32 ( transmute ( a
)));
9792 #[simd_test(enable = "neon" )]
9793 unsafe fn test_vceqzq_u32 () {
9794 let a
: u32x4
= u32x4
:: new ( 0 , 0x00 , 0x01 , 0x02 );
9795 let e
: u32x4
= u32x4
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF , 0 , 0 );
9796 let r
: u32x4
= transmute ( vceqzq_u32 ( transmute ( a
)));
9800 #[simd_test(enable = "neon" )]
9801 unsafe fn test_vceqz_u64 () {
9802 let a
: u64x1
= u64x1
:: new ( 0 );
9803 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9804 let r
: u64x1
= transmute ( vceqz_u64 ( transmute ( a
)));
9808 #[simd_test(enable = "neon" )]
9809 unsafe fn test_vceqzq_u64 () {
9810 let a
: u64x2
= u64x2
:: new ( 0 , 0x00 );
9811 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9812 let r
: u64x2
= transmute ( vceqzq_u64 ( transmute ( a
)));
9816 #[simd_test(enable = "neon" )]
9817 unsafe fn test_vceqz_f32 () {
9818 let a
: f32x2
= f32x2
:: new ( 0.0 , 1.2 );
9819 let e
: u32x2
= u32x2
:: new ( 0xFF_FF_FF_FF , 0 );
9820 let r
: u32x2
= transmute ( vceqz_f32 ( transmute ( a
)));
9824 #[simd_test(enable = "neon" )]
9825 unsafe fn test_vceqzq_f32 () {
9826 let a
: f32x4
= f32x4
:: new ( 0.0 , 1.2 , 3.4 , 5.6 );
9827 let e
: u32x4
= u32x4
:: new ( 0xFF_FF_FF_FF , 0 , 0 , 0 );
9828 let r
: u32x4
= transmute ( vceqzq_f32 ( transmute ( a
)));
9832 #[simd_test(enable = "neon" )]
9833 unsafe fn test_vceqz_f64 () {
9835 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9836 let r
: u64x1
= transmute ( vceqz_f64 ( transmute ( a
)));
9840 #[simd_test(enable = "neon" )]
9841 unsafe fn test_vceqzq_f64 () {
9842 let a
: f64x2
= f64x2
:: new ( 0.0 , 1.2 );
9843 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0 );
9844 let r
: u64x2
= transmute ( vceqzq_f64 ( transmute ( a
)));
9848 #[simd_test(enable = "neon" )]
9849 unsafe fn test_vtst_s64 () {
9850 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9851 let b
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9852 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9853 let r
: u64x1
= transmute ( vtst_s64 ( transmute ( a
), transmute ( b
)));
9857 #[simd_test(enable = "neon" )]
9858 unsafe fn test_vtstq_s64 () {
9859 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x00 );
9860 let b
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x00 );
9861 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0 );
9862 let r
: u64x2
= transmute ( vtstq_s64 ( transmute ( a
), transmute ( b
)));
9866 #[simd_test(enable = "neon" )]
9867 unsafe fn test_vtst_p64 () {
9868 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9869 let b
: i64x1
= i64x1
:: new (- 9223372036854775808 );
9870 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9871 let r
: u64x1
= transmute ( vtst_p64 ( transmute ( a
), transmute ( b
)));
9875 #[simd_test(enable = "neon" )]
9876 unsafe fn test_vtstq_p64 () {
9877 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x00 );
9878 let b
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0x00 );
9879 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0 );
9880 let r
: u64x2
= transmute ( vtstq_p64 ( transmute ( a
), transmute ( b
)));
9884 #[simd_test(enable = "neon" )]
9885 unsafe fn test_vtst_u64 () {
9886 let a
: u64x1
= u64x1
:: new ( 0 );
9887 let b
: u64x1
= u64x1
:: new ( 0 );
9888 let e
: u64x1
= u64x1
:: new ( 0 );
9889 let r
: u64x1
= transmute ( vtst_u64 ( transmute ( a
), transmute ( b
)));
9893 #[simd_test(enable = "neon" )]
9894 unsafe fn test_vtstq_u64 () {
9895 let a
: u64x2
= u64x2
:: new ( 0 , 0x00 );
9896 let b
: u64x2
= u64x2
:: new ( 0 , 0x00 );
9897 let e
: u64x2
= u64x2
:: new ( 0 , 0 );
9898 let r
: u64x2
= transmute ( vtstq_u64 ( transmute ( a
), transmute ( b
)));
9902 #[simd_test(enable = "neon" )]
9903 unsafe fn test_vabs_f64 () {
9906 let r
: f64 = transmute ( vabs_f64 ( transmute ( a
)));
9910 #[simd_test(enable = "neon" )]
9911 unsafe fn test_vabsq_f64 () {
9912 let a
: f64x2
= f64x2
:: new (- 0.1 , - 2.2 );
9913 let e
: f64x2
= f64x2
:: new ( 0.1 , 2.2 );
9914 let r
: f64x2
= transmute ( vabsq_f64 ( transmute ( a
)));
9918 #[simd_test(enable = "neon" )]
9919 unsafe fn test_vcgt_s64 () {
9920 let a
: i64x1
= i64x1
:: new ( 1 );
9921 let b
: i64x1
= i64x1
:: new ( 0 );
9922 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9923 let r
: u64x1
= transmute ( vcgt_s64 ( transmute ( a
), transmute ( b
)));
9927 #[simd_test(enable = "neon" )]
9928 unsafe fn test_vcgtq_s64 () {
9929 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
9930 let b
: i64x2
= i64x2
:: new ( 0 , 1 );
9931 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9932 let r
: u64x2
= transmute ( vcgtq_s64 ( transmute ( a
), transmute ( b
)));
9936 #[simd_test(enable = "neon" )]
9937 unsafe fn test_vcgt_u64 () {
9938 let a
: u64x1
= u64x1
:: new ( 1 );
9939 let b
: u64x1
= u64x1
:: new ( 0 );
9940 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9941 let r
: u64x1
= transmute ( vcgt_u64 ( transmute ( a
), transmute ( b
)));
9945 #[simd_test(enable = "neon" )]
9946 unsafe fn test_vcgtq_u64 () {
9947 let a
: u64x2
= u64x2
:: new ( 1 , 2 );
9948 let b
: u64x2
= u64x2
:: new ( 0 , 1 );
9949 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9950 let r
: u64x2
= transmute ( vcgtq_u64 ( transmute ( a
), transmute ( b
)));
9954 #[simd_test(enable = "neon" )]
9955 unsafe fn test_vcgt_f64 () {
9958 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9959 let r
: u64x1
= transmute ( vcgt_f64 ( transmute ( a
), transmute ( b
)));
9963 #[simd_test(enable = "neon" )]
9964 unsafe fn test_vcgtq_f64 () {
9965 let a
: f64x2
= f64x2
:: new ( 1.2 , 2.3 );
9966 let b
: f64x2
= f64x2
:: new ( 0.1 , 1.2 );
9967 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9968 let r
: u64x2
= transmute ( vcgtq_f64 ( transmute ( a
), transmute ( b
)));
9972 #[simd_test(enable = "neon" )]
9973 unsafe fn test_vclt_s64 () {
9974 let a
: i64x1
= i64x1
:: new ( 0 );
9975 let b
: i64x1
= i64x1
:: new ( 1 );
9976 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9977 let r
: u64x1
= transmute ( vclt_s64 ( transmute ( a
), transmute ( b
)));
9981 #[simd_test(enable = "neon" )]
9982 unsafe fn test_vcltq_s64 () {
9983 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
9984 let b
: i64x2
= i64x2
:: new ( 1 , 2 );
9985 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
9986 let r
: u64x2
= transmute ( vcltq_s64 ( transmute ( a
), transmute ( b
)));
9990 #[simd_test(enable = "neon" )]
9991 unsafe fn test_vclt_u64 () {
9992 let a
: u64x1
= u64x1
:: new ( 0 );
9993 let b
: u64x1
= u64x1
:: new ( 1 );
9994 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
9995 let r
: u64x1
= transmute ( vclt_u64 ( transmute ( a
), transmute ( b
)));
9999 #[simd_test(enable = "neon" )]
10000 unsafe fn test_vcltq_u64 () {
10001 let a
: u64x2
= u64x2
:: new ( 0 , 1 );
10002 let b
: u64x2
= u64x2
:: new ( 1 , 2 );
10003 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10004 let r
: u64x2
= transmute ( vcltq_u64 ( transmute ( a
), transmute ( b
)));
10008 #[simd_test(enable = "neon" )]
10009 unsafe fn test_vclt_f64 () {
10012 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10013 let r
: u64x1
= transmute ( vclt_f64 ( transmute ( a
), transmute ( b
)));
10017 #[simd_test(enable = "neon" )]
10018 unsafe fn test_vcltq_f64 () {
10019 let a
: f64x2
= f64x2
:: new ( 0.1 , 1.2 );
10020 let b
: f64x2
= f64x2
:: new ( 1.2 , 2.3 );
10021 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10022 let r
: u64x2
= transmute ( vcltq_f64 ( transmute ( a
), transmute ( b
)));
10026 #[simd_test(enable = "neon" )]
10027 unsafe fn test_vcle_s64 () {
10028 let a
: i64x1
= i64x1
:: new ( 0 );
10029 let b
: i64x1
= i64x1
:: new ( 1 );
10030 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10031 let r
: u64x1
= transmute ( vcle_s64 ( transmute ( a
), transmute ( b
)));
10035 #[simd_test(enable = "neon" )]
10036 unsafe fn test_vcleq_s64 () {
10037 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
10038 let b
: i64x2
= i64x2
:: new ( 1 , 2 );
10039 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10040 let r
: u64x2
= transmute ( vcleq_s64 ( transmute ( a
), transmute ( b
)));
10044 #[simd_test(enable = "neon" )]
10045 unsafe fn test_vcle_u64 () {
10046 let a
: u64x1
= u64x1
:: new ( 0 );
10047 let b
: u64x1
= u64x1
:: new ( 1 );
10048 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10049 let r
: u64x1
= transmute ( vcle_u64 ( transmute ( a
), transmute ( b
)));
10053 #[simd_test(enable = "neon" )]
10054 unsafe fn test_vcleq_u64 () {
10055 let a
: u64x2
= u64x2
:: new ( 0 , 1 );
10056 let b
: u64x2
= u64x2
:: new ( 1 , 2 );
10057 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10058 let r
: u64x2
= transmute ( vcleq_u64 ( transmute ( a
), transmute ( b
)));
10062 #[simd_test(enable = "neon" )]
10063 unsafe fn test_vcle_f64 () {
10066 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10067 let r
: u64x1
= transmute ( vcle_f64 ( transmute ( a
), transmute ( b
)));
10071 #[simd_test(enable = "neon" )]
10072 unsafe fn test_vcleq_f64 () {
10073 let a
: f64x2
= f64x2
:: new ( 0.1 , 1.2 );
10074 let b
: f64x2
= f64x2
:: new ( 1.2 , 2.3 );
10075 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10076 let r
: u64x2
= transmute ( vcleq_f64 ( transmute ( a
), transmute ( b
)));
10080 #[simd_test(enable = "neon" )]
10081 unsafe fn test_vcge_s64 () {
10082 let a
: i64x1
= i64x1
:: new ( 1 );
10083 let b
: i64x1
= i64x1
:: new ( 0 );
10084 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10085 let r
: u64x1
= transmute ( vcge_s64 ( transmute ( a
), transmute ( b
)));
10089 #[simd_test(enable = "neon" )]
10090 unsafe fn test_vcgeq_s64 () {
10091 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
10092 let b
: i64x2
= i64x2
:: new ( 0 , 1 );
10093 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10094 let r
: u64x2
= transmute ( vcgeq_s64 ( transmute ( a
), transmute ( b
)));
10098 #[simd_test(enable = "neon" )]
10099 unsafe fn test_vcge_u64 () {
10100 let a
: u64x1
= u64x1
:: new ( 1 );
10101 let b
: u64x1
= u64x1
:: new ( 0 );
10102 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10103 let r
: u64x1
= transmute ( vcge_u64 ( transmute ( a
), transmute ( b
)));
10107 #[simd_test(enable = "neon" )]
10108 unsafe fn test_vcgeq_u64 () {
10109 let a
: u64x2
= u64x2
:: new ( 1 , 2 );
10110 let b
: u64x2
= u64x2
:: new ( 0 , 1 );
10111 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10112 let r
: u64x2
= transmute ( vcgeq_u64 ( transmute ( a
), transmute ( b
)));
10116 #[simd_test(enable = "neon" )]
10117 unsafe fn test_vcge_f64 () {
10120 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10121 let r
: u64x1
= transmute ( vcge_f64 ( transmute ( a
), transmute ( b
)));
10125 #[simd_test(enable = "neon" )]
10126 unsafe fn test_vcgeq_f64 () {
10127 let a
: f64x2
= f64x2
:: new ( 1.2 , 2.3 );
10128 let b
: f64x2
= f64x2
:: new ( 0.1 , 1.2 );
10129 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10130 let r
: u64x2
= transmute ( vcgeq_f64 ( transmute ( a
), transmute ( b
)));
10134 #[simd_test(enable = "neon" )]
10135 unsafe fn test_vcgez_s8 () {
10136 let a
: i8x8
= i8x8
:: new (- 128 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 );
10137 let e
: u8x8
= u8x8
:: new ( 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF );
10138 let r
: u8x8
= transmute ( vcgez_s8 ( transmute ( a
)));
10142 #[simd_test(enable = "neon" )]
10143 unsafe fn test_vcgezq_s8 () {
10144 let a
: i8x16
= i8x16
:: new (- 128 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0A , 0x0B , 0x0C , 0x7F );
10145 let e
: u8x16
= u8x16
:: new ( 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF );
10146 let r
: u8x16
= transmute ( vcgezq_s8 ( transmute ( a
)));
10150 #[simd_test(enable = "neon" )]
10151 unsafe fn test_vcgez_s16 () {
10152 let a
: i16x4
= i16x4
:: new (- 32768 , - 1 , 0x00 , 0x01 );
10153 let e
: u16x4
= u16x4
:: new ( 0 , 0 , 0xFF_FF , 0xFF_FF );
10154 let r
: u16x4
= transmute ( vcgez_s16 ( transmute ( a
)));
10158 #[simd_test(enable = "neon" )]
10159 unsafe fn test_vcgezq_s16 () {
10160 let a
: i16x8
= i16x8
:: new (- 32768 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 );
10161 let e
: u16x8
= u16x8
:: new ( 0 , 0 , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF );
10162 let r
: u16x8
= transmute ( vcgezq_s16 ( transmute ( a
)));
10166 #[simd_test(enable = "neon" )]
10167 unsafe fn test_vcgez_s32 () {
10168 let a
: i32x2
= i32x2
:: new (- 2147483648 , - 1 );
10169 let e
: u32x2
= u32x2
:: new ( 0 , 0 );
10170 let r
: u32x2
= transmute ( vcgez_s32 ( transmute ( a
)));
10174 #[simd_test(enable = "neon" )]
10175 unsafe fn test_vcgezq_s32 () {
10176 let a
: i32x4
= i32x4
:: new (- 2147483648 , - 1 , 0x00 , 0x01 );
10177 let e
: u32x4
= u32x4
:: new ( 0 , 0 , 0xFF_FF_FF_FF , 0xFF_FF_FF_FF );
10178 let r
: u32x4
= transmute ( vcgezq_s32 ( transmute ( a
)));
10182 #[simd_test(enable = "neon" )]
10183 unsafe fn test_vcgez_s64 () {
10184 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
10185 let e
: u64x1
= u64x1
:: new ( 0 );
10186 let r
: u64x1
= transmute ( vcgez_s64 ( transmute ( a
)));
10190 #[simd_test(enable = "neon" )]
10191 unsafe fn test_vcgezq_s64 () {
10192 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , - 1 );
10193 let e
: u64x2
= u64x2
:: new ( 0 , 0 );
10194 let r
: u64x2
= transmute ( vcgezq_s64 ( transmute ( a
)));
10198 #[simd_test(enable = "neon" )]
10199 unsafe fn test_vcgez_f32 () {
10200 let a
: f32x2
= f32x2
:: new (- 1.2 , 0.0 );
10201 let e
: u32x2
= u32x2
:: new ( 0 , 0xFF_FF_FF_FF );
10202 let r
: u32x2
= transmute ( vcgez_f32 ( transmute ( a
)));
10206 #[simd_test(enable = "neon" )]
10207 unsafe fn test_vcgezq_f32 () {
10208 let a
: f32x4
= f32x4
:: new (- 1.2 , 0.0 , 1.2 , 2.3 );
10209 let e
: u32x4
= u32x4
:: new ( 0 , 0xFF_FF_FF_FF , 0xFF_FF_FF_FF , 0xFF_FF_FF_FF );
10210 let r
: u32x4
= transmute ( vcgezq_f32 ( transmute ( a
)));
10214 #[simd_test(enable = "neon" )]
10215 unsafe fn test_vcgez_f64 () {
10217 let e
: u64x1
= u64x1
:: new ( 0 );
10218 let r
: u64x1
= transmute ( vcgez_f64 ( transmute ( a
)));
10222 #[simd_test(enable = "neon" )]
10223 unsafe fn test_vcgezq_f64 () {
10224 let a
: f64x2
= f64x2
:: new (- 1.2 , 0.0 );
10225 let e
: u64x2
= u64x2
:: new ( 0 , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10226 let r
: u64x2
= transmute ( vcgezq_f64 ( transmute ( a
)));
10230 #[simd_test(enable = "neon" )]
10231 unsafe fn test_vcgtz_s8 () {
10232 let a
: i8x8
= i8x8
:: new (- 128 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 );
10233 let e
: u8x8
= u8x8
:: new ( 0 , 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF );
10234 let r
: u8x8
= transmute ( vcgtz_s8 ( transmute ( a
)));
10238 #[simd_test(enable = "neon" )]
10239 unsafe fn test_vcgtzq_s8 () {
10240 let a
: i8x16
= i8x16
:: new (- 128 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0A , 0x0B , 0x0C , 0x7F );
10241 let e
: u8x16
= u8x16
:: new ( 0 , 0 , 0 , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF );
10242 let r
: u8x16
= transmute ( vcgtzq_s8 ( transmute ( a
)));
10246 #[simd_test(enable = "neon" )]
10247 unsafe fn test_vcgtz_s16 () {
10248 let a
: i16x4
= i16x4
:: new (- 32768 , - 1 , 0x00 , 0x01 );
10249 let e
: u16x4
= u16x4
:: new ( 0 , 0 , 0 , 0xFF_FF );
10250 let r
: u16x4
= transmute ( vcgtz_s16 ( transmute ( a
)));
10254 #[simd_test(enable = "neon" )]
10255 unsafe fn test_vcgtzq_s16 () {
10256 let a
: i16x8
= i16x8
:: new (- 32768 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 );
10257 let e
: u16x8
= u16x8
:: new ( 0 , 0 , 0 , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF );
10258 let r
: u16x8
= transmute ( vcgtzq_s16 ( transmute ( a
)));
10262 #[simd_test(enable = "neon" )]
10263 unsafe fn test_vcgtz_s32 () {
10264 let a
: i32x2
= i32x2
:: new (- 2147483648 , - 1 );
10265 let e
: u32x2
= u32x2
:: new ( 0 , 0 );
10266 let r
: u32x2
= transmute ( vcgtz_s32 ( transmute ( a
)));
10270 #[simd_test(enable = "neon" )]
10271 unsafe fn test_vcgtzq_s32 () {
10272 let a
: i32x4
= i32x4
:: new (- 2147483648 , - 1 , 0x00 , 0x01 );
10273 let e
: u32x4
= u32x4
:: new ( 0 , 0 , 0 , 0xFF_FF_FF_FF );
10274 let r
: u32x4
= transmute ( vcgtzq_s32 ( transmute ( a
)));
10278 #[simd_test(enable = "neon" )]
10279 unsafe fn test_vcgtz_s64 () {
10280 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
10281 let e
: u64x1
= u64x1
:: new ( 0 );
10282 let r
: u64x1
= transmute ( vcgtz_s64 ( transmute ( a
)));
10286 #[simd_test(enable = "neon" )]
10287 unsafe fn test_vcgtzq_s64 () {
10288 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , - 1 );
10289 let e
: u64x2
= u64x2
:: new ( 0 , 0 );
10290 let r
: u64x2
= transmute ( vcgtzq_s64 ( transmute ( a
)));
10294 #[simd_test(enable = "neon" )]
10295 unsafe fn test_vcgtz_f32 () {
10296 let a
: f32x2
= f32x2
:: new (- 1.2 , 0.0 );
10297 let e
: u32x2
= u32x2
:: new ( 0 , 0 );
10298 let r
: u32x2
= transmute ( vcgtz_f32 ( transmute ( a
)));
10302 #[simd_test(enable = "neon" )]
10303 unsafe fn test_vcgtzq_f32 () {
10304 let a
: f32x4
= f32x4
:: new (- 1.2 , 0.0 , 1.2 , 2.3 );
10305 let e
: u32x4
= u32x4
:: new ( 0 , 0 , 0xFF_FF_FF_FF , 0xFF_FF_FF_FF );
10306 let r
: u32x4
= transmute ( vcgtzq_f32 ( transmute ( a
)));
10310 #[simd_test(enable = "neon" )]
10311 unsafe fn test_vcgtz_f64 () {
10313 let e
: u64x1
= u64x1
:: new ( 0 );
10314 let r
: u64x1
= transmute ( vcgtz_f64 ( transmute ( a
)));
10318 #[simd_test(enable = "neon" )]
10319 unsafe fn test_vcgtzq_f64 () {
10320 let a
: f64x2
= f64x2
:: new (- 1.2 , 0.0 );
10321 let e
: u64x2
= u64x2
:: new ( 0 , 0 );
10322 let r
: u64x2
= transmute ( vcgtzq_f64 ( transmute ( a
)));
10326 #[simd_test(enable = "neon" )]
10327 unsafe fn test_vclez_s8 () {
10328 let a
: i8x8
= i8x8
:: new (- 128 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 );
10329 let e
: u8x8
= u8x8
:: new ( 0xFF , 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 );
10330 let r
: u8x8
= transmute ( vclez_s8 ( transmute ( a
)));
10334 #[simd_test(enable = "neon" )]
10335 unsafe fn test_vclezq_s8 () {
10336 let a
: i8x16
= i8x16
:: new (- 128 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0A , 0x0B , 0x0C , 0x7F );
10337 let e
: u8x16
= u8x16
:: new ( 0xFF , 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
10338 let r
: u8x16
= transmute ( vclezq_s8 ( transmute ( a
)));
10342 #[simd_test(enable = "neon" )]
10343 unsafe fn test_vclez_s16 () {
10344 let a
: i16x4
= i16x4
:: new (- 32768 , - 1 , 0x00 , 0x01 );
10345 let e
: u16x4
= u16x4
:: new ( 0xFF_FF , 0xFF_FF , 0xFF_FF , 0 );
10346 let r
: u16x4
= transmute ( vclez_s16 ( transmute ( a
)));
10350 #[simd_test(enable = "neon" )]
10351 unsafe fn test_vclezq_s16 () {
10352 let a
: i16x8
= i16x8
:: new (- 32768 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 );
10353 let e
: u16x8
= u16x8
:: new ( 0xFF_FF , 0xFF_FF , 0xFF_FF , 0 , 0 , 0 , 0 , 0 );
10354 let r
: u16x8
= transmute ( vclezq_s16 ( transmute ( a
)));
10358 #[simd_test(enable = "neon" )]
10359 unsafe fn test_vclez_s32 () {
10360 let a
: i32x2
= i32x2
:: new (- 2147483648 , - 1 );
10361 let e
: u32x2
= u32x2
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF );
10362 let r
: u32x2
= transmute ( vclez_s32 ( transmute ( a
)));
10366 #[simd_test(enable = "neon" )]
10367 unsafe fn test_vclezq_s32 () {
10368 let a
: i32x4
= i32x4
:: new (- 2147483648 , - 1 , 0x00 , 0x01 );
10369 let e
: u32x4
= u32x4
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF , 0xFF_FF_FF_FF , 0 );
10370 let r
: u32x4
= transmute ( vclezq_s32 ( transmute ( a
)));
10374 #[simd_test(enable = "neon" )]
10375 unsafe fn test_vclez_s64 () {
10376 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
10377 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10378 let r
: u64x1
= transmute ( vclez_s64 ( transmute ( a
)));
10382 #[simd_test(enable = "neon" )]
10383 unsafe fn test_vclezq_s64 () {
10384 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , - 1 );
10385 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10386 let r
: u64x2
= transmute ( vclezq_s64 ( transmute ( a
)));
10390 #[simd_test(enable = "neon" )]
10391 unsafe fn test_vclez_f32 () {
10392 let a
: f32x2
= f32x2
:: new (- 1.2 , 0.0 );
10393 let e
: u32x2
= u32x2
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF );
10394 let r
: u32x2
= transmute ( vclez_f32 ( transmute ( a
)));
10398 #[simd_test(enable = "neon" )]
10399 unsafe fn test_vclezq_f32 () {
10400 let a
: f32x4
= f32x4
:: new (- 1.2 , 0.0 , 1.2 , 2.3 );
10401 let e
: u32x4
= u32x4
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF , 0 , 0 );
10402 let r
: u32x4
= transmute ( vclezq_f32 ( transmute ( a
)));
10406 #[simd_test(enable = "neon" )]
10407 unsafe fn test_vclez_f64 () {
10409 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10410 let r
: u64x1
= transmute ( vclez_f64 ( transmute ( a
)));
10414 #[simd_test(enable = "neon" )]
10415 unsafe fn test_vclezq_f64 () {
10416 let a
: f64x2
= f64x2
:: new (- 1.2 , 0.0 );
10417 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10418 let r
: u64x2
= transmute ( vclezq_f64 ( transmute ( a
)));
10422 #[simd_test(enable = "neon" )]
10423 unsafe fn test_vcltz_s8 () {
10424 let a
: i8x8
= i8x8
:: new (- 128 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 );
10425 let e
: u8x8
= u8x8
:: new ( 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 );
10426 let r
: u8x8
= transmute ( vcltz_s8 ( transmute ( a
)));
10430 #[simd_test(enable = "neon" )]
10431 unsafe fn test_vcltzq_s8 () {
10432 let a
: i8x16
= i8x16
:: new (- 128 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0A , 0x0B , 0x0C , 0x7F );
10433 let e
: u8x16
= u8x16
:: new ( 0xFF , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
10434 let r
: u8x16
= transmute ( vcltzq_s8 ( transmute ( a
)));
10438 #[simd_test(enable = "neon" )]
10439 unsafe fn test_vcltz_s16 () {
10440 let a
: i16x4
= i16x4
:: new (- 32768 , - 1 , 0x00 , 0x01 );
10441 let e
: u16x4
= u16x4
:: new ( 0xFF_FF , 0xFF_FF , 0 , 0 );
10442 let r
: u16x4
= transmute ( vcltz_s16 ( transmute ( a
)));
10446 #[simd_test(enable = "neon" )]
10447 unsafe fn test_vcltzq_s16 () {
10448 let a
: i16x8
= i16x8
:: new (- 32768 , - 1 , 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 );
10449 let e
: u16x8
= u16x8
:: new ( 0xFF_FF , 0xFF_FF , 0 , 0 , 0 , 0 , 0 , 0 );
10450 let r
: u16x8
= transmute ( vcltzq_s16 ( transmute ( a
)));
10454 #[simd_test(enable = "neon" )]
10455 unsafe fn test_vcltz_s32 () {
10456 let a
: i32x2
= i32x2
:: new (- 2147483648 , - 1 );
10457 let e
: u32x2
= u32x2
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF );
10458 let r
: u32x2
= transmute ( vcltz_s32 ( transmute ( a
)));
10462 #[simd_test(enable = "neon" )]
10463 unsafe fn test_vcltzq_s32 () {
10464 let a
: i32x4
= i32x4
:: new (- 2147483648 , - 1 , 0x00 , 0x01 );
10465 let e
: u32x4
= u32x4
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF , 0 , 0 );
10466 let r
: u32x4
= transmute ( vcltzq_s32 ( transmute ( a
)));
10470 #[simd_test(enable = "neon" )]
10471 unsafe fn test_vcltz_s64 () {
10472 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
10473 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10474 let r
: u64x1
= transmute ( vcltz_s64 ( transmute ( a
)));
10478 #[simd_test(enable = "neon" )]
10479 unsafe fn test_vcltzq_s64 () {
10480 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , - 1 );
10481 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10482 let r
: u64x2
= transmute ( vcltzq_s64 ( transmute ( a
)));
10486 #[simd_test(enable = "neon" )]
10487 unsafe fn test_vcltz_f32 () {
10488 let a
: f32x2
= f32x2
:: new (- 1.2 , 0.0 );
10489 let e
: u32x2
= u32x2
:: new ( 0xFF_FF_FF_FF , 0 );
10490 let r
: u32x2
= transmute ( vcltz_f32 ( transmute ( a
)));
10494 #[simd_test(enable = "neon" )]
10495 unsafe fn test_vcltzq_f32 () {
10496 let a
: f32x4
= f32x4
:: new (- 1.2 , 0.0 , 1.2 , 2.3 );
10497 let e
: u32x4
= u32x4
:: new ( 0xFF_FF_FF_FF , 0 , 0 , 0 );
10498 let r
: u32x4
= transmute ( vcltzq_f32 ( transmute ( a
)));
10502 #[simd_test(enable = "neon" )]
10503 unsafe fn test_vcltz_f64 () {
10505 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10506 let r
: u64x1
= transmute ( vcltz_f64 ( transmute ( a
)));
10510 #[simd_test(enable = "neon" )]
10511 unsafe fn test_vcltzq_f64 () {
10512 let a
: f64x2
= f64x2
:: new (- 1.2 , 0.0 );
10513 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0 );
10514 let r
: u64x2
= transmute ( vcltzq_f64 ( transmute ( a
)));
10518 #[simd_test(enable = "neon" )]
10519 unsafe fn test_vcagt_f64 () {
10522 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10523 let r
: u64x1
= transmute ( vcagt_f64 ( transmute ( a
), transmute ( b
)));
10527 #[simd_test(enable = "neon" )]
10528 unsafe fn test_vcagtq_f64 () {
10529 let a
: f64x2
= f64x2
:: new (- 1.2 , 0.0 );
10530 let b
: f64x2
= f64x2
:: new (- 1.1 , 0.0 );
10531 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0 );
10532 let r
: u64x2
= transmute ( vcagtq_f64 ( transmute ( a
), transmute ( b
)));
10536 #[simd_test(enable = "neon" )]
10537 unsafe fn test_vcage_f64 () {
10540 let e
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10541 let r
: u64x1
= transmute ( vcage_f64 ( transmute ( a
), transmute ( b
)));
10545 #[simd_test(enable = "neon" )]
10546 unsafe fn test_vcageq_f64 () {
10547 let a
: f64x2
= f64x2
:: new (- 1.2 , 0.0 );
10548 let b
: f64x2
= f64x2
:: new (- 1.1 , 0.0 );
10549 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10550 let r
: u64x2
= transmute ( vcageq_f64 ( transmute ( a
), transmute ( b
)));
10554 #[simd_test(enable = "neon" )]
10555 unsafe fn test_vcalt_f64 () {
10558 let e
: u64x1
= u64x1
:: new ( 0 );
10559 let r
: u64x1
= transmute ( vcalt_f64 ( transmute ( a
), transmute ( b
)));
10563 #[simd_test(enable = "neon" )]
10564 unsafe fn test_vcaltq_f64 () {
10565 let a
: f64x2
= f64x2
:: new (- 1.2 , 0.0 );
10566 let b
: f64x2
= f64x2
:: new (- 1.1 , 0.0 );
10567 let e
: u64x2
= u64x2
:: new ( 0 , 0 );
10568 let r
: u64x2
= transmute ( vcaltq_f64 ( transmute ( a
), transmute ( b
)));
10572 #[simd_test(enable = "neon" )]
10573 unsafe fn test_vcale_f64 () {
10576 let e
: u64x1
= u64x1
:: new ( 0 );
10577 let r
: u64x1
= transmute ( vcale_f64 ( transmute ( a
), transmute ( b
)));
10581 #[simd_test(enable = "neon" )]
10582 unsafe fn test_vcaleq_f64 () {
10583 let a
: f64x2
= f64x2
:: new (- 1.2 , 0.0 );
10584 let b
: f64x2
= f64x2
:: new (- 1.1 , 0.0 );
10585 let e
: u64x2
= u64x2
:: new ( 0 , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10586 let r
: u64x2
= transmute ( vcaleq_f64 ( transmute ( a
), transmute ( b
)));
10590 #[simd_test(enable = "neon" )]
10591 unsafe fn test_vcopy_lane_s8 () {
10592 let a
: i8x8
= i8x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10593 let b
: i8x8
= i8x8
:: new ( 0 , 0x7F , 0 , 0 , 0 , 0 , 0 , 0 );
10594 let e
: i8x8
= i8x8
:: new ( 0x7F , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10595 let r
: i8x8
= transmute ( vcopy_lane_s8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10599 #[simd_test(enable = "neon" )]
10600 unsafe fn test_vcopyq_laneq_s8 () {
10601 let a
: i8x16
= i8x16
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10602 let b
: i8x16
= i8x16
:: new ( 0 , 0x7F , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
10603 let e
: i8x16
= i8x16
:: new ( 0x7F , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10604 let r
: i8x16
= transmute ( vcopyq_laneq_s8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10608 #[simd_test(enable = "neon" )]
10609 unsafe fn test_vcopy_lane_s16 () {
10610 let a
: i16x4
= i16x4
:: new ( 1 , 2 , 3 , 4 );
10611 let b
: i16x4
= i16x4
:: new ( 0 , 0x7F_FF , 0 , 0 );
10612 let e
: i16x4
= i16x4
:: new ( 0x7F_FF , 2 , 3 , 4 );
10613 let r
: i16x4
= transmute ( vcopy_lane_s16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10617 #[simd_test(enable = "neon" )]
10618 unsafe fn test_vcopyq_laneq_s16 () {
10619 let a
: i16x8
= i16x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10620 let b
: i16x8
= i16x8
:: new ( 0 , 0x7F_FF , 0 , 0 , 0 , 0 , 0 , 0 );
10621 let e
: i16x8
= i16x8
:: new ( 0x7F_FF , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10622 let r
: i16x8
= transmute ( vcopyq_laneq_s16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10626 #[simd_test(enable = "neon" )]
10627 unsafe fn test_vcopy_lane_s32 () {
10628 let a
: i32x2
= i32x2
:: new ( 1 , 2 );
10629 let b
: i32x2
= i32x2
:: new ( 0 , 0x7F_FF_FF_FF );
10630 let e
: i32x2
= i32x2
:: new ( 0x7F_FF_FF_FF , 2 );
10631 let r
: i32x2
= transmute ( vcopy_lane_s32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10635 #[simd_test(enable = "neon" )]
10636 unsafe fn test_vcopyq_laneq_s32 () {
10637 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 3 , 4 );
10638 let b
: i32x4
= i32x4
:: new ( 0 , 0x7F_FF_FF_FF , 0 , 0 );
10639 let e
: i32x4
= i32x4
:: new ( 0x7F_FF_FF_FF , 2 , 3 , 4 );
10640 let r
: i32x4
= transmute ( vcopyq_laneq_s32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10644 #[simd_test(enable = "neon" )]
10645 unsafe fn test_vcopyq_laneq_s64 () {
10646 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
10647 let b
: i64x2
= i64x2
:: new ( 0 , 0x7F_FF_FF_FF_FF_FF_FF_FF );
10648 let e
: i64x2
= i64x2
:: new ( 0x7F_FF_FF_FF_FF_FF_FF_FF , 2 );
10649 let r
: i64x2
= transmute ( vcopyq_laneq_s64
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10653 #[simd_test(enable = "neon" )]
10654 unsafe fn test_vcopy_lane_u8 () {
10655 let a
: u8x8
= u8x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10656 let b
: u8x8
= u8x8
:: new ( 0 , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 );
10657 let e
: u8x8
= u8x8
:: new ( 0xFF , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10658 let r
: u8x8
= transmute ( vcopy_lane_u8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10662 #[simd_test(enable = "neon" )]
10663 unsafe fn test_vcopyq_laneq_u8 () {
10664 let a
: u8x16
= u8x16
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10665 let b
: u8x16
= u8x16
:: new ( 0 , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
10666 let e
: u8x16
= u8x16
:: new ( 0xFF , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10667 let r
: u8x16
= transmute ( vcopyq_laneq_u8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10671 #[simd_test(enable = "neon" )]
10672 unsafe fn test_vcopy_lane_u16 () {
10673 let a
: u16x4
= u16x4
:: new ( 1 , 2 , 3 , 4 );
10674 let b
: u16x4
= u16x4
:: new ( 0 , 0xFF_FF , 0 , 0 );
10675 let e
: u16x4
= u16x4
:: new ( 0xFF_FF , 2 , 3 , 4 );
10676 let r
: u16x4
= transmute ( vcopy_lane_u16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10680 #[simd_test(enable = "neon" )]
10681 unsafe fn test_vcopyq_laneq_u16 () {
10682 let a
: u16x8
= u16x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10683 let b
: u16x8
= u16x8
:: new ( 0 , 0xFF_FF , 0 , 0 , 0 , 0 , 0 , 0 );
10684 let e
: u16x8
= u16x8
:: new ( 0xFF_FF , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10685 let r
: u16x8
= transmute ( vcopyq_laneq_u16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10689 #[simd_test(enable = "neon" )]
10690 unsafe fn test_vcopy_lane_u32 () {
10691 let a
: u32x2
= u32x2
:: new ( 1 , 2 );
10692 let b
: u32x2
= u32x2
:: new ( 0 , 0xFF_FF_FF_FF );
10693 let e
: u32x2
= u32x2
:: new ( 0xFF_FF_FF_FF , 2 );
10694 let r
: u32x2
= transmute ( vcopy_lane_u32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10698 #[simd_test(enable = "neon" )]
10699 unsafe fn test_vcopyq_laneq_u32 () {
10700 let a
: u32x4
= u32x4
:: new ( 1 , 2 , 3 , 4 );
10701 let b
: u32x4
= u32x4
:: new ( 0 , 0xFF_FF_FF_FF , 0 , 0 );
10702 let e
: u32x4
= u32x4
:: new ( 0xFF_FF_FF_FF , 2 , 3 , 4 );
10703 let r
: u32x4
= transmute ( vcopyq_laneq_u32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10707 #[simd_test(enable = "neon" )]
10708 unsafe fn test_vcopyq_laneq_u64 () {
10709 let a
: u64x2
= u64x2
:: new ( 1 , 2 );
10710 let b
: u64x2
= u64x2
:: new ( 0 , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10711 let e
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 2 );
10712 let r
: u64x2
= transmute ( vcopyq_laneq_u64
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10716 #[simd_test(enable = "neon" )]
10717 unsafe fn test_vcopy_lane_p8 () {
10718 let a
: i8x8
= i8x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10719 let b
: i8x8
= i8x8
:: new ( 0 , 0x7F , 0 , 0 , 0 , 0 , 0 , 0 );
10720 let e
: i8x8
= i8x8
:: new ( 0x7F , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10721 let r
: i8x8
= transmute ( vcopy_lane_p8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10725 #[simd_test(enable = "neon" )]
10726 unsafe fn test_vcopyq_laneq_p8 () {
10727 let a
: i8x16
= i8x16
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10728 let b
: i8x16
= i8x16
:: new ( 0 , 0x7F , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
10729 let e
: i8x16
= i8x16
:: new ( 0x7F , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10730 let r
: i8x16
= transmute ( vcopyq_laneq_p8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10734 #[simd_test(enable = "neon" )]
10735 unsafe fn test_vcopy_lane_p16 () {
10736 let a
: i16x4
= i16x4
:: new ( 1 , 2 , 3 , 4 );
10737 let b
: i16x4
= i16x4
:: new ( 0 , 0x7F_FF , 0 , 0 );
10738 let e
: i16x4
= i16x4
:: new ( 0x7F_FF , 2 , 3 , 4 );
10739 let r
: i16x4
= transmute ( vcopy_lane_p16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10743 #[simd_test(enable = "neon" )]
10744 unsafe fn test_vcopyq_laneq_p16 () {
10745 let a
: i16x8
= i16x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10746 let b
: i16x8
= i16x8
:: new ( 0 , 0x7F_FF , 0 , 0 , 0 , 0 , 0 , 0 );
10747 let e
: i16x8
= i16x8
:: new ( 0x7F_FF , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10748 let r
: i16x8
= transmute ( vcopyq_laneq_p16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10752 #[simd_test(enable = "neon" )]
10753 unsafe fn test_vcopyq_laneq_p64 () {
10754 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
10755 let b
: i64x2
= i64x2
:: new ( 0 , 0x7F_FF_FF_FF_FF_FF_FF_FF );
10756 let e
: i64x2
= i64x2
:: new ( 0x7F_FF_FF_FF_FF_FF_FF_FF , 2 );
10757 let r
: i64x2
= transmute ( vcopyq_laneq_p64
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10761 #[simd_test(enable = "neon" )]
10762 unsafe fn test_vcopy_lane_f32 () {
10763 let a
: f32x2
= f32x2
:: new ( 1 ., 2 .);
10764 let b
: f32x2
= f32x2
:: new ( 0 ., 0.5 );
10765 let e
: f32x2
= f32x2
:: new ( 0.5 , 2 .);
10766 let r
: f32x2
= transmute ( vcopy_lane_f32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10770 #[simd_test(enable = "neon" )]
10771 unsafe fn test_vcopyq_laneq_f32 () {
10772 let a
: f32x4
= f32x4
:: new ( 1 ., 2 ., 3 ., 4 .);
10773 let b
: f32x4
= f32x4
:: new ( 0 ., 0.5 , 0 ., 0 .);
10774 let e
: f32x4
= f32x4
:: new ( 0.5 , 2 ., 3 ., 4 .);
10775 let r
: f32x4
= transmute ( vcopyq_laneq_f32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10779 #[simd_test(enable = "neon" )]
10780 unsafe fn test_vcopyq_laneq_f64 () {
10781 let a
: f64x2
= f64x2
:: new ( 1 ., 2 .);
10782 let b
: f64x2
= f64x2
:: new ( 0 ., 0.5 );
10783 let e
: f64x2
= f64x2
:: new ( 0.5 , 2 .);
10784 let r
: f64x2
= transmute ( vcopyq_laneq_f64
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10788 #[simd_test(enable = "neon" )]
10789 unsafe fn test_vcopy_laneq_s8 () {
10790 let a
: i8x8
= i8x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10791 let b
: i8x16
= i8x16
:: new ( 0 , 0x7F , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
10792 let e
: i8x8
= i8x8
:: new ( 0x7F , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10793 let r
: i8x8
= transmute ( vcopy_laneq_s8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10797 #[simd_test(enable = "neon" )]
10798 unsafe fn test_vcopy_laneq_s16 () {
10799 let a
: i16x4
= i16x4
:: new ( 1 , 2 , 3 , 4 );
10800 let b
: i16x8
= i16x8
:: new ( 0 , 0x7F_FF , 0 , 0 , 0 , 0 , 0 , 0 );
10801 let e
: i16x4
= i16x4
:: new ( 0x7F_FF , 2 , 3 , 4 );
10802 let r
: i16x4
= transmute ( vcopy_laneq_s16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10806 #[simd_test(enable = "neon" )]
10807 unsafe fn test_vcopy_laneq_s32 () {
10808 let a
: i32x2
= i32x2
:: new ( 1 , 2 );
10809 let b
: i32x4
= i32x4
:: new ( 0 , 0x7F_FF_FF_FF , 0 , 0 );
10810 let e
: i32x2
= i32x2
:: new ( 0x7F_FF_FF_FF , 2 );
10811 let r
: i32x2
= transmute ( vcopy_laneq_s32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10815 #[simd_test(enable = "neon" )]
10816 unsafe fn test_vcopy_laneq_u8 () {
10817 let a
: u8x8
= u8x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10818 let b
: u8x16
= u8x16
:: new ( 0 , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
10819 let e
: u8x8
= u8x8
:: new ( 0xFF , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10820 let r
: u8x8
= transmute ( vcopy_laneq_u8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10824 #[simd_test(enable = "neon" )]
10825 unsafe fn test_vcopy_laneq_u16 () {
10826 let a
: u16x4
= u16x4
:: new ( 1 , 2 , 3 , 4 );
10827 let b
: u16x8
= u16x8
:: new ( 0 , 0xFF_FF , 0 , 0 , 0 , 0 , 0 , 0 );
10828 let e
: u16x4
= u16x4
:: new ( 0xFF_FF , 2 , 3 , 4 );
10829 let r
: u16x4
= transmute ( vcopy_laneq_u16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10833 #[simd_test(enable = "neon" )]
10834 unsafe fn test_vcopy_laneq_u32 () {
10835 let a
: u32x2
= u32x2
:: new ( 1 , 2 );
10836 let b
: u32x4
= u32x4
:: new ( 0 , 0xFF_FF_FF_FF , 0 , 0 );
10837 let e
: u32x2
= u32x2
:: new ( 0xFF_FF_FF_FF , 2 );
10838 let r
: u32x2
= transmute ( vcopy_laneq_u32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10842 #[simd_test(enable = "neon" )]
10843 unsafe fn test_vcopy_laneq_p8 () {
10844 let a
: i8x8
= i8x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10845 let b
: i8x16
= i8x16
:: new ( 0 , 0x7F , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
10846 let e
: i8x8
= i8x8
:: new ( 0x7F , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10847 let r
: i8x8
= transmute ( vcopy_laneq_p8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10851 #[simd_test(enable = "neon" )]
10852 unsafe fn test_vcopy_laneq_p16 () {
10853 let a
: i16x4
= i16x4
:: new ( 1 , 2 , 3 , 4 );
10854 let b
: i16x8
= i16x8
:: new ( 0 , 0x7F_FF , 0 , 0 , 0 , 0 , 0 , 0 );
10855 let e
: i16x4
= i16x4
:: new ( 0x7F_FF , 2 , 3 , 4 );
10856 let r
: i16x4
= transmute ( vcopy_laneq_p16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10860 #[simd_test(enable = "neon" )]
10861 unsafe fn test_vcopy_laneq_f32 () {
10862 let a
: f32x2
= f32x2
:: new ( 1 ., 2 .);
10863 let b
: f32x4
= f32x4
:: new ( 0 ., 0.5 , 0 ., 0 .);
10864 let e
: f32x2
= f32x2
:: new ( 0.5 , 2 .);
10865 let r
: f32x2
= transmute ( vcopy_laneq_f32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10869 #[simd_test(enable = "neon" )]
10870 unsafe fn test_vcopyq_lane_s8 () {
10871 let a
: i8x16
= i8x16
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10872 let b
: i8x8
= i8x8
:: new ( 0 , 0x7F , 0 , 0 , 0 , 0 , 0 , 0 );
10873 let e
: i8x16
= i8x16
:: new ( 0x7F , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10874 let r
: i8x16
= transmute ( vcopyq_lane_s8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10878 #[simd_test(enable = "neon" )]
10879 unsafe fn test_vcopyq_lane_s16 () {
10880 let a
: i16x8
= i16x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10881 let b
: i16x4
= i16x4
:: new ( 0 , 0x7F_FF , 0 , 0 );
10882 let e
: i16x8
= i16x8
:: new ( 0x7F_FF , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10883 let r
: i16x8
= transmute ( vcopyq_lane_s16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10887 #[simd_test(enable = "neon" )]
10888 unsafe fn test_vcopyq_lane_s32 () {
10889 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 3 , 4 );
10890 let b
: i32x2
= i32x2
:: new ( 0 , 0x7F_FF_FF_FF );
10891 let e
: i32x4
= i32x4
:: new ( 0x7F_FF_FF_FF , 2 , 3 , 4 );
10892 let r
: i32x4
= transmute ( vcopyq_lane_s32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10896 #[simd_test(enable = "neon" )]
10897 unsafe fn test_vcopyq_lane_u8 () {
10898 let a
: u8x16
= u8x16
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10899 let b
: u8x8
= u8x8
:: new ( 0 , 0xFF , 0 , 0 , 0 , 0 , 0 , 0 );
10900 let e
: u8x16
= u8x16
:: new ( 0xFF , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10901 let r
: u8x16
= transmute ( vcopyq_lane_u8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10905 #[simd_test(enable = "neon" )]
10906 unsafe fn test_vcopyq_lane_u16 () {
10907 let a
: u16x8
= u16x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10908 let b
: u16x4
= u16x4
:: new ( 0 , 0xFF_FF , 0 , 0 );
10909 let e
: u16x8
= u16x8
:: new ( 0xFF_FF , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10910 let r
: u16x8
= transmute ( vcopyq_lane_u16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10914 #[simd_test(enable = "neon" )]
10915 unsafe fn test_vcopyq_lane_u32 () {
10916 let a
: u32x4
= u32x4
:: new ( 1 , 2 , 3 , 4 );
10917 let b
: u32x2
= u32x2
:: new ( 0 , 0xFF_FF_FF_FF );
10918 let e
: u32x4
= u32x4
:: new ( 0xFF_FF_FF_FF , 2 , 3 , 4 );
10919 let r
: u32x4
= transmute ( vcopyq_lane_u32
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10923 #[simd_test(enable = "neon" )]
10924 unsafe fn test_vcopyq_lane_p8 () {
10925 let a
: i8x16
= i8x16
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10926 let b
: i8x8
= i8x8
:: new ( 0 , 0x7F , 0 , 0 , 0 , 0 , 0 , 0 );
10927 let e
: i8x16
= i8x16
:: new ( 0x7F , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
10928 let r
: i8x16
= transmute ( vcopyq_lane_p8
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10932 #[simd_test(enable = "neon" )]
10933 unsafe fn test_vcopyq_lane_p16 () {
10934 let a
: i16x8
= i16x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10935 let b
: i16x4
= i16x4
:: new ( 0 , 0x7F_FF , 0 , 0 );
10936 let e
: i16x8
= i16x8
:: new ( 0x7F_FF , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
10937 let r
: i16x8
= transmute ( vcopyq_lane_p16
::< 0 , 1 >( transmute ( a
), transmute ( b
)));
10941 #[simd_test(enable = "neon" )]
10942 unsafe fn test_vcopyq_lane_s64 () {
10943 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
10944 let b
: i64x1
= i64x1
:: new ( 0x7F_FF_FF_FF_FF_FF_FF_FF );
10945 let e
: i64x2
= i64x2
:: new ( 1 , 0x7F_FF_FF_FF_FF_FF_FF_FF );
10946 let r
: i64x2
= transmute ( vcopyq_lane_s64
::< 1 , 0 >( transmute ( a
), transmute ( b
)));
10950 #[simd_test(enable = "neon" )]
10951 unsafe fn test_vcopyq_lane_u64 () {
10952 let a
: u64x2
= u64x2
:: new ( 1 , 2 );
10953 let b
: u64x1
= u64x1
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF );
10954 let e
: u64x2
= u64x2
:: new ( 1 , 0xFF_FF_FF_FF_FF_FF_FF_FF );
10955 let r
: u64x2
= transmute ( vcopyq_lane_u64
::< 1 , 0 >( transmute ( a
), transmute ( b
)));
10959 #[simd_test(enable = "neon" )]
10960 unsafe fn test_vcopyq_lane_p64 () {
10961 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
10962 let b
: i64x1
= i64x1
:: new ( 0x7F_FF_FF_FF_FF_FF_FF_FF );
10963 let e
: i64x2
= i64x2
:: new ( 1 , 0x7F_FF_FF_FF_FF_FF_FF_FF );
10964 let r
: i64x2
= transmute ( vcopyq_lane_p64
::< 1 , 0 >( transmute ( a
), transmute ( b
)));
10968 #[simd_test(enable = "neon" )]
10969 unsafe fn test_vcopyq_lane_f32 () {
10970 let a
: f32x4
= f32x4
:: new ( 1 ., 2 ., 3 ., 4 .);
10971 let b
: f32x2
= f32x2
:: new ( 0.5 , 0 .);
10972 let e
: f32x4
= f32x4
:: new ( 1 ., 0.5 , 3 ., 4 .);
10973 let r
: f32x4
= transmute ( vcopyq_lane_f32
::< 1 , 0 >( transmute ( a
), transmute ( b
)));
10977 #[simd_test(enable = "neon" )]
10978 unsafe fn test_vcopyq_lane_f64 () {
10979 let a
: f64x2
= f64x2
:: new ( 1 ., 2 .);
10981 let e
: f64x2
= f64x2
:: new ( 1 ., 0.5 );
10982 let r
: f64x2
= transmute ( vcopyq_lane_f64
::< 1 , 0 >( transmute ( a
), transmute ( b
)));
10986 #[simd_test(enable = "neon" )]
10987 unsafe fn test_vcreate_f64 () {
10990 let r
: f64 = transmute ( vcreate_f64 ( transmute ( a
)));
10994 #[simd_test(enable = "neon" )]
10995 unsafe fn test_vcvt_f64_s64 () {
10996 let a
: i64x1
= i64x1
:: new ( 1 );
10998 let r
: f64 = transmute ( vcvt_f64_s64 ( transmute ( a
)));
11002 #[simd_test(enable = "neon" )]
11003 unsafe fn test_vcvtq_f64_s64 () {
11004 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
11005 let e
: f64x2
= f64x2
:: new ( 1 ., 2 .);
11006 let r
: f64x2
= transmute ( vcvtq_f64_s64 ( transmute ( a
)));
11010 #[simd_test(enable = "neon" )]
11011 unsafe fn test_vcvt_f64_u64 () {
11012 let a
: u64x1
= u64x1
:: new ( 1 );
11014 let r
: f64 = transmute ( vcvt_f64_u64 ( transmute ( a
)));
11018 #[simd_test(enable = "neon" )]
11019 unsafe fn test_vcvtq_f64_u64 () {
11020 let a
: u64x2
= u64x2
:: new ( 1 , 2 );
11021 let e
: f64x2
= f64x2
:: new ( 1 ., 2 .);
11022 let r
: f64x2
= transmute ( vcvtq_f64_u64 ( transmute ( a
)));
11026 #[simd_test(enable = "neon" )]
11027 unsafe fn test_vcvt_f64_f32 () {
11028 let a
: f32x2
= f32x2
:: new (- 1.2 , 1.2 );
11029 let e
: f64x2
= f64x2
:: new (- 1.2f32 as f64 , 1.2f32 as f64 );
11030 let r
: f64x2
= transmute ( vcvt_f64_f32 ( transmute ( a
)));
11034 #[simd_test(enable = "neon" )]
11035 unsafe fn test_vcvt_high_f64_f32 () {
11036 let a
: f32x4
= f32x4
:: new (- 1.2 , 1.2 , 2.3 , 3.4 );
11037 let e
: f64x2
= f64x2
:: new ( 2.3f32 as f64 , 3.4f32 as f64 );
11038 let r
: f64x2
= transmute ( vcvt_high_f64_f32 ( transmute ( a
)));
11042 #[simd_test(enable = "neon" )]
11043 unsafe fn test_vcvt_f32_f64 () {
11044 let a
: f64x2
= f64x2
:: new (- 1.2 , 1.2 );
11045 let e
: f32x2
= f32x2
:: new (- 1.2f64 as f32 , 1.2f64 as f32 );
11046 let r
: f32x2
= transmute ( vcvt_f32_f64 ( transmute ( a
)));
11050 #[simd_test(enable = "neon" )]
11051 unsafe fn test_vcvt_high_f32_f64 () {
11052 let a
: f32x2
= f32x2
:: new (- 1.2 , 1.2 );
11053 let b
: f64x2
= f64x2
:: new (- 2.3 , 3.4 );
11054 let e
: f32x4
= f32x4
:: new (- 1.2 , 1.2 , - 2.3f64 as f32 , 3.4f64 as f32 );
11055 let r
: f32x4
= transmute ( vcvt_high_f32_f64 ( transmute ( a
), transmute ( b
)));
11059 #[simd_test(enable = "neon" )]
11060 unsafe fn test_vcvtx_f32_f64 () {
11061 let a
: f64x2
= f64x2
:: new (- 1.0 , 2.0 );
11062 let e
: f32x2
= f32x2
:: new (- 1.0 , 2.0 );
11063 let r
: f32x2
= transmute ( vcvtx_f32_f64 ( transmute ( a
)));
11067 #[simd_test(enable = "neon" )]
11068 unsafe fn test_vcvtx_high_f32_f64 () {
11069 let a
: f32x2
= f32x2
:: new (- 1.0 , 2.0 );
11070 let b
: f64x2
= f64x2
:: new (- 3.0 , 4.0 );
11071 let e
: f32x4
= f32x4
:: new (- 1.0 , 2.0 , - 3.0 , 4.0 );
11072 let r
: f32x4
= transmute ( vcvtx_high_f32_f64 ( transmute ( a
), transmute ( b
)));
11076 #[simd_test(enable = "neon" )]
11077 unsafe fn test_vcvt_n_f64_s64 () {
11078 let a
: i64x1
= i64x1
:: new ( 1 );
11080 let r
: f64 = transmute ( vcvt_n_f64_s64
::< 2 >( transmute ( a
)));
11084 #[simd_test(enable = "neon" )]
11085 unsafe fn test_vcvtq_n_f64_s64 () {
11086 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
11087 let e
: f64x2
= f64x2
:: new ( 0.25 , 0.5 );
11088 let r
: f64x2
= transmute ( vcvtq_n_f64_s64
::< 2 >( transmute ( a
)));
11092 #[simd_test(enable = "neon" )]
11093 unsafe fn test_vcvts_n_f32_s32 () {
11096 let r
: f32 = transmute ( vcvts_n_f32_s32
::< 2 >( transmute ( a
)));
11100 #[simd_test(enable = "neon" )]
11101 unsafe fn test_vcvtd_n_f64_s64 () {
11104 let r
: f64 = transmute ( vcvtd_n_f64_s64
::< 2 >( transmute ( a
)));
11108 #[simd_test(enable = "neon" )]
11109 unsafe fn test_vcvt_n_f64_u64 () {
11110 let a
: u64x1
= u64x1
:: new ( 1 );
11112 let r
: f64 = transmute ( vcvt_n_f64_u64
::< 2 >( transmute ( a
)));
11116 #[simd_test(enable = "neon" )]
11117 unsafe fn test_vcvtq_n_f64_u64 () {
11118 let a
: u64x2
= u64x2
:: new ( 1 , 2 );
11119 let e
: f64x2
= f64x2
:: new ( 0.25 , 0.5 );
11120 let r
: f64x2
= transmute ( vcvtq_n_f64_u64
::< 2 >( transmute ( a
)));
11124 #[simd_test(enable = "neon" )]
11125 unsafe fn test_vcvts_n_f32_u32 () {
11128 let r
: f32 = transmute ( vcvts_n_f32_u32
::< 2 >( transmute ( a
)));
11132 #[simd_test(enable = "neon" )]
11133 unsafe fn test_vcvtd_n_f64_u64 () {
11136 let r
: f64 = transmute ( vcvtd_n_f64_u64
::< 2 >( transmute ( a
)));
11140 #[simd_test(enable = "neon" )]
11141 unsafe fn test_vcvt_n_s64_f64 () {
11143 let e
: i64x1
= i64x1
:: new ( 1 );
11144 let r
: i64x1
= transmute ( vcvt_n_s64_f64
::< 2 >( transmute ( a
)));
11148 #[simd_test(enable = "neon" )]
11149 unsafe fn test_vcvtq_n_s64_f64 () {
11150 let a
: f64x2
= f64x2
:: new ( 0.25 , 0.5 );
11151 let e
: i64x2
= i64x2
:: new ( 1 , 2 );
11152 let r
: i64x2
= transmute ( vcvtq_n_s64_f64
::< 2 >( transmute ( a
)));
11156 #[simd_test(enable = "neon" )]
11157 unsafe fn test_vcvts_n_s32_f32 () {
11160 let r
: i32 = transmute ( vcvts_n_s32_f32
::< 2 >( transmute ( a
)));
11164 #[simd_test(enable = "neon" )]
11165 unsafe fn test_vcvtd_n_s64_f64 () {
11168 let r
: i64 = transmute ( vcvtd_n_s64_f64
::< 2 >( transmute ( a
)));
11172 #[simd_test(enable = "neon" )]
11173 unsafe fn test_vcvt_n_u64_f64 () {
11175 let e
: u64x1
= u64x1
:: new ( 1 );
11176 let r
: u64x1
= transmute ( vcvt_n_u64_f64
::< 2 >( transmute ( a
)));
11180 #[simd_test(enable = "neon" )]
11181 unsafe fn test_vcvtq_n_u64_f64 () {
11182 let a
: f64x2
= f64x2
:: new ( 0.25 , 0.5 );
11183 let e
: u64x2
= u64x2
:: new ( 1 , 2 );
11184 let r
: u64x2
= transmute ( vcvtq_n_u64_f64
::< 2 >( transmute ( a
)));
11188 #[simd_test(enable = "neon" )]
11189 unsafe fn test_vcvts_n_u32_f32 () {
11192 let r
: u32 = transmute ( vcvts_n_u32_f32
::< 2 >( transmute ( a
)));
11196 #[simd_test(enable = "neon" )]
11197 unsafe fn test_vcvtd_n_u64_f64 () {
11200 let r
: u64 = transmute ( vcvtd_n_u64_f64
::< 2 >( transmute ( a
)));
11204 #[simd_test(enable = "neon" )]
11205 unsafe fn test_vcvts_f32_s32 () {
11208 let r
: f32 = transmute ( vcvts_f32_s32 ( transmute ( a
)));
11212 #[simd_test(enable = "neon" )]
11213 unsafe fn test_vcvtd_f64_s64 () {
11216 let r
: f64 = transmute ( vcvtd_f64_s64 ( transmute ( a
)));
11220 #[simd_test(enable = "neon" )]
11221 unsafe fn test_vcvts_f32_u32 () {
11224 let r
: f32 = transmute ( vcvts_f32_u32 ( transmute ( a
)));
11228 #[simd_test(enable = "neon" )]
11229 unsafe fn test_vcvtd_f64_u64 () {
11232 let r
: f64 = transmute ( vcvtd_f64_u64 ( transmute ( a
)));
11236 #[simd_test(enable = "neon" )]
11237 unsafe fn test_vcvts_s32_f32 () {
11240 let r
: i32 = transmute ( vcvts_s32_f32 ( transmute ( a
)));
11244 #[simd_test(enable = "neon" )]
11245 unsafe fn test_vcvtd_s64_f64 () {
11248 let r
: i64 = transmute ( vcvtd_s64_f64 ( transmute ( a
)));
11252 #[simd_test(enable = "neon" )]
11253 unsafe fn test_vcvts_u32_f32 () {
11256 let r
: u32 = transmute ( vcvts_u32_f32 ( transmute ( a
)));
11260 #[simd_test(enable = "neon" )]
11261 unsafe fn test_vcvtd_u64_f64 () {
11264 let r
: u64 = transmute ( vcvtd_u64_f64 ( transmute ( a
)));
11268 #[simd_test(enable = "neon" )]
11269 unsafe fn test_vcvt_s64_f64 () {
11271 let e
: i64x1
= i64x1
:: new (- 1 );
11272 let r
: i64x1
= transmute ( vcvt_s64_f64 ( transmute ( a
)));
11276 #[simd_test(enable = "neon" )]
11277 unsafe fn test_vcvtq_s64_f64 () {
11278 let a
: f64x2
= f64x2
:: new (- 1.1 , 2.1 );
11279 let e
: i64x2
= i64x2
:: new (- 1 , 2 );
11280 let r
: i64x2
= transmute ( vcvtq_s64_f64 ( transmute ( a
)));
11284 #[simd_test(enable = "neon" )]
11285 unsafe fn test_vcvt_u64_f64 () {
11287 let e
: u64x1
= u64x1
:: new ( 1 );
11288 let r
: u64x1
= transmute ( vcvt_u64_f64 ( transmute ( a
)));
11292 #[simd_test(enable = "neon" )]
11293 unsafe fn test_vcvtq_u64_f64 () {
11294 let a
: f64x2
= f64x2
:: new ( 1.1 , 2.1 );
11295 let e
: u64x2
= u64x2
:: new ( 1 , 2 );
11296 let r
: u64x2
= transmute ( vcvtq_u64_f64 ( transmute ( a
)));
11300 #[simd_test(enable = "neon" )]
11301 unsafe fn test_vcvta_s32_f32 () {
11302 let a
: f32x2
= f32x2
:: new (- 1.1 , 2.1 );
11303 let e
: i32x2
= i32x2
:: new (- 1 , 2 );
11304 let r
: i32x2
= transmute ( vcvta_s32_f32 ( transmute ( a
)));
11308 #[simd_test(enable = "neon" )]
11309 unsafe fn test_vcvtaq_s32_f32 () {
11310 let a
: f32x4
= f32x4
:: new (- 1.1 , 2.1 , - 2.9 , 3.9 );
11311 let e
: i32x4
= i32x4
:: new (- 1 , 2 , - 3 , 4 );
11312 let r
: i32x4
= transmute ( vcvtaq_s32_f32 ( transmute ( a
)));
11316 #[simd_test(enable = "neon" )]
11317 unsafe fn test_vcvta_s64_f64 () {
11319 let e
: i64x1
= i64x1
:: new (- 1 );
11320 let r
: i64x1
= transmute ( vcvta_s64_f64 ( transmute ( a
)));
11324 #[simd_test(enable = "neon" )]
11325 unsafe fn test_vcvtaq_s64_f64 () {
11326 let a
: f64x2
= f64x2
:: new (- 1.1 , 2.1 );
11327 let e
: i64x2
= i64x2
:: new (- 1 , 2 );
11328 let r
: i64x2
= transmute ( vcvtaq_s64_f64 ( transmute ( a
)));
11332 #[simd_test(enable = "neon" )]
11333 unsafe fn test_vcvtas_s32_f32 () {
11336 let r
: i32 = transmute ( vcvtas_s32_f32 ( transmute ( a
)));
11340 #[simd_test(enable = "neon" )]
11341 unsafe fn test_vcvtad_s64_f64 () {
11344 let r
: i64 = transmute ( vcvtad_s64_f64 ( transmute ( a
)));
11348 #[simd_test(enable = "neon" )]
11349 unsafe fn test_vcvtas_u32_f32 () {
11352 let r
: u32 = transmute ( vcvtas_u32_f32 ( transmute ( a
)));
11356 #[simd_test(enable = "neon" )]
11357 unsafe fn test_vcvtad_u64_f64 () {
11360 let r
: u64 = transmute ( vcvtad_u64_f64 ( transmute ( a
)));
11364 #[simd_test(enable = "neon" )]
11365 unsafe fn test_vcvtn_s32_f32 () {
11366 let a
: f32x2
= f32x2
:: new (- 1.5 , 2.1 );
11367 let e
: i32x2
= i32x2
:: new (- 2 , 2 );
11368 let r
: i32x2
= transmute ( vcvtn_s32_f32 ( transmute ( a
)));
11372 #[simd_test(enable = "neon" )]
11373 unsafe fn test_vcvtnq_s32_f32 () {
11374 let a
: f32x4
= f32x4
:: new (- 1.5 , 2.1 , - 2.9 , 3.9 );
11375 let e
: i32x4
= i32x4
:: new (- 2 , 2 , - 3 , 4 );
11376 let r
: i32x4
= transmute ( vcvtnq_s32_f32 ( transmute ( a
)));
11380 #[simd_test(enable = "neon" )]
11381 unsafe fn test_vcvtn_s64_f64 () {
11383 let e
: i64x1
= i64x1
:: new (- 2 );
11384 let r
: i64x1
= transmute ( vcvtn_s64_f64 ( transmute ( a
)));
11388 #[simd_test(enable = "neon" )]
11389 unsafe fn test_vcvtnq_s64_f64 () {
11390 let a
: f64x2
= f64x2
:: new (- 1.5 , 2.1 );
11391 let e
: i64x2
= i64x2
:: new (- 2 , 2 );
11392 let r
: i64x2
= transmute ( vcvtnq_s64_f64 ( transmute ( a
)));
11396 #[simd_test(enable = "neon" )]
11397 unsafe fn test_vcvtns_s32_f32 () {
11400 let r
: i32 = transmute ( vcvtns_s32_f32 ( transmute ( a
)));
11404 #[simd_test(enable = "neon" )]
11405 unsafe fn test_vcvtnd_s64_f64 () {
11408 let r
: i64 = transmute ( vcvtnd_s64_f64 ( transmute ( a
)));
11412 #[simd_test(enable = "neon" )]
11413 unsafe fn test_vcvtm_s32_f32 () {
11414 let a
: f32x2
= f32x2
:: new (- 1.1 , 2.1 );
11415 let e
: i32x2
= i32x2
:: new (- 2 , 2 );
11416 let r
: i32x2
= transmute ( vcvtm_s32_f32 ( transmute ( a
)));
11420 #[simd_test(enable = "neon" )]
11421 unsafe fn test_vcvtmq_s32_f32 () {
11422 let a
: f32x4
= f32x4
:: new (- 1.1 , 2.1 , - 2.9 , 3.9 );
11423 let e
: i32x4
= i32x4
:: new (- 2 , 2 , - 3 , 3 );
11424 let r
: i32x4
= transmute ( vcvtmq_s32_f32 ( transmute ( a
)));
11428 #[simd_test(enable = "neon" )]
11429 unsafe fn test_vcvtm_s64_f64 () {
11431 let e
: i64x1
= i64x1
:: new (- 2 );
11432 let r
: i64x1
= transmute ( vcvtm_s64_f64 ( transmute ( a
)));
11436 #[simd_test(enable = "neon" )]
11437 unsafe fn test_vcvtmq_s64_f64 () {
11438 let a
: f64x2
= f64x2
:: new (- 1.1 , 2.1 );
11439 let e
: i64x2
= i64x2
:: new (- 2 , 2 );
11440 let r
: i64x2
= transmute ( vcvtmq_s64_f64 ( transmute ( a
)));
11444 #[simd_test(enable = "neon" )]
11445 unsafe fn test_vcvtms_s32_f32 () {
11448 let r
: i32 = transmute ( vcvtms_s32_f32 ( transmute ( a
)));
11452 #[simd_test(enable = "neon" )]
11453 unsafe fn test_vcvtmd_s64_f64 () {
11456 let r
: i64 = transmute ( vcvtmd_s64_f64 ( transmute ( a
)));
11460 #[simd_test(enable = "neon" )]
11461 unsafe fn test_vcvtp_s32_f32 () {
11462 let a
: f32x2
= f32x2
:: new (- 1.1 , 2.1 );
11463 let e
: i32x2
= i32x2
:: new (- 1 , 3 );
11464 let r
: i32x2
= transmute ( vcvtp_s32_f32 ( transmute ( a
)));
11468 #[simd_test(enable = "neon" )]
11469 unsafe fn test_vcvtpq_s32_f32 () {
11470 let a
: f32x4
= f32x4
:: new (- 1.1 , 2.1 , - 2.9 , 3.9 );
11471 let e
: i32x4
= i32x4
:: new (- 1 , 3 , - 2 , 4 );
11472 let r
: i32x4
= transmute ( vcvtpq_s32_f32 ( transmute ( a
)));
11476 #[simd_test(enable = "neon" )]
11477 unsafe fn test_vcvtp_s64_f64 () {
11479 let e
: i64x1
= i64x1
:: new (- 1 );
11480 let r
: i64x1
= transmute ( vcvtp_s64_f64 ( transmute ( a
)));
11484 #[simd_test(enable = "neon" )]
11485 unsafe fn test_vcvtpq_s64_f64 () {
11486 let a
: f64x2
= f64x2
:: new (- 1.1 , 2.1 );
11487 let e
: i64x2
= i64x2
:: new (- 1 , 3 );
11488 let r
: i64x2
= transmute ( vcvtpq_s64_f64 ( transmute ( a
)));
11492 #[simd_test(enable = "neon" )]
11493 unsafe fn test_vcvtps_s32_f32 () {
11496 let r
: i32 = transmute ( vcvtps_s32_f32 ( transmute ( a
)));
11500 #[simd_test(enable = "neon" )]
11501 unsafe fn test_vcvtpd_s64_f64 () {
11504 let r
: i64 = transmute ( vcvtpd_s64_f64 ( transmute ( a
)));
11508 #[simd_test(enable = "neon" )]
11509 unsafe fn test_vcvta_u32_f32 () {
11510 let a
: f32x2
= f32x2
:: new ( 1.1 , 2.1 );
11511 let e
: u32x2
= u32x2
:: new ( 1 , 2 );
11512 let r
: u32x2
= transmute ( vcvta_u32_f32 ( transmute ( a
)));
11516 #[simd_test(enable = "neon" )]
11517 unsafe fn test_vcvtaq_u32_f32 () {
11518 let a
: f32x4
= f32x4
:: new ( 1.1 , 2.1 , 2.9 , 3.9 );
11519 let e
: u32x4
= u32x4
:: new ( 1 , 2 , 3 , 4 );
11520 let r
: u32x4
= transmute ( vcvtaq_u32_f32 ( transmute ( a
)));
11524 #[simd_test(enable = "neon" )]
11525 unsafe fn test_vcvta_u64_f64 () {
11527 let e
: u64x1
= u64x1
:: new ( 1 );
11528 let r
: u64x1
= transmute ( vcvta_u64_f64 ( transmute ( a
)));
11532 #[simd_test(enable = "neon" )]
11533 unsafe fn test_vcvtaq_u64_f64 () {
11534 let a
: f64x2
= f64x2
:: new ( 1.1 , 2.1 );
11535 let e
: u64x2
= u64x2
:: new ( 1 , 2 );
11536 let r
: u64x2
= transmute ( vcvtaq_u64_f64 ( transmute ( a
)));
11540 #[simd_test(enable = "neon" )]
11541 unsafe fn test_vcvtn_u32_f32 () {
11542 let a
: f32x2
= f32x2
:: new ( 1.5 , 2.1 );
11543 let e
: u32x2
= u32x2
:: new ( 2 , 2 );
11544 let r
: u32x2
= transmute ( vcvtn_u32_f32 ( transmute ( a
)));
11548 #[simd_test(enable = "neon" )]
11549 unsafe fn test_vcvtnq_u32_f32 () {
11550 let a
: f32x4
= f32x4
:: new ( 1.5 , 2.1 , 2.9 , 3.9 );
11551 let e
: u32x4
= u32x4
:: new ( 2 , 2 , 3 , 4 );
11552 let r
: u32x4
= transmute ( vcvtnq_u32_f32 ( transmute ( a
)));
11556 #[simd_test(enable = "neon" )]
11557 unsafe fn test_vcvtn_u64_f64 () {
11559 let e
: u64x1
= u64x1
:: new ( 2 );
11560 let r
: u64x1
= transmute ( vcvtn_u64_f64 ( transmute ( a
)));
11564 #[simd_test(enable = "neon" )]
11565 unsafe fn test_vcvtnq_u64_f64 () {
11566 let a
: f64x2
= f64x2
:: new ( 1.5 , 2.1 );
11567 let e
: u64x2
= u64x2
:: new ( 2 , 2 );
11568 let r
: u64x2
= transmute ( vcvtnq_u64_f64 ( transmute ( a
)));
11572 #[simd_test(enable = "neon" )]
11573 unsafe fn test_vcvtns_u32_f32 () {
11576 let r
: u32 = transmute ( vcvtns_u32_f32 ( transmute ( a
)));
11580 #[simd_test(enable = "neon" )]
11581 unsafe fn test_vcvtnd_u64_f64 () {
11584 let r
: u64 = transmute ( vcvtnd_u64_f64 ( transmute ( a
)));
11588 #[simd_test(enable = "neon" )]
11589 unsafe fn test_vcvtm_u32_f32 () {
11590 let a
: f32x2
= f32x2
:: new ( 1.1 , 2.1 );
11591 let e
: u32x2
= u32x2
:: new ( 1 , 2 );
11592 let r
: u32x2
= transmute ( vcvtm_u32_f32 ( transmute ( a
)));
11596 #[simd_test(enable = "neon" )]
11597 unsafe fn test_vcvtmq_u32_f32 () {
11598 let a
: f32x4
= f32x4
:: new ( 1.1 , 2.1 , 2.9 , 3.9 );
11599 let e
: u32x4
= u32x4
:: new ( 1 , 2 , 2 , 3 );
11600 let r
: u32x4
= transmute ( vcvtmq_u32_f32 ( transmute ( a
)));
11604 #[simd_test(enable = "neon" )]
11605 unsafe fn test_vcvtm_u64_f64 () {
11607 let e
: u64x1
= u64x1
:: new ( 1 );
11608 let r
: u64x1
= transmute ( vcvtm_u64_f64 ( transmute ( a
)));
11612 #[simd_test(enable = "neon" )]
11613 unsafe fn test_vcvtmq_u64_f64 () {
11614 let a
: f64x2
= f64x2
:: new ( 1.1 , 2.1 );
11615 let e
: u64x2
= u64x2
:: new ( 1 , 2 );
11616 let r
: u64x2
= transmute ( vcvtmq_u64_f64 ( transmute ( a
)));
11620 #[simd_test(enable = "neon" )]
11621 unsafe fn test_vcvtms_u32_f32 () {
11624 let r
: u32 = transmute ( vcvtms_u32_f32 ( transmute ( a
)));
11628 #[simd_test(enable = "neon" )]
11629 unsafe fn test_vcvtmd_u64_f64 () {
11632 let r
: u64 = transmute ( vcvtmd_u64_f64 ( transmute ( a
)));
11636 #[simd_test(enable = "neon" )]
11637 unsafe fn test_vcvtp_u32_f32 () {
11638 let a
: f32x2
= f32x2
:: new ( 1.1 , 2.1 );
11639 let e
: u32x2
= u32x2
:: new ( 2 , 3 );
11640 let r
: u32x2
= transmute ( vcvtp_u32_f32 ( transmute ( a
)));
11644 #[simd_test(enable = "neon" )]
11645 unsafe fn test_vcvtpq_u32_f32 () {
11646 let a
: f32x4
= f32x4
:: new ( 1.1 , 2.1 , 2.9 , 3.9 );
11647 let e
: u32x4
= u32x4
:: new ( 2 , 3 , 3 , 4 );
11648 let r
: u32x4
= transmute ( vcvtpq_u32_f32 ( transmute ( a
)));
11652 #[simd_test(enable = "neon" )]
11653 unsafe fn test_vcvtp_u64_f64 () {
11655 let e
: u64x1
= u64x1
:: new ( 2 );
11656 let r
: u64x1
= transmute ( vcvtp_u64_f64 ( transmute ( a
)));
11660 #[simd_test(enable = "neon" )]
11661 unsafe fn test_vcvtpq_u64_f64 () {
11662 let a
: f64x2
= f64x2
:: new ( 1.1 , 2.1 );
11663 let e
: u64x2
= u64x2
:: new ( 2 , 3 );
11664 let r
: u64x2
= transmute ( vcvtpq_u64_f64 ( transmute ( a
)));
11668 #[simd_test(enable = "neon" )]
11669 unsafe fn test_vcvtps_u32_f32 () {
11672 let r
: u32 = transmute ( vcvtps_u32_f32 ( transmute ( a
)));
11676 #[simd_test(enable = "neon" )]
11677 unsafe fn test_vcvtpd_u64_f64 () {
11680 let r
: u64 = transmute ( vcvtpd_u64_f64 ( transmute ( a
)));
11684 #[simd_test(enable = "neon" )]
11685 unsafe fn test_vdupq_laneq_p64 () {
11686 let a
: i64x2
= i64x2
:: new ( 1 , 1 );
11687 let e
: i64x2
= i64x2
:: new ( 1 , 1 );
11688 let r
: i64x2
= transmute ( vdupq_laneq_p64
::< 1 >( transmute ( a
)));
11692 #[simd_test(enable = "neon" )]
11693 unsafe fn test_vdupq_lane_p64 () {
11694 let a
: i64x1
= i64x1
:: new ( 1 );
11695 let e
: i64x2
= i64x2
:: new ( 1 , 1 );
11696 let r
: i64x2
= transmute ( vdupq_lane_p64
::< 0 >( transmute ( a
)));
11700 #[simd_test(enable = "neon" )]
11701 unsafe fn test_vdupq_laneq_f64 () {
11702 let a
: f64x2
= f64x2
:: new ( 1 ., 1 .);
11703 let e
: f64x2
= f64x2
:: new ( 1 ., 1 .);
11704 let r
: f64x2
= transmute ( vdupq_laneq_f64
::< 1 >( transmute ( a
)));
11708 #[simd_test(enable = "neon" )]
11709 unsafe fn test_vdupq_lane_f64 () {
11711 let e
: f64x2
= f64x2
:: new ( 1 ., 1 .);
11712 let r
: f64x2
= transmute ( vdupq_lane_f64
::< 0 >( transmute ( a
)));
11716 #[simd_test(enable = "neon" )]
11717 unsafe fn test_vdup_lane_p64 () {
11718 let a
: i64x1
= i64x1
:: new ( 0 );
11719 let e
: i64x1
= i64x1
:: new ( 0 );
11720 let r
: i64x1
= transmute ( vdup_lane_p64
::< 0 >( transmute ( a
)));
11724 #[simd_test(enable = "neon" )]
11725 unsafe fn test_vdup_lane_f64 () {
11728 let r
: f64 = transmute ( vdup_lane_f64
::< 0 >( transmute ( a
)));
11732 #[simd_test(enable = "neon" )]
11733 unsafe fn test_vdup_laneq_p64 () {
11734 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
11735 let e
: i64x1
= i64x1
:: new ( 1 );
11736 let r
: i64x1
= transmute ( vdup_laneq_p64
::< 1 >( transmute ( a
)));
11740 #[simd_test(enable = "neon" )]
11741 unsafe fn test_vdup_laneq_f64 () {
11742 let a
: f64x2
= f64x2
:: new ( 0 ., 1 .);
11744 let r
: f64 = transmute ( vdup_laneq_f64
::< 1 >( transmute ( a
)));
11748 #[simd_test(enable = "neon" )]
11749 unsafe fn test_vdupb_lane_s8 () {
11750 let a
: i8x8
= i8x8
:: new ( 1 , 1 , 1 , 4 , 1 , 6 , 7 , 8 );
11752 let r
: i8 = transmute ( vdupb_lane_s8
::< 4 >( transmute ( a
)));
11756 #[simd_test(enable = "neon" )]
11757 unsafe fn test_vdupb_laneq_s8 () {
11758 let a
: i8x16
= i8x16
:: new ( 1 , 1 , 1 , 4 , 1 , 6 , 7 , 8 , 1 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
11760 let r
: i8 = transmute ( vdupb_laneq_s8
::< 8 >( transmute ( a
)));
11764 #[simd_test(enable = "neon" )]
11765 unsafe fn test_vduph_lane_s16 () {
11766 let a
: i16x4
= i16x4
:: new ( 1 , 1 , 1 , 4 );
11768 let r
: i16 = transmute ( vduph_lane_s16
::< 2 >( transmute ( a
)));
11772 #[simd_test(enable = "neon" )]
11773 unsafe fn test_vduph_laneq_s16 () {
11774 let a
: i16x8
= i16x8
:: new ( 1 , 1 , 1 , 4 , 1 , 6 , 7 , 8 );
11776 let r
: i16 = transmute ( vduph_laneq_s16
::< 4 >( transmute ( a
)));
11780 #[simd_test(enable = "neon" )]
11781 unsafe fn test_vdups_lane_s32 () {
11782 let a
: i32x2
= i32x2
:: new ( 1 , 1 );
11784 let r
: i32 = transmute ( vdups_lane_s32
::< 1 >( transmute ( a
)));
11788 #[simd_test(enable = "neon" )]
11789 unsafe fn test_vdups_laneq_s32 () {
11790 let a
: i32x4
= i32x4
:: new ( 1 , 1 , 1 , 4 );
11792 let r
: i32 = transmute ( vdups_laneq_s32
::< 2 >( transmute ( a
)));
11796 #[simd_test(enable = "neon" )]
11797 unsafe fn test_vdupd_lane_s64 () {
11798 let a
: i64x1
= i64x1
:: new ( 1 );
11800 let r
: i64 = transmute ( vdupd_lane_s64
::< 0 >( transmute ( a
)));
11804 #[simd_test(enable = "neon" )]
11805 unsafe fn test_vdupd_laneq_s64 () {
11806 let a
: i64x2
= i64x2
:: new ( 1 , 1 );
11808 let r
: i64 = transmute ( vdupd_laneq_s64
::< 1 >( transmute ( a
)));
11812 #[simd_test(enable = "neon" )]
11813 unsafe fn test_vdupb_lane_u8 () {
11814 let a
: u8x8
= u8x8
:: new ( 1 , 1 , 1 , 4 , 1 , 6 , 7 , 8 );
11816 let r
: u8 = transmute ( vdupb_lane_u8
::< 4 >( transmute ( a
)));
11820 #[simd_test(enable = "neon" )]
11821 unsafe fn test_vdupb_laneq_u8 () {
11822 let a
: u8x16
= u8x16
:: new ( 1 , 1 , 1 , 4 , 1 , 6 , 7 , 8 , 1 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
11824 let r
: u8 = transmute ( vdupb_laneq_u8
::< 8 >( transmute ( a
)));
11828 #[simd_test(enable = "neon" )]
11829 unsafe fn test_vduph_lane_u16 () {
11830 let a
: u16x4
= u16x4
:: new ( 1 , 1 , 1 , 4 );
11832 let r
: u16 = transmute ( vduph_lane_u16
::< 2 >( transmute ( a
)));
11836 #[simd_test(enable = "neon" )]
11837 unsafe fn test_vduph_laneq_u16 () {
11838 let a
: u16x8
= u16x8
:: new ( 1 , 1 , 1 , 4 , 1 , 6 , 7 , 8 );
11840 let r
: u16 = transmute ( vduph_laneq_u16
::< 4 >( transmute ( a
)));
11844 #[simd_test(enable = "neon" )]
11845 unsafe fn test_vdups_lane_u32 () {
11846 let a
: u32x2
= u32x2
:: new ( 1 , 1 );
11848 let r
: u32 = transmute ( vdups_lane_u32
::< 1 >( transmute ( a
)));
11852 #[simd_test(enable = "neon" )]
11853 unsafe fn test_vdups_laneq_u32 () {
11854 let a
: u32x4
= u32x4
:: new ( 1 , 1 , 1 , 4 );
11856 let r
: u32 = transmute ( vdups_laneq_u32
::< 2 >( transmute ( a
)));
11860 #[simd_test(enable = "neon" )]
11861 unsafe fn test_vdupd_lane_u64 () {
11862 let a
: u64x1
= u64x1
:: new ( 1 );
11864 let r
: u64 = transmute ( vdupd_lane_u64
::< 0 >( transmute ( a
)));
11868 #[simd_test(enable = "neon" )]
11869 unsafe fn test_vdupd_laneq_u64 () {
11870 let a
: u64x2
= u64x2
:: new ( 1 , 1 );
11872 let r
: u64 = transmute ( vdupd_laneq_u64
::< 1 >( transmute ( a
)));
11876 #[simd_test(enable = "neon" )]
11877 unsafe fn test_vdupb_lane_p8 () {
11878 let a
: i8x8
= i8x8
:: new ( 1 , 1 , 1 , 4 , 1 , 6 , 7 , 8 );
11880 let r
: p8
= transmute ( vdupb_lane_p8
::< 4 >( transmute ( a
)));
11884 #[simd_test(enable = "neon" )]
11885 unsafe fn test_vdupb_laneq_p8 () {
11886 let a
: i8x16
= i8x16
:: new ( 1 , 1 , 1 , 4 , 1 , 6 , 7 , 8 , 1 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
11888 let r
: p8
= transmute ( vdupb_laneq_p8
::< 8 >( transmute ( a
)));
11892 #[simd_test(enable = "neon" )]
11893 unsafe fn test_vduph_lane_p16 () {
11894 let a
: i16x4
= i16x4
:: new ( 1 , 1 , 1 , 4 );
11896 let r
: p16
= transmute ( vduph_lane_p16
::< 2 >( transmute ( a
)));
11900 #[simd_test(enable = "neon" )]
11901 unsafe fn test_vduph_laneq_p16 () {
11902 let a
: i16x8
= i16x8
:: new ( 1 , 1 , 1 , 4 , 1 , 6 , 7 , 8 );
11904 let r
: p16
= transmute ( vduph_laneq_p16
::< 4 >( transmute ( a
)));
11908 #[simd_test(enable = "neon" )]
11909 unsafe fn test_vdups_lane_f32 () {
11910 let a
: f32x2
= f32x2
:: new ( 1 ., 1 .);
11912 let r
: f32 = transmute ( vdups_lane_f32
::< 1 >( transmute ( a
)));
11916 #[simd_test(enable = "neon" )]
11917 unsafe fn test_vdups_laneq_f32 () {
11918 let a
: f32x4
= f32x4
:: new ( 1 ., 1 ., 1 ., 4 .);
11920 let r
: f32 = transmute ( vdups_laneq_f32
::< 2 >( transmute ( a
)));
11924 #[simd_test(enable = "neon" )]
11925 unsafe fn test_vdupd_lane_f64 () {
11928 let r
: f64 = transmute ( vdupd_lane_f64
::< 0 >( transmute ( a
)));
11932 #[simd_test(enable = "neon" )]
11933 unsafe fn test_vdupd_laneq_f64 () {
11934 let a
: f64x2
= f64x2
:: new ( 1 ., 1 .);
11936 let r
: f64 = transmute ( vdupd_laneq_f64
::< 1 >( transmute ( a
)));
11940 #[simd_test(enable = "neon" )]
11941 unsafe fn test_vextq_p64 () {
11942 let a
: i64x2
= i64x2
:: new ( 0 , 8 );
11943 let b
: i64x2
= i64x2
:: new ( 9 , 11 );
11944 let e
: i64x2
= i64x2
:: new ( 8 , 9 );
11945 let r
: i64x2
= transmute ( vextq_p64
::< 1 >( transmute ( a
), transmute ( b
)));
11949 #[simd_test(enable = "neon" )]
11950 unsafe fn test_vextq_f64 () {
11951 let a
: f64x2
= f64x2
:: new ( 0 ., 2 .);
11952 let b
: f64x2
= f64x2
:: new ( 3 ., 4 .);
11953 let e
: f64x2
= f64x2
:: new ( 2 ., 3 .);
11954 let r
: f64x2
= transmute ( vextq_f64
::< 1 >( transmute ( a
), transmute ( b
)));
11958 #[simd_test(enable = "neon" )]
11959 unsafe fn test_vmla_f64 () {
11964 let r
: f64 = transmute ( vmla_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
11968 #[simd_test(enable = "neon" )]
11969 unsafe fn test_vmlaq_f64 () {
11970 let a
: f64x2
= f64x2
:: new ( 0 ., 1 .);
11971 let b
: f64x2
= f64x2
:: new ( 2 ., 2 .);
11972 let c
: f64x2
= f64x2
:: new ( 3 ., 3 .);
11973 let e
: f64x2
= f64x2
:: new ( 6 ., 7 .);
11974 let r
: f64x2
= transmute ( vmlaq_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
11978 #[simd_test(enable = "neon" )]
11979 unsafe fn test_vmlal_high_s8 () {
11980 let a
: i16x8
= i16x8
:: new ( 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 );
11981 let b
: i8x16
= i8x16
:: new ( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 );
11982 let c
: i8x16
= i8x16
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 );
11983 let e
: i16x8
= i16x8
:: new ( 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
11984 let r
: i16x8
= transmute ( vmlal_high_s8 ( transmute ( a
), transmute ( b
), transmute ( c
)));
11988 #[simd_test(enable = "neon" )]
11989 unsafe fn test_vmlal_high_s16 () {
11990 let a
: i32x4
= i32x4
:: new ( 8 , 7 , 6 , 5 );
11991 let b
: i16x8
= i16x8
:: new ( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 );
11992 let c
: i16x8
= i16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
11993 let e
: i32x4
= i32x4
:: new ( 8 , 9 , 10 , 11 );
11994 let r
: i32x4
= transmute ( vmlal_high_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
11998 #[simd_test(enable = "neon" )]
11999 unsafe fn test_vmlal_high_s32 () {
12000 let a
: i64x2
= i64x2
:: new ( 8 , 7 );
12001 let b
: i32x4
= i32x4
:: new ( 2 , 2 , 2 , 2 );
12002 let c
: i32x4
= i32x4
:: new ( 3 , 3 , 0 , 1 );
12003 let e
: i64x2
= i64x2
:: new ( 8 , 9 );
12004 let r
: i64x2
= transmute ( vmlal_high_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12008 #[simd_test(enable = "neon" )]
12009 unsafe fn test_vmlal_high_u8 () {
12010 let a
: u16x8
= u16x8
:: new ( 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 );
12011 let b
: u8x16
= u8x16
:: new ( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 );
12012 let c
: u8x16
= u8x16
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 );
12013 let e
: u16x8
= u16x8
:: new ( 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
12014 let r
: u16x8
= transmute ( vmlal_high_u8 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12018 #[simd_test(enable = "neon" )]
12019 unsafe fn test_vmlal_high_u16 () {
12020 let a
: u32x4
= u32x4
:: new ( 8 , 7 , 6 , 5 );
12021 let b
: u16x8
= u16x8
:: new ( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 );
12022 let c
: u16x8
= u16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12023 let e
: u32x4
= u32x4
:: new ( 8 , 9 , 10 , 11 );
12024 let r
: u32x4
= transmute ( vmlal_high_u16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12028 #[simd_test(enable = "neon" )]
12029 unsafe fn test_vmlal_high_u32 () {
12030 let a
: u64x2
= u64x2
:: new ( 8 , 7 );
12031 let b
: u32x4
= u32x4
:: new ( 2 , 2 , 2 , 2 );
12032 let c
: u32x4
= u32x4
:: new ( 3 , 3 , 0 , 1 );
12033 let e
: u64x2
= u64x2
:: new ( 8 , 9 );
12034 let r
: u64x2
= transmute ( vmlal_high_u32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12038 #[simd_test(enable = "neon" )]
12039 unsafe fn test_vmlal_high_n_s16 () {
12040 let a
: i32x4
= i32x4
:: new ( 8 , 7 , 6 , 5 );
12041 let b
: i16x8
= i16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12043 let e
: i32x4
= i32x4
:: new ( 8 , 9 , 10 , 11 );
12044 let r
: i32x4
= transmute ( vmlal_high_n_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12048 #[simd_test(enable = "neon" )]
12049 unsafe fn test_vmlal_high_n_s32 () {
12050 let a
: i64x2
= i64x2
:: new ( 8 , 7 );
12051 let b
: i32x4
= i32x4
:: new ( 3 , 3 , 0 , 1 );
12053 let e
: i64x2
= i64x2
:: new ( 8 , 9 );
12054 let r
: i64x2
= transmute ( vmlal_high_n_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12058 #[simd_test(enable = "neon" )]
12059 unsafe fn test_vmlal_high_n_u16 () {
12060 let a
: u32x4
= u32x4
:: new ( 8 , 7 , 6 , 5 );
12061 let b
: u16x8
= u16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12063 let e
: u32x4
= u32x4
:: new ( 8 , 9 , 10 , 11 );
12064 let r
: u32x4
= transmute ( vmlal_high_n_u16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12068 #[simd_test(enable = "neon" )]
12069 unsafe fn test_vmlal_high_n_u32 () {
12070 let a
: u64x2
= u64x2
:: new ( 8 , 7 );
12071 let b
: u32x4
= u32x4
:: new ( 3 , 3 , 0 , 1 );
12073 let e
: u64x2
= u64x2
:: new ( 8 , 9 );
12074 let r
: u64x2
= transmute ( vmlal_high_n_u32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12078 #[simd_test(enable = "neon" )]
12079 unsafe fn test_vmlal_high_lane_s16 () {
12080 let a
: i32x4
= i32x4
:: new ( 8 , 7 , 6 , 5 );
12081 let b
: i16x8
= i16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12082 let c
: i16x4
= i16x4
:: new ( 0 , 2 , 0 , 0 );
12083 let e
: i32x4
= i32x4
:: new ( 8 , 9 , 10 , 11 );
12084 let r
: i32x4
= transmute ( vmlal_high_lane_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12088 #[simd_test(enable = "neon" )]
12089 unsafe fn test_vmlal_high_laneq_s16 () {
12090 let a
: i32x4
= i32x4
:: new ( 8 , 7 , 6 , 5 );
12091 let b
: i16x8
= i16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12092 let c
: i16x8
= i16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
12093 let e
: i32x4
= i32x4
:: new ( 8 , 9 , 10 , 11 );
12094 let r
: i32x4
= transmute ( vmlal_high_laneq_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12098 #[simd_test(enable = "neon" )]
12099 unsafe fn test_vmlal_high_lane_s32 () {
12100 let a
: i64x2
= i64x2
:: new ( 8 , 7 );
12101 let b
: i32x4
= i32x4
:: new ( 3 , 3 , 0 , 1 );
12102 let c
: i32x2
= i32x2
:: new ( 0 , 2 );
12103 let e
: i64x2
= i64x2
:: new ( 8 , 9 );
12104 let r
: i64x2
= transmute ( vmlal_high_lane_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12108 #[simd_test(enable = "neon" )]
12109 unsafe fn test_vmlal_high_laneq_s32 () {
12110 let a
: i64x2
= i64x2
:: new ( 8 , 7 );
12111 let b
: i32x4
= i32x4
:: new ( 3 , 3 , 0 , 1 );
12112 let c
: i32x4
= i32x4
:: new ( 0 , 2 , 0 , 0 );
12113 let e
: i64x2
= i64x2
:: new ( 8 , 9 );
12114 let r
: i64x2
= transmute ( vmlal_high_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12118 #[simd_test(enable = "neon" )]
12119 unsafe fn test_vmlal_high_lane_u16 () {
12120 let a
: u32x4
= u32x4
:: new ( 8 , 7 , 6 , 5 );
12121 let b
: u16x8
= u16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12122 let c
: u16x4
= u16x4
:: new ( 0 , 2 , 0 , 0 );
12123 let e
: u32x4
= u32x4
:: new ( 8 , 9 , 10 , 11 );
12124 let r
: u32x4
= transmute ( vmlal_high_lane_u16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12128 #[simd_test(enable = "neon" )]
12129 unsafe fn test_vmlal_high_laneq_u16 () {
12130 let a
: u32x4
= u32x4
:: new ( 8 , 7 , 6 , 5 );
12131 let b
: u16x8
= u16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12132 let c
: u16x8
= u16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
12133 let e
: u32x4
= u32x4
:: new ( 8 , 9 , 10 , 11 );
12134 let r
: u32x4
= transmute ( vmlal_high_laneq_u16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12138 #[simd_test(enable = "neon" )]
12139 unsafe fn test_vmlal_high_lane_u32 () {
12140 let a
: u64x2
= u64x2
:: new ( 8 , 7 );
12141 let b
: u32x4
= u32x4
:: new ( 3 , 3 , 0 , 1 );
12142 let c
: u32x2
= u32x2
:: new ( 0 , 2 );
12143 let e
: u64x2
= u64x2
:: new ( 8 , 9 );
12144 let r
: u64x2
= transmute ( vmlal_high_lane_u32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12148 #[simd_test(enable = "neon" )]
12149 unsafe fn test_vmlal_high_laneq_u32 () {
12150 let a
: u64x2
= u64x2
:: new ( 8 , 7 );
12151 let b
: u32x4
= u32x4
:: new ( 3 , 3 , 0 , 1 );
12152 let c
: u32x4
= u32x4
:: new ( 0 , 2 , 0 , 0 );
12153 let e
: u64x2
= u64x2
:: new ( 8 , 9 );
12154 let r
: u64x2
= transmute ( vmlal_high_laneq_u32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12158 #[simd_test(enable = "neon" )]
12159 unsafe fn test_vmls_f64 () {
12164 let r
: f64 = transmute ( vmls_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12168 #[simd_test(enable = "neon" )]
12169 unsafe fn test_vmlsq_f64 () {
12170 let a
: f64x2
= f64x2
:: new ( 6 ., 7 .);
12171 let b
: f64x2
= f64x2
:: new ( 2 ., 2 .);
12172 let c
: f64x2
= f64x2
:: new ( 3 ., 3 .);
12173 let e
: f64x2
= f64x2
:: new ( 0 ., 1 .);
12174 let r
: f64x2
= transmute ( vmlsq_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12178 #[simd_test(enable = "neon" )]
12179 unsafe fn test_vmlsl_high_s8 () {
12180 let a
: i16x8
= i16x8
:: new ( 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 );
12181 let b
: i8x16
= i8x16
:: new ( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 );
12182 let c
: i8x16
= i8x16
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 );
12183 let e
: i16x8
= i16x8
:: new ( 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 );
12184 let r
: i16x8
= transmute ( vmlsl_high_s8 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12188 #[simd_test(enable = "neon" )]
12189 unsafe fn test_vmlsl_high_s16 () {
12190 let a
: i32x4
= i32x4
:: new ( 14 , 15 , 16 , 17 );
12191 let b
: i16x8
= i16x8
:: new ( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 );
12192 let c
: i16x8
= i16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12193 let e
: i32x4
= i32x4
:: new ( 14 , 13 , 12 , 11 );
12194 let r
: i32x4
= transmute ( vmlsl_high_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12198 #[simd_test(enable = "neon" )]
12199 unsafe fn test_vmlsl_high_s32 () {
12200 let a
: i64x2
= i64x2
:: new ( 14 , 15 );
12201 let b
: i32x4
= i32x4
:: new ( 2 , 2 , 2 , 2 );
12202 let c
: i32x4
= i32x4
:: new ( 3 , 3 , 0 , 1 );
12203 let e
: i64x2
= i64x2
:: new ( 14 , 13 );
12204 let r
: i64x2
= transmute ( vmlsl_high_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12208 #[simd_test(enable = "neon" )]
12209 unsafe fn test_vmlsl_high_u8 () {
12210 let a
: u16x8
= u16x8
:: new ( 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 );
12211 let b
: u8x16
= u8x16
:: new ( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 );
12212 let c
: u8x16
= u8x16
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 );
12213 let e
: u16x8
= u16x8
:: new ( 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 );
12214 let r
: u16x8
= transmute ( vmlsl_high_u8 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12218 #[simd_test(enable = "neon" )]
12219 unsafe fn test_vmlsl_high_u16 () {
12220 let a
: u32x4
= u32x4
:: new ( 14 , 15 , 16 , 17 );
12221 let b
: u16x8
= u16x8
:: new ( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 );
12222 let c
: u16x8
= u16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12223 let e
: u32x4
= u32x4
:: new ( 14 , 13 , 12 , 11 );
12224 let r
: u32x4
= transmute ( vmlsl_high_u16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12228 #[simd_test(enable = "neon" )]
12229 unsafe fn test_vmlsl_high_u32 () {
12230 let a
: u64x2
= u64x2
:: new ( 14 , 15 );
12231 let b
: u32x4
= u32x4
:: new ( 2 , 2 , 2 , 2 );
12232 let c
: u32x4
= u32x4
:: new ( 3 , 3 , 0 , 1 );
12233 let e
: u64x2
= u64x2
:: new ( 14 , 13 );
12234 let r
: u64x2
= transmute ( vmlsl_high_u32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12238 #[simd_test(enable = "neon" )]
12239 unsafe fn test_vmlsl_high_n_s16 () {
12240 let a
: i32x4
= i32x4
:: new ( 14 , 15 , 16 , 17 );
12241 let b
: i16x8
= i16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12243 let e
: i32x4
= i32x4
:: new ( 14 , 13 , 12 , 11 );
12244 let r
: i32x4
= transmute ( vmlsl_high_n_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12248 #[simd_test(enable = "neon" )]
12249 unsafe fn test_vmlsl_high_n_s32 () {
12250 let a
: i64x2
= i64x2
:: new ( 14 , 15 );
12251 let b
: i32x4
= i32x4
:: new ( 3 , 3 , 0 , 1 );
12253 let e
: i64x2
= i64x2
:: new ( 14 , 13 );
12254 let r
: i64x2
= transmute ( vmlsl_high_n_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12258 #[simd_test(enable = "neon" )]
12259 unsafe fn test_vmlsl_high_n_u16 () {
12260 let a
: u32x4
= u32x4
:: new ( 14 , 15 , 16 , 17 );
12261 let b
: u16x8
= u16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12263 let e
: u32x4
= u32x4
:: new ( 14 , 13 , 12 , 11 );
12264 let r
: u32x4
= transmute ( vmlsl_high_n_u16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12268 #[simd_test(enable = "neon" )]
12269 unsafe fn test_vmlsl_high_n_u32 () {
12270 let a
: u64x2
= u64x2
:: new ( 14 , 15 );
12271 let b
: u32x4
= u32x4
:: new ( 3 , 3 , 0 , 1 );
12273 let e
: u64x2
= u64x2
:: new ( 14 , 13 );
12274 let r
: u64x2
= transmute ( vmlsl_high_n_u32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
12278 #[simd_test(enable = "neon" )]
12279 unsafe fn test_vmlsl_high_lane_s16 () {
12280 let a
: i32x4
= i32x4
:: new ( 14 , 15 , 16 , 17 );
12281 let b
: i16x8
= i16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12282 let c
: i16x4
= i16x4
:: new ( 0 , 2 , 0 , 0 );
12283 let e
: i32x4
= i32x4
:: new ( 14 , 13 , 12 , 11 );
12284 let r
: i32x4
= transmute ( vmlsl_high_lane_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12288 #[simd_test(enable = "neon" )]
12289 unsafe fn test_vmlsl_high_laneq_s16 () {
12290 let a
: i32x4
= i32x4
:: new ( 14 , 15 , 16 , 17 );
12291 let b
: i16x8
= i16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12292 let c
: i16x8
= i16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
12293 let e
: i32x4
= i32x4
:: new ( 14 , 13 , 12 , 11 );
12294 let r
: i32x4
= transmute ( vmlsl_high_laneq_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12298 #[simd_test(enable = "neon" )]
12299 unsafe fn test_vmlsl_high_lane_s32 () {
12300 let a
: i64x2
= i64x2
:: new ( 14 , 15 );
12301 let b
: i32x4
= i32x4
:: new ( 3 , 3 , 0 , 1 );
12302 let c
: i32x2
= i32x2
:: new ( 0 , 2 );
12303 let e
: i64x2
= i64x2
:: new ( 14 , 13 );
12304 let r
: i64x2
= transmute ( vmlsl_high_lane_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12308 #[simd_test(enable = "neon" )]
12309 unsafe fn test_vmlsl_high_laneq_s32 () {
12310 let a
: i64x2
= i64x2
:: new ( 14 , 15 );
12311 let b
: i32x4
= i32x4
:: new ( 3 , 3 , 0 , 1 );
12312 let c
: i32x4
= i32x4
:: new ( 0 , 2 , 0 , 0 );
12313 let e
: i64x2
= i64x2
:: new ( 14 , 13 );
12314 let r
: i64x2
= transmute ( vmlsl_high_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12318 #[simd_test(enable = "neon" )]
12319 unsafe fn test_vmlsl_high_lane_u16 () {
12320 let a
: u32x4
= u32x4
:: new ( 14 , 15 , 16 , 17 );
12321 let b
: u16x8
= u16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12322 let c
: u16x4
= u16x4
:: new ( 0 , 2 , 0 , 0 );
12323 let e
: u32x4
= u32x4
:: new ( 14 , 13 , 12 , 11 );
12324 let r
: u32x4
= transmute ( vmlsl_high_lane_u16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12328 #[simd_test(enable = "neon" )]
12329 unsafe fn test_vmlsl_high_laneq_u16 () {
12330 let a
: u32x4
= u32x4
:: new ( 14 , 15 , 16 , 17 );
12331 let b
: u16x8
= u16x8
:: new ( 3 , 3 , 0 , 1 , 0 , 1 , 2 , 3 );
12332 let c
: u16x8
= u16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
12333 let e
: u32x4
= u32x4
:: new ( 14 , 13 , 12 , 11 );
12334 let r
: u32x4
= transmute ( vmlsl_high_laneq_u16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12338 #[simd_test(enable = "neon" )]
12339 unsafe fn test_vmlsl_high_lane_u32 () {
12340 let a
: u64x2
= u64x2
:: new ( 14 , 15 );
12341 let b
: u32x4
= u32x4
:: new ( 3 , 3 , 0 , 1 );
12342 let c
: u32x2
= u32x2
:: new ( 0 , 2 );
12343 let e
: u64x2
= u64x2
:: new ( 14 , 13 );
12344 let r
: u64x2
= transmute ( vmlsl_high_lane_u32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12348 #[simd_test(enable = "neon" )]
12349 unsafe fn test_vmlsl_high_laneq_u32 () {
12350 let a
: u64x2
= u64x2
:: new ( 14 , 15 );
12351 let b
: u32x4
= u32x4
:: new ( 3 , 3 , 0 , 1 );
12352 let c
: u32x4
= u32x4
:: new ( 0 , 2 , 0 , 0 );
12353 let e
: u64x2
= u64x2
:: new ( 14 , 13 );
12354 let r
: u64x2
= transmute ( vmlsl_high_laneq_u32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
12358 #[simd_test(enable = "neon" )]
12359 unsafe fn test_vmovn_high_s16 () {
12360 let a
: i8x8
= i8x8
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 4 , 5 );
12361 let b
: i16x8
= i16x8
:: new ( 2 , 3 , 4 , 5 , 12 , 13 , 14 , 15 );
12362 let e
: i8x16
= i8x16
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 4 , 5 , 2 , 3 , 4 , 5 , 12 , 13 , 14 , 15 );
12363 let r
: i8x16
= transmute ( vmovn_high_s16 ( transmute ( a
), transmute ( b
)));
12367 #[simd_test(enable = "neon" )]
12368 unsafe fn test_vmovn_high_s32 () {
12369 let a
: i16x4
= i16x4
:: new ( 0 , 1 , 2 , 3 );
12370 let b
: i32x4
= i32x4
:: new ( 2 , 3 , 4 , 5 );
12371 let e
: i16x8
= i16x8
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 4 , 5 );
12372 let r
: i16x8
= transmute ( vmovn_high_s32 ( transmute ( a
), transmute ( b
)));
12376 #[simd_test(enable = "neon" )]
12377 unsafe fn test_vmovn_high_s64 () {
12378 let a
: i32x2
= i32x2
:: new ( 0 , 1 );
12379 let b
: i64x2
= i64x2
:: new ( 2 , 3 );
12380 let e
: i32x4
= i32x4
:: new ( 0 , 1 , 2 , 3 );
12381 let r
: i32x4
= transmute ( vmovn_high_s64 ( transmute ( a
), transmute ( b
)));
12385 #[simd_test(enable = "neon" )]
12386 unsafe fn test_vmovn_high_u16 () {
12387 let a
: u8x8
= u8x8
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 4 , 5 );
12388 let b
: u16x8
= u16x8
:: new ( 2 , 3 , 4 , 5 , 12 , 13 , 14 , 15 );
12389 let e
: u8x16
= u8x16
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 4 , 5 , 2 , 3 , 4 , 5 , 12 , 13 , 14 , 15 );
12390 let r
: u8x16
= transmute ( vmovn_high_u16 ( transmute ( a
), transmute ( b
)));
12394 #[simd_test(enable = "neon" )]
12395 unsafe fn test_vmovn_high_u32 () {
12396 let a
: u16x4
= u16x4
:: new ( 0 , 1 , 2 , 3 );
12397 let b
: u32x4
= u32x4
:: new ( 2 , 3 , 4 , 5 );
12398 let e
: u16x8
= u16x8
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 4 , 5 );
12399 let r
: u16x8
= transmute ( vmovn_high_u32 ( transmute ( a
), transmute ( b
)));
12403 #[simd_test(enable = "neon" )]
12404 unsafe fn test_vmovn_high_u64 () {
12405 let a
: u32x2
= u32x2
:: new ( 0 , 1 );
12406 let b
: u64x2
= u64x2
:: new ( 2 , 3 );
12407 let e
: u32x4
= u32x4
:: new ( 0 , 1 , 2 , 3 );
12408 let r
: u32x4
= transmute ( vmovn_high_u64 ( transmute ( a
), transmute ( b
)));
12412 #[simd_test(enable = "neon" )]
12413 unsafe fn test_vneg_s64 () {
12414 let a
: i64x1
= i64x1
:: new ( 0 );
12415 let e
: i64x1
= i64x1
:: new ( 0 );
12416 let r
: i64x1
= transmute ( vneg_s64 ( transmute ( a
)));
12420 #[simd_test(enable = "neon" )]
12421 unsafe fn test_vnegq_s64 () {
12422 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
12423 let e
: i64x2
= i64x2
:: new ( 0 , - 1 );
12424 let r
: i64x2
= transmute ( vnegq_s64 ( transmute ( a
)));
12428 #[simd_test(enable = "neon" )]
12429 unsafe fn test_vneg_f64 () {
12432 let r
: f64 = transmute ( vneg_f64 ( transmute ( a
)));
12436 #[simd_test(enable = "neon" )]
12437 unsafe fn test_vnegq_f64 () {
12438 let a
: f64x2
= f64x2
:: new ( 0 ., 1 .);
12439 let e
: f64x2
= f64x2
:: new ( 0 ., - 1 .);
12440 let r
: f64x2
= transmute ( vnegq_f64 ( transmute ( a
)));
12444 #[simd_test(enable = "neon" )]
12445 unsafe fn test_vqneg_s64 () {
12446 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
12447 let e
: i64x1
= i64x1
:: new ( 0x7F_FF_FF_FF_FF_FF_FF_FF );
12448 let r
: i64x1
= transmute ( vqneg_s64 ( transmute ( a
)));
12452 #[simd_test(enable = "neon" )]
12453 unsafe fn test_vqnegq_s64 () {
12454 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , 0 );
12455 let e
: i64x2
= i64x2
:: new ( 0x7F_FF_FF_FF_FF_FF_FF_FF , 0 );
12456 let r
: i64x2
= transmute ( vqnegq_s64 ( transmute ( a
)));
12460 #[simd_test(enable = "neon" )]
12461 unsafe fn test_vqsubb_s8 () {
12465 let r
: i8 = transmute ( vqsubb_s8 ( transmute ( a
), transmute ( b
)));
12469 #[simd_test(enable = "neon" )]
12470 unsafe fn test_vqsubh_s16 () {
12474 let r
: i16 = transmute ( vqsubh_s16 ( transmute ( a
), transmute ( b
)));
12478 #[simd_test(enable = "neon" )]
12479 unsafe fn test_vqsubb_u8 () {
12483 let r
: u8 = transmute ( vqsubb_u8 ( transmute ( a
), transmute ( b
)));
12487 #[simd_test(enable = "neon" )]
12488 unsafe fn test_vqsubh_u16 () {
12492 let r
: u16 = transmute ( vqsubh_u16 ( transmute ( a
), transmute ( b
)));
12496 #[simd_test(enable = "neon" )]
12497 unsafe fn test_vqsubs_u32 () {
12501 let r
: u32 = transmute ( vqsubs_u32 ( transmute ( a
), transmute ( b
)));
12505 #[simd_test(enable = "neon" )]
12506 unsafe fn test_vqsubd_u64 () {
12510 let r
: u64 = transmute ( vqsubd_u64 ( transmute ( a
), transmute ( b
)));
12514 #[simd_test(enable = "neon" )]
12515 unsafe fn test_vqsubs_s32 () {
12519 let r
: i32 = transmute ( vqsubs_s32 ( transmute ( a
), transmute ( b
)));
12523 #[simd_test(enable = "neon" )]
12524 unsafe fn test_vqsubd_s64 () {
12528 let r
: i64 = transmute ( vqsubd_s64 ( transmute ( a
), transmute ( b
)));
12532 #[simd_test(enable = "neon" )]
12533 unsafe fn test_vrbit_s8 () {
12534 let a
: i8x8
= i8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
12535 let e
: i8x8
= i8x8
:: new ( 0 , 64 , 32 , 96 , 16 , 80 , 48 , 112 );
12536 let r
: i8x8
= transmute ( vrbit_s8 ( transmute ( a
)));
12540 #[simd_test(enable = "neon" )]
12541 unsafe fn test_vrbitq_s8 () {
12542 let a
: i8x16
= i8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
12543 let e
: i8x16
= i8x16
:: new ( 0 , 64 , 32 , 96 , 16 , 80 , 48 , 112 , 8 , 72 , 40 , 104 , 24 , 88 , 56 , 120 );
12544 let r
: i8x16
= transmute ( vrbitq_s8 ( transmute ( a
)));
12548 #[simd_test(enable = "neon" )]
12549 unsafe fn test_vrbit_u8 () {
12550 let a
: u8x8
= u8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
12551 let e
: u8x8
= u8x8
:: new ( 0 , 64 , 32 , 96 , 16 , 80 , 48 , 112 );
12552 let r
: u8x8
= transmute ( vrbit_u8 ( transmute ( a
)));
12556 #[simd_test(enable = "neon" )]
12557 unsafe fn test_vrbitq_u8 () {
12558 let a
: u8x16
= u8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
12559 let e
: u8x16
= u8x16
:: new ( 0 , 64 , 32 , 96 , 16 , 80 , 48 , 112 , 8 , 72 , 40 , 104 , 24 , 88 , 56 , 120 );
12560 let r
: u8x16
= transmute ( vrbitq_u8 ( transmute ( a
)));
12564 #[simd_test(enable = "neon" )]
12565 unsafe fn test_vrbit_p8 () {
12566 let a
: i8x8
= i8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
12567 let e
: i8x8
= i8x8
:: new ( 0 , 64 , 32 , 96 , 16 , 80 , 48 , 112 );
12568 let r
: i8x8
= transmute ( vrbit_p8 ( transmute ( a
)));
12572 #[simd_test(enable = "neon" )]
12573 unsafe fn test_vrbitq_p8 () {
12574 let a
: i8x16
= i8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
12575 let e
: i8x16
= i8x16
:: new ( 0 , 64 , 32 , 96 , 16 , 80 , 48 , 112 , 8 , 72 , 40 , 104 , 24 , 88 , 56 , 120 );
12576 let r
: i8x16
= transmute ( vrbitq_p8 ( transmute ( a
)));
12580 #[simd_test(enable = "neon" )]
12581 unsafe fn test_vrndx_f32 () {
12582 let a
: f32x2
= f32x2
:: new (- 1.5 , 0.5 );
12583 let e
: f32x2
= f32x2
:: new (- 2.0 , 0.0 );
12584 let r
: f32x2
= transmute ( vrndx_f32 ( transmute ( a
)));
12588 #[simd_test(enable = "neon" )]
12589 unsafe fn test_vrndxq_f32 () {
12590 let a
: f32x4
= f32x4
:: new (- 1.5 , 0.5 , 1.5 , 2.5 );
12591 let e
: f32x4
= f32x4
:: new (- 2.0 , 0.0 , 2.0 , 2.0 );
12592 let r
: f32x4
= transmute ( vrndxq_f32 ( transmute ( a
)));
12596 #[simd_test(enable = "neon" )]
12597 unsafe fn test_vrndx_f64 () {
12600 let r
: f64 = transmute ( vrndx_f64 ( transmute ( a
)));
12604 #[simd_test(enable = "neon" )]
12605 unsafe fn test_vrndxq_f64 () {
12606 let a
: f64x2
= f64x2
:: new (- 1.5 , 0.5 );
12607 let e
: f64x2
= f64x2
:: new (- 2.0 , 0.0 );
12608 let r
: f64x2
= transmute ( vrndxq_f64 ( transmute ( a
)));
12612 #[simd_test(enable = "neon" )]
12613 unsafe fn test_vrnda_f32 () {
12614 let a
: f32x2
= f32x2
:: new (- 1.5 , 0.5 );
12615 let e
: f32x2
= f32x2
:: new (- 2.0 , 1.0 );
12616 let r
: f32x2
= transmute ( vrnda_f32 ( transmute ( a
)));
12620 #[simd_test(enable = "neon" )]
12621 unsafe fn test_vrndaq_f32 () {
12622 let a
: f32x4
= f32x4
:: new (- 1.5 , 0.5 , 1.5 , 2.5 );
12623 let e
: f32x4
= f32x4
:: new (- 2.0 , 1.0 , 2.0 , 3.0 );
12624 let r
: f32x4
= transmute ( vrndaq_f32 ( transmute ( a
)));
12628 #[simd_test(enable = "neon" )]
12629 unsafe fn test_vrnda_f64 () {
12632 let r
: f64 = transmute ( vrnda_f64 ( transmute ( a
)));
12636 #[simd_test(enable = "neon" )]
12637 unsafe fn test_vrndaq_f64 () {
12638 let a
: f64x2
= f64x2
:: new (- 1.5 , 0.5 );
12639 let e
: f64x2
= f64x2
:: new (- 2.0 , 1.0 );
12640 let r
: f64x2
= transmute ( vrndaq_f64 ( transmute ( a
)));
12644 #[simd_test(enable = "neon" )]
12645 unsafe fn test_vrndn_f64 () {
12648 let r
: f64 = transmute ( vrndn_f64 ( transmute ( a
)));
12652 #[simd_test(enable = "neon" )]
12653 unsafe fn test_vrndnq_f64 () {
12654 let a
: f64x2
= f64x2
:: new (- 1.5 , 0.5 );
12655 let e
: f64x2
= f64x2
:: new (- 2.0 , 0.0 );
12656 let r
: f64x2
= transmute ( vrndnq_f64 ( transmute ( a
)));
12660 #[simd_test(enable = "neon" )]
12661 unsafe fn test_vrndm_f32 () {
12662 let a
: f32x2
= f32x2
:: new (- 1.5 , 0.5 );
12663 let e
: f32x2
= f32x2
:: new (- 2.0 , 0.0 );
12664 let r
: f32x2
= transmute ( vrndm_f32 ( transmute ( a
)));
12668 #[simd_test(enable = "neon" )]
12669 unsafe fn test_vrndmq_f32 () {
12670 let a
: f32x4
= f32x4
:: new (- 1.5 , 0.5 , 1.5 , 2.5 );
12671 let e
: f32x4
= f32x4
:: new (- 2.0 , 0.0 , 1.0 , 2.0 );
12672 let r
: f32x4
= transmute ( vrndmq_f32 ( transmute ( a
)));
12676 #[simd_test(enable = "neon" )]
12677 unsafe fn test_vrndm_f64 () {
12680 let r
: f64 = transmute ( vrndm_f64 ( transmute ( a
)));
12684 #[simd_test(enable = "neon" )]
12685 unsafe fn test_vrndmq_f64 () {
12686 let a
: f64x2
= f64x2
:: new (- 1.5 , 0.5 );
12687 let e
: f64x2
= f64x2
:: new (- 2.0 , 0.0 );
12688 let r
: f64x2
= transmute ( vrndmq_f64 ( transmute ( a
)));
12692 #[simd_test(enable = "neon" )]
12693 unsafe fn test_vrndp_f32 () {
12694 let a
: f32x2
= f32x2
:: new (- 1.5 , 0.5 );
12695 let e
: f32x2
= f32x2
:: new (- 1.0 , 1.0 );
12696 let r
: f32x2
= transmute ( vrndp_f32 ( transmute ( a
)));
12700 #[simd_test(enable = "neon" )]
12701 unsafe fn test_vrndpq_f32 () {
12702 let a
: f32x4
= f32x4
:: new (- 1.5 , 0.5 , 1.5 , 2.5 );
12703 let e
: f32x4
= f32x4
:: new (- 1.0 , 1.0 , 2.0 , 3.0 );
12704 let r
: f32x4
= transmute ( vrndpq_f32 ( transmute ( a
)));
12708 #[simd_test(enable = "neon" )]
12709 unsafe fn test_vrndp_f64 () {
12712 let r
: f64 = transmute ( vrndp_f64 ( transmute ( a
)));
12716 #[simd_test(enable = "neon" )]
12717 unsafe fn test_vrndpq_f64 () {
12718 let a
: f64x2
= f64x2
:: new (- 1.5 , 0.5 );
12719 let e
: f64x2
= f64x2
:: new (- 1.0 , 1.0 );
12720 let r
: f64x2
= transmute ( vrndpq_f64 ( transmute ( a
)));
12724 #[simd_test(enable = "neon" )]
12725 unsafe fn test_vrnd_f32 () {
12726 let a
: f32x2
= f32x2
:: new (- 1.5 , 0.5 );
12727 let e
: f32x2
= f32x2
:: new (- 1.0 , 0.0 );
12728 let r
: f32x2
= transmute ( vrnd_f32 ( transmute ( a
)));
12732 #[simd_test(enable = "neon" )]
12733 unsafe fn test_vrndq_f32 () {
12734 let a
: f32x4
= f32x4
:: new (- 1.5 , 0.5 , 1.5 , 2.5 );
12735 let e
: f32x4
= f32x4
:: new (- 1.0 , 0.0 , 1.0 , 2.0 );
12736 let r
: f32x4
= transmute ( vrndq_f32 ( transmute ( a
)));
12740 #[simd_test(enable = "neon" )]
12741 unsafe fn test_vrnd_f64 () {
12744 let r
: f64 = transmute ( vrnd_f64 ( transmute ( a
)));
12748 #[simd_test(enable = "neon" )]
12749 unsafe fn test_vrndq_f64 () {
12750 let a
: f64x2
= f64x2
:: new (- 1.5 , 0.5 );
12751 let e
: f64x2
= f64x2
:: new (- 1.0 , 0.0 );
12752 let r
: f64x2
= transmute ( vrndq_f64 ( transmute ( a
)));
12756 #[simd_test(enable = "neon" )]
12757 unsafe fn test_vrndi_f32 () {
12758 let a
: f32x2
= f32x2
:: new (- 1.5 , 0.5 );
12759 let e
: f32x2
= f32x2
:: new (- 2.0 , 0.0 );
12760 let r
: f32x2
= transmute ( vrndi_f32 ( transmute ( a
)));
12764 #[simd_test(enable = "neon" )]
12765 unsafe fn test_vrndiq_f32 () {
12766 let a
: f32x4
= f32x4
:: new (- 1.5 , 0.5 , 1.5 , 2.5 );
12767 let e
: f32x4
= f32x4
:: new (- 2.0 , 0.0 , 2.0 , 2.0 );
12768 let r
: f32x4
= transmute ( vrndiq_f32 ( transmute ( a
)));
12772 #[simd_test(enable = "neon" )]
12773 unsafe fn test_vrndi_f64 () {
12776 let r
: f64 = transmute ( vrndi_f64 ( transmute ( a
)));
12780 #[simd_test(enable = "neon" )]
12781 unsafe fn test_vrndiq_f64 () {
12782 let a
: f64x2
= f64x2
:: new (- 1.5 , 0.5 );
12783 let e
: f64x2
= f64x2
:: new (- 2.0 , 0.0 );
12784 let r
: f64x2
= transmute ( vrndiq_f64 ( transmute ( a
)));
12788 #[simd_test(enable = "neon" )]
12789 unsafe fn test_vqaddb_s8 () {
12793 let r
: i8 = transmute ( vqaddb_s8 ( transmute ( a
), transmute ( b
)));
12797 #[simd_test(enable = "neon" )]
12798 unsafe fn test_vqaddh_s16 () {
12802 let r
: i16 = transmute ( vqaddh_s16 ( transmute ( a
), transmute ( b
)));
12806 #[simd_test(enable = "neon" )]
12807 unsafe fn test_vqaddb_u8 () {
12811 let r
: u8 = transmute ( vqaddb_u8 ( transmute ( a
), transmute ( b
)));
12815 #[simd_test(enable = "neon" )]
12816 unsafe fn test_vqaddh_u16 () {
12820 let r
: u16 = transmute ( vqaddh_u16 ( transmute ( a
), transmute ( b
)));
12824 #[simd_test(enable = "neon" )]
12825 unsafe fn test_vqadds_u32 () {
12829 let r
: u32 = transmute ( vqadds_u32 ( transmute ( a
), transmute ( b
)));
12833 #[simd_test(enable = "neon" )]
12834 unsafe fn test_vqaddd_u64 () {
12838 let r
: u64 = transmute ( vqaddd_u64 ( transmute ( a
), transmute ( b
)));
12842 #[simd_test(enable = "neon" )]
12843 unsafe fn test_vqadds_s32 () {
12847 let r
: i32 = transmute ( vqadds_s32 ( transmute ( a
), transmute ( b
)));
12851 #[simd_test(enable = "neon" )]
12852 unsafe fn test_vqaddd_s64 () {
12856 let r
: i64 = transmute ( vqaddd_s64 ( transmute ( a
), transmute ( b
)));
12860 #[simd_test(enable = "neon" )]
12861 unsafe fn test_vmul_f64 () {
12865 let r
: f64 = transmute ( vmul_f64 ( transmute ( a
), transmute ( b
)));
12869 #[simd_test(enable = "neon" )]
12870 unsafe fn test_vmulq_f64 () {
12871 let a
: f64x2
= f64x2
:: new ( 1.0 , 2.0 );
12872 let b
: f64x2
= f64x2
:: new ( 2.0 , 3.0 );
12873 let e
: f64x2
= f64x2
:: new ( 2.0 , 6.0 );
12874 let r
: f64x2
= transmute ( vmulq_f64 ( transmute ( a
), transmute ( b
)));
12878 #[simd_test(enable = "neon" )]
12879 unsafe fn test_vmul_n_f64 () {
12883 let r
: f64 = transmute ( vmul_n_f64 ( transmute ( a
), transmute ( b
)));
12887 #[simd_test(enable = "neon" )]
12888 unsafe fn test_vmulq_n_f64 () {
12889 let a
: f64x2
= f64x2
:: new ( 1 ., 2 .);
12891 let e
: f64x2
= f64x2
:: new ( 2 ., 4 .);
12892 let r
: f64x2
= transmute ( vmulq_n_f64 ( transmute ( a
), transmute ( b
)));
12896 #[simd_test(enable = "neon" )]
12897 unsafe fn test_vmul_lane_f64 () {
12901 let r
: f64 = transmute ( vmul_lane_f64
::< 0 >( transmute ( a
), transmute ( b
)));
12905 #[simd_test(enable = "neon" )]
12906 unsafe fn test_vmul_laneq_f64 () {
12908 let b
: f64x2
= f64x2
:: new ( 2 ., 0 .);
12910 let r
: f64 = transmute ( vmul_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
)));
12914 #[simd_test(enable = "neon" )]
12915 unsafe fn test_vmulq_lane_f64 () {
12916 let a
: f64x2
= f64x2
:: new ( 1 ., 2 .);
12918 let e
: f64x2
= f64x2
:: new ( 2 ., 4 .);
12919 let r
: f64x2
= transmute ( vmulq_lane_f64
::< 0 >( transmute ( a
), transmute ( b
)));
12923 #[simd_test(enable = "neon" )]
12924 unsafe fn test_vmulq_laneq_f64 () {
12925 let a
: f64x2
= f64x2
:: new ( 1 ., 2 .);
12926 let b
: f64x2
= f64x2
:: new ( 2 ., 0 .);
12927 let e
: f64x2
= f64x2
:: new ( 2 ., 4 .);
12928 let r
: f64x2
= transmute ( vmulq_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
)));
12932 #[simd_test(enable = "neon" )]
12933 unsafe fn test_vmuls_lane_f32 () {
12935 let b
: f32x2
= f32x2
:: new ( 2 ., 0 .);
12937 let r
: f32 = transmute ( vmuls_lane_f32
::< 0 >( transmute ( a
), transmute ( b
)));
12941 #[simd_test(enable = "neon" )]
12942 unsafe fn test_vmuls_laneq_f32 () {
12944 let b
: f32x4
= f32x4
:: new ( 2 ., 0 ., 0 ., 0 .);
12946 let r
: f32 = transmute ( vmuls_laneq_f32
::< 0 >( transmute ( a
), transmute ( b
)));
12950 #[simd_test(enable = "neon" )]
12951 unsafe fn test_vmuld_lane_f64 () {
12955 let r
: f64 = transmute ( vmuld_lane_f64
::< 0 >( transmute ( a
), transmute ( b
)));
12959 #[simd_test(enable = "neon" )]
12960 unsafe fn test_vmuld_laneq_f64 () {
12962 let b
: f64x2
= f64x2
:: new ( 2 ., 0 .);
12964 let r
: f64 = transmute ( vmuld_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
)));
12968 #[simd_test(enable = "neon" )]
12969 unsafe fn test_vmull_high_s8 () {
12970 let a
: i8x16
= i8x16
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
12971 let b
: i8x16
= i8x16
:: new ( 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 );
12972 let e
: i16x8
= i16x8
:: new ( 9 , 20 , 11 , 24 , 13 , 28 , 15 , 32 );
12973 let r
: i16x8
= transmute ( vmull_high_s8 ( transmute ( a
), transmute ( b
)));
12977 #[simd_test(enable = "neon" )]
12978 unsafe fn test_vmull_high_s16 () {
12979 let a
: i16x8
= i16x8
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 );
12980 let b
: i16x8
= i16x8
:: new ( 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 );
12981 let e
: i32x4
= i32x4
:: new ( 9 , 20 , 11 , 24 );
12982 let r
: i32x4
= transmute ( vmull_high_s16 ( transmute ( a
), transmute ( b
)));
12986 #[simd_test(enable = "neon" )]
12987 unsafe fn test_vmull_high_s32 () {
12988 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 9 , 10 );
12989 let b
: i32x4
= i32x4
:: new ( 1 , 2 , 1 , 2 );
12990 let e
: i64x2
= i64x2
:: new ( 9 , 20 );
12991 let r
: i64x2
= transmute ( vmull_high_s32 ( transmute ( a
), transmute ( b
)));
12995 #[simd_test(enable = "neon" )]
12996 unsafe fn test_vmull_high_u8 () {
12997 let a
: u8x16
= u8x16
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
12998 let b
: u8x16
= u8x16
:: new ( 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 );
12999 let e
: u16x8
= u16x8
:: new ( 9 , 20 , 11 , 24 , 13 , 28 , 15 , 32 );
13000 let r
: u16x8
= transmute ( vmull_high_u8 ( transmute ( a
), transmute ( b
)));
13004 #[simd_test(enable = "neon" )]
13005 unsafe fn test_vmull_high_u16 () {
13006 let a
: u16x8
= u16x8
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 );
13007 let b
: u16x8
= u16x8
:: new ( 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 );
13008 let e
: u32x4
= u32x4
:: new ( 9 , 20 , 11 , 24 );
13009 let r
: u32x4
= transmute ( vmull_high_u16 ( transmute ( a
), transmute ( b
)));
13013 #[simd_test(enable = "neon" )]
13014 unsafe fn test_vmull_high_u32 () {
13015 let a
: u32x4
= u32x4
:: new ( 1 , 2 , 9 , 10 );
13016 let b
: u32x4
= u32x4
:: new ( 1 , 2 , 1 , 2 );
13017 let e
: u64x2
= u64x2
:: new ( 9 , 20 );
13018 let r
: u64x2
= transmute ( vmull_high_u32 ( transmute ( a
), transmute ( b
)));
13022 #[simd_test(enable = "neon" )]
13023 unsafe fn test_vmull_p64 () {
13027 let r
: p128
= transmute ( vmull_p64 ( transmute ( a
), transmute ( b
)));
13031 #[simd_test(enable = "neon" )]
13032 unsafe fn test_vmull_high_p8 () {
13033 let a
: i8x16
= i8x16
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
13034 let b
: i8x16
= i8x16
:: new ( 1 , 3 , 1 , 3 , 1 , 3 , 1 , 3 , 1 , 3 , 1 , 3 , 1 , 3 , 1 , 3 );
13035 let e
: i16x8
= i16x8
:: new ( 9 , 30 , 11 , 20 , 13 , 18 , 15 , 48 );
13036 let r
: i16x8
= transmute ( vmull_high_p8 ( transmute ( a
), transmute ( b
)));
13040 #[simd_test(enable = "neon" )]
13041 unsafe fn test_vmull_high_p64 () {
13042 let a
: i64x2
= i64x2
:: new ( 1 , 15 );
13043 let b
: i64x2
= i64x2
:: new ( 1 , 3 );
13045 let r
: p128
= transmute ( vmull_high_p64 ( transmute ( a
), transmute ( b
)));
13049 #[simd_test(enable = "neon" )]
13050 unsafe fn test_vmull_high_n_s16 () {
13051 let a
: i16x8
= i16x8
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 );
13053 let e
: i32x4
= i32x4
:: new ( 18 , 20 , 22 , 24 );
13054 let r
: i32x4
= transmute ( vmull_high_n_s16 ( transmute ( a
), transmute ( b
)));
13058 #[simd_test(enable = "neon" )]
13059 unsafe fn test_vmull_high_n_s32 () {
13060 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 9 , 10 );
13062 let e
: i64x2
= i64x2
:: new ( 18 , 20 );
13063 let r
: i64x2
= transmute ( vmull_high_n_s32 ( transmute ( a
), transmute ( b
)));
13067 #[simd_test(enable = "neon" )]
13068 unsafe fn test_vmull_high_n_u16 () {
13069 let a
: u16x8
= u16x8
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 );
13071 let e
: u32x4
= u32x4
:: new ( 18 , 20 , 22 , 24 );
13072 let r
: u32x4
= transmute ( vmull_high_n_u16 ( transmute ( a
), transmute ( b
)));
13076 #[simd_test(enable = "neon" )]
13077 unsafe fn test_vmull_high_n_u32 () {
13078 let a
: u32x4
= u32x4
:: new ( 1 , 2 , 9 , 10 );
13080 let e
: u64x2
= u64x2
:: new ( 18 , 20 );
13081 let r
: u64x2
= transmute ( vmull_high_n_u32 ( transmute ( a
), transmute ( b
)));
13085 #[simd_test(enable = "neon" )]
13086 unsafe fn test_vmull_high_lane_s16 () {
13087 let a
: i16x8
= i16x8
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 );
13088 let b
: i16x4
= i16x4
:: new ( 0 , 2 , 0 , 0 );
13089 let e
: i32x4
= i32x4
:: new ( 18 , 20 , 22 , 24 );
13090 let r
: i32x4
= transmute ( vmull_high_lane_s16
::< 1 >( transmute ( a
), transmute ( b
)));
13094 #[simd_test(enable = "neon" )]
13095 unsafe fn test_vmull_high_laneq_s16 () {
13096 let a
: i16x8
= i16x8
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 );
13097 let b
: i16x8
= i16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
13098 let e
: i32x4
= i32x4
:: new ( 18 , 20 , 22 , 24 );
13099 let r
: i32x4
= transmute ( vmull_high_laneq_s16
::< 1 >( transmute ( a
), transmute ( b
)));
13103 #[simd_test(enable = "neon" )]
13104 unsafe fn test_vmull_high_lane_s32 () {
13105 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 9 , 10 );
13106 let b
: i32x2
= i32x2
:: new ( 0 , 2 );
13107 let e
: i64x2
= i64x2
:: new ( 18 , 20 );
13108 let r
: i64x2
= transmute ( vmull_high_lane_s32
::< 1 >( transmute ( a
), transmute ( b
)));
13112 #[simd_test(enable = "neon" )]
13113 unsafe fn test_vmull_high_laneq_s32 () {
13114 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 9 , 10 );
13115 let b
: i32x4
= i32x4
:: new ( 0 , 2 , 0 , 0 );
13116 let e
: i64x2
= i64x2
:: new ( 18 , 20 );
13117 let r
: i64x2
= transmute ( vmull_high_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
)));
13121 #[simd_test(enable = "neon" )]
13122 unsafe fn test_vmull_high_lane_u16 () {
13123 let a
: u16x8
= u16x8
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 );
13124 let b
: u16x4
= u16x4
:: new ( 0 , 2 , 0 , 0 );
13125 let e
: u32x4
= u32x4
:: new ( 18 , 20 , 22 , 24 );
13126 let r
: u32x4
= transmute ( vmull_high_lane_u16
::< 1 >( transmute ( a
), transmute ( b
)));
13130 #[simd_test(enable = "neon" )]
13131 unsafe fn test_vmull_high_laneq_u16 () {
13132 let a
: u16x8
= u16x8
:: new ( 1 , 2 , 9 , 10 , 9 , 10 , 11 , 12 );
13133 let b
: u16x8
= u16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
13134 let e
: u32x4
= u32x4
:: new ( 18 , 20 , 22 , 24 );
13135 let r
: u32x4
= transmute ( vmull_high_laneq_u16
::< 1 >( transmute ( a
), transmute ( b
)));
13139 #[simd_test(enable = "neon" )]
13140 unsafe fn test_vmull_high_lane_u32 () {
13141 let a
: u32x4
= u32x4
:: new ( 1 , 2 , 9 , 10 );
13142 let b
: u32x2
= u32x2
:: new ( 0 , 2 );
13143 let e
: u64x2
= u64x2
:: new ( 18 , 20 );
13144 let r
: u64x2
= transmute ( vmull_high_lane_u32
::< 1 >( transmute ( a
), transmute ( b
)));
13148 #[simd_test(enable = "neon" )]
13149 unsafe fn test_vmull_high_laneq_u32 () {
13150 let a
: u32x4
= u32x4
:: new ( 1 , 2 , 9 , 10 );
13151 let b
: u32x4
= u32x4
:: new ( 0 , 2 , 0 , 0 );
13152 let e
: u64x2
= u64x2
:: new ( 18 , 20 );
13153 let r
: u64x2
= transmute ( vmull_high_laneq_u32
::< 1 >( transmute ( a
), transmute ( b
)));
13157 #[simd_test(enable = "neon" )]
13158 unsafe fn test_vmulx_f32 () {
13159 let a
: f32x2
= f32x2
:: new ( 1 ., 2 .);
13160 let b
: f32x2
= f32x2
:: new ( 2 ., 2 .);
13161 let e
: f32x2
= f32x2
:: new ( 2 ., 4 .);
13162 let r
: f32x2
= transmute ( vmulx_f32 ( transmute ( a
), transmute ( b
)));
13166 #[simd_test(enable = "neon" )]
13167 unsafe fn test_vmulxq_f32 () {
13168 let a
: f32x4
= f32x4
:: new ( 1 ., 2 ., 3 ., 4 .);
13169 let b
: f32x4
= f32x4
:: new ( 2 ., 2 ., 2 ., 2 .);
13170 let e
: f32x4
= f32x4
:: new ( 2 ., 4 ., 6 ., 8 .);
13171 let r
: f32x4
= transmute ( vmulxq_f32 ( transmute ( a
), transmute ( b
)));
13175 #[simd_test(enable = "neon" )]
13176 unsafe fn test_vmulx_f64 () {
13180 let r
: f64 = transmute ( vmulx_f64 ( transmute ( a
), transmute ( b
)));
13184 #[simd_test(enable = "neon" )]
13185 unsafe fn test_vmulxq_f64 () {
13186 let a
: f64x2
= f64x2
:: new ( 1 ., 2 .);
13187 let b
: f64x2
= f64x2
:: new ( 2 ., 2 .);
13188 let e
: f64x2
= f64x2
:: new ( 2 ., 4 .);
13189 let r
: f64x2
= transmute ( vmulxq_f64 ( transmute ( a
), transmute ( b
)));
13193 #[simd_test(enable = "neon" )]
13194 unsafe fn test_vmulx_lane_f64 () {
13198 let r
: f64 = transmute ( vmulx_lane_f64
::< 0 >( transmute ( a
), transmute ( b
)));
13202 #[simd_test(enable = "neon" )]
13203 unsafe fn test_vmulx_laneq_f64 () {
13205 let b
: f64x2
= f64x2
:: new ( 2 ., 0 .);
13207 let r
: f64 = transmute ( vmulx_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
)));
13211 #[simd_test(enable = "neon" )]
13212 unsafe fn test_vmulx_lane_f32 () {
13213 let a
: f32x2
= f32x2
:: new ( 1 ., 2 .);
13214 let b
: f32x2
= f32x2
:: new ( 2 ., 0 .);
13215 let e
: f32x2
= f32x2
:: new ( 2 ., 4 .);
13216 let r
: f32x2
= transmute ( vmulx_lane_f32
::< 0 >( transmute ( a
), transmute ( b
)));
13220 #[simd_test(enable = "neon" )]
13221 unsafe fn test_vmulx_laneq_f32 () {
13222 let a
: f32x2
= f32x2
:: new ( 1 ., 2 .);
13223 let b
: f32x4
= f32x4
:: new ( 2 ., 0 ., 0 ., 0 .);
13224 let e
: f32x2
= f32x2
:: new ( 2 ., 4 .);
13225 let r
: f32x2
= transmute ( vmulx_laneq_f32
::< 0 >( transmute ( a
), transmute ( b
)));
13229 #[simd_test(enable = "neon" )]
13230 unsafe fn test_vmulxq_lane_f32 () {
13231 let a
: f32x4
= f32x4
:: new ( 1 ., 2 ., 3 ., 4 .);
13232 let b
: f32x2
= f32x2
:: new ( 2 ., 0 .);
13233 let e
: f32x4
= f32x4
:: new ( 2 ., 4 ., 6 ., 8 .);
13234 let r
: f32x4
= transmute ( vmulxq_lane_f32
::< 0 >( transmute ( a
), transmute ( b
)));
13238 #[simd_test(enable = "neon" )]
13239 unsafe fn test_vmulxq_laneq_f32 () {
13240 let a
: f32x4
= f32x4
:: new ( 1 ., 2 ., 3 ., 4 .);
13241 let b
: f32x4
= f32x4
:: new ( 2 ., 0 ., 0 ., 0 .);
13242 let e
: f32x4
= f32x4
:: new ( 2 ., 4 ., 6 ., 8 .);
13243 let r
: f32x4
= transmute ( vmulxq_laneq_f32
::< 0 >( transmute ( a
), transmute ( b
)));
13247 #[simd_test(enable = "neon" )]
13248 unsafe fn test_vmulxq_lane_f64 () {
13249 let a
: f64x2
= f64x2
:: new ( 1 ., 2 .);
13251 let e
: f64x2
= f64x2
:: new ( 2 ., 4 .);
13252 let r
: f64x2
= transmute ( vmulxq_lane_f64
::< 0 >( transmute ( a
), transmute ( b
)));
13256 #[simd_test(enable = "neon" )]
13257 unsafe fn test_vmulxq_laneq_f64 () {
13258 let a
: f64x2
= f64x2
:: new ( 1 ., 2 .);
13259 let b
: f64x2
= f64x2
:: new ( 2 ., 0 .);
13260 let e
: f64x2
= f64x2
:: new ( 2 ., 4 .);
13261 let r
: f64x2
= transmute ( vmulxq_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
)));
13265 #[simd_test(enable = "neon" )]
13266 unsafe fn test_vmulxs_f32 () {
13270 let r
: f32 = transmute ( vmulxs_f32 ( transmute ( a
), transmute ( b
)));
13274 #[simd_test(enable = "neon" )]
13275 unsafe fn test_vmulxd_f64 () {
13279 let r
: f64 = transmute ( vmulxd_f64 ( transmute ( a
), transmute ( b
)));
13283 #[simd_test(enable = "neon" )]
13284 unsafe fn test_vmulxs_lane_f32 () {
13286 let b
: f32x2
= f32x2
:: new ( 3 ., 0 .);
13288 let r
: f32 = transmute ( vmulxs_lane_f32
::< 0 >( transmute ( a
), transmute ( b
)));
13292 #[simd_test(enable = "neon" )]
13293 unsafe fn test_vmulxs_laneq_f32 () {
13295 let b
: f32x4
= f32x4
:: new ( 3 ., 0 ., 0 ., 0 .);
13297 let r
: f32 = transmute ( vmulxs_laneq_f32
::< 0 >( transmute ( a
), transmute ( b
)));
13301 #[simd_test(enable = "neon" )]
13302 unsafe fn test_vmulxd_lane_f64 () {
13306 let r
: f64 = transmute ( vmulxd_lane_f64
::< 0 >( transmute ( a
), transmute ( b
)));
13310 #[simd_test(enable = "neon" )]
13311 unsafe fn test_vmulxd_laneq_f64 () {
13313 let b
: f64x2
= f64x2
:: new ( 3 ., 0 .);
13315 let r
: f64 = transmute ( vmulxd_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
)));
13319 #[simd_test(enable = "neon" )]
13320 unsafe fn test_vfma_f64 () {
13325 let r
: f64 = transmute ( vfma_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
13329 #[simd_test(enable = "neon" )]
13330 unsafe fn test_vfmaq_f64 () {
13331 let a
: f64x2
= f64x2
:: new ( 8.0 , 18.0 );
13332 let b
: f64x2
= f64x2
:: new ( 6.0 , 4.0 );
13333 let c
: f64x2
= f64x2
:: new ( 2.0 , 3.0 );
13334 let e
: f64x2
= f64x2
:: new ( 20.0 , 30.0 );
13335 let r
: f64x2
= transmute ( vfmaq_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
13339 #[simd_test(enable = "neon" )]
13340 unsafe fn test_vfma_n_f64 () {
13345 let r
: f64 = transmute ( vfma_n_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
13349 #[simd_test(enable = "neon" )]
13350 unsafe fn test_vfmaq_n_f64 () {
13351 let a
: f64x2
= f64x2
:: new ( 2.0 , 3.0 );
13352 let b
: f64x2
= f64x2
:: new ( 6.0 , 4.0 );
13354 let e
: f64x2
= f64x2
:: new ( 50.0 , 35.0 );
13355 let r
: f64x2
= transmute ( vfmaq_n_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
13359 #[simd_test(enable = "neon" )]
13360 unsafe fn test_vfma_lane_f32 () {
13361 let a
: f32x2
= f32x2
:: new ( 2 ., 3 .);
13362 let b
: f32x2
= f32x2
:: new ( 6 ., 4 .);
13363 let c
: f32x2
= f32x2
:: new ( 2 ., 0 .);
13364 let e
: f32x2
= f32x2
:: new ( 14 ., 11 .);
13365 let r
: f32x2
= transmute ( vfma_lane_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13369 #[simd_test(enable = "neon" )]
13370 unsafe fn test_vfma_laneq_f32 () {
13371 let a
: f32x2
= f32x2
:: new ( 2 ., 3 .);
13372 let b
: f32x2
= f32x2
:: new ( 6 ., 4 .);
13373 let c
: f32x4
= f32x4
:: new ( 2 ., 0 ., 0 ., 0 .);
13374 let e
: f32x2
= f32x2
:: new ( 14 ., 11 .);
13375 let r
: f32x2
= transmute ( vfma_laneq_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13379 #[simd_test(enable = "neon" )]
13380 unsafe fn test_vfmaq_lane_f32 () {
13381 let a
: f32x4
= f32x4
:: new ( 2 ., 3 ., 4 ., 5 .);
13382 let b
: f32x4
= f32x4
:: new ( 6 ., 4 ., 7 ., 8 .);
13383 let c
: f32x2
= f32x2
:: new ( 2 ., 0 .);
13384 let e
: f32x4
= f32x4
:: new ( 14 ., 11 ., 18 ., 21 .);
13385 let r
: f32x4
= transmute ( vfmaq_lane_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13389 #[simd_test(enable = "neon" )]
13390 unsafe fn test_vfmaq_laneq_f32 () {
13391 let a
: f32x4
= f32x4
:: new ( 2 ., 3 ., 4 ., 5 .);
13392 let b
: f32x4
= f32x4
:: new ( 6 ., 4 ., 7 ., 8 .);
13393 let c
: f32x4
= f32x4
:: new ( 2 ., 0 ., 0 ., 0 .);
13394 let e
: f32x4
= f32x4
:: new ( 14 ., 11 ., 18 ., 21 .);
13395 let r
: f32x4
= transmute ( vfmaq_laneq_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13399 #[simd_test(enable = "neon" )]
13400 unsafe fn test_vfma_lane_f64 () {
13405 let r
: f64 = transmute ( vfma_lane_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13409 #[simd_test(enable = "neon" )]
13410 unsafe fn test_vfma_laneq_f64 () {
13413 let c
: f64x2
= f64x2
:: new ( 2 ., 0 .);
13415 let r
: f64 = transmute ( vfma_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13419 #[simd_test(enable = "neon" )]
13420 unsafe fn test_vfmaq_lane_f64 () {
13421 let a
: f64x2
= f64x2
:: new ( 2 ., 3 .);
13422 let b
: f64x2
= f64x2
:: new ( 6 ., 4 .);
13424 let e
: f64x2
= f64x2
:: new ( 14 ., 11 .);
13425 let r
: f64x2
= transmute ( vfmaq_lane_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13429 #[simd_test(enable = "neon" )]
13430 unsafe fn test_vfmaq_laneq_f64 () {
13431 let a
: f64x2
= f64x2
:: new ( 2 ., 3 .);
13432 let b
: f64x2
= f64x2
:: new ( 6 ., 4 .);
13433 let c
: f64x2
= f64x2
:: new ( 2 ., 0 .);
13434 let e
: f64x2
= f64x2
:: new ( 14 ., 11 .);
13435 let r
: f64x2
= transmute ( vfmaq_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13439 #[simd_test(enable = "neon" )]
13440 unsafe fn test_vfmas_lane_f32 () {
13443 let c
: f32x2
= f32x2
:: new ( 3 ., 0 .);
13445 let r
: f32 = transmute ( vfmas_lane_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13449 #[simd_test(enable = "neon" )]
13450 unsafe fn test_vfmas_laneq_f32 () {
13453 let c
: f32x4
= f32x4
:: new ( 3 ., 0 ., 0 ., 0 .);
13455 let r
: f32 = transmute ( vfmas_laneq_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13459 #[simd_test(enable = "neon" )]
13460 unsafe fn test_vfmad_lane_f64 () {
13465 let r
: f64 = transmute ( vfmad_lane_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13469 #[simd_test(enable = "neon" )]
13470 unsafe fn test_vfmad_laneq_f64 () {
13473 let c
: f64x2
= f64x2
:: new ( 3 ., 0 .);
13475 let r
: f64 = transmute ( vfmad_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13479 #[simd_test(enable = "neon" )]
13480 unsafe fn test_vfms_f64 () {
13485 let r
: f64 = transmute ( vfms_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
13489 #[simd_test(enable = "neon" )]
13490 unsafe fn test_vfmsq_f64 () {
13491 let a
: f64x2
= f64x2
:: new ( 20.0 , 30.0 );
13492 let b
: f64x2
= f64x2
:: new ( 6.0 , 4.0 );
13493 let c
: f64x2
= f64x2
:: new ( 2.0 , 3.0 );
13494 let e
: f64x2
= f64x2
:: new ( 8.0 , 18.0 );
13495 let r
: f64x2
= transmute ( vfmsq_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
13499 #[simd_test(enable = "neon" )]
13500 unsafe fn test_vfms_n_f64 () {
13505 let r
: f64 = transmute ( vfms_n_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
13509 #[simd_test(enable = "neon" )]
13510 unsafe fn test_vfmsq_n_f64 () {
13511 let a
: f64x2
= f64x2
:: new ( 50.0 , 35.0 );
13512 let b
: f64x2
= f64x2
:: new ( 6.0 , 4.0 );
13514 let e
: f64x2
= f64x2
:: new ( 2.0 , 3.0 );
13515 let r
: f64x2
= transmute ( vfmsq_n_f64 ( transmute ( a
), transmute ( b
), transmute ( c
)));
13519 #[simd_test(enable = "neon" )]
13520 unsafe fn test_vfms_lane_f32 () {
13521 let a
: f32x2
= f32x2
:: new ( 14 ., 11 .);
13522 let b
: f32x2
= f32x2
:: new ( 6 ., 4 .);
13523 let c
: f32x2
= f32x2
:: new ( 2 ., 0 .);
13524 let e
: f32x2
= f32x2
:: new ( 2 ., 3 .);
13525 let r
: f32x2
= transmute ( vfms_lane_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13529 #[simd_test(enable = "neon" )]
13530 unsafe fn test_vfms_laneq_f32 () {
13531 let a
: f32x2
= f32x2
:: new ( 14 ., 11 .);
13532 let b
: f32x2
= f32x2
:: new ( 6 ., 4 .);
13533 let c
: f32x4
= f32x4
:: new ( 2 ., 0 ., 0 ., 0 .);
13534 let e
: f32x2
= f32x2
:: new ( 2 ., 3 .);
13535 let r
: f32x2
= transmute ( vfms_laneq_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13539 #[simd_test(enable = "neon" )]
13540 unsafe fn test_vfmsq_lane_f32 () {
13541 let a
: f32x4
= f32x4
:: new ( 14 ., 11 ., 18 ., 21 .);
13542 let b
: f32x4
= f32x4
:: new ( 6 ., 4 ., 7 ., 8 .);
13543 let c
: f32x2
= f32x2
:: new ( 2 ., 0 .);
13544 let e
: f32x4
= f32x4
:: new ( 2 ., 3 ., 4 ., 5 .);
13545 let r
: f32x4
= transmute ( vfmsq_lane_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13549 #[simd_test(enable = "neon" )]
13550 unsafe fn test_vfmsq_laneq_f32 () {
13551 let a
: f32x4
= f32x4
:: new ( 14 ., 11 ., 18 ., 21 .);
13552 let b
: f32x4
= f32x4
:: new ( 6 ., 4 ., 7 ., 8 .);
13553 let c
: f32x4
= f32x4
:: new ( 2 ., 0 ., 0 ., 0 .);
13554 let e
: f32x4
= f32x4
:: new ( 2 ., 3 ., 4 ., 5 .);
13555 let r
: f32x4
= transmute ( vfmsq_laneq_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13559 #[simd_test(enable = "neon" )]
13560 unsafe fn test_vfms_lane_f64 () {
13565 let r
: f64 = transmute ( vfms_lane_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13569 #[simd_test(enable = "neon" )]
13570 unsafe fn test_vfms_laneq_f64 () {
13573 let c
: f64x2
= f64x2
:: new ( 2 ., 0 .);
13575 let r
: f64 = transmute ( vfms_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13579 #[simd_test(enable = "neon" )]
13580 unsafe fn test_vfmsq_lane_f64 () {
13581 let a
: f64x2
= f64x2
:: new ( 14 ., 11 .);
13582 let b
: f64x2
= f64x2
:: new ( 6 ., 4 .);
13584 let e
: f64x2
= f64x2
:: new ( 2 ., 3 .);
13585 let r
: f64x2
= transmute ( vfmsq_lane_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13589 #[simd_test(enable = "neon" )]
13590 unsafe fn test_vfmsq_laneq_f64 () {
13591 let a
: f64x2
= f64x2
:: new ( 14 ., 11 .);
13592 let b
: f64x2
= f64x2
:: new ( 6 ., 4 .);
13593 let c
: f64x2
= f64x2
:: new ( 2 ., 0 .);
13594 let e
: f64x2
= f64x2
:: new ( 2 ., 3 .);
13595 let r
: f64x2
= transmute ( vfmsq_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13599 #[simd_test(enable = "neon" )]
13600 unsafe fn test_vfmss_lane_f32 () {
13603 let c
: f32x2
= f32x2
:: new ( 2 ., 0 .);
13605 let r
: f32 = transmute ( vfmss_lane_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13609 #[simd_test(enable = "neon" )]
13610 unsafe fn test_vfmss_laneq_f32 () {
13613 let c
: f32x4
= f32x4
:: new ( 2 ., 0 ., 0 ., 0 .);
13615 let r
: f32 = transmute ( vfmss_laneq_f32
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13619 #[simd_test(enable = "neon" )]
13620 unsafe fn test_vfmsd_lane_f64 () {
13625 let r
: f64 = transmute ( vfmsd_lane_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13629 #[simd_test(enable = "neon" )]
13630 unsafe fn test_vfmsd_laneq_f64 () {
13633 let c
: f64x2
= f64x2
:: new ( 2 ., 0 .);
13635 let r
: f64 = transmute ( vfmsd_laneq_f64
::< 0 >( transmute ( a
), transmute ( b
), transmute ( c
)));
13639 #[simd_test(enable = "neon" )]
13640 unsafe fn test_vdiv_f32 () {
13641 let a
: f32x2
= f32x2
:: new ( 2.0 , 6.0 );
13642 let b
: f32x2
= f32x2
:: new ( 1.0 , 2.0 );
13643 let e
: f32x2
= f32x2
:: new ( 2.0 , 3.0 );
13644 let r
: f32x2
= transmute ( vdiv_f32 ( transmute ( a
), transmute ( b
)));
13648 #[simd_test(enable = "neon" )]
13649 unsafe fn test_vdivq_f32 () {
13650 let a
: f32x4
= f32x4
:: new ( 2.0 , 6.0 , 4.0 , 10.0 );
13651 let b
: f32x4
= f32x4
:: new ( 1.0 , 2.0 , 1.0 , 2.0 );
13652 let e
: f32x4
= f32x4
:: new ( 2.0 , 3.0 , 4.0 , 5.0 );
13653 let r
: f32x4
= transmute ( vdivq_f32 ( transmute ( a
), transmute ( b
)));
13657 #[simd_test(enable = "neon" )]
13658 unsafe fn test_vdiv_f64 () {
13662 let r
: f64 = transmute ( vdiv_f64 ( transmute ( a
), transmute ( b
)));
13666 #[simd_test(enable = "neon" )]
13667 unsafe fn test_vdivq_f64 () {
13668 let a
: f64x2
= f64x2
:: new ( 2.0 , 6.0 );
13669 let b
: f64x2
= f64x2
:: new ( 1.0 , 2.0 );
13670 let e
: f64x2
= f64x2
:: new ( 2.0 , 3.0 );
13671 let r
: f64x2
= transmute ( vdivq_f64 ( transmute ( a
), transmute ( b
)));
13675 #[simd_test(enable = "neon" )]
13676 unsafe fn test_vsub_f64 () {
13680 let r
: f64 = transmute ( vsub_f64 ( transmute ( a
), transmute ( b
)));
13684 #[simd_test(enable = "neon" )]
13685 unsafe fn test_vsubq_f64 () {
13686 let a
: f64x2
= f64x2
:: new ( 1.0 , 4.0 );
13687 let b
: f64x2
= f64x2
:: new ( 1.0 , 2.0 );
13688 let e
: f64x2
= f64x2
:: new ( 0.0 , 2.0 );
13689 let r
: f64x2
= transmute ( vsubq_f64 ( transmute ( a
), transmute ( b
)));
13693 #[simd_test(enable = "neon" )]
13694 unsafe fn test_vaddlv_s16 () {
13695 let a
: i16x4
= i16x4
:: new ( 1 , 2 , 3 , 4 );
13697 let r
: i32 = transmute ( vaddlv_s16 ( transmute ( a
)));
13701 #[simd_test(enable = "neon" )]
13702 unsafe fn test_vaddlvq_s16 () {
13703 let a
: i16x8
= i16x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
13705 let r
: i32 = transmute ( vaddlvq_s16 ( transmute ( a
)));
13709 #[simd_test(enable = "neon" )]
13710 unsafe fn test_vaddlv_s32 () {
13711 let a
: i32x2
= i32x2
:: new ( 1 , 2 );
13713 let r
: i64 = transmute ( vaddlv_s32 ( transmute ( a
)));
13717 #[simd_test(enable = "neon" )]
13718 unsafe fn test_vaddlvq_s32 () {
13719 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 3 , 4 );
13721 let r
: i64 = transmute ( vaddlvq_s32 ( transmute ( a
)));
13725 #[simd_test(enable = "neon" )]
13726 unsafe fn test_vaddlv_u16 () {
13727 let a
: u16x4
= u16x4
:: new ( 1 , 2 , 3 , 4 );
13729 let r
: u32 = transmute ( vaddlv_u16 ( transmute ( a
)));
13733 #[simd_test(enable = "neon" )]
13734 unsafe fn test_vaddlvq_u16 () {
13735 let a
: u16x8
= u16x8
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
13737 let r
: u32 = transmute ( vaddlvq_u16 ( transmute ( a
)));
13741 #[simd_test(enable = "neon" )]
13742 unsafe fn test_vaddlv_u32 () {
13743 let a
: u32x2
= u32x2
:: new ( 1 , 2 );
13745 let r
: u64 = transmute ( vaddlv_u32 ( transmute ( a
)));
13749 #[simd_test(enable = "neon" )]
13750 unsafe fn test_vaddlvq_u32 () {
13751 let a
: u32x4
= u32x4
:: new ( 1 , 2 , 3 , 4 );
13753 let r
: u64 = transmute ( vaddlvq_u32 ( transmute ( a
)));
13757 #[simd_test(enable = "neon" )]
13758 unsafe fn test_vsubw_high_s8 () {
13759 let a
: i16x8
= i16x8
:: new ( 8 , 9 , 10 , 12 , 13 , 14 , 15 , 16 );
13760 let b
: i8x16
= i8x16
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 12 , 13 , 14 , 15 , 16 );
13761 let e
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
13762 let r
: i16x8
= transmute ( vsubw_high_s8 ( transmute ( a
), transmute ( b
)));
13766 #[simd_test(enable = "neon" )]
13767 unsafe fn test_vsubw_high_s16 () {
13768 let a
: i32x4
= i32x4
:: new ( 8 , 9 , 10 , 11 );
13769 let b
: i16x8
= i16x8
:: new ( 0 , 1 , 2 , 3 , 8 , 9 , 10 , 11 );
13770 let e
: i32x4
= i32x4
:: new ( 0 , 0 , 0 , 0 );
13771 let r
: i32x4
= transmute ( vsubw_high_s16 ( transmute ( a
), transmute ( b
)));
13775 #[simd_test(enable = "neon" )]
13776 unsafe fn test_vsubw_high_s32 () {
13777 let a
: i64x2
= i64x2
:: new ( 8 , 9 );
13778 let b
: i32x4
= i32x4
:: new ( 6 , 7 , 8 , 9 );
13779 let e
: i64x2
= i64x2
:: new ( 0 , 0 );
13780 let r
: i64x2
= transmute ( vsubw_high_s32 ( transmute ( a
), transmute ( b
)));
13784 #[simd_test(enable = "neon" )]
13785 unsafe fn test_vsubw_high_u8 () {
13786 let a
: u16x8
= u16x8
:: new ( 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
13787 let b
: u8x16
= u8x16
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
13788 let e
: u16x8
= u16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
13789 let r
: u16x8
= transmute ( vsubw_high_u8 ( transmute ( a
), transmute ( b
)));
13793 #[simd_test(enable = "neon" )]
13794 unsafe fn test_vsubw_high_u16 () {
13795 let a
: u32x4
= u32x4
:: new ( 8 , 9 , 10 , 11 );
13796 let b
: u16x8
= u16x8
:: new ( 0 , 1 , 2 , 3 , 8 , 9 , 10 , 11 );
13797 let e
: u32x4
= u32x4
:: new ( 0 , 0 , 0 , 0 );
13798 let r
: u32x4
= transmute ( vsubw_high_u16 ( transmute ( a
), transmute ( b
)));
13802 #[simd_test(enable = "neon" )]
13803 unsafe fn test_vsubw_high_u32 () {
13804 let a
: u64x2
= u64x2
:: new ( 8 , 9 );
13805 let b
: u32x4
= u32x4
:: new ( 6 , 7 , 8 , 9 );
13806 let e
: u64x2
= u64x2
:: new ( 0 , 0 );
13807 let r
: u64x2
= transmute ( vsubw_high_u32 ( transmute ( a
), transmute ( b
)));
13811 #[simd_test(enable = "neon" )]
13812 unsafe fn test_vsubl_high_s8 () {
13813 let a
: i8x16
= i8x16
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
13814 let b
: i8x16
= i8x16
:: new ( 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 );
13815 let e
: i16x8
= i16x8
:: new ( 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 );
13816 let r
: i16x8
= transmute ( vsubl_high_s8 ( transmute ( a
), transmute ( b
)));
13820 #[simd_test(enable = "neon" )]
13821 unsafe fn test_vsubl_high_s16 () {
13822 let a
: i16x8
= i16x8
:: new ( 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
13823 let b
: i16x8
= i16x8
:: new ( 6 , 6 , 6 , 6 , 8 , 8 , 8 , 8 );
13824 let e
: i32x4
= i32x4
:: new ( 4 , 5 , 6 , 7 );
13825 let r
: i32x4
= transmute ( vsubl_high_s16 ( transmute ( a
), transmute ( b
)));
13829 #[simd_test(enable = "neon" )]
13830 unsafe fn test_vsubl_high_s32 () {
13831 let a
: i32x4
= i32x4
:: new ( 12 , 13 , 14 , 15 );
13832 let b
: i32x4
= i32x4
:: new ( 6 , 6 , 8 , 8 );
13833 let e
: i64x2
= i64x2
:: new ( 6 , 7 );
13834 let r
: i64x2
= transmute ( vsubl_high_s32 ( transmute ( a
), transmute ( b
)));
13838 #[simd_test(enable = "neon" )]
13839 unsafe fn test_vsubl_high_u8 () {
13840 let a
: u8x16
= u8x16
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
13841 let b
: u8x16
= u8x16
:: new ( 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 );
13842 let e
: u16x8
= u16x8
:: new ( 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 );
13843 let r
: u16x8
= transmute ( vsubl_high_u8 ( transmute ( a
), transmute ( b
)));
13847 #[simd_test(enable = "neon" )]
13848 unsafe fn test_vsubl_high_u16 () {
13849 let a
: u16x8
= u16x8
:: new ( 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
13850 let b
: u16x8
= u16x8
:: new ( 6 , 6 , 6 , 6 , 8 , 8 , 8 , 8 );
13851 let e
: u32x4
= u32x4
:: new ( 4 , 5 , 6 , 7 );
13852 let r
: u32x4
= transmute ( vsubl_high_u16 ( transmute ( a
), transmute ( b
)));
13856 #[simd_test(enable = "neon" )]
13857 unsafe fn test_vsubl_high_u32 () {
13858 let a
: u32x4
= u32x4
:: new ( 12 , 13 , 14 , 15 );
13859 let b
: u32x4
= u32x4
:: new ( 6 , 6 , 8 , 8 );
13860 let e
: u64x2
= u64x2
:: new ( 6 , 7 );
13861 let r
: u64x2
= transmute ( vsubl_high_u32 ( transmute ( a
), transmute ( b
)));
13865 #[simd_test(enable = "neon" )]
13866 unsafe fn test_vmax_f64 () {
13870 let r
: f64 = transmute ( vmax_f64 ( transmute ( a
), transmute ( b
)));
13874 #[simd_test(enable = "neon" )]
13875 unsafe fn test_vmaxq_f64 () {
13876 let a
: f64x2
= f64x2
:: new ( 1.0 , - 2.0 );
13877 let b
: f64x2
= f64x2
:: new ( 0.0 , 3.0 );
13878 let e
: f64x2
= f64x2
:: new ( 1.0 , 3.0 );
13879 let r
: f64x2
= transmute ( vmaxq_f64 ( transmute ( a
), transmute ( b
)));
13883 #[simd_test(enable = "neon" )]
13884 unsafe fn test_vmaxnm_f64 () {
13888 let r
: f64 = transmute ( vmaxnm_f64 ( transmute ( a
), transmute ( b
)));
13892 #[simd_test(enable = "neon" )]
13893 unsafe fn test_vmaxnmq_f64 () {
13894 let a
: f64x2
= f64x2
:: new ( 1.0 , 2.0 );
13895 let b
: f64x2
= f64x2
:: new ( 8.0 , 16.0 );
13896 let e
: f64x2
= f64x2
:: new ( 8.0 , 16.0 );
13897 let r
: f64x2
= transmute ( vmaxnmq_f64 ( transmute ( a
), transmute ( b
)));
13901 #[simd_test(enable = "neon" )]
13902 unsafe fn test_vpmaxnm_f32 () {
13903 let a
: f32x2
= f32x2
:: new ( 1.0 , 2.0 );
13904 let b
: f32x2
= f32x2
:: new ( 6.0 , - 3.0 );
13905 let e
: f32x2
= f32x2
:: new ( 2.0 , 6.0 );
13906 let r
: f32x2
= transmute ( vpmaxnm_f32 ( transmute ( a
), transmute ( b
)));
13910 #[simd_test(enable = "neon" )]
13911 unsafe fn test_vpmaxnmq_f64 () {
13912 let a
: f64x2
= f64x2
:: new ( 1.0 , 2.0 );
13913 let b
: f64x2
= f64x2
:: new ( 6.0 , - 3.0 );
13914 let e
: f64x2
= f64x2
:: new ( 2.0 , 6.0 );
13915 let r
: f64x2
= transmute ( vpmaxnmq_f64 ( transmute ( a
), transmute ( b
)));
13919 #[simd_test(enable = "neon" )]
13920 unsafe fn test_vpmaxnmq_f32 () {
13921 let a
: f32x4
= f32x4
:: new ( 1.0 , 2.0 , 3.0 , - 4.0 );
13922 let b
: f32x4
= f32x4
:: new ( 8.0 , 16.0 , - 1.0 , 6.0 );
13923 let e
: f32x4
= f32x4
:: new ( 2.0 , 3.0 , 16.0 , 6.0 );
13924 let r
: f32x4
= transmute ( vpmaxnmq_f32 ( transmute ( a
), transmute ( b
)));
13928 #[simd_test(enable = "neon" )]
13929 unsafe fn test_vmin_f64 () {
13933 let r
: f64 = transmute ( vmin_f64 ( transmute ( a
), transmute ( b
)));
13937 #[simd_test(enable = "neon" )]
13938 unsafe fn test_vminq_f64 () {
13939 let a
: f64x2
= f64x2
:: new ( 1.0 , - 2.0 );
13940 let b
: f64x2
= f64x2
:: new ( 0.0 , 3.0 );
13941 let e
: f64x2
= f64x2
:: new ( 0.0 , - 2.0 );
13942 let r
: f64x2
= transmute ( vminq_f64 ( transmute ( a
), transmute ( b
)));
13946 #[simd_test(enable = "neon" )]
13947 unsafe fn test_vminnm_f64 () {
13951 let r
: f64 = transmute ( vminnm_f64 ( transmute ( a
), transmute ( b
)));
13955 #[simd_test(enable = "neon" )]
13956 unsafe fn test_vminnmq_f64 () {
13957 let a
: f64x2
= f64x2
:: new ( 1.0 , 2.0 );
13958 let b
: f64x2
= f64x2
:: new ( 8.0 , 16.0 );
13959 let e
: f64x2
= f64x2
:: new ( 1.0 , 2.0 );
13960 let r
: f64x2
= transmute ( vminnmq_f64 ( transmute ( a
), transmute ( b
)));
13964 #[simd_test(enable = "neon" )]
13965 unsafe fn test_vpminnm_f32 () {
13966 let a
: f32x2
= f32x2
:: new ( 1.0 , 2.0 );
13967 let b
: f32x2
= f32x2
:: new ( 6.0 , - 3.0 );
13968 let e
: f32x2
= f32x2
:: new ( 1.0 , - 3.0 );
13969 let r
: f32x2
= transmute ( vpminnm_f32 ( transmute ( a
), transmute ( b
)));
13973 #[simd_test(enable = "neon" )]
13974 unsafe fn test_vpminnmq_f64 () {
13975 let a
: f64x2
= f64x2
:: new ( 1.0 , 2.0 );
13976 let b
: f64x2
= f64x2
:: new ( 6.0 , - 3.0 );
13977 let e
: f64x2
= f64x2
:: new ( 1.0 , - 3.0 );
13978 let r
: f64x2
= transmute ( vpminnmq_f64 ( transmute ( a
), transmute ( b
)));
13982 #[simd_test(enable = "neon" )]
13983 unsafe fn test_vpminnmq_f32 () {
13984 let a
: f32x4
= f32x4
:: new ( 1.0 , 2.0 , 3.0 , - 4.0 );
13985 let b
: f32x4
= f32x4
:: new ( 8.0 , 16.0 , - 1.0 , 6.0 );
13986 let e
: f32x4
= f32x4
:: new ( 1.0 , - 4.0 , 8.0 , - 1.0 );
13987 let r
: f32x4
= transmute ( vpminnmq_f32 ( transmute ( a
), transmute ( b
)));
13991 #[simd_test(enable = "neon" )]
13992 unsafe fn test_vqdmullh_s16 () {
13996 let r
: i32 = transmute ( vqdmullh_s16 ( transmute ( a
), transmute ( b
)));
14000 #[simd_test(enable = "neon" )]
14001 unsafe fn test_vqdmulls_s32 () {
14005 let r
: i64 = transmute ( vqdmulls_s32 ( transmute ( a
), transmute ( b
)));
14009 #[simd_test(enable = "neon" )]
14010 unsafe fn test_vqdmull_high_s16 () {
14011 let a
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 4 , 5 , 6 , 7 );
14012 let b
: i16x8
= i16x8
:: new ( 1 , 2 , 5 , 6 , 5 , 6 , 7 , 8 );
14013 let e
: i32x4
= i32x4
:: new ( 40 , 60 , 84 , 112 );
14014 let r
: i32x4
= transmute ( vqdmull_high_s16 ( transmute ( a
), transmute ( b
)));
14018 #[simd_test(enable = "neon" )]
14019 unsafe fn test_vqdmull_high_s32 () {
14020 let a
: i32x4
= i32x4
:: new ( 0 , 1 , 4 , 5 );
14021 let b
: i32x4
= i32x4
:: new ( 1 , 2 , 5 , 6 );
14022 let e
: i64x2
= i64x2
:: new ( 40 , 60 );
14023 let r
: i64x2
= transmute ( vqdmull_high_s32 ( transmute ( a
), transmute ( b
)));
14027 #[simd_test(enable = "neon" )]
14028 unsafe fn test_vqdmull_high_n_s16 () {
14029 let a
: i16x8
= i16x8
:: new ( 0 , 2 , 8 , 10 , 8 , 10 , 12 , 14 );
14031 let e
: i32x4
= i32x4
:: new ( 32 , 40 , 48 , 56 );
14032 let r
: i32x4
= transmute ( vqdmull_high_n_s16 ( transmute ( a
), transmute ( b
)));
14036 #[simd_test(enable = "neon" )]
14037 unsafe fn test_vqdmull_high_n_s32 () {
14038 let a
: i32x4
= i32x4
:: new ( 0 , 2 , 8 , 10 );
14040 let e
: i64x2
= i64x2
:: new ( 32 , 40 );
14041 let r
: i64x2
= transmute ( vqdmull_high_n_s32 ( transmute ( a
), transmute ( b
)));
14045 #[simd_test(enable = "neon" )]
14046 unsafe fn test_vqdmull_laneq_s16 () {
14047 let a
: i16x4
= i16x4
:: new ( 1 , 2 , 3 , 4 );
14048 let b
: i16x8
= i16x8
:: new ( 0 , 2 , 2 , 0 , 2 , 0 , 0 , 0 );
14049 let e
: i32x4
= i32x4
:: new ( 4 , 8 , 12 , 16 );
14050 let r
: i32x4
= transmute ( vqdmull_laneq_s16
::< 4 >( transmute ( a
), transmute ( b
)));
14054 #[simd_test(enable = "neon" )]
14055 unsafe fn test_vqdmull_laneq_s32 () {
14056 let a
: i32x2
= i32x2
:: new ( 1 , 2 );
14057 let b
: i32x4
= i32x4
:: new ( 0 , 2 , 2 , 0 );
14058 let e
: i64x2
= i64x2
:: new ( 4 , 8 );
14059 let r
: i64x2
= transmute ( vqdmull_laneq_s32
::< 2 >( transmute ( a
), transmute ( b
)));
14063 #[simd_test(enable = "neon" )]
14064 unsafe fn test_vqdmullh_lane_s16 () {
14066 let b
: i16x4
= i16x4
:: new ( 0 , 2 , 2 , 0 );
14068 let r
: i32 = transmute ( vqdmullh_lane_s16
::< 2 >( transmute ( a
), transmute ( b
)));
14072 #[simd_test(enable = "neon" )]
14073 unsafe fn test_vqdmullh_laneq_s16 () {
14075 let b
: i16x8
= i16x8
:: new ( 0 , 2 , 2 , 0 , 2 , 0 , 0 , 0 );
14077 let r
: i32 = transmute ( vqdmullh_laneq_s16
::< 4 >( transmute ( a
), transmute ( b
)));
14081 #[simd_test(enable = "neon" )]
14082 unsafe fn test_vqdmulls_lane_s32 () {
14084 let b
: i32x2
= i32x2
:: new ( 0 , 2 );
14086 let r
: i64 = transmute ( vqdmulls_lane_s32
::< 1 >( transmute ( a
), transmute ( b
)));
14090 #[simd_test(enable = "neon" )]
14091 unsafe fn test_vqdmulls_laneq_s32 () {
14093 let b
: i32x4
= i32x4
:: new ( 0 , 2 , 2 , 0 );
14095 let r
: i64 = transmute ( vqdmulls_laneq_s32
::< 2 >( transmute ( a
), transmute ( b
)));
14099 #[simd_test(enable = "neon" )]
14100 unsafe fn test_vqdmull_high_lane_s16 () {
14101 let a
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 4 , 5 , 6 , 7 );
14102 let b
: i16x4
= i16x4
:: new ( 0 , 2 , 2 , 0 );
14103 let e
: i32x4
= i32x4
:: new ( 16 , 20 , 24 , 28 );
14104 let r
: i32x4
= transmute ( vqdmull_high_lane_s16
::< 2 >( transmute ( a
), transmute ( b
)));
14108 #[simd_test(enable = "neon" )]
14109 unsafe fn test_vqdmull_high_lane_s32 () {
14110 let a
: i32x4
= i32x4
:: new ( 0 , 1 , 4 , 5 );
14111 let b
: i32x2
= i32x2
:: new ( 0 , 2 );
14112 let e
: i64x2
= i64x2
:: new ( 16 , 20 );
14113 let r
: i64x2
= transmute ( vqdmull_high_lane_s32
::< 1 >( transmute ( a
), transmute ( b
)));
14117 #[simd_test(enable = "neon" )]
14118 unsafe fn test_vqdmull_high_laneq_s16 () {
14119 let a
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 4 , 5 , 6 , 7 );
14120 let b
: i16x8
= i16x8
:: new ( 0 , 2 , 2 , 0 , 2 , 0 , 0 , 0 );
14121 let e
: i32x4
= i32x4
:: new ( 16 , 20 , 24 , 28 );
14122 let r
: i32x4
= transmute ( vqdmull_high_laneq_s16
::< 4 >( transmute ( a
), transmute ( b
)));
14126 #[simd_test(enable = "neon" )]
14127 unsafe fn test_vqdmull_high_laneq_s32 () {
14128 let a
: i32x4
= i32x4
:: new ( 0 , 1 , 4 , 5 );
14129 let b
: i32x4
= i32x4
:: new ( 0 , 2 , 2 , 0 );
14130 let e
: i64x2
= i64x2
:: new ( 16 , 20 );
14131 let r
: i64x2
= transmute ( vqdmull_high_laneq_s32
::< 2 >( transmute ( a
), transmute ( b
)));
14135 #[simd_test(enable = "neon" )]
14136 unsafe fn test_vqdmlal_high_s16 () {
14137 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 3 , 4 );
14138 let b
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 4 , 5 , 6 , 7 );
14139 let c
: i16x8
= i16x8
:: new ( 1 , 2 , 5 , 6 , 5 , 6 , 7 , 8 );
14140 let e
: i32x4
= i32x4
:: new ( 41 , 62 , 87 , 116 );
14141 let r
: i32x4
= transmute ( vqdmlal_high_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14145 #[simd_test(enable = "neon" )]
14146 unsafe fn test_vqdmlal_high_s32 () {
14147 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
14148 let b
: i32x4
= i32x4
:: new ( 0 , 1 , 4 , 5 );
14149 let c
: i32x4
= i32x4
:: new ( 1 , 2 , 5 , 6 );
14150 let e
: i64x2
= i64x2
:: new ( 41 , 62 );
14151 let r
: i64x2
= transmute ( vqdmlal_high_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14155 #[simd_test(enable = "neon" )]
14156 unsafe fn test_vqdmlal_high_n_s16 () {
14157 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 3 , 4 );
14158 let b
: i16x8
= i16x8
:: new ( 0 , 2 , 8 , 10 , 8 , 10 , 12 , 14 );
14160 let e
: i32x4
= i32x4
:: new ( 33 , 42 , 51 , 60 );
14161 let r
: i32x4
= transmute ( vqdmlal_high_n_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14165 #[simd_test(enable = "neon" )]
14166 unsafe fn test_vqdmlal_high_n_s32 () {
14167 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
14168 let b
: i32x4
= i32x4
:: new ( 0 , 2 , 8 , 10 );
14170 let e
: i64x2
= i64x2
:: new ( 33 , 42 );
14171 let r
: i64x2
= transmute ( vqdmlal_high_n_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14175 #[simd_test(enable = "neon" )]
14176 unsafe fn test_vqdmlal_laneq_s16 () {
14177 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 3 , 4 );
14178 let b
: i16x4
= i16x4
:: new ( 1 , 2 , 3 , 4 );
14179 let c
: i16x8
= i16x8
:: new ( 0 , 2 , 2 , 0 , 2 , 0 , 0 , 0 );
14180 let e
: i32x4
= i32x4
:: new ( 5 , 10 , 15 , 20 );
14181 let r
: i32x4
= transmute ( vqdmlal_laneq_s16
::< 2 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14185 #[simd_test(enable = "neon" )]
14186 unsafe fn test_vqdmlal_laneq_s32 () {
14187 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
14188 let b
: i32x2
= i32x2
:: new ( 1 , 2 );
14189 let c
: i32x4
= i32x4
:: new ( 0 , 2 , 2 , 0 );
14190 let e
: i64x2
= i64x2
:: new ( 5 , 10 );
14191 let r
: i64x2
= transmute ( vqdmlal_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14195 #[simd_test(enable = "neon" )]
14196 unsafe fn test_vqdmlal_high_lane_s16 () {
14197 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 3 , 4 );
14198 let b
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 4 , 5 , 6 , 7 );
14199 let c
: i16x4
= i16x4
:: new ( 0 , 2 , 0 , 0 );
14200 let e
: i32x4
= i32x4
:: new ( 17 , 22 , 27 , 32 );
14201 let r
: i32x4
= transmute ( vqdmlal_high_lane_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14205 #[simd_test(enable = "neon" )]
14206 unsafe fn test_vqdmlal_high_laneq_s16 () {
14207 let a
: i32x4
= i32x4
:: new ( 1 , 2 , 3 , 4 );
14208 let b
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 4 , 5 , 6 , 7 );
14209 let c
: i16x8
= i16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
14210 let e
: i32x4
= i32x4
:: new ( 17 , 22 , 27 , 32 );
14211 let r
: i32x4
= transmute ( vqdmlal_high_laneq_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14215 #[simd_test(enable = "neon" )]
14216 unsafe fn test_vqdmlal_high_lane_s32 () {
14217 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
14218 let b
: i32x4
= i32x4
:: new ( 0 , 1 , 4 , 5 );
14219 let c
: i32x2
= i32x2
:: new ( 0 , 2 );
14220 let e
: i64x2
= i64x2
:: new ( 17 , 22 );
14221 let r
: i64x2
= transmute ( vqdmlal_high_lane_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14225 #[simd_test(enable = "neon" )]
14226 unsafe fn test_vqdmlal_high_laneq_s32 () {
14227 let a
: i64x2
= i64x2
:: new ( 1 , 2 );
14228 let b
: i32x4
= i32x4
:: new ( 0 , 1 , 4 , 5 );
14229 let c
: i32x4
= i32x4
:: new ( 0 , 2 , 0 , 0 );
14230 let e
: i64x2
= i64x2
:: new ( 17 , 22 );
14231 let r
: i64x2
= transmute ( vqdmlal_high_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14235 #[simd_test(enable = "neon" )]
14236 unsafe fn test_vqdmlsl_high_s16 () {
14237 let a
: i32x4
= i32x4
:: new ( 39 , 58 , 81 , 108 );
14238 let b
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 4 , 5 , 6 , 7 );
14239 let c
: i16x8
= i16x8
:: new ( 1 , 2 , 5 , 6 , 5 , 6 , 7 , 8 );
14240 let e
: i32x4
= i32x4
:: new (- 1 , - 2 , - 3 , - 4 );
14241 let r
: i32x4
= transmute ( vqdmlsl_high_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14245 #[simd_test(enable = "neon" )]
14246 unsafe fn test_vqdmlsl_high_s32 () {
14247 let a
: i64x2
= i64x2
:: new ( 39 , 58 );
14248 let b
: i32x4
= i32x4
:: new ( 0 , 1 , 4 , 5 );
14249 let c
: i32x4
= i32x4
:: new ( 1 , 2 , 5 , 6 );
14250 let e
: i64x2
= i64x2
:: new (- 1 , - 2 );
14251 let r
: i64x2
= transmute ( vqdmlsl_high_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14255 #[simd_test(enable = "neon" )]
14256 unsafe fn test_vqdmlsl_high_n_s16 () {
14257 let a
: i32x4
= i32x4
:: new ( 31 , 38 , 45 , 52 );
14258 let b
: i16x8
= i16x8
:: new ( 0 , 2 , 8 , 10 , 8 , 10 , 12 , 14 );
14260 let e
: i32x4
= i32x4
:: new (- 1 , - 2 , - 3 , - 4 );
14261 let r
: i32x4
= transmute ( vqdmlsl_high_n_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14265 #[simd_test(enable = "neon" )]
14266 unsafe fn test_vqdmlsl_high_n_s32 () {
14267 let a
: i64x2
= i64x2
:: new ( 31 , 38 );
14268 let b
: i32x4
= i32x4
:: new ( 0 , 2 , 8 , 10 );
14270 let e
: i64x2
= i64x2
:: new (- 1 , - 2 );
14271 let r
: i64x2
= transmute ( vqdmlsl_high_n_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14275 #[simd_test(enable = "neon" )]
14276 unsafe fn test_vqdmlsl_laneq_s16 () {
14277 let a
: i32x4
= i32x4
:: new ( 3 , 6 , 9 , 12 );
14278 let b
: i16x4
= i16x4
:: new ( 1 , 2 , 3 , 4 );
14279 let c
: i16x8
= i16x8
:: new ( 0 , 2 , 2 , 0 , 2 , 0 , 0 , 0 );
14280 let e
: i32x4
= i32x4
:: new (- 1 , - 2 , - 3 , - 4 );
14281 let r
: i32x4
= transmute ( vqdmlsl_laneq_s16
::< 2 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14285 #[simd_test(enable = "neon" )]
14286 unsafe fn test_vqdmlsl_laneq_s32 () {
14287 let a
: i64x2
= i64x2
:: new ( 3 , 6 );
14288 let b
: i32x2
= i32x2
:: new ( 1 , 2 );
14289 let c
: i32x4
= i32x4
:: new ( 0 , 2 , 2 , 0 );
14290 let e
: i64x2
= i64x2
:: new (- 1 , - 2 );
14291 let r
: i64x2
= transmute ( vqdmlsl_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14295 #[simd_test(enable = "neon" )]
14296 unsafe fn test_vqdmlsl_high_lane_s16 () {
14297 let a
: i32x4
= i32x4
:: new ( 15 , 18 , 21 , 24 );
14298 let b
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 4 , 5 , 6 , 7 );
14299 let c
: i16x4
= i16x4
:: new ( 0 , 2 , 0 , 0 );
14300 let e
: i32x4
= i32x4
:: new (- 1 , - 2 , - 3 , - 4 );
14301 let r
: i32x4
= transmute ( vqdmlsl_high_lane_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14305 #[simd_test(enable = "neon" )]
14306 unsafe fn test_vqdmlsl_high_laneq_s16 () {
14307 let a
: i32x4
= i32x4
:: new ( 15 , 18 , 21 , 24 );
14308 let b
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 4 , 5 , 6 , 7 );
14309 let c
: i16x8
= i16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
14310 let e
: i32x4
= i32x4
:: new (- 1 , - 2 , - 3 , - 4 );
14311 let r
: i32x4
= transmute ( vqdmlsl_high_laneq_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14315 #[simd_test(enable = "neon" )]
14316 unsafe fn test_vqdmlsl_high_lane_s32 () {
14317 let a
: i64x2
= i64x2
:: new ( 15 , 18 );
14318 let b
: i32x4
= i32x4
:: new ( 0 , 1 , 4 , 5 );
14319 let c
: i32x2
= i32x2
:: new ( 0 , 2 );
14320 let e
: i64x2
= i64x2
:: new (- 1 , - 2 );
14321 let r
: i64x2
= transmute ( vqdmlsl_high_lane_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14325 #[simd_test(enable = "neon" )]
14326 unsafe fn test_vqdmlsl_high_laneq_s32 () {
14327 let a
: i64x2
= i64x2
:: new ( 15 , 18 );
14328 let b
: i32x4
= i32x4
:: new ( 0 , 1 , 4 , 5 );
14329 let c
: i32x4
= i32x4
:: new ( 0 , 2 , 0 , 0 );
14330 let e
: i64x2
= i64x2
:: new (- 1 , - 2 );
14331 let r
: i64x2
= transmute ( vqdmlsl_high_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14335 #[simd_test(enable = "neon" )]
14336 unsafe fn test_vqdmulhh_s16 () {
14340 let r
: i16 = transmute ( vqdmulhh_s16 ( transmute ( a
), transmute ( b
)));
14344 #[simd_test(enable = "neon" )]
14345 unsafe fn test_vqdmulhs_s32 () {
14349 let r
: i32 = transmute ( vqdmulhs_s32 ( transmute ( a
), transmute ( b
)));
14353 #[simd_test(enable = "neon" )]
14354 unsafe fn test_vqdmulhh_lane_s16 () {
14356 let b
: i16x4
= i16x4
:: new ( 0 , 0 , 0x7F_FF , 0 );
14358 let r
: i16 = transmute ( vqdmulhh_lane_s16
::< 2 >( transmute ( a
), transmute ( b
)));
14362 #[simd_test(enable = "neon" )]
14363 unsafe fn test_vqdmulhh_laneq_s16 () {
14365 let b
: i16x8
= i16x8
:: new ( 0 , 0 , 0x7F_FF , 0 , 0 , 0 , 0 , 0 );
14367 let r
: i16 = transmute ( vqdmulhh_laneq_s16
::< 2 >( transmute ( a
), transmute ( b
)));
14371 #[simd_test(enable = "neon" )]
14372 unsafe fn test_vqdmulhs_lane_s32 () {
14374 let b
: i32x2
= i32x2
:: new ( 0 , 0x7F_FF_FF_FF );
14376 let r
: i32 = transmute ( vqdmulhs_lane_s32
::< 1 >( transmute ( a
), transmute ( b
)));
14380 #[simd_test(enable = "neon" )]
14381 unsafe fn test_vqdmulhs_laneq_s32 () {
14383 let b
: i32x4
= i32x4
:: new ( 0 , 0x7F_FF_FF_FF , 0 , 0 );
14385 let r
: i32 = transmute ( vqdmulhs_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
)));
14389 #[simd_test(enable = "neon" )]
14390 unsafe fn test_vqmovnh_s16 () {
14393 let r
: i8 = transmute ( vqmovnh_s16 ( transmute ( a
)));
14397 #[simd_test(enable = "neon" )]
14398 unsafe fn test_vqmovns_s32 () {
14401 let r
: i16 = transmute ( vqmovns_s32 ( transmute ( a
)));
14405 #[simd_test(enable = "neon" )]
14406 unsafe fn test_vqmovnh_u16 () {
14409 let r
: u8 = transmute ( vqmovnh_u16 ( transmute ( a
)));
14413 #[simd_test(enable = "neon" )]
14414 unsafe fn test_vqmovns_u32 () {
14417 let r
: u16 = transmute ( vqmovns_u32 ( transmute ( a
)));
14421 #[simd_test(enable = "neon" )]
14422 unsafe fn test_vqmovnd_s64 () {
14425 let r
: i32 = transmute ( vqmovnd_s64 ( transmute ( a
)));
14429 #[simd_test(enable = "neon" )]
14430 unsafe fn test_vqmovnd_u64 () {
14433 let r
: u32 = transmute ( vqmovnd_u64 ( transmute ( a
)));
14437 #[simd_test(enable = "neon" )]
14438 unsafe fn test_vqmovn_high_s16 () {
14439 let a
: i8x8
= i8x8
:: new ( 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F );
14440 let b
: i16x8
= i16x8
:: new ( 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF );
14441 let e
: i8x16
= i8x16
:: new ( 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F , 0x7F );
14442 let r
: i8x16
= transmute ( vqmovn_high_s16 ( transmute ( a
), transmute ( b
)));
14446 #[simd_test(enable = "neon" )]
14447 unsafe fn test_vqmovn_high_s32 () {
14448 let a
: i16x4
= i16x4
:: new ( 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF );
14449 let b
: i32x4
= i32x4
:: new ( 0x7F_FF_FF_FF , 0x7F_FF_FF_FF , 0x7F_FF_FF_FF , 0x7F_FF_FF_FF );
14450 let e
: i16x8
= i16x8
:: new ( 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF , 0x7F_FF );
14451 let r
: i16x8
= transmute ( vqmovn_high_s32 ( transmute ( a
), transmute ( b
)));
14455 #[simd_test(enable = "neon" )]
14456 unsafe fn test_vqmovn_high_s64 () {
14457 let a
: i32x2
= i32x2
:: new ( 0x7F_FF_FF_FF , 0x7F_FF_FF_FF );
14458 let b
: i64x2
= i64x2
:: new ( 0x7F_FF_FF_FF_FF_FF_FF_FF , 0x7F_FF_FF_FF_FF_FF_FF_FF );
14459 let e
: i32x4
= i32x4
:: new ( 0x7F_FF_FF_FF , 0x7F_FF_FF_FF , 0x7F_FF_FF_FF , 0x7F_FF_FF_FF );
14460 let r
: i32x4
= transmute ( vqmovn_high_s64 ( transmute ( a
), transmute ( b
)));
14464 #[simd_test(enable = "neon" )]
14465 unsafe fn test_vqmovn_high_u16 () {
14466 let a
: u8x8
= u8x8
:: new ( 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF );
14467 let b
: u16x8
= u16x8
:: new ( 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF );
14468 let e
: u8x16
= u8x16
:: new ( 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF );
14469 let r
: u8x16
= transmute ( vqmovn_high_u16 ( transmute ( a
), transmute ( b
)));
14473 #[simd_test(enable = "neon" )]
14474 unsafe fn test_vqmovn_high_u32 () {
14475 let a
: u16x4
= u16x4
:: new ( 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF );
14476 let b
: u32x4
= u32x4
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF , 0xFF_FF_FF_FF , 0xFF_FF_FF_FF );
14477 let e
: u16x8
= u16x8
:: new ( 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF , 0xFF_FF );
14478 let r
: u16x8
= transmute ( vqmovn_high_u32 ( transmute ( a
), transmute ( b
)));
14482 #[simd_test(enable = "neon" )]
14483 unsafe fn test_vqmovn_high_u64 () {
14484 let a
: u32x2
= u32x2
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF );
14485 let b
: u64x2
= u64x2
:: new ( 0xFF_FF_FF_FF_FF_FF_FF_FF , 0xFF_FF_FF_FF_FF_FF_FF_FF );
14486 let e
: u32x4
= u32x4
:: new ( 0xFF_FF_FF_FF , 0xFF_FF_FF_FF , 0xFF_FF_FF_FF , 0xFF_FF_FF_FF );
14487 let r
: u32x4
= transmute ( vqmovn_high_u64 ( transmute ( a
), transmute ( b
)));
14491 #[simd_test(enable = "neon" )]
14492 unsafe fn test_vqmovunh_s16 () {
14495 let r
: u8 = transmute ( vqmovunh_s16 ( transmute ( a
)));
14499 #[simd_test(enable = "neon" )]
14500 unsafe fn test_vqmovuns_s32 () {
14503 let r
: u16 = transmute ( vqmovuns_s32 ( transmute ( a
)));
14507 #[simd_test(enable = "neon" )]
14508 unsafe fn test_vqmovund_s64 () {
14511 let r
: u32 = transmute ( vqmovund_s64 ( transmute ( a
)));
14515 #[simd_test(enable = "neon" )]
14516 unsafe fn test_vqmovun_high_s16 () {
14517 let a
: u8x8
= u8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
14518 let b
: i16x8
= i16x8
:: new (- 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 );
14519 let e
: u8x16
= u8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
14520 let r
: u8x16
= transmute ( vqmovun_high_s16 ( transmute ( a
), transmute ( b
)));
14524 #[simd_test(enable = "neon" )]
14525 unsafe fn test_vqmovun_high_s32 () {
14526 let a
: u16x4
= u16x4
:: new ( 0 , 0 , 0 , 0 );
14527 let b
: i32x4
= i32x4
:: new (- 1 , - 1 , - 1 , - 1 );
14528 let e
: u16x8
= u16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
14529 let r
: u16x8
= transmute ( vqmovun_high_s32 ( transmute ( a
), transmute ( b
)));
14533 #[simd_test(enable = "neon" )]
14534 unsafe fn test_vqmovun_high_s64 () {
14535 let a
: u32x2
= u32x2
:: new ( 0 , 0 );
14536 let b
: i64x2
= i64x2
:: new (- 1 , - 1 );
14537 let e
: u32x4
= u32x4
:: new ( 0 , 0 , 0 , 0 );
14538 let r
: u32x4
= transmute ( vqmovun_high_s64 ( transmute ( a
), transmute ( b
)));
14542 #[simd_test(enable = "neon" )]
14543 unsafe fn test_vqrdmulhh_s16 () {
14547 let r
: i16 = transmute ( vqrdmulhh_s16 ( transmute ( a
), transmute ( b
)));
14551 #[simd_test(enable = "neon" )]
14552 unsafe fn test_vqrdmulhs_s32 () {
14556 let r
: i32 = transmute ( vqrdmulhs_s32 ( transmute ( a
), transmute ( b
)));
14560 #[simd_test(enable = "neon" )]
14561 unsafe fn test_vqrdmulhh_lane_s16 () {
14563 let b
: i16x4
= i16x4
:: new ( 0 , 2 , 0 , 0 );
14565 let r
: i16 = transmute ( vqrdmulhh_lane_s16
::< 1 >( transmute ( a
), transmute ( b
)));
14569 #[simd_test(enable = "neon" )]
14570 unsafe fn test_vqrdmulhh_laneq_s16 () {
14572 let b
: i16x8
= i16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
14574 let r
: i16 = transmute ( vqrdmulhh_laneq_s16
::< 1 >( transmute ( a
), transmute ( b
)));
14578 #[simd_test(enable = "neon" )]
14579 unsafe fn test_vqrdmulhs_lane_s32 () {
14581 let b
: i32x2
= i32x2
:: new ( 0 , 2 );
14583 let r
: i32 = transmute ( vqrdmulhs_lane_s32
::< 1 >( transmute ( a
), transmute ( b
)));
14587 #[simd_test(enable = "neon" )]
14588 unsafe fn test_vqrdmulhs_laneq_s32 () {
14590 let b
: i32x4
= i32x4
:: new ( 0 , 2 , 0 , 0 );
14592 let r
: i32 = transmute ( vqrdmulhs_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
)));
14596 #[simd_test(enable = "neon" )]
14597 unsafe fn test_vqrdmlahh_s16 () {
14602 let r
: i16 = transmute ( vqrdmlahh_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14606 #[simd_test(enable = "neon" )]
14607 unsafe fn test_vqrdmlahs_s32 () {
14612 let r
: i32 = transmute ( vqrdmlahs_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14616 #[simd_test(enable = "neon" )]
14617 unsafe fn test_vqrdmlahh_lane_s16 () {
14620 let c
: i16x4
= i16x4
:: new ( 0 , 2 , 0 , 0 );
14622 let r
: i16 = transmute ( vqrdmlahh_lane_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14626 #[simd_test(enable = "neon" )]
14627 unsafe fn test_vqrdmlahh_laneq_s16 () {
14630 let c
: i16x8
= i16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
14632 let r
: i16 = transmute ( vqrdmlahh_laneq_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14636 #[simd_test(enable = "neon" )]
14637 unsafe fn test_vqrdmlahs_lane_s32 () {
14640 let c
: i32x2
= i32x2
:: new ( 0 , 2 );
14642 let r
: i32 = transmute ( vqrdmlahs_lane_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14646 #[simd_test(enable = "neon" )]
14647 unsafe fn test_vqrdmlahs_laneq_s32 () {
14650 let c
: i32x4
= i32x4
:: new ( 0 , 2 , 0 , 0 );
14652 let r
: i32 = transmute ( vqrdmlahs_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14656 #[simd_test(enable = "neon" )]
14657 unsafe fn test_vqrdmlshh_s16 () {
14662 let r
: i16 = transmute ( vqrdmlshh_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14666 #[simd_test(enable = "neon" )]
14667 unsafe fn test_vqrdmlshs_s32 () {
14672 let r
: i32 = transmute ( vqrdmlshs_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
14676 #[simd_test(enable = "neon" )]
14677 unsafe fn test_vqrdmlshh_lane_s16 () {
14680 let c
: i16x4
= i16x4
:: new ( 0 , 2 , 0 , 0 );
14682 let r
: i16 = transmute ( vqrdmlshh_lane_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14686 #[simd_test(enable = "neon" )]
14687 unsafe fn test_vqrdmlshh_laneq_s16 () {
14690 let c
: i16x8
= i16x8
:: new ( 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 );
14692 let r
: i16 = transmute ( vqrdmlshh_laneq_s16
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14696 #[simd_test(enable = "neon" )]
14697 unsafe fn test_vqrdmlshs_lane_s32 () {
14700 let c
: i32x2
= i32x2
:: new ( 0 , 2 );
14702 let r
: i32 = transmute ( vqrdmlshs_lane_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14706 #[simd_test(enable = "neon" )]
14707 unsafe fn test_vqrdmlshs_laneq_s32 () {
14710 let c
: i32x4
= i32x4
:: new ( 0 , 2 , 0 , 0 );
14712 let r
: i32 = transmute ( vqrdmlshs_laneq_s32
::< 1 >( transmute ( a
), transmute ( b
), transmute ( c
)));
14716 #[simd_test(enable = "neon" )]
14717 unsafe fn test_vqrshls_s32 () {
14721 let r
: i32 = transmute ( vqrshls_s32 ( transmute ( a
), transmute ( b
)));
14725 #[simd_test(enable = "neon" )]
14726 unsafe fn test_vqrshld_s64 () {
14730 let r
: i64 = transmute ( vqrshld_s64 ( transmute ( a
), transmute ( b
)));
14734 #[simd_test(enable = "neon" )]
14735 unsafe fn test_vqrshlb_s8 () {
14739 let r
: i8 = transmute ( vqrshlb_s8 ( transmute ( a
), transmute ( b
)));
14743 #[simd_test(enable = "neon" )]
14744 unsafe fn test_vqrshlh_s16 () {
14748 let r
: i16 = transmute ( vqrshlh_s16 ( transmute ( a
), transmute ( b
)));
14752 #[simd_test(enable = "neon" )]
14753 unsafe fn test_vqrshls_u32 () {
14757 let r
: u32 = transmute ( vqrshls_u32 ( transmute ( a
), transmute ( b
)));
14761 #[simd_test(enable = "neon" )]
14762 unsafe fn test_vqrshld_u64 () {
14766 let r
: u64 = transmute ( vqrshld_u64 ( transmute ( a
), transmute ( b
)));
14770 #[simd_test(enable = "neon" )]
14771 unsafe fn test_vqrshlb_u8 () {
14775 let r
: u8 = transmute ( vqrshlb_u8 ( transmute ( a
), transmute ( b
)));
14779 #[simd_test(enable = "neon" )]
14780 unsafe fn test_vqrshlh_u16 () {
14784 let r
: u16 = transmute ( vqrshlh_u16 ( transmute ( a
), transmute ( b
)));
14788 #[simd_test(enable = "neon" )]
14789 unsafe fn test_vqrshrnh_n_s16 () {
14792 let r
: i8 = transmute ( vqrshrnh_n_s16
::< 2 >( transmute ( a
)));
14796 #[simd_test(enable = "neon" )]
14797 unsafe fn test_vqrshrns_n_s32 () {
14800 let r
: i16 = transmute ( vqrshrns_n_s32
::< 2 >( transmute ( a
)));
14804 #[simd_test(enable = "neon" )]
14805 unsafe fn test_vqrshrnd_n_s64 () {
14808 let r
: i32 = transmute ( vqrshrnd_n_s64
::< 2 >( transmute ( a
)));
14812 #[simd_test(enable = "neon" )]
14813 unsafe fn test_vqrshrn_high_n_s16 () {
14814 let a
: i8x8
= i8x8
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 6 , 7 );
14815 let b
: i16x8
= i16x8
:: new ( 8 , 12 , 24 , 28 , 48 , 52 , 56 , 60 );
14816 let e
: i8x16
= i8x16
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 6 , 7 , 2 , 3 , 6 , 7 , 12 , 13 , 14 , 15 );
14817 let r
: i8x16
= transmute ( vqrshrn_high_n_s16
::< 2 >( transmute ( a
), transmute ( b
)));
14821 #[simd_test(enable = "neon" )]
14822 unsafe fn test_vqrshrn_high_n_s32 () {
14823 let a
: i16x4
= i16x4
:: new ( 0 , 1 , 2 , 3 );
14824 let b
: i32x4
= i32x4
:: new ( 8 , 12 , 24 , 28 );
14825 let e
: i16x8
= i16x8
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 6 , 7 );
14826 let r
: i16x8
= transmute ( vqrshrn_high_n_s32
::< 2 >( transmute ( a
), transmute ( b
)));
14830 #[simd_test(enable = "neon" )]
14831 unsafe fn test_vqrshrn_high_n_s64 () {
14832 let a
: i32x2
= i32x2
:: new ( 0 , 1 );
14833 let b
: i64x2
= i64x2
:: new ( 8 , 12 );
14834 let e
: i32x4
= i32x4
:: new ( 0 , 1 , 2 , 3 );
14835 let r
: i32x4
= transmute ( vqrshrn_high_n_s64
::< 2 >( transmute ( a
), transmute ( b
)));
14839 #[simd_test(enable = "neon" )]
14840 unsafe fn test_vqrshrnh_n_u16 () {
14843 let r
: u8 = transmute ( vqrshrnh_n_u16
::< 2 >( transmute ( a
)));
14847 #[simd_test(enable = "neon" )]
14848 unsafe fn test_vqrshrns_n_u32 () {
14851 let r
: u16 = transmute ( vqrshrns_n_u32
::< 2 >( transmute ( a
)));
14855 #[simd_test(enable = "neon" )]
14856 unsafe fn test_vqrshrnd_n_u64 () {
14859 let r
: u32 = transmute ( vqrshrnd_n_u64
::< 2 >( transmute ( a
)));
14863 #[simd_test(enable = "neon" )]
14864 unsafe fn test_vqrshrn_high_n_u16 () {
14865 let a
: u8x8
= u8x8
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 6 , 7 );
14866 let b
: u16x8
= u16x8
:: new ( 8 , 12 , 24 , 28 , 48 , 52 , 56 , 60 );
14867 let e
: u8x16
= u8x16
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 6 , 7 , 2 , 3 , 6 , 7 , 12 , 13 , 14 , 15 );
14868 let r
: u8x16
= transmute ( vqrshrn_high_n_u16
::< 2 >( transmute ( a
), transmute ( b
)));
14872 #[simd_test(enable = "neon" )]
14873 unsafe fn test_vqrshrn_high_n_u32 () {
14874 let a
: u16x4
= u16x4
:: new ( 0 , 1 , 2 , 3 );
14875 let b
: u32x4
= u32x4
:: new ( 8 , 12 , 24 , 28 );
14876 let e
: u16x8
= u16x8
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 6 , 7 );
14877 let r
: u16x8
= transmute ( vqrshrn_high_n_u32
::< 2 >( transmute ( a
), transmute ( b
)));
14881 #[simd_test(enable = "neon" )]
14882 unsafe fn test_vqrshrn_high_n_u64 () {
14883 let a
: u32x2
= u32x2
:: new ( 0 , 1 );
14884 let b
: u64x2
= u64x2
:: new ( 8 , 12 );
14885 let e
: u32x4
= u32x4
:: new ( 0 , 1 , 2 , 3 );
14886 let r
: u32x4
= transmute ( vqrshrn_high_n_u64
::< 2 >( transmute ( a
), transmute ( b
)));
14890 #[simd_test(enable = "neon" )]
14891 unsafe fn test_vqrshrunh_n_s16 () {
14894 let r
: u8 = transmute ( vqrshrunh_n_s16
::< 2 >( transmute ( a
)));
14898 #[simd_test(enable = "neon" )]
14899 unsafe fn test_vqrshruns_n_s32 () {
14902 let r
: u16 = transmute ( vqrshruns_n_s32
::< 2 >( transmute ( a
)));
14906 #[simd_test(enable = "neon" )]
14907 unsafe fn test_vqrshrund_n_s64 () {
14910 let r
: u32 = transmute ( vqrshrund_n_s64
::< 2 >( transmute ( a
)));
14914 #[simd_test(enable = "neon" )]
14915 unsafe fn test_vqrshrun_high_n_s16 () {
14916 let a
: u8x8
= u8x8
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 6 , 7 );
14917 let b
: i16x8
= i16x8
:: new ( 8 , 12 , 24 , 28 , 48 , 52 , 56 , 60 );
14918 let e
: u8x16
= u8x16
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 6 , 7 , 2 , 3 , 6 , 7 , 12 , 13 , 14 , 15 );
14919 let r
: u8x16
= transmute ( vqrshrun_high_n_s16
::< 2 >( transmute ( a
), transmute ( b
)));
14923 #[simd_test(enable = "neon" )]
14924 unsafe fn test_vqrshrun_high_n_s32 () {
14925 let a
: u16x4
= u16x4
:: new ( 0 , 1 , 2 , 3 );
14926 let b
: i32x4
= i32x4
:: new ( 8 , 12 , 24 , 28 );
14927 let e
: u16x8
= u16x8
:: new ( 0 , 1 , 2 , 3 , 2 , 3 , 6 , 7 );
14928 let r
: u16x8
= transmute ( vqrshrun_high_n_s32
::< 2 >( transmute ( a
), transmute ( b
)));
14932 #[simd_test(enable = "neon" )]
14933 unsafe fn test_vqrshrun_high_n_s64 () {
14934 let a
: u32x2
= u32x2
:: new ( 0 , 1 );
14935 let b
: i64x2
= i64x2
:: new ( 8 , 12 );
14936 let e
: u32x4
= u32x4
:: new ( 0 , 1 , 2 , 3 );
14937 let r
: u32x4
= transmute ( vqrshrun_high_n_s64
::< 2 >( transmute ( a
), transmute ( b
)));
14941 #[simd_test(enable = "neon" )]
14942 unsafe fn test_vqshld_s64 () {
14946 let r
: i64 = transmute ( vqshld_s64 ( transmute ( a
), transmute ( b
)));
14950 #[simd_test(enable = "neon" )]
14951 unsafe fn test_vqshlb_s8 () {
14955 let r
: i8 = transmute ( vqshlb_s8 ( transmute ( a
), transmute ( b
)));
14959 #[simd_test(enable = "neon" )]
14960 unsafe fn test_vqshlh_s16 () {
14964 let r
: i16 = transmute ( vqshlh_s16 ( transmute ( a
), transmute ( b
)));
14968 #[simd_test(enable = "neon" )]
14969 unsafe fn test_vqshls_s32 () {
14973 let r
: i32 = transmute ( vqshls_s32 ( transmute ( a
), transmute ( b
)));
14977 #[simd_test(enable = "neon" )]
14978 unsafe fn test_vqshld_u64 () {
14982 let r
: u64 = transmute ( vqshld_u64 ( transmute ( a
), transmute ( b
)));
14986 #[simd_test(enable = "neon" )]
14987 unsafe fn test_vqshlb_u8 () {
14991 let r
: u8 = transmute ( vqshlb_u8 ( transmute ( a
), transmute ( b
)));
14995 #[simd_test(enable = "neon" )]
14996 unsafe fn test_vqshlh_u16 () {
15000 let r
: u16 = transmute ( vqshlh_u16 ( transmute ( a
), transmute ( b
)));
15004 #[simd_test(enable = "neon" )]
15005 unsafe fn test_vqshls_u32 () {
15009 let r
: u32 = transmute ( vqshls_u32 ( transmute ( a
), transmute ( b
)));
15013 #[simd_test(enable = "neon" )]
15014 unsafe fn test_vqshlb_n_s8 () {
15017 let r
: i8 = transmute ( vqshlb_n_s8
::< 2 >( transmute ( a
)));
15021 #[simd_test(enable = "neon" )]
15022 unsafe fn test_vqshlh_n_s16 () {
15025 let r
: i16 = transmute ( vqshlh_n_s16
::< 2 >( transmute ( a
)));
15029 #[simd_test(enable = "neon" )]
15030 unsafe fn test_vqshls_n_s32 () {
15033 let r
: i32 = transmute ( vqshls_n_s32
::< 2 >( transmute ( a
)));
15037 #[simd_test(enable = "neon" )]
15038 unsafe fn test_vqshld_n_s64 () {
15041 let r
: i64 = transmute ( vqshld_n_s64
::< 2 >( transmute ( a
)));
15045 #[simd_test(enable = "neon" )]
15046 unsafe fn test_vqshlb_n_u8 () {
15049 let r
: u8 = transmute ( vqshlb_n_u8
::< 2 >( transmute ( a
)));
15053 #[simd_test(enable = "neon" )]
15054 unsafe fn test_vqshlh_n_u16 () {
15057 let r
: u16 = transmute ( vqshlh_n_u16
::< 2 >( transmute ( a
)));
15061 #[simd_test(enable = "neon" )]
15062 unsafe fn test_vqshls_n_u32 () {
15065 let r
: u32 = transmute ( vqshls_n_u32
::< 2 >( transmute ( a
)));
15069 #[simd_test(enable = "neon" )]
15070 unsafe fn test_vqshld_n_u64 () {
15073 let r
: u64 = transmute ( vqshld_n_u64
::< 2 >( transmute ( a
)));
15077 #[simd_test(enable = "neon" )]
15078 unsafe fn test_vqshrnd_n_s64 () {
15081 let r
: i32 = transmute ( vqshrnd_n_s64
::< 2 >( transmute ( a
)));
15085 #[simd_test(enable = "neon" )]
15086 unsafe fn test_vqshrnh_n_s16 () {
15089 let r
: i8 = transmute ( vqshrnh_n_s16
::< 2 >( transmute ( a
)));
15093 #[simd_test(enable = "neon" )]
15094 unsafe fn test_vqshrns_n_s32 () {
15097 let r
: i16 = transmute ( vqshrns_n_s32
::< 2 >( transmute ( a
)));
15101 #[simd_test(enable = "neon" )]
15102 unsafe fn test_vqshrn_high_n_s16 () {
15103 let a
: i8x8
= i8x8
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 );
15104 let b
: i16x8
= i16x8
:: new ( 32 , 36 , 40 , 44 , 48 , 52 , 56 , 60 );
15105 let e
: i8x16
= i8x16
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
15106 let r
: i8x16
= transmute ( vqshrn_high_n_s16
::< 2 >( transmute ( a
), transmute ( b
)));
15110 #[simd_test(enable = "neon" )]
15111 unsafe fn test_vqshrn_high_n_s32 () {
15112 let a
: i16x4
= i16x4
:: new ( 0 , 1 , 8 , 9 );
15113 let b
: i32x4
= i32x4
:: new ( 32 , 36 , 40 , 44 );
15114 let e
: i16x8
= i16x8
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 );
15115 let r
: i16x8
= transmute ( vqshrn_high_n_s32
::< 2 >( transmute ( a
), transmute ( b
)));
15119 #[simd_test(enable = "neon" )]
15120 unsafe fn test_vqshrn_high_n_s64 () {
15121 let a
: i32x2
= i32x2
:: new ( 0 , 1 );
15122 let b
: i64x2
= i64x2
:: new ( 32 , 36 );
15123 let e
: i32x4
= i32x4
:: new ( 0 , 1 , 8 , 9 );
15124 let r
: i32x4
= transmute ( vqshrn_high_n_s64
::< 2 >( transmute ( a
), transmute ( b
)));
15128 #[simd_test(enable = "neon" )]
15129 unsafe fn test_vqshrnd_n_u64 () {
15132 let r
: u32 = transmute ( vqshrnd_n_u64
::< 2 >( transmute ( a
)));
15136 #[simd_test(enable = "neon" )]
15137 unsafe fn test_vqshrnh_n_u16 () {
15140 let r
: u8 = transmute ( vqshrnh_n_u16
::< 2 >( transmute ( a
)));
15144 #[simd_test(enable = "neon" )]
15145 unsafe fn test_vqshrns_n_u32 () {
15148 let r
: u16 = transmute ( vqshrns_n_u32
::< 2 >( transmute ( a
)));
15152 #[simd_test(enable = "neon" )]
15153 unsafe fn test_vqshrn_high_n_u16 () {
15154 let a
: u8x8
= u8x8
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 );
15155 let b
: u16x8
= u16x8
:: new ( 32 , 36 , 40 , 44 , 48 , 52 , 56 , 60 );
15156 let e
: u8x16
= u8x16
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
15157 let r
: u8x16
= transmute ( vqshrn_high_n_u16
::< 2 >( transmute ( a
), transmute ( b
)));
15161 #[simd_test(enable = "neon" )]
15162 unsafe fn test_vqshrn_high_n_u32 () {
15163 let a
: u16x4
= u16x4
:: new ( 0 , 1 , 8 , 9 );
15164 let b
: u32x4
= u32x4
:: new ( 32 , 36 , 40 , 44 );
15165 let e
: u16x8
= u16x8
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 );
15166 let r
: u16x8
= transmute ( vqshrn_high_n_u32
::< 2 >( transmute ( a
), transmute ( b
)));
15170 #[simd_test(enable = "neon" )]
15171 unsafe fn test_vqshrn_high_n_u64 () {
15172 let a
: u32x2
= u32x2
:: new ( 0 , 1 );
15173 let b
: u64x2
= u64x2
:: new ( 32 , 36 );
15174 let e
: u32x4
= u32x4
:: new ( 0 , 1 , 8 , 9 );
15175 let r
: u32x4
= transmute ( vqshrn_high_n_u64
::< 2 >( transmute ( a
), transmute ( b
)));
15179 #[simd_test(enable = "neon" )]
15180 unsafe fn test_vqshrunh_n_s16 () {
15183 let r
: u8 = transmute ( vqshrunh_n_s16
::< 2 >( transmute ( a
)));
15187 #[simd_test(enable = "neon" )]
15188 unsafe fn test_vqshruns_n_s32 () {
15191 let r
: u16 = transmute ( vqshruns_n_s32
::< 2 >( transmute ( a
)));
15195 #[simd_test(enable = "neon" )]
15196 unsafe fn test_vqshrund_n_s64 () {
15199 let r
: u32 = transmute ( vqshrund_n_s64
::< 2 >( transmute ( a
)));
15203 #[simd_test(enable = "neon" )]
15204 unsafe fn test_vqshrun_high_n_s16 () {
15205 let a
: u8x8
= u8x8
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 );
15206 let b
: i16x8
= i16x8
:: new ( 32 , 36 , 40 , 44 , 48 , 52 , 56 , 60 );
15207 let e
: u8x16
= u8x16
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
15208 let r
: u8x16
= transmute ( vqshrun_high_n_s16
::< 2 >( transmute ( a
), transmute ( b
)));
15212 #[simd_test(enable = "neon" )]
15213 unsafe fn test_vqshrun_high_n_s32 () {
15214 let a
: u16x4
= u16x4
:: new ( 0 , 1 , 8 , 9 );
15215 let b
: i32x4
= i32x4
:: new ( 32 , 36 , 40 , 44 );
15216 let e
: u16x8
= u16x8
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 );
15217 let r
: u16x8
= transmute ( vqshrun_high_n_s32
::< 2 >( transmute ( a
), transmute ( b
)));
15221 #[simd_test(enable = "neon" )]
15222 unsafe fn test_vqshrun_high_n_s64 () {
15223 let a
: u32x2
= u32x2
:: new ( 0 , 1 );
15224 let b
: i64x2
= i64x2
:: new ( 32 , 36 );
15225 let e
: u32x4
= u32x4
:: new ( 0 , 1 , 8 , 9 );
15226 let r
: u32x4
= transmute ( vqshrun_high_n_s64
::< 2 >( transmute ( a
), transmute ( b
)));
15230 #[simd_test(enable = "neon" )]
15231 unsafe fn test_vsqrt_f32 () {
15232 let a
: f32x2
= f32x2
:: new ( 4.0 , 9.0 );
15233 let e
: f32x2
= f32x2
:: new ( 2.0 , 3.0 );
15234 let r
: f32x2
= transmute ( vsqrt_f32 ( transmute ( a
)));
15238 #[simd_test(enable = "neon" )]
15239 unsafe fn test_vsqrtq_f32 () {
15240 let a
: f32x4
= f32x4
:: new ( 4.0 , 9.0 , 16.0 , 25.0 );
15241 let e
: f32x4
= f32x4
:: new ( 2.0 , 3.0 , 4.0 , 5.0 );
15242 let r
: f32x4
= transmute ( vsqrtq_f32 ( transmute ( a
)));
15246 #[simd_test(enable = "neon" )]
15247 unsafe fn test_vsqrt_f64 () {
15250 let r
: f64 = transmute ( vsqrt_f64 ( transmute ( a
)));
15254 #[simd_test(enable = "neon" )]
15255 unsafe fn test_vsqrtq_f64 () {
15256 let a
: f64x2
= f64x2
:: new ( 4.0 , 9.0 );
15257 let e
: f64x2
= f64x2
:: new ( 2.0 , 3.0 );
15258 let r
: f64x2
= transmute ( vsqrtq_f64 ( transmute ( a
)));
15262 #[simd_test(enable = "neon" )]
15263 unsafe fn test_vrsqrte_f64 () {
15265 let e
: f64 = 0.998046875 ;
15266 let r
: f64 = transmute ( vrsqrte_f64 ( transmute ( a
)));
15270 #[simd_test(enable = "neon" )]
15271 unsafe fn test_vrsqrteq_f64 () {
15272 let a
: f64x2
= f64x2
:: new ( 1.0 , 2.0 );
15273 let e
: f64x2
= f64x2
:: new ( 0.998046875 , 0.705078125 );
15274 let r
: f64x2
= transmute ( vrsqrteq_f64 ( transmute ( a
)));
15278 #[simd_test(enable = "neon" )]
15279 unsafe fn test_vrecpe_f64 () {
15281 let e
: f64 = 0.24951171875 ;
15282 let r
: f64 = transmute ( vrecpe_f64 ( transmute ( a
)));
15286 #[simd_test(enable = "neon" )]
15287 unsafe fn test_vrecpeq_f64 () {
15288 let a
: f64x2
= f64x2
:: new ( 4.0 , 3.0 );
15289 let e
: f64x2
= f64x2
:: new ( 0.24951171875 , 0.3330078125 );
15290 let r
: f64x2
= transmute ( vrecpeq_f64 ( transmute ( a
)));
15294 #[simd_test(enable = "neon" )]
15295 unsafe fn test_vreinterpret_s64_p64 () {
15296 let a
: i64x1
= i64x1
:: new ( 0 );
15297 let e
: i64x1
= i64x1
:: new ( 0 );
15298 let r
: i64x1
= transmute ( vreinterpret_s64_p64 ( transmute ( a
)));
15302 #[simd_test(enable = "neon" )]
15303 unsafe fn test_vreinterpret_u64_p64 () {
15304 let a
: i64x1
= i64x1
:: new ( 0 );
15305 let e
: u64x1
= u64x1
:: new ( 0 );
15306 let r
: u64x1
= transmute ( vreinterpret_u64_p64 ( transmute ( a
)));
15310 #[simd_test(enable = "neon" )]
15311 unsafe fn test_vreinterpret_p64_s64 () {
15312 let a
: i64x1
= i64x1
:: new ( 0 );
15313 let e
: i64x1
= i64x1
:: new ( 0 );
15314 let r
: i64x1
= transmute ( vreinterpret_p64_s64 ( transmute ( a
)));
15318 #[simd_test(enable = "neon" )]
15319 unsafe fn test_vreinterpret_p64_u64 () {
15320 let a
: u64x1
= u64x1
:: new ( 0 );
15321 let e
: i64x1
= i64x1
:: new ( 0 );
15322 let r
: i64x1
= transmute ( vreinterpret_p64_u64 ( transmute ( a
)));
15326 #[simd_test(enable = "neon" )]
15327 unsafe fn test_vreinterpretq_s64_p64 () {
15328 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15329 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15330 let r
: i64x2
= transmute ( vreinterpretq_s64_p64 ( transmute ( a
)));
15334 #[simd_test(enable = "neon" )]
15335 unsafe fn test_vreinterpretq_u64_p64 () {
15336 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15337 let e
: u64x2
= u64x2
:: new ( 0 , 1 );
15338 let r
: u64x2
= transmute ( vreinterpretq_u64_p64 ( transmute ( a
)));
15342 #[simd_test(enable = "neon" )]
15343 unsafe fn test_vreinterpretq_p64_s64 () {
15344 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15345 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15346 let r
: i64x2
= transmute ( vreinterpretq_p64_s64 ( transmute ( a
)));
15350 #[simd_test(enable = "neon" )]
15351 unsafe fn test_vreinterpretq_p64_u64 () {
15352 let a
: u64x2
= u64x2
:: new ( 0 , 1 );
15353 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15354 let r
: i64x2
= transmute ( vreinterpretq_p64_u64 ( transmute ( a
)));
15358 #[simd_test(enable = "neon" )]
15359 unsafe fn test_vreinterpret_s32_p64 () {
15360 let a
: i64x1
= i64x1
:: new ( 0 );
15361 let e
: i32x2
= i32x2
:: new ( 0 , 0 );
15362 let r
: i32x2
= transmute ( vreinterpret_s32_p64 ( transmute ( a
)));
15366 #[simd_test(enable = "neon" )]
15367 unsafe fn test_vreinterpret_u32_p64 () {
15368 let a
: i64x1
= i64x1
:: new ( 0 );
15369 let e
: u32x2
= u32x2
:: new ( 0 , 0 );
15370 let r
: u32x2
= transmute ( vreinterpret_u32_p64 ( transmute ( a
)));
15374 #[simd_test(enable = "neon" )]
15375 unsafe fn test_vreinterpretq_s32_p64 () {
15376 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15377 let e
: i32x4
= i32x4
:: new ( 0 , 0 , 1 , 0 );
15378 let r
: i32x4
= transmute ( vreinterpretq_s32_p64 ( transmute ( a
)));
15382 #[simd_test(enable = "neon" )]
15383 unsafe fn test_vreinterpretq_u32_p64 () {
15384 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15385 let e
: u32x4
= u32x4
:: new ( 0 , 0 , 1 , 0 );
15386 let r
: u32x4
= transmute ( vreinterpretq_u32_p64 ( transmute ( a
)));
15390 #[simd_test(enable = "neon" )]
15391 unsafe fn test_vreinterpret_p64_s32 () {
15392 let a
: i32x2
= i32x2
:: new ( 0 , 0 );
15393 let e
: i64x1
= i64x1
:: new ( 0 );
15394 let r
: i64x1
= transmute ( vreinterpret_p64_s32 ( transmute ( a
)));
15398 #[simd_test(enable = "neon" )]
15399 unsafe fn test_vreinterpret_p64_u32 () {
15400 let a
: u32x2
= u32x2
:: new ( 0 , 0 );
15401 let e
: i64x1
= i64x1
:: new ( 0 );
15402 let r
: i64x1
= transmute ( vreinterpret_p64_u32 ( transmute ( a
)));
15406 #[simd_test(enable = "neon" )]
15407 unsafe fn test_vreinterpretq_p64_s32 () {
15408 let a
: i32x4
= i32x4
:: new ( 0 , 0 , 1 , 0 );
15409 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15410 let r
: i64x2
= transmute ( vreinterpretq_p64_s32 ( transmute ( a
)));
15414 #[simd_test(enable = "neon" )]
15415 unsafe fn test_vreinterpretq_p64_u32 () {
15416 let a
: u32x4
= u32x4
:: new ( 0 , 0 , 1 , 0 );
15417 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15418 let r
: i64x2
= transmute ( vreinterpretq_p64_u32 ( transmute ( a
)));
15422 #[simd_test(enable = "neon" )]
15423 unsafe fn test_vreinterpret_s16_p64 () {
15424 let a
: i64x1
= i64x1
:: new ( 0 );
15425 let e
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
15426 let r
: i16x4
= transmute ( vreinterpret_s16_p64 ( transmute ( a
)));
15430 #[simd_test(enable = "neon" )]
15431 unsafe fn test_vreinterpret_u16_p64 () {
15432 let a
: i64x1
= i64x1
:: new ( 0 );
15433 let e
: u16x4
= u16x4
:: new ( 0 , 0 , 0 , 0 );
15434 let r
: u16x4
= transmute ( vreinterpret_u16_p64 ( transmute ( a
)));
15438 #[simd_test(enable = "neon" )]
15439 unsafe fn test_vreinterpret_p16_p64 () {
15440 let a
: i64x1
= i64x1
:: new ( 0 );
15441 let e
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
15442 let r
: i16x4
= transmute ( vreinterpret_p16_p64 ( transmute ( a
)));
15446 #[simd_test(enable = "neon" )]
15447 unsafe fn test_vreinterpretq_s16_p64 () {
15448 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15449 let e
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 );
15450 let r
: i16x8
= transmute ( vreinterpretq_s16_p64 ( transmute ( a
)));
15454 #[simd_test(enable = "neon" )]
15455 unsafe fn test_vreinterpretq_u16_p64 () {
15456 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15457 let e
: u16x8
= u16x8
:: new ( 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 );
15458 let r
: u16x8
= transmute ( vreinterpretq_u16_p64 ( transmute ( a
)));
15462 #[simd_test(enable = "neon" )]
15463 unsafe fn test_vreinterpretq_p16_p64 () {
15464 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15465 let e
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 );
15466 let r
: i16x8
= transmute ( vreinterpretq_p16_p64 ( transmute ( a
)));
15470 #[simd_test(enable = "neon" )]
15471 unsafe fn test_vreinterpret_p64_p16 () {
15472 let a
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
15473 let e
: i64x1
= i64x1
:: new ( 0 );
15474 let r
: i64x1
= transmute ( vreinterpret_p64_p16 ( transmute ( a
)));
15478 #[simd_test(enable = "neon" )]
15479 unsafe fn test_vreinterpret_p64_s16 () {
15480 let a
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
15481 let e
: i64x1
= i64x1
:: new ( 0 );
15482 let r
: i64x1
= transmute ( vreinterpret_p64_s16 ( transmute ( a
)));
15486 #[simd_test(enable = "neon" )]
15487 unsafe fn test_vreinterpret_p64_u16 () {
15488 let a
: u16x4
= u16x4
:: new ( 0 , 0 , 0 , 0 );
15489 let e
: i64x1
= i64x1
:: new ( 0 );
15490 let r
: i64x1
= transmute ( vreinterpret_p64_u16 ( transmute ( a
)));
15494 #[simd_test(enable = "neon" )]
15495 unsafe fn test_vreinterpretq_p64_p16 () {
15496 let a
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 );
15497 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15498 let r
: i64x2
= transmute ( vreinterpretq_p64_p16 ( transmute ( a
)));
15502 #[simd_test(enable = "neon" )]
15503 unsafe fn test_vreinterpretq_p64_s16 () {
15504 let a
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 );
15505 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15506 let r
: i64x2
= transmute ( vreinterpretq_p64_s16 ( transmute ( a
)));
15510 #[simd_test(enable = "neon" )]
15511 unsafe fn test_vreinterpretq_p64_u16 () {
15512 let a
: u16x8
= u16x8
:: new ( 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 );
15513 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15514 let r
: i64x2
= transmute ( vreinterpretq_p64_u16 ( transmute ( a
)));
15518 #[simd_test(enable = "neon" )]
15519 unsafe fn test_vreinterpret_s8_p64 () {
15520 let a
: i64x1
= i64x1
:: new ( 0 );
15521 let e
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15522 let r
: i8x8
= transmute ( vreinterpret_s8_p64 ( transmute ( a
)));
15526 #[simd_test(enable = "neon" )]
15527 unsafe fn test_vreinterpret_u8_p64 () {
15528 let a
: i64x1
= i64x1
:: new ( 0 );
15529 let e
: u8x8
= u8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15530 let r
: u8x8
= transmute ( vreinterpret_u8_p64 ( transmute ( a
)));
15534 #[simd_test(enable = "neon" )]
15535 unsafe fn test_vreinterpret_p8_p64 () {
15536 let a
: i64x1
= i64x1
:: new ( 0 );
15537 let e
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15538 let r
: i8x8
= transmute ( vreinterpret_p8_p64 ( transmute ( a
)));
15542 #[simd_test(enable = "neon" )]
15543 unsafe fn test_vreinterpretq_s8_p64 () {
15544 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15545 let e
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15546 let r
: i8x16
= transmute ( vreinterpretq_s8_p64 ( transmute ( a
)));
15550 #[simd_test(enable = "neon" )]
15551 unsafe fn test_vreinterpretq_u8_p64 () {
15552 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15553 let e
: u8x16
= u8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15554 let r
: u8x16
= transmute ( vreinterpretq_u8_p64 ( transmute ( a
)));
15558 #[simd_test(enable = "neon" )]
15559 unsafe fn test_vreinterpretq_p8_p64 () {
15560 let a
: i64x2
= i64x2
:: new ( 0 , 1 );
15561 let e
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15562 let r
: i8x16
= transmute ( vreinterpretq_p8_p64 ( transmute ( a
)));
15566 #[simd_test(enable = "neon" )]
15567 unsafe fn test_vreinterpret_p64_p8 () {
15568 let a
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15569 let e
: i64x1
= i64x1
:: new ( 0 );
15570 let r
: i64x1
= transmute ( vreinterpret_p64_p8 ( transmute ( a
)));
15574 #[simd_test(enable = "neon" )]
15575 unsafe fn test_vreinterpret_p64_s8 () {
15576 let a
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15577 let e
: i64x1
= i64x1
:: new ( 0 );
15578 let r
: i64x1
= transmute ( vreinterpret_p64_s8 ( transmute ( a
)));
15582 #[simd_test(enable = "neon" )]
15583 unsafe fn test_vreinterpret_p64_u8 () {
15584 let a
: u8x8
= u8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15585 let e
: i64x1
= i64x1
:: new ( 0 );
15586 let r
: i64x1
= transmute ( vreinterpret_p64_u8 ( transmute ( a
)));
15590 #[simd_test(enable = "neon" )]
15591 unsafe fn test_vreinterpretq_p64_p8 () {
15592 let a
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15593 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15594 let r
: i64x2
= transmute ( vreinterpretq_p64_p8 ( transmute ( a
)));
15598 #[simd_test(enable = "neon" )]
15599 unsafe fn test_vreinterpretq_p64_s8 () {
15600 let a
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15601 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15602 let r
: i64x2
= transmute ( vreinterpretq_p64_s8 ( transmute ( a
)));
15606 #[simd_test(enable = "neon" )]
15607 unsafe fn test_vreinterpretq_p64_u8 () {
15608 let a
: u8x16
= u8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15609 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
15610 let r
: i64x2
= transmute ( vreinterpretq_p64_u8 ( transmute ( a
)));
15614 #[simd_test(enable = "neon" )]
15615 unsafe fn test_vreinterpret_s8_f64 () {
15617 let e
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15618 let r
: i8x8
= transmute ( vreinterpret_s8_f64 ( transmute ( a
)));
15622 #[simd_test(enable = "neon" )]
15623 unsafe fn test_vreinterpret_s16_f64 () {
15625 let e
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
15626 let r
: i16x4
= transmute ( vreinterpret_s16_f64 ( transmute ( a
)));
15630 #[simd_test(enable = "neon" )]
15631 unsafe fn test_vreinterpret_s32_f64 () {
15633 let e
: i32x2
= i32x2
:: new ( 0 , 0 );
15634 let r
: i32x2
= transmute ( vreinterpret_s32_f64 ( transmute ( a
)));
15638 #[simd_test(enable = "neon" )]
15639 unsafe fn test_vreinterpret_s64_f64 () {
15641 let e
: i64x1
= i64x1
:: new ( 0 );
15642 let r
: i64x1
= transmute ( vreinterpret_s64_f64 ( transmute ( a
)));
15646 #[simd_test(enable = "neon" )]
15647 unsafe fn test_vreinterpretq_s8_f64 () {
15648 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15649 let e
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15650 let r
: i8x16
= transmute ( vreinterpretq_s8_f64 ( transmute ( a
)));
15654 #[simd_test(enable = "neon" )]
15655 unsafe fn test_vreinterpretq_s16_f64 () {
15656 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15657 let e
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15658 let r
: i16x8
= transmute ( vreinterpretq_s16_f64 ( transmute ( a
)));
15662 #[simd_test(enable = "neon" )]
15663 unsafe fn test_vreinterpretq_s32_f64 () {
15664 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15665 let e
: i32x4
= i32x4
:: new ( 0 , 0 , 0 , 0 );
15666 let r
: i32x4
= transmute ( vreinterpretq_s32_f64 ( transmute ( a
)));
15670 #[simd_test(enable = "neon" )]
15671 unsafe fn test_vreinterpretq_s64_f64 () {
15672 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15673 let e
: i64x2
= i64x2
:: new ( 0 , 0 );
15674 let r
: i64x2
= transmute ( vreinterpretq_s64_f64 ( transmute ( a
)));
15678 #[simd_test(enable = "neon" )]
15679 unsafe fn test_vreinterpret_u8_f64 () {
15681 let e
: u8x8
= u8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15682 let r
: u8x8
= transmute ( vreinterpret_u8_f64 ( transmute ( a
)));
15686 #[simd_test(enable = "neon" )]
15687 unsafe fn test_vreinterpret_u16_f64 () {
15689 let e
: u16x4
= u16x4
:: new ( 0 , 0 , 0 , 0 );
15690 let r
: u16x4
= transmute ( vreinterpret_u16_f64 ( transmute ( a
)));
15694 #[simd_test(enable = "neon" )]
15695 unsafe fn test_vreinterpret_u32_f64 () {
15697 let e
: u32x2
= u32x2
:: new ( 0 , 0 );
15698 let r
: u32x2
= transmute ( vreinterpret_u32_f64 ( transmute ( a
)));
15702 #[simd_test(enable = "neon" )]
15703 unsafe fn test_vreinterpret_u64_f64 () {
15705 let e
: u64x1
= u64x1
:: new ( 0 );
15706 let r
: u64x1
= transmute ( vreinterpret_u64_f64 ( transmute ( a
)));
15710 #[simd_test(enable = "neon" )]
15711 unsafe fn test_vreinterpretq_u8_f64 () {
15712 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15713 let e
: u8x16
= u8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15714 let r
: u8x16
= transmute ( vreinterpretq_u8_f64 ( transmute ( a
)));
15718 #[simd_test(enable = "neon" )]
15719 unsafe fn test_vreinterpretq_u16_f64 () {
15720 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15721 let e
: u16x8
= u16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15722 let r
: u16x8
= transmute ( vreinterpretq_u16_f64 ( transmute ( a
)));
15726 #[simd_test(enable = "neon" )]
15727 unsafe fn test_vreinterpretq_u32_f64 () {
15728 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15729 let e
: u32x4
= u32x4
:: new ( 0 , 0 , 0 , 0 );
15730 let r
: u32x4
= transmute ( vreinterpretq_u32_f64 ( transmute ( a
)));
15734 #[simd_test(enable = "neon" )]
15735 unsafe fn test_vreinterpretq_u64_f64 () {
15736 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15737 let e
: u64x2
= u64x2
:: new ( 0 , 0 );
15738 let r
: u64x2
= transmute ( vreinterpretq_u64_f64 ( transmute ( a
)));
15742 #[simd_test(enable = "neon" )]
15743 unsafe fn test_vreinterpret_p8_f64 () {
15745 let e
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15746 let r
: i8x8
= transmute ( vreinterpret_p8_f64 ( transmute ( a
)));
15750 #[simd_test(enable = "neon" )]
15751 unsafe fn test_vreinterpret_p16_f64 () {
15753 let e
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
15754 let r
: i16x4
= transmute ( vreinterpret_p16_f64 ( transmute ( a
)));
15758 #[simd_test(enable = "neon" )]
15759 unsafe fn test_vreinterpret_p64_f32 () {
15760 let a
: f32x2
= f32x2
:: new ( 0 ., 0 .);
15761 let e
: i64x1
= i64x1
:: new ( 0 );
15762 let r
: i64x1
= transmute ( vreinterpret_p64_f32 ( transmute ( a
)));
15766 #[simd_test(enable = "neon" )]
15767 unsafe fn test_vreinterpret_p64_f64 () {
15769 let e
: i64x1
= i64x1
:: new ( 0 );
15770 let r
: i64x1
= transmute ( vreinterpret_p64_f64 ( transmute ( a
)));
15774 #[simd_test(enable = "neon" )]
15775 unsafe fn test_vreinterpretq_p8_f64 () {
15776 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15777 let e
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15778 let r
: i8x16
= transmute ( vreinterpretq_p8_f64 ( transmute ( a
)));
15782 #[simd_test(enable = "neon" )]
15783 unsafe fn test_vreinterpretq_p16_f64 () {
15784 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15785 let e
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15786 let r
: i16x8
= transmute ( vreinterpretq_p16_f64 ( transmute ( a
)));
15790 #[simd_test(enable = "neon" )]
15791 unsafe fn test_vreinterpretq_p64_f32 () {
15792 let a
: f32x4
= f32x4
:: new ( 0 ., 0 ., 0 ., 0 .);
15793 let e
: i64x2
= i64x2
:: new ( 0 , 0 );
15794 let r
: i64x2
= transmute ( vreinterpretq_p64_f32 ( transmute ( a
)));
15798 #[simd_test(enable = "neon" )]
15799 unsafe fn test_vreinterpretq_p64_f64 () {
15800 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15801 let e
: i64x2
= i64x2
:: new ( 0 , 0 );
15802 let r
: i64x2
= transmute ( vreinterpretq_p64_f64 ( transmute ( a
)));
15806 #[simd_test(enable = "neon" )]
15807 unsafe fn test_vreinterpret_f64_s8 () {
15808 let a
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15810 let r
: f64 = transmute ( vreinterpret_f64_s8 ( transmute ( a
)));
15814 #[simd_test(enable = "neon" )]
15815 unsafe fn test_vreinterpret_f64_s16 () {
15816 let a
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
15818 let r
: f64 = transmute ( vreinterpret_f64_s16 ( transmute ( a
)));
15822 #[simd_test(enable = "neon" )]
15823 unsafe fn test_vreinterpret_f64_s32 () {
15824 let a
: i32x2
= i32x2
:: new ( 0 , 0 );
15826 let r
: f64 = transmute ( vreinterpret_f64_s32 ( transmute ( a
)));
15830 #[simd_test(enable = "neon" )]
15831 unsafe fn test_vreinterpret_f64_s64 () {
15832 let a
: i64x1
= i64x1
:: new ( 0 );
15834 let r
: f64 = transmute ( vreinterpret_f64_s64 ( transmute ( a
)));
15838 #[simd_test(enable = "neon" )]
15839 unsafe fn test_vreinterpretq_f64_s8 () {
15840 let a
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15841 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15842 let r
: f64x2
= transmute ( vreinterpretq_f64_s8 ( transmute ( a
)));
15846 #[simd_test(enable = "neon" )]
15847 unsafe fn test_vreinterpretq_f64_s16 () {
15848 let a
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15849 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15850 let r
: f64x2
= transmute ( vreinterpretq_f64_s16 ( transmute ( a
)));
15854 #[simd_test(enable = "neon" )]
15855 unsafe fn test_vreinterpretq_f64_s32 () {
15856 let a
: i32x4
= i32x4
:: new ( 0 , 0 , 0 , 0 );
15857 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15858 let r
: f64x2
= transmute ( vreinterpretq_f64_s32 ( transmute ( a
)));
15862 #[simd_test(enable = "neon" )]
15863 unsafe fn test_vreinterpretq_f64_s64 () {
15864 let a
: i64x2
= i64x2
:: new ( 0 , 0 );
15865 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15866 let r
: f64x2
= transmute ( vreinterpretq_f64_s64 ( transmute ( a
)));
15870 #[simd_test(enable = "neon" )]
15871 unsafe fn test_vreinterpret_f64_p8 () {
15872 let a
: i8x8
= i8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15874 let r
: f64 = transmute ( vreinterpret_f64_p8 ( transmute ( a
)));
15878 #[simd_test(enable = "neon" )]
15879 unsafe fn test_vreinterpret_f64_u16 () {
15880 let a
: u16x4
= u16x4
:: new ( 0 , 0 , 0 , 0 );
15882 let r
: f64 = transmute ( vreinterpret_f64_u16 ( transmute ( a
)));
15886 #[simd_test(enable = "neon" )]
15887 unsafe fn test_vreinterpret_f64_u32 () {
15888 let a
: u32x2
= u32x2
:: new ( 0 , 0 );
15890 let r
: f64 = transmute ( vreinterpret_f64_u32 ( transmute ( a
)));
15894 #[simd_test(enable = "neon" )]
15895 unsafe fn test_vreinterpret_f64_u64 () {
15896 let a
: u64x1
= u64x1
:: new ( 0 );
15898 let r
: f64 = transmute ( vreinterpret_f64_u64 ( transmute ( a
)));
15902 #[simd_test(enable = "neon" )]
15903 unsafe fn test_vreinterpretq_f64_p8 () {
15904 let a
: i8x16
= i8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15905 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15906 let r
: f64x2
= transmute ( vreinterpretq_f64_p8 ( transmute ( a
)));
15910 #[simd_test(enable = "neon" )]
15911 unsafe fn test_vreinterpretq_f64_u16 () {
15912 let a
: u16x8
= u16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15913 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15914 let r
: f64x2
= transmute ( vreinterpretq_f64_u16 ( transmute ( a
)));
15918 #[simd_test(enable = "neon" )]
15919 unsafe fn test_vreinterpretq_f64_u32 () {
15920 let a
: u32x4
= u32x4
:: new ( 0 , 0 , 0 , 0 );
15921 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15922 let r
: f64x2
= transmute ( vreinterpretq_f64_u32 ( transmute ( a
)));
15926 #[simd_test(enable = "neon" )]
15927 unsafe fn test_vreinterpretq_f64_u64 () {
15928 let a
: u64x2
= u64x2
:: new ( 0 , 0 );
15929 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15930 let r
: f64x2
= transmute ( vreinterpretq_f64_u64 ( transmute ( a
)));
15934 #[simd_test(enable = "neon" )]
15935 unsafe fn test_vreinterpret_f64_u8 () {
15936 let a
: u8x8
= u8x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15938 let r
: f64 = transmute ( vreinterpret_f64_u8 ( transmute ( a
)));
15942 #[simd_test(enable = "neon" )]
15943 unsafe fn test_vreinterpret_f64_p16 () {
15944 let a
: i16x4
= i16x4
:: new ( 0 , 0 , 0 , 0 );
15946 let r
: f64 = transmute ( vreinterpret_f64_p16 ( transmute ( a
)));
15950 #[simd_test(enable = "neon" )]
15951 unsafe fn test_vreinterpret_f64_p64 () {
15952 let a
: i64x1
= i64x1
:: new ( 0 );
15954 let r
: f64 = transmute ( vreinterpret_f64_p64 ( transmute ( a
)));
15958 #[simd_test(enable = "neon" )]
15959 unsafe fn test_vreinterpret_f32_p64 () {
15960 let a
: i64x1
= i64x1
:: new ( 0 );
15961 let e
: f32x2
= f32x2
:: new ( 0 ., 0 .);
15962 let r
: f32x2
= transmute ( vreinterpret_f32_p64 ( transmute ( a
)));
15966 #[simd_test(enable = "neon" )]
15967 unsafe fn test_vreinterpretq_f64_u8 () {
15968 let a
: u8x16
= u8x16
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15969 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15970 let r
: f64x2
= transmute ( vreinterpretq_f64_u8 ( transmute ( a
)));
15974 #[simd_test(enable = "neon" )]
15975 unsafe fn test_vreinterpretq_f64_p16 () {
15976 let a
: i16x8
= i16x8
:: new ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 );
15977 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15978 let r
: f64x2
= transmute ( vreinterpretq_f64_p16 ( transmute ( a
)));
15982 #[simd_test(enable = "neon" )]
15983 unsafe fn test_vreinterpretq_f64_p64 () {
15984 let a
: i64x2
= i64x2
:: new ( 0 , 0 );
15985 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
15986 let r
: f64x2
= transmute ( vreinterpretq_f64_p64 ( transmute ( a
)));
15990 #[simd_test(enable = "neon" )]
15991 unsafe fn test_vreinterpretq_f32_p64 () {
15992 let a
: i64x2
= i64x2
:: new ( 0 , 0 );
15993 let e
: f32x4
= f32x4
:: new ( 0 ., 0 ., 0 ., 0 .);
15994 let r
: f32x4
= transmute ( vreinterpretq_f32_p64 ( transmute ( a
)));
15998 #[simd_test(enable = "neon" )]
15999 unsafe fn test_vreinterpret_f64_f32 () {
16000 let a
: f32x2
= f32x2
:: new ( 0 ., 0 .);
16002 let r
: f64 = transmute ( vreinterpret_f64_f32 ( transmute ( a
)));
16006 #[simd_test(enable = "neon" )]
16007 unsafe fn test_vreinterpret_f32_f64 () {
16009 let e
: f32x2
= f32x2
:: new ( 0 ., 0 .);
16010 let r
: f32x2
= transmute ( vreinterpret_f32_f64 ( transmute ( a
)));
16014 #[simd_test(enable = "neon" )]
16015 unsafe fn test_vreinterpretq_f64_f32 () {
16016 let a
: f32x4
= f32x4
:: new ( 0 ., 0 ., 0 ., 0 .);
16017 let e
: f64x2
= f64x2
:: new ( 0 ., 0 .);
16018 let r
: f64x2
= transmute ( vreinterpretq_f64_f32 ( transmute ( a
)));
16022 #[simd_test(enable = "neon" )]
16023 unsafe fn test_vreinterpretq_f32_f64 () {
16024 let a
: f64x2
= f64x2
:: new ( 0 ., 0 .);
16025 let e
: f32x4
= f32x4
:: new ( 0 ., 0 ., 0 ., 0 .);
16026 let r
: f32x4
= transmute ( vreinterpretq_f32_f64 ( transmute ( a
)));
16030 #[simd_test(enable = "neon" )]
16031 unsafe fn test_vrshld_s64 () {
16035 let r
: i64 = transmute ( vrshld_s64 ( transmute ( a
), transmute ( b
)));
16039 #[simd_test(enable = "neon" )]
16040 unsafe fn test_vrshld_u64 () {
16044 let r
: u64 = transmute ( vrshld_u64 ( transmute ( a
), transmute ( b
)));
16048 #[simd_test(enable = "neon" )]
16049 unsafe fn test_vrshrd_n_s64 () {
16052 let r
: i64 = transmute ( vrshrd_n_s64
::< 2 >( transmute ( a
)));
16056 #[simd_test(enable = "neon" )]
16057 unsafe fn test_vrshrd_n_u64 () {
16060 let r
: u64 = transmute ( vrshrd_n_u64
::< 2 >( transmute ( a
)));
16064 #[simd_test(enable = "neon" )]
16065 unsafe fn test_vrshrn_high_n_s16 () {
16066 let a
: i8x8
= i8x8
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 );
16067 let b
: i16x8
= i16x8
:: new ( 32 , 36 , 40 , 44 , 48 , 52 , 56 , 60 );
16068 let e
: i8x16
= i8x16
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
16069 let r
: i8x16
= transmute ( vrshrn_high_n_s16
::< 2 >( transmute ( a
), transmute ( b
)));
16073 #[simd_test(enable = "neon" )]
16074 unsafe fn test_vrshrn_high_n_s32 () {
16075 let a
: i16x4
= i16x4
:: new ( 0 , 1 , 8 , 9 );
16076 let b
: i32x4
= i32x4
:: new ( 32 , 36 , 40 , 44 );
16077 let e
: i16x8
= i16x8
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 );
16078 let r
: i16x8
= transmute ( vrshrn_high_n_s32
::< 2 >( transmute ( a
), transmute ( b
)));
16082 #[simd_test(enable = "neon" )]
16083 unsafe fn test_vrshrn_high_n_s64 () {
16084 let a
: i32x2
= i32x2
:: new ( 0 , 1 );
16085 let b
: i64x2
= i64x2
:: new ( 32 , 36 );
16086 let e
: i32x4
= i32x4
:: new ( 0 , 1 , 8 , 9 );
16087 let r
: i32x4
= transmute ( vrshrn_high_n_s64
::< 2 >( transmute ( a
), transmute ( b
)));
16091 #[simd_test(enable = "neon" )]
16092 unsafe fn test_vrshrn_high_n_u16 () {
16093 let a
: u8x8
= u8x8
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 );
16094 let b
: u16x8
= u16x8
:: new ( 32 , 36 , 40 , 44 , 48 , 52 , 56 , 60 );
16095 let e
: u8x16
= u8x16
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
16096 let r
: u8x16
= transmute ( vrshrn_high_n_u16
::< 2 >( transmute ( a
), transmute ( b
)));
16100 #[simd_test(enable = "neon" )]
16101 unsafe fn test_vrshrn_high_n_u32 () {
16102 let a
: u16x4
= u16x4
:: new ( 0 , 1 , 8 , 9 );
16103 let b
: u32x4
= u32x4
:: new ( 32 , 36 , 40 , 44 );
16104 let e
: u16x8
= u16x8
:: new ( 0 , 1 , 8 , 9 , 8 , 9 , 10 , 11 );
16105 let r
: u16x8
= transmute ( vrshrn_high_n_u32
::< 2 >( transmute ( a
), transmute ( b
)));
16109 #[simd_test(enable = "neon" )]
16110 unsafe fn test_vrshrn_high_n_u64 () {
16111 let a
: u32x2
= u32x2
:: new ( 0 , 1 );
16112 let b
: u64x2
= u64x2
:: new ( 32 , 36 );
16113 let e
: u32x4
= u32x4
:: new ( 0 , 1 , 8 , 9 );
16114 let r
: u32x4
= transmute ( vrshrn_high_n_u64
::< 2 >( transmute ( a
), transmute ( b
)));
16118 #[simd_test(enable = "neon" )]
16119 unsafe fn test_vrsrad_n_s64 () {
16123 let r
: i64 = transmute ( vrsrad_n_s64
::< 2 >( transmute ( a
), transmute ( b
)));
16127 #[simd_test(enable = "neon" )]
16128 unsafe fn test_vrsrad_n_u64 () {
16132 let r
: u64 = transmute ( vrsrad_n_u64
::< 2 >( transmute ( a
), transmute ( b
)));
16136 #[simd_test(enable = "neon" )]
16137 unsafe fn test_vset_lane_f64 () {
16141 let r
: f64 = transmute ( vset_lane_f64
::< 0 >( transmute ( a
), transmute ( b
)));
16145 #[simd_test(enable = "neon" )]
16146 unsafe fn test_vsetq_lane_f64 () {
16148 let b
: f64x2
= f64x2
:: new ( 0 ., 2 .);
16149 let e
: f64x2
= f64x2
:: new ( 1 ., 2 .);
16150 let r
: f64x2
= transmute ( vsetq_lane_f64
::< 0 >( transmute ( a
), transmute ( b
)));
16154 #[simd_test(enable = "neon" )]
16155 unsafe fn test_vshld_s64 () {
16159 let r
: i64 = transmute ( vshld_s64 ( transmute ( a
), transmute ( b
)));
16163 #[simd_test(enable = "neon" )]
16164 unsafe fn test_vshld_u64 () {
16168 let r
: u64 = transmute ( vshld_u64 ( transmute ( a
), transmute ( b
)));
16172 #[simd_test(enable = "neon" )]
16173 unsafe fn test_vshll_high_n_s8 () {
16174 let a
: i8x16
= i8x16
:: new ( 0 , 0 , 1 , 2 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
16175 let e
: i16x8
= i16x8
:: new ( 4 , 8 , 12 , 16 , 20 , 24 , 28 , 32 );
16176 let r
: i16x8
= transmute ( vshll_high_n_s8
::< 2 >( transmute ( a
)));
16180 #[simd_test(enable = "neon" )]
16181 unsafe fn test_vshll_high_n_s16 () {
16182 let a
: i16x8
= i16x8
:: new ( 0 , 0 , 1 , 2 , 1 , 2 , 3 , 4 );
16183 let e
: i32x4
= i32x4
:: new ( 4 , 8 , 12 , 16 );
16184 let r
: i32x4
= transmute ( vshll_high_n_s16
::< 2 >( transmute ( a
)));
16188 #[simd_test(enable = "neon" )]
16189 unsafe fn test_vshll_high_n_s32 () {
16190 let a
: i32x4
= i32x4
:: new ( 0 , 0 , 1 , 2 );
16191 let e
: i64x2
= i64x2
:: new ( 4 , 8 );
16192 let r
: i64x2
= transmute ( vshll_high_n_s32
::< 2 >( transmute ( a
)));
16196 #[simd_test(enable = "neon" )]
16197 unsafe fn test_vshll_high_n_u8 () {
16198 let a
: u8x16
= u8x16
:: new ( 0 , 0 , 1 , 2 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
16199 let e
: u16x8
= u16x8
:: new ( 4 , 8 , 12 , 16 , 20 , 24 , 28 , 32 );
16200 let r
: u16x8
= transmute ( vshll_high_n_u8
::< 2 >( transmute ( a
)));
16204 #[simd_test(enable = "neon" )]
16205 unsafe fn test_vshll_high_n_u16 () {
16206 let a
: u16x8
= u16x8
:: new ( 0 , 0 , 1 , 2 , 1 , 2 , 3 , 4 );
16207 let e
: u32x4
= u32x4
:: new ( 4 , 8 , 12 , 16 );
16208 let r
: u32x4
= transmute ( vshll_high_n_u16
::< 2 >( transmute ( a
)));
16212 #[simd_test(enable = "neon" )]
16213 unsafe fn test_vshll_high_n_u32 () {
16214 let a
: u32x4
= u32x4
:: new ( 0 , 0 , 1 , 2 );
16215 let e
: u64x2
= u64x2
:: new ( 4 , 8 );
16216 let r
: u64x2
= transmute ( vshll_high_n_u32
::< 2 >( transmute ( a
)));
16220 #[simd_test(enable = "neon" )]
16221 unsafe fn test_vshrn_high_n_s16 () {
16222 let a
: i8x8
= i8x8
:: new ( 1 , 2 , 5 , 6 , 5 , 6 , 7 , 8 );
16223 let b
: i16x8
= i16x8
:: new ( 20 , 24 , 28 , 32 , 52 , 56 , 60 , 64 );
16224 let e
: i8x16
= i8x16
:: new ( 1 , 2 , 5 , 6 , 5 , 6 , 7 , 8 , 5 , 6 , 7 , 8 , 13 , 14 , 15 , 16 );
16225 let r
: i8x16
= transmute ( vshrn_high_n_s16
::< 2 >( transmute ( a
), transmute ( b
)));
16229 #[simd_test(enable = "neon" )]
16230 unsafe fn test_vshrn_high_n_s32 () {
16231 let a
: i16x4
= i16x4
:: new ( 1 , 2 , 5 , 6 );
16232 let b
: i32x4
= i32x4
:: new ( 20 , 24 , 28 , 32 );
16233 let e
: i16x8
= i16x8
:: new ( 1 , 2 , 5 , 6 , 5 , 6 , 7 , 8 );
16234 let r
: i16x8
= transmute ( vshrn_high_n_s32
::< 2 >( transmute ( a
), transmute ( b
)));
16238 #[simd_test(enable = "neon" )]
16239 unsafe fn test_vshrn_high_n_s64 () {
16240 let a
: i32x2
= i32x2
:: new ( 1 , 2 );
16241 let b
: i64x2
= i64x2
:: new ( 20 , 24 );
16242 let e
: i32x4
= i32x4
:: new ( 1 , 2 , 5 , 6 );
16243 let r
: i32x4
= transmute ( vshrn_high_n_s64
::< 2 >( transmute ( a
), transmute ( b
)));
16247 #[simd_test(enable = "neon" )]
16248 unsafe fn test_vshrn_high_n_u16 () {
16249 let a
: u8x8
= u8x8
:: new ( 1 , 2 , 5 , 6 , 5 , 6 , 7 , 8 );
16250 let b
: u16x8
= u16x8
:: new ( 20 , 24 , 28 , 32 , 52 , 56 , 60 , 64 );
16251 let e
: u8x16
= u8x16
:: new ( 1 , 2 , 5 , 6 , 5 , 6 , 7 , 8 , 5 , 6 , 7 , 8 , 13 , 14 , 15 , 16 );
16252 let r
: u8x16
= transmute ( vshrn_high_n_u16
::< 2 >( transmute ( a
), transmute ( b
)));
16256 #[simd_test(enable = "neon" )]
16257 unsafe fn test_vshrn_high_n_u32 () {
16258 let a
: u16x4
= u16x4
:: new ( 1 , 2 , 5 , 6 );
16259 let b
: u32x4
= u32x4
:: new ( 20 , 24 , 28 , 32 );
16260 let e
: u16x8
= u16x8
:: new ( 1 , 2 , 5 , 6 , 5 , 6 , 7 , 8 );
16261 let r
: u16x8
= transmute ( vshrn_high_n_u32
::< 2 >( transmute ( a
), transmute ( b
)));
16265 #[simd_test(enable = "neon" )]
16266 unsafe fn test_vshrn_high_n_u64 () {
16267 let a
: u32x2
= u32x2
:: new ( 1 , 2 );
16268 let b
: u64x2
= u64x2
:: new ( 20 , 24 );
16269 let e
: u32x4
= u32x4
:: new ( 1 , 2 , 5 , 6 );
16270 let r
: u32x4
= transmute ( vshrn_high_n_u64
::< 2 >( transmute ( a
), transmute ( b
)));
16274 #[simd_test(enable = "neon" )]
16275 unsafe fn test_vtrn1_s8 () {
16276 let a
: i8x8
= i8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16277 let b
: i8x8
= i8x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16278 let e
: i8x8
= i8x8
:: new ( 0 , 1 , 4 , 5 , 8 , 9 , 12 , 13 );
16279 let r
: i8x8
= transmute ( vtrn1_s8 ( transmute ( a
), transmute ( b
)));
16283 #[simd_test(enable = "neon" )]
16284 unsafe fn test_vtrn1q_s8 () {
16285 let a
: i8x16
= i8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16286 let b
: i8x16
= i8x16
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16287 let e
: i8x16
= i8x16
:: new ( 0 , 1 , 4 , 5 , 8 , 9 , 12 , 13 , 16 , 17 , 20 , 21 , 24 , 25 , 28 , 29 );
16288 let r
: i8x16
= transmute ( vtrn1q_s8 ( transmute ( a
), transmute ( b
)));
16292 #[simd_test(enable = "neon" )]
16293 unsafe fn test_vtrn1_s16 () {
16294 let a
: i16x4
= i16x4
:: new ( 0 , 2 , 4 , 6 );
16295 let b
: i16x4
= i16x4
:: new ( 1 , 3 , 5 , 7 );
16296 let e
: i16x4
= i16x4
:: new ( 0 , 1 , 4 , 5 );
16297 let r
: i16x4
= transmute ( vtrn1_s16 ( transmute ( a
), transmute ( b
)));
16301 #[simd_test(enable = "neon" )]
16302 unsafe fn test_vtrn1q_s16 () {
16303 let a
: i16x8
= i16x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16304 let b
: i16x8
= i16x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16305 let e
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 8 , 9 , 12 , 13 );
16306 let r
: i16x8
= transmute ( vtrn1q_s16 ( transmute ( a
), transmute ( b
)));
16310 #[simd_test(enable = "neon" )]
16311 unsafe fn test_vtrn1q_s32 () {
16312 let a
: i32x4
= i32x4
:: new ( 0 , 2 , 4 , 6 );
16313 let b
: i32x4
= i32x4
:: new ( 1 , 3 , 5 , 7 );
16314 let e
: i32x4
= i32x4
:: new ( 0 , 1 , 4 , 5 );
16315 let r
: i32x4
= transmute ( vtrn1q_s32 ( transmute ( a
), transmute ( b
)));
16319 #[simd_test(enable = "neon" )]
16320 unsafe fn test_vtrn1_u8 () {
16321 let a
: u8x8
= u8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16322 let b
: u8x8
= u8x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16323 let e
: u8x8
= u8x8
:: new ( 0 , 1 , 4 , 5 , 8 , 9 , 12 , 13 );
16324 let r
: u8x8
= transmute ( vtrn1_u8 ( transmute ( a
), transmute ( b
)));
16328 #[simd_test(enable = "neon" )]
16329 unsafe fn test_vtrn1q_u8 () {
16330 let a
: u8x16
= u8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16331 let b
: u8x16
= u8x16
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16332 let e
: u8x16
= u8x16
:: new ( 0 , 1 , 4 , 5 , 8 , 9 , 12 , 13 , 16 , 17 , 20 , 21 , 24 , 25 , 28 , 29 );
16333 let r
: u8x16
= transmute ( vtrn1q_u8 ( transmute ( a
), transmute ( b
)));
16337 #[simd_test(enable = "neon" )]
16338 unsafe fn test_vtrn1_u16 () {
16339 let a
: u16x4
= u16x4
:: new ( 0 , 2 , 4 , 6 );
16340 let b
: u16x4
= u16x4
:: new ( 1 , 3 , 5 , 7 );
16341 let e
: u16x4
= u16x4
:: new ( 0 , 1 , 4 , 5 );
16342 let r
: u16x4
= transmute ( vtrn1_u16 ( transmute ( a
), transmute ( b
)));
16346 #[simd_test(enable = "neon" )]
16347 unsafe fn test_vtrn1q_u16 () {
16348 let a
: u16x8
= u16x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16349 let b
: u16x8
= u16x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16350 let e
: u16x8
= u16x8
:: new ( 0 , 1 , 4 , 5 , 8 , 9 , 12 , 13 );
16351 let r
: u16x8
= transmute ( vtrn1q_u16 ( transmute ( a
), transmute ( b
)));
16355 #[simd_test(enable = "neon" )]
16356 unsafe fn test_vtrn1q_u32 () {
16357 let a
: u32x4
= u32x4
:: new ( 0 , 2 , 4 , 6 );
16358 let b
: u32x4
= u32x4
:: new ( 1 , 3 , 5 , 7 );
16359 let e
: u32x4
= u32x4
:: new ( 0 , 1 , 4 , 5 );
16360 let r
: u32x4
= transmute ( vtrn1q_u32 ( transmute ( a
), transmute ( b
)));
16364 #[simd_test(enable = "neon" )]
16365 unsafe fn test_vtrn1_p8 () {
16366 let a
: i8x8
= i8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16367 let b
: i8x8
= i8x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16368 let e
: i8x8
= i8x8
:: new ( 0 , 1 , 4 , 5 , 8 , 9 , 12 , 13 );
16369 let r
: i8x8
= transmute ( vtrn1_p8 ( transmute ( a
), transmute ( b
)));
16373 #[simd_test(enable = "neon" )]
16374 unsafe fn test_vtrn1q_p8 () {
16375 let a
: i8x16
= i8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16376 let b
: i8x16
= i8x16
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16377 let e
: i8x16
= i8x16
:: new ( 0 , 1 , 4 , 5 , 8 , 9 , 12 , 13 , 16 , 17 , 20 , 21 , 24 , 25 , 28 , 29 );
16378 let r
: i8x16
= transmute ( vtrn1q_p8 ( transmute ( a
), transmute ( b
)));
16382 #[simd_test(enable = "neon" )]
16383 unsafe fn test_vtrn1_p16 () {
16384 let a
: i16x4
= i16x4
:: new ( 0 , 2 , 4 , 6 );
16385 let b
: i16x4
= i16x4
:: new ( 1 , 3 , 5 , 7 );
16386 let e
: i16x4
= i16x4
:: new ( 0 , 1 , 4 , 5 );
16387 let r
: i16x4
= transmute ( vtrn1_p16 ( transmute ( a
), transmute ( b
)));
16391 #[simd_test(enable = "neon" )]
16392 unsafe fn test_vtrn1q_p16 () {
16393 let a
: i16x8
= i16x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16394 let b
: i16x8
= i16x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16395 let e
: i16x8
= i16x8
:: new ( 0 , 1 , 4 , 5 , 8 , 9 , 12 , 13 );
16396 let r
: i16x8
= transmute ( vtrn1q_p16 ( transmute ( a
), transmute ( b
)));
16400 #[simd_test(enable = "neon" )]
16401 unsafe fn test_vtrn1_s32 () {
16402 let a
: i32x2
= i32x2
:: new ( 0 , 2 );
16403 let b
: i32x2
= i32x2
:: new ( 1 , 3 );
16404 let e
: i32x2
= i32x2
:: new ( 0 , 1 );
16405 let r
: i32x2
= transmute ( vtrn1_s32 ( transmute ( a
), transmute ( b
)));
16409 #[simd_test(enable = "neon" )]
16410 unsafe fn test_vtrn1q_s64 () {
16411 let a
: i64x2
= i64x2
:: new ( 0 , 2 );
16412 let b
: i64x2
= i64x2
:: new ( 1 , 3 );
16413 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
16414 let r
: i64x2
= transmute ( vtrn1q_s64 ( transmute ( a
), transmute ( b
)));
16418 #[simd_test(enable = "neon" )]
16419 unsafe fn test_vtrn1_u32 () {
16420 let a
: u32x2
= u32x2
:: new ( 0 , 2 );
16421 let b
: u32x2
= u32x2
:: new ( 1 , 3 );
16422 let e
: u32x2
= u32x2
:: new ( 0 , 1 );
16423 let r
: u32x2
= transmute ( vtrn1_u32 ( transmute ( a
), transmute ( b
)));
16427 #[simd_test(enable = "neon" )]
16428 unsafe fn test_vtrn1q_u64 () {
16429 let a
: u64x2
= u64x2
:: new ( 0 , 2 );
16430 let b
: u64x2
= u64x2
:: new ( 1 , 3 );
16431 let e
: u64x2
= u64x2
:: new ( 0 , 1 );
16432 let r
: u64x2
= transmute ( vtrn1q_u64 ( transmute ( a
), transmute ( b
)));
16436 #[simd_test(enable = "neon" )]
16437 unsafe fn test_vtrn1q_p64 () {
16438 let a
: i64x2
= i64x2
:: new ( 0 , 2 );
16439 let b
: i64x2
= i64x2
:: new ( 1 , 3 );
16440 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
16441 let r
: i64x2
= transmute ( vtrn1q_p64 ( transmute ( a
), transmute ( b
)));
16445 #[simd_test(enable = "neon" )]
16446 unsafe fn test_vtrn1q_f32 () {
16447 let a
: f32x4
= f32x4
:: new ( 0 ., 2 ., 4 ., 6 .);
16448 let b
: f32x4
= f32x4
:: new ( 1 ., 3 ., 5 ., 7 .);
16449 let e
: f32x4
= f32x4
:: new ( 0 ., 1 ., 4 ., 5 .);
16450 let r
: f32x4
= transmute ( vtrn1q_f32 ( transmute ( a
), transmute ( b
)));
16454 #[simd_test(enable = "neon" )]
16455 unsafe fn test_vtrn1_f32 () {
16456 let a
: f32x2
= f32x2
:: new ( 0 ., 2 .);
16457 let b
: f32x2
= f32x2
:: new ( 1 ., 3 .);
16458 let e
: f32x2
= f32x2
:: new ( 0 ., 1 .);
16459 let r
: f32x2
= transmute ( vtrn1_f32 ( transmute ( a
), transmute ( b
)));
16463 #[simd_test(enable = "neon" )]
16464 unsafe fn test_vtrn1q_f64 () {
16465 let a
: f64x2
= f64x2
:: new ( 0 ., 2 .);
16466 let b
: f64x2
= f64x2
:: new ( 1 ., 3 .);
16467 let e
: f64x2
= f64x2
:: new ( 0 ., 1 .);
16468 let r
: f64x2
= transmute ( vtrn1q_f64 ( transmute ( a
), transmute ( b
)));
16472 #[simd_test(enable = "neon" )]
16473 unsafe fn test_vtrn2_s8 () {
16474 let a
: i8x8
= i8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16475 let b
: i8x8
= i8x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16476 let e
: i8x8
= i8x8
:: new ( 2 , 3 , 6 , 7 , 10 , 11 , 14 , 15 );
16477 let r
: i8x8
= transmute ( vtrn2_s8 ( transmute ( a
), transmute ( b
)));
16481 #[simd_test(enable = "neon" )]
16482 unsafe fn test_vtrn2q_s8 () {
16483 let a
: i8x16
= i8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16484 let b
: i8x16
= i8x16
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16485 let e
: i8x16
= i8x16
:: new ( 2 , 3 , 6 , 7 , 10 , 11 , 14 , 15 , 18 , 19 , 22 , 23 , 26 , 27 , 30 , 31 );
16486 let r
: i8x16
= transmute ( vtrn2q_s8 ( transmute ( a
), transmute ( b
)));
16490 #[simd_test(enable = "neon" )]
16491 unsafe fn test_vtrn2_s16 () {
16492 let a
: i16x4
= i16x4
:: new ( 0 , 2 , 4 , 6 );
16493 let b
: i16x4
= i16x4
:: new ( 1 , 3 , 5 , 7 );
16494 let e
: i16x4
= i16x4
:: new ( 2 , 3 , 6 , 7 );
16495 let r
: i16x4
= transmute ( vtrn2_s16 ( transmute ( a
), transmute ( b
)));
16499 #[simd_test(enable = "neon" )]
16500 unsafe fn test_vtrn2q_s16 () {
16501 let a
: i16x8
= i16x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16502 let b
: i16x8
= i16x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16503 let e
: i16x8
= i16x8
:: new ( 2 , 3 , 6 , 7 , 10 , 11 , 14 , 15 );
16504 let r
: i16x8
= transmute ( vtrn2q_s16 ( transmute ( a
), transmute ( b
)));
16508 #[simd_test(enable = "neon" )]
16509 unsafe fn test_vtrn2q_s32 () {
16510 let a
: i32x4
= i32x4
:: new ( 0 , 2 , 4 , 6 );
16511 let b
: i32x4
= i32x4
:: new ( 1 , 3 , 5 , 7 );
16512 let e
: i32x4
= i32x4
:: new ( 2 , 3 , 6 , 7 );
16513 let r
: i32x4
= transmute ( vtrn2q_s32 ( transmute ( a
), transmute ( b
)));
16517 #[simd_test(enable = "neon" )]
16518 unsafe fn test_vtrn2_u8 () {
16519 let a
: u8x8
= u8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16520 let b
: u8x8
= u8x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16521 let e
: u8x8
= u8x8
:: new ( 2 , 3 , 6 , 7 , 10 , 11 , 14 , 15 );
16522 let r
: u8x8
= transmute ( vtrn2_u8 ( transmute ( a
), transmute ( b
)));
16526 #[simd_test(enable = "neon" )]
16527 unsafe fn test_vtrn2q_u8 () {
16528 let a
: u8x16
= u8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16529 let b
: u8x16
= u8x16
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16530 let e
: u8x16
= u8x16
:: new ( 2 , 3 , 6 , 7 , 10 , 11 , 14 , 15 , 18 , 19 , 22 , 23 , 26 , 27 , 30 , 31 );
16531 let r
: u8x16
= transmute ( vtrn2q_u8 ( transmute ( a
), transmute ( b
)));
16535 #[simd_test(enable = "neon" )]
16536 unsafe fn test_vtrn2_u16 () {
16537 let a
: u16x4
= u16x4
:: new ( 0 , 2 , 4 , 6 );
16538 let b
: u16x4
= u16x4
:: new ( 1 , 3 , 5 , 7 );
16539 let e
: u16x4
= u16x4
:: new ( 2 , 3 , 6 , 7 );
16540 let r
: u16x4
= transmute ( vtrn2_u16 ( transmute ( a
), transmute ( b
)));
16544 #[simd_test(enable = "neon" )]
16545 unsafe fn test_vtrn2q_u16 () {
16546 let a
: u16x8
= u16x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16547 let b
: u16x8
= u16x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16548 let e
: u16x8
= u16x8
:: new ( 2 , 3 , 6 , 7 , 10 , 11 , 14 , 15 );
16549 let r
: u16x8
= transmute ( vtrn2q_u16 ( transmute ( a
), transmute ( b
)));
16553 #[simd_test(enable = "neon" )]
16554 unsafe fn test_vtrn2q_u32 () {
16555 let a
: u32x4
= u32x4
:: new ( 0 , 2 , 4 , 6 );
16556 let b
: u32x4
= u32x4
:: new ( 1 , 3 , 5 , 7 );
16557 let e
: u32x4
= u32x4
:: new ( 2 , 3 , 6 , 7 );
16558 let r
: u32x4
= transmute ( vtrn2q_u32 ( transmute ( a
), transmute ( b
)));
16562 #[simd_test(enable = "neon" )]
16563 unsafe fn test_vtrn2_p8 () {
16564 let a
: i8x8
= i8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16565 let b
: i8x8
= i8x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16566 let e
: i8x8
= i8x8
:: new ( 2 , 3 , 6 , 7 , 10 , 11 , 14 , 15 );
16567 let r
: i8x8
= transmute ( vtrn2_p8 ( transmute ( a
), transmute ( b
)));
16571 #[simd_test(enable = "neon" )]
16572 unsafe fn test_vtrn2q_p8 () {
16573 let a
: i8x16
= i8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16574 let b
: i8x16
= i8x16
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16575 let e
: i8x16
= i8x16
:: new ( 2 , 3 , 6 , 7 , 10 , 11 , 14 , 15 , 18 , 19 , 22 , 23 , 26 , 27 , 30 , 31 );
16576 let r
: i8x16
= transmute ( vtrn2q_p8 ( transmute ( a
), transmute ( b
)));
16580 #[simd_test(enable = "neon" )]
16581 unsafe fn test_vtrn2_p16 () {
16582 let a
: i16x4
= i16x4
:: new ( 0 , 2 , 4 , 6 );
16583 let b
: i16x4
= i16x4
:: new ( 1 , 3 , 5 , 7 );
16584 let e
: i16x4
= i16x4
:: new ( 2 , 3 , 6 , 7 );
16585 let r
: i16x4
= transmute ( vtrn2_p16 ( transmute ( a
), transmute ( b
)));
16589 #[simd_test(enable = "neon" )]
16590 unsafe fn test_vtrn2q_p16 () {
16591 let a
: i16x8
= i16x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16592 let b
: i16x8
= i16x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16593 let e
: i16x8
= i16x8
:: new ( 2 , 3 , 6 , 7 , 10 , 11 , 14 , 15 );
16594 let r
: i16x8
= transmute ( vtrn2q_p16 ( transmute ( a
), transmute ( b
)));
16598 #[simd_test(enable = "neon" )]
16599 unsafe fn test_vtrn2_s32 () {
16600 let a
: i32x2
= i32x2
:: new ( 0 , 2 );
16601 let b
: i32x2
= i32x2
:: new ( 1 , 3 );
16602 let e
: i32x2
= i32x2
:: new ( 2 , 3 );
16603 let r
: i32x2
= transmute ( vtrn2_s32 ( transmute ( a
), transmute ( b
)));
16607 #[simd_test(enable = "neon" )]
16608 unsafe fn test_vtrn2q_s64 () {
16609 let a
: i64x2
= i64x2
:: new ( 0 , 2 );
16610 let b
: i64x2
= i64x2
:: new ( 1 , 3 );
16611 let e
: i64x2
= i64x2
:: new ( 2 , 3 );
16612 let r
: i64x2
= transmute ( vtrn2q_s64 ( transmute ( a
), transmute ( b
)));
16616 #[simd_test(enable = "neon" )]
16617 unsafe fn test_vtrn2_u32 () {
16618 let a
: u32x2
= u32x2
:: new ( 0 , 2 );
16619 let b
: u32x2
= u32x2
:: new ( 1 , 3 );
16620 let e
: u32x2
= u32x2
:: new ( 2 , 3 );
16621 let r
: u32x2
= transmute ( vtrn2_u32 ( transmute ( a
), transmute ( b
)));
16625 #[simd_test(enable = "neon" )]
16626 unsafe fn test_vtrn2q_u64 () {
16627 let a
: u64x2
= u64x2
:: new ( 0 , 2 );
16628 let b
: u64x2
= u64x2
:: new ( 1 , 3 );
16629 let e
: u64x2
= u64x2
:: new ( 2 , 3 );
16630 let r
: u64x2
= transmute ( vtrn2q_u64 ( transmute ( a
), transmute ( b
)));
16634 #[simd_test(enable = "neon" )]
16635 unsafe fn test_vtrn2q_p64 () {
16636 let a
: i64x2
= i64x2
:: new ( 0 , 2 );
16637 let b
: i64x2
= i64x2
:: new ( 1 , 3 );
16638 let e
: i64x2
= i64x2
:: new ( 2 , 3 );
16639 let r
: i64x2
= transmute ( vtrn2q_p64 ( transmute ( a
), transmute ( b
)));
16643 #[simd_test(enable = "neon" )]
16644 unsafe fn test_vtrn2q_f32 () {
16645 let a
: f32x4
= f32x4
:: new ( 0 ., 2 ., 4 ., 6 .);
16646 let b
: f32x4
= f32x4
:: new ( 1 ., 3 ., 5 ., 7 .);
16647 let e
: f32x4
= f32x4
:: new ( 2 ., 3 ., 6 ., 7 .);
16648 let r
: f32x4
= transmute ( vtrn2q_f32 ( transmute ( a
), transmute ( b
)));
16652 #[simd_test(enable = "neon" )]
16653 unsafe fn test_vtrn2_f32 () {
16654 let a
: f32x2
= f32x2
:: new ( 0 ., 2 .);
16655 let b
: f32x2
= f32x2
:: new ( 1 ., 3 .);
16656 let e
: f32x2
= f32x2
:: new ( 2 ., 3 .);
16657 let r
: f32x2
= transmute ( vtrn2_f32 ( transmute ( a
), transmute ( b
)));
16661 #[simd_test(enable = "neon" )]
16662 unsafe fn test_vtrn2q_f64 () {
16663 let a
: f64x2
= f64x2
:: new ( 0 ., 2 .);
16664 let b
: f64x2
= f64x2
:: new ( 1 ., 3 .);
16665 let e
: f64x2
= f64x2
:: new ( 2 ., 3 .);
16666 let r
: f64x2
= transmute ( vtrn2q_f64 ( transmute ( a
), transmute ( b
)));
16670 #[simd_test(enable = "neon" )]
16671 unsafe fn test_vzip1_s8 () {
16672 let a
: i8x8
= i8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16673 let b
: i8x8
= i8x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16674 let e
: i8x8
= i8x8
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 );
16675 let r
: i8x8
= transmute ( vzip1_s8 ( transmute ( a
), transmute ( b
)));
16679 #[simd_test(enable = "neon" )]
16680 unsafe fn test_vzip1q_s8 () {
16681 let a
: i8x16
= i8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16682 let b
: i8x16
= i8x16
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16683 let e
: i8x16
= i8x16
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
16684 let r
: i8x16
= transmute ( vzip1q_s8 ( transmute ( a
), transmute ( b
)));
16688 #[simd_test(enable = "neon" )]
16689 unsafe fn test_vzip1_s16 () {
16690 let a
: i16x4
= i16x4
:: new ( 0 , 2 , 4 , 6 );
16691 let b
: i16x4
= i16x4
:: new ( 1 , 3 , 5 , 7 );
16692 let e
: i16x4
= i16x4
:: new ( 0 , 1 , 2 , 3 );
16693 let r
: i16x4
= transmute ( vzip1_s16 ( transmute ( a
), transmute ( b
)));
16697 #[simd_test(enable = "neon" )]
16698 unsafe fn test_vzip1q_s16 () {
16699 let a
: i16x8
= i16x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16700 let b
: i16x8
= i16x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16701 let e
: i16x8
= i16x8
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 );
16702 let r
: i16x8
= transmute ( vzip1q_s16 ( transmute ( a
), transmute ( b
)));
16706 #[simd_test(enable = "neon" )]
16707 unsafe fn test_vzip1_s32 () {
16708 let a
: i32x2
= i32x2
:: new ( 0 , 2 );
16709 let b
: i32x2
= i32x2
:: new ( 1 , 3 );
16710 let e
: i32x2
= i32x2
:: new ( 0 , 1 );
16711 let r
: i32x2
= transmute ( vzip1_s32 ( transmute ( a
), transmute ( b
)));
16715 #[simd_test(enable = "neon" )]
16716 unsafe fn test_vzip1q_s32 () {
16717 let a
: i32x4
= i32x4
:: new ( 0 , 2 , 4 , 6 );
16718 let b
: i32x4
= i32x4
:: new ( 1 , 3 , 5 , 7 );
16719 let e
: i32x4
= i32x4
:: new ( 0 , 1 , 2 , 3 );
16720 let r
: i32x4
= transmute ( vzip1q_s32 ( transmute ( a
), transmute ( b
)));
16724 #[simd_test(enable = "neon" )]
16725 unsafe fn test_vzip1q_s64 () {
16726 let a
: i64x2
= i64x2
:: new ( 0 , 2 );
16727 let b
: i64x2
= i64x2
:: new ( 1 , 3 );
16728 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
16729 let r
: i64x2
= transmute ( vzip1q_s64 ( transmute ( a
), transmute ( b
)));
16733 #[simd_test(enable = "neon" )]
16734 unsafe fn test_vzip1_u8 () {
16735 let a
: u8x8
= u8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16736 let b
: u8x8
= u8x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16737 let e
: u8x8
= u8x8
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 );
16738 let r
: u8x8
= transmute ( vzip1_u8 ( transmute ( a
), transmute ( b
)));
16742 #[simd_test(enable = "neon" )]
16743 unsafe fn test_vzip1q_u8 () {
16744 let a
: u8x16
= u8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16745 let b
: u8x16
= u8x16
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16746 let e
: u8x16
= u8x16
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
16747 let r
: u8x16
= transmute ( vzip1q_u8 ( transmute ( a
), transmute ( b
)));
16751 #[simd_test(enable = "neon" )]
16752 unsafe fn test_vzip1_u16 () {
16753 let a
: u16x4
= u16x4
:: new ( 0 , 2 , 4 , 6 );
16754 let b
: u16x4
= u16x4
:: new ( 1 , 3 , 5 , 7 );
16755 let e
: u16x4
= u16x4
:: new ( 0 , 1 , 2 , 3 );
16756 let r
: u16x4
= transmute ( vzip1_u16 ( transmute ( a
), transmute ( b
)));
16760 #[simd_test(enable = "neon" )]
16761 unsafe fn test_vzip1q_u16 () {
16762 let a
: u16x8
= u16x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16763 let b
: u16x8
= u16x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16764 let e
: u16x8
= u16x8
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 );
16765 let r
: u16x8
= transmute ( vzip1q_u16 ( transmute ( a
), transmute ( b
)));
16769 #[simd_test(enable = "neon" )]
16770 unsafe fn test_vzip1_u32 () {
16771 let a
: u32x2
= u32x2
:: new ( 0 , 2 );
16772 let b
: u32x2
= u32x2
:: new ( 1 , 3 );
16773 let e
: u32x2
= u32x2
:: new ( 0 , 1 );
16774 let r
: u32x2
= transmute ( vzip1_u32 ( transmute ( a
), transmute ( b
)));
16778 #[simd_test(enable = "neon" )]
16779 unsafe fn test_vzip1q_u32 () {
16780 let a
: u32x4
= u32x4
:: new ( 0 , 2 , 4 , 6 );
16781 let b
: u32x4
= u32x4
:: new ( 1 , 3 , 5 , 7 );
16782 let e
: u32x4
= u32x4
:: new ( 0 , 1 , 2 , 3 );
16783 let r
: u32x4
= transmute ( vzip1q_u32 ( transmute ( a
), transmute ( b
)));
16787 #[simd_test(enable = "neon" )]
16788 unsafe fn test_vzip1q_u64 () {
16789 let a
: u64x2
= u64x2
:: new ( 0 , 2 );
16790 let b
: u64x2
= u64x2
:: new ( 1 , 3 );
16791 let e
: u64x2
= u64x2
:: new ( 0 , 1 );
16792 let r
: u64x2
= transmute ( vzip1q_u64 ( transmute ( a
), transmute ( b
)));
16796 #[simd_test(enable = "neon" )]
16797 unsafe fn test_vzip1_p8 () {
16798 let a
: i8x8
= i8x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16799 let b
: i8x8
= i8x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16800 let e
: i8x8
= i8x8
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 );
16801 let r
: i8x8
= transmute ( vzip1_p8 ( transmute ( a
), transmute ( b
)));
16805 #[simd_test(enable = "neon" )]
16806 unsafe fn test_vzip1q_p8 () {
16807 let a
: i8x16
= i8x16
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16808 let b
: i8x16
= i8x16
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16809 let e
: i8x16
= i8x16
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 );
16810 let r
: i8x16
= transmute ( vzip1q_p8 ( transmute ( a
), transmute ( b
)));
16814 #[simd_test(enable = "neon" )]
16815 unsafe fn test_vzip1_p16 () {
16816 let a
: i16x4
= i16x4
:: new ( 0 , 2 , 4 , 6 );
16817 let b
: i16x4
= i16x4
:: new ( 1 , 3 , 5 , 7 );
16818 let e
: i16x4
= i16x4
:: new ( 0 , 1 , 2 , 3 );
16819 let r
: i16x4
= transmute ( vzip1_p16 ( transmute ( a
), transmute ( b
)));
16823 #[simd_test(enable = "neon" )]
16824 unsafe fn test_vzip1q_p16 () {
16825 let a
: i16x8
= i16x8
:: new ( 0 , 2 , 4 , 6 , 8 , 10 , 12 , 14 );
16826 let b
: i16x8
= i16x8
:: new ( 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 );
16827 let e
: i16x8
= i16x8
:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 );
16828 let r
: i16x8
= transmute ( vzip1q_p16 ( transmute ( a
), transmute ( b
)));
16832 #[simd_test(enable = "neon" )]
16833 unsafe fn test_vzip1q_p64 () {
16834 let a
: i64x2
= i64x2
:: new ( 0 , 2 );
16835 let b
: i64x2
= i64x2
:: new ( 1 , 3 );
16836 let e
: i64x2
= i64x2
:: new ( 0 , 1 );
16837 let r
: i64x2
= transmute ( vzip1q_p64 ( transmute ( a
), transmute ( b
)));
16841 #[simd_test(enable = "neon" )]
16842 unsafe fn test_vzip1_f32 () {
16843 let a
: f32x2
= f32x2
:: new ( 0 ., 2 .);
16844 let b
: f32x2
= f32x2
:: new ( 1 ., 3 .);
16845 let e
: f32x2
= f32x2
:: new ( 0 ., 1 .);
16846 let r
: f32x2
= transmute ( vzip1_f32 ( transmute ( a
), transmute ( b
)));
16850 #[simd_test(enable = "neon" )]
16851 unsafe fn test_vzip1q_f32 () {
16852 let a
: f32x4
= f32x4
:: new ( 0 ., 2 ., 4 ., 6 .);
16853 let b
: f32x4
= f32x4
:: new ( 1 ., 3 ., 5 ., 7 .);
16854 let e
: f32x4
= f32x4
:: new ( 0 ., 1 ., 2 ., 3 .);
16855 let r
: f32x4
= transmute ( vzip1q_f32 ( transmute ( a
), transmute ( b
)));
16859 #[simd_test(enable = "neon" )]
16860 unsafe fn test_vzip1q_f64 () {
16861 let a
: f64x2
= f64x2
:: new ( 0 ., 2 .);
16862 let b
: f64x2
= f64x2
:: new ( 1 ., 3 .);
16863 let e
: f64x2
= f64x2
:: new ( 0 ., 1 .);
16864 let r
: f64x2
= transmute ( vzip1q_f64 ( transmute ( a
), transmute ( b
)));
16868 #[simd_test(enable = "neon" )]
16869 unsafe fn test_vzip2_s8 () {
16870 let a
: i8x8
= i8x8
:: new ( 0 , 16 , 16 , 18 , 16 , 18 , 20 , 22 );
16871 let b
: i8x8
= i8x8
:: new ( 1 , 17 , 17 , 19 , 17 , 19 , 21 , 23 );
16872 let e
: i8x8
= i8x8
:: new ( 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 );
16873 let r
: i8x8
= transmute ( vzip2_s8 ( transmute ( a
), transmute ( b
)));
16877 #[simd_test(enable = "neon" )]
16878 unsafe fn test_vzip2q_s8 () {
16879 let a
: i8x16
= i8x16
:: new ( 0 , 16 , 16 , 18 , 16 , 18 , 20 , 22 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16880 let b
: i8x16
= i8x16
:: new ( 1 , 17 , 17 , 19 , 17 , 19 , 21 , 23 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16881 let e
: i8x16
= i8x16
:: new ( 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 );
16882 let r
: i8x16
= transmute ( vzip2q_s8 ( transmute ( a
), transmute ( b
)));
16886 #[simd_test(enable = "neon" )]
16887 unsafe fn test_vzip2_s16 () {
16888 let a
: i16x4
= i16x4
:: new ( 0 , 16 , 16 , 18 );
16889 let b
: i16x4
= i16x4
:: new ( 1 , 17 , 17 , 19 );
16890 let e
: i16x4
= i16x4
:: new ( 16 , 17 , 18 , 19 );
16891 let r
: i16x4
= transmute ( vzip2_s16 ( transmute ( a
), transmute ( b
)));
16895 #[simd_test(enable = "neon" )]
16896 unsafe fn test_vzip2q_s16 () {
16897 let a
: i16x8
= i16x8
:: new ( 0 , 16 , 16 , 18 , 16 , 18 , 20 , 22 );
16898 let b
: i16x8
= i16x8
:: new ( 1 , 17 , 17 , 19 , 17 , 19 , 21 , 23 );
16899 let e
: i16x8
= i16x8
:: new ( 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 );
16900 let r
: i16x8
= transmute ( vzip2q_s16 ( transmute ( a
), transmute ( b
)));
16904 #[simd_test(enable = "neon" )]
16905 unsafe fn test_vzip2_s32 () {
16906 let a
: i32x2
= i32x2
:: new ( 0 , 16 );
16907 let b
: i32x2
= i32x2
:: new ( 1 , 17 );
16908 let e
: i32x2
= i32x2
:: new ( 16 , 17 );
16909 let r
: i32x2
= transmute ( vzip2_s32 ( transmute ( a
), transmute ( b
)));
16913 #[simd_test(enable = "neon" )]
16914 unsafe fn test_vzip2q_s32 () {
16915 let a
: i32x4
= i32x4
:: new ( 0 , 16 , 16 , 18 );
16916 let b
: i32x4
= i32x4
:: new ( 1 , 17 , 17 , 19 );
16917 let e
: i32x4
= i32x4
:: new ( 16 , 17 , 18 , 19 );
16918 let r
: i32x4
= transmute ( vzip2q_s32 ( transmute ( a
), transmute ( b
)));
16922 #[simd_test(enable = "neon" )]
16923 unsafe fn test_vzip2q_s64 () {
16924 let a
: i64x2
= i64x2
:: new ( 0 , 16 );
16925 let b
: i64x2
= i64x2
:: new ( 1 , 17 );
16926 let e
: i64x2
= i64x2
:: new ( 16 , 17 );
16927 let r
: i64x2
= transmute ( vzip2q_s64 ( transmute ( a
), transmute ( b
)));
16931 #[simd_test(enable = "neon" )]
16932 unsafe fn test_vzip2_u8 () {
16933 let a
: u8x8
= u8x8
:: new ( 0 , 16 , 16 , 18 , 16 , 18 , 20 , 22 );
16934 let b
: u8x8
= u8x8
:: new ( 1 , 17 , 17 , 19 , 17 , 19 , 21 , 23 );
16935 let e
: u8x8
= u8x8
:: new ( 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 );
16936 let r
: u8x8
= transmute ( vzip2_u8 ( transmute ( a
), transmute ( b
)));
16940 #[simd_test(enable = "neon" )]
16941 unsafe fn test_vzip2q_u8 () {
16942 let a
: u8x16
= u8x16
:: new ( 0 , 16 , 16 , 18 , 16 , 18 , 20 , 22 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
16943 let b
: u8x16
= u8x16
:: new ( 1 , 17 , 17 , 19 , 17 , 19 , 21 , 23 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
16944 let e
: u8x16
= u8x16
:: new ( 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 );
16945 let r
: u8x16
= transmute ( vzip2q_u8 ( transmute ( a
), transmute ( b
)));
16949 #[simd_test(enable = "neon" )]
16950 unsafe fn test_vzip2_u16 () {
16951 let a
: u16x4
= u16x4
:: new ( 0 , 16 , 16 , 18 );
16952 let b
: u16x4
= u16x4
:: new ( 1 , 17 , 17 , 19 );
16953 let e
: u16x4
= u16x4
:: new ( 16 , 17 , 18 , 19 );
16954 let r
: u16x4
= transmute ( vzip2_u16 ( transmute ( a
), transmute ( b
)));
16958 #[simd_test(enable = "neon" )]
16959 unsafe fn test_vzip2q_u16 () {
16960 let a
: u16x8
= u16x8
:: new ( 0 , 16 , 16 , 18 , 16 , 18 , 20 , 22 );
16961 let b
: u16x8
= u16x8
:: new ( 1 , 17 , 17 , 19 , 17 , 19 , 21 , 23 );
16962 let e
: u16x8
= u16x8
:: new ( 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 );
16963 let r
: u16x8
= transmute ( vzip2q_u16 ( transmute ( a
), transmute ( b
)));
16967 #[simd_test(enable = "neon" )]
16968 unsafe fn test_vzip2_u32 () {
16969 let a
: u32x2
= u32x2
:: new ( 0 , 16 );
16970 let b
: u32x2
= u32x2
:: new ( 1 , 17 );
16971 let e
: u32x2
= u32x2
:: new ( 16 , 17 );
16972 let r
: u32x2
= transmute ( vzip2_u32 ( transmute ( a
), transmute ( b
)));
16976 #[simd_test(enable = "neon" )]
16977 unsafe fn test_vzip2q_u32 () {
16978 let a
: u32x4
= u32x4
:: new ( 0 , 16 , 16 , 18 );
16979 let b
: u32x4
= u32x4
:: new ( 1 , 17 , 17 , 19 );
16980 let e
: u32x4
= u32x4
:: new ( 16 , 17 , 18 , 19 );
16981 let r
: u32x4
= transmute ( vzip2q_u32 ( transmute ( a
), transmute ( b
)));
16985 #[simd_test(enable = "neon" )]
16986 unsafe fn test_vzip2q_u64 () {
16987 let a
: u64x2
= u64x2
:: new ( 0 , 16 );
16988 let b
: u64x2
= u64x2
:: new ( 1 , 17 );
16989 let e
: u64x2
= u64x2
:: new ( 16 , 17 );
16990 let r
: u64x2
= transmute ( vzip2q_u64 ( transmute ( a
), transmute ( b
)));
16994 #[simd_test(enable = "neon" )]
16995 unsafe fn test_vzip2_p8 () {
16996 let a
: i8x8
= i8x8
:: new ( 0 , 16 , 16 , 18 , 16 , 18 , 20 , 22 );
16997 let b
: i8x8
= i8x8
:: new ( 1 , 17 , 17 , 19 , 17 , 19 , 21 , 23 );
16998 let e
: i8x8
= i8x8
:: new ( 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 );
16999 let r
: i8x8
= transmute ( vzip2_p8 ( transmute ( a
), transmute ( b
)));
17003 #[simd_test(enable = "neon" )]
17004 unsafe fn test_vzip2q_p8 () {
17005 let a
: i8x16
= i8x16
:: new ( 0 , 16 , 16 , 18 , 16 , 18 , 20 , 22 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 );
17006 let b
: i8x16
= i8x16
:: new ( 1 , 17 , 17 , 19 , 17 , 19 , 21 , 23 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 );
17007 let e
: i8x16
= i8x16
:: new ( 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 );
17008 let r
: i8x16
= transmute ( vzip2q_p8 ( transmute ( a
), transmute ( b
)));
17012 #[simd_test(enable = "neon" )]
17013 unsafe fn test_vzip2_p16 () {
17014 let a
: i16x4
= i16x4
:: new ( 0 , 16 , 16 , 18 );
17015 let b
: i16x4
= i16x4
:: new ( 1 , 17 , 17 , 19 );
17016 let e
: i16x4
= i16x4
:: new ( 16 , 17 , 18 , 19 );
17017 let r
: i16x4
= transmute ( vzip2_p16 ( transmute ( a
), transmute ( b
)));
17021 #[simd_test(enable = "neon" )]
17022 unsafe fn test_vzip2q_p16 () {
17023 let a
: i16x8
= i16x8
:: new ( 0 , 16 , 16 , 18 , 16 , 18 , 20 , 22 );
17024 let b
: i16x8
= i16x8
:: new ( 1 , 17 , 17 , 19 , 17 , 19 , 21 , 23 );
17025 let e
: i16x8
= i16x8
:: new ( 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 );
17026 let r
: i16x8
= transmute ( vzip2q_p16 ( transmute ( a
), transmute ( b
)));
17030 #[simd_test(enable = "neon" )]
17031 unsafe fn test_vzip2q_p64 () {
17032 let a
: i64x2
= i64x2
:: new ( 0 , 16 );
17033 let b
: i64x2
= i64x2
:: new ( 1 , 17 );
17034 let e
: i64x2
= i64x2
:: new ( 16 , 17 );
17035 let r
: i64x2
= transmute ( vzip2q_p64 ( transmute ( a
), transmute ( b
)));
17039 #[simd_test(enable = "neon" )]
17040 unsafe fn test_vzip2_f32 () {
17041 let a
: f32x2
= f32x2
:: new ( 0 ., 8 .);
17042 let b
: f32x2
= f32x2
:: new ( 1 ., 9 .);
17043 let e
: f32x2
= f32x2
:: new ( 8 ., 9 .);
17044 let r
: f32x2
= transmute ( vzip2_f32 ( transmute ( a
), transmute ( b
)));
17048 #[simd_test(enable = "neon" )]
17049 unsafe fn test_vzip2q_f32 () {
17050 let a
: f32x4
= f32x4
:: new ( 0 ., 8 ., 8 ., 10 .);
17051 let b
: f32x4
= f32x4
:: new ( 1 ., 9 ., 9 ., 11 .);
17052 let e
: f32x4
= f32x4
:: new ( 8 ., 9 ., 10 ., 11 .);
17053 let r
: f32x4
= transmute ( vzip2q_f32 ( transmute ( a
), transmute ( b
)));
17057 #[simd_test(enable = "neon" )]
17058 unsafe fn test_vzip2q_f64 () {
17059 let a
: f64x2
= f64x2
:: new ( 0 ., 8 .);
17060 let b
: f64x2
= f64x2
:: new ( 1 ., 9 .);
17061 let e
: f64x2
= f64x2
:: new ( 8 ., 9 .);
17062 let r
: f64x2
= transmute ( vzip2q_f64 ( transmute ( a
), transmute ( b
)));
17066 #[simd_test(enable = "neon" )]
17067 unsafe fn test_vuzp1_s8 () {
17068 let a
: i8x8
= i8x8
:: new ( 1 , 0 , 2 , 0 , 2 , 0 , 3 , 0 );
17069 let b
: i8x8
= i8x8
:: new ( 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 );
17070 let e
: i8x8
= i8x8
:: new ( 1 , 2 , 2 , 3 , 2 , 3 , 7 , 8 );
17071 let r
: i8x8
= transmute ( vuzp1_s8 ( transmute ( a
), transmute ( b
)));
17075 #[simd_test(enable = "neon" )]
17076 unsafe fn test_vuzp1q_s8 () {
17077 let a
: i8x16
= i8x16
:: new ( 1 , 0 , 2 , 0 , 2 , 0 , 3 , 0 , 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 );
17078 let b
: i8x16
= i8x16
:: new ( 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 , 13 , 0 , 14 , 0 , 15 , 0 , 16 , 0 );
17079 let e
: i8x16
= i8x16
:: new ( 1 , 2 , 2 , 3 , 2 , 3 , 7 , 8 , 2 , 3 , 7 , 8 , 13 , 14 , 15 , 16 );
17080 let r
: i8x16
= transmute ( vuzp1q_s8 ( transmute ( a
), transmute ( b
)));
17084 #[simd_test(enable = "neon" )]
17085 unsafe fn test_vuzp1_s16 () {
17086 let a
: i16x4
= i16x4
:: new ( 1 , 0 , 2 , 0 );
17087 let b
: i16x4
= i16x4
:: new ( 2 , 0 , 3 , 0 );
17088 let e
: i16x4
= i16x4
:: new ( 1 , 2 , 2 , 3 );
17089 let r
: i16x4
= transmute ( vuzp1_s16 ( transmute ( a
), transmute ( b
)));
17093 #[simd_test(enable = "neon" )]
17094 unsafe fn test_vuzp1q_s16 () {
17095 let a
: i16x8
= i16x8
:: new ( 1 , 0 , 2 , 0 , 2 , 0 , 3 , 0 );
17096 let b
: i16x8
= i16x8
:: new ( 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 );
17097 let e
: i16x8
= i16x8
:: new ( 1 , 2 , 2 , 3 , 2 , 3 , 7 , 8 );
17098 let r
: i16x8
= transmute ( vuzp1q_s16 ( transmute ( a
), transmute ( b
)));
17102 #[simd_test(enable = "neon" )]
17103 unsafe fn test_vuzp1q_s32 () {
17104 let a
: i32x4
= i32x4
:: new ( 1 , 0 , 2 , 0 );
17105 let b
: i32x4
= i32x4
:: new ( 2 , 0 , 3 , 0 );
17106 let e
: i32x4
= i32x4
:: new ( 1 , 2 , 2 , 3 );
17107 let r
: i32x4
= transmute ( vuzp1q_s32 ( transmute ( a
), transmute ( b
)));
17111 #[simd_test(enable = "neon" )]
17112 unsafe fn test_vuzp1_u8 () {
17113 let a
: u8x8
= u8x8
:: new ( 1 , 0 , 2 , 0 , 2 , 0 , 3 , 0 );
17114 let b
: u8x8
= u8x8
:: new ( 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 );
17115 let e
: u8x8
= u8x8
:: new ( 1 , 2 , 2 , 3 , 2 , 3 , 7 , 8 );
17116 let r
: u8x8
= transmute ( vuzp1_u8 ( transmute ( a
), transmute ( b
)));
17120 #[simd_test(enable = "neon" )]
17121 unsafe fn test_vuzp1q_u8 () {
17122 let a
: u8x16
= u8x16
:: new ( 1 , 0 , 2 , 0 , 2 , 0 , 3 , 0 , 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 );
17123 let b
: u8x16
= u8x16
:: new ( 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 , 13 , 0 , 14 , 0 , 15 , 0 , 16 , 0 );
17124 let e
: u8x16
= u8x16
:: new ( 1 , 2 , 2 , 3 , 2 , 3 , 7 , 8 , 2 , 3 , 7 , 8 , 13 , 14 , 15 , 16 );
17125 let r
: u8x16
= transmute ( vuzp1q_u8 ( transmute ( a
), transmute ( b
)));
17129 #[simd_test(enable = "neon" )]
17130 unsafe fn test_vuzp1_u16 () {
17131 let a
: u16x4
= u16x4
:: new ( 1 , 0 , 2 , 0 );
17132 let b
: u16x4
= u16x4
:: new ( 2 , 0 , 3 , 0 );
17133 let e
: u16x4
= u16x4
:: new ( 1 , 2 , 2 , 3 );
17134 let r
: u16x4
= transmute ( vuzp1_u16 ( transmute ( a
), transmute ( b
)));
17138 #[simd_test(enable = "neon" )]
17139 unsafe fn test_vuzp1q_u16 () {
17140 let a
: u16x8
= u16x8
:: new ( 1 , 0 , 2 , 0 , 2 , 0 , 3 , 0 );
17141 let b
: u16x8
= u16x8
:: new ( 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 );
17142 let e
: u16x8
= u16x8
:: new ( 1 , 2 , 2 , 3 , 2 , 3 , 7 , 8 );
17143 let r
: u16x8
= transmute ( vuzp1q_u16 ( transmute ( a
), transmute ( b
)));
17147 #[simd_test(enable = "neon" )]
17148 unsafe fn test_vuzp1q_u32 () {
17149 let a
: u32x4
= u32x4
:: new ( 1 , 0 , 2 , 0 );
17150 let b
: u32x4
= u32x4
:: new ( 2 , 0 , 3 , 0 );
17151 let e
: u32x4
= u32x4
:: new ( 1 , 2 , 2 , 3 );
17152 let r
: u32x4
= transmute ( vuzp1q_u32 ( transmute ( a
), transmute ( b
)));
17156 #[simd_test(enable = "neon" )]
17157 unsafe fn test_vuzp1_p8 () {
17158 let a
: i8x8
= i8x8
:: new ( 1 , 0 , 2 , 0 , 2 , 0 , 3 , 0 );
17159 let b
: i8x8
= i8x8
:: new ( 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 );
17160 let e
: i8x8
= i8x8
:: new ( 1 , 2 , 2 , 3 , 2 , 3 , 7 , 8 );
17161 let r
: i8x8
= transmute ( vuzp1_p8 ( transmute ( a
), transmute ( b
)));
17165 #[simd_test(enable = "neon" )]
17166 unsafe fn test_vuzp1q_p8 () {
17167 let a
: i8x16
= i8x16
:: new ( 1 , 0 , 2 , 0 , 2 , 0 , 3 , 0 , 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 );
17168 let b
: i8x16
= i8x16
:: new ( 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 , 13 , 0 , 14 , 0 , 15 , 0 , 16 , 0 );
17169 let e
: i8x16
= i8x16
:: new ( 1 , 2 , 2 , 3 , 2 , 3 , 7 , 8 , 2 , 3 , 7 , 8 , 13 , 14 , 15 , 16 );
17170 let r
: i8x16
= transmute ( vuzp1q_p8 ( transmute ( a
), transmute ( b
)));
17174 #[simd_test(enable = "neon" )]
17175 unsafe fn test_vuzp1_p16 () {
17176 let a
: i16x4
= i16x4
:: new ( 1 , 0 , 2 , 0 );
17177 let b
: i16x4
= i16x4
:: new ( 2 , 0 , 3 , 0 );
17178 let e
: i16x4
= i16x4
:: new ( 1 , 2 , 2 , 3 );
17179 let r
: i16x4
= transmute ( vuzp1_p16 ( transmute ( a
), transmute ( b
)));
17183 #[simd_test(enable = "neon" )]
17184 unsafe fn test_vuzp1q_p16 () {
17185 let a
: i16x8
= i16x8
:: new ( 1 , 0 , 2 , 0 , 2 , 0 , 3 , 0 );
17186 let b
: i16x8
= i16x8
:: new ( 2 , 0 , 3 , 0 , 7 , 0 , 8 , 0 );
17187 let e
: i16x8
= i16x8
:: new ( 1 , 2 , 2 , 3 , 2 , 3 , 7 , 8 );
17188 let r
: i16x8
= transmute ( vuzp1q_p16 ( transmute ( a
), transmute ( b
)));
17192 #[simd_test(enable = "neon" )]
17193 unsafe fn test_vuzp1_s32 () {
17194 let a
: i32x2
= i32x2
:: new ( 1 , 0 );
17195 let b
: i32x2
= i32x2
:: new ( 2 , 0 );
17196 let e
: i32x2
= i32x2
:: new ( 1 , 2 );
17197 let r
: i32x2
= transmute ( vuzp1_s32 ( transmute ( a
), transmute ( b
)));
17201 #[simd_test(enable = "neon" )]
17202 unsafe fn test_vuzp1q_s64 () {
17203 let a
: i64x2
= i64x2
:: new ( 1 , 0 );
17204 let b
: i64x2
= i64x2
:: new ( 2 , 0 );
17205 let e
: i64x2
= i64x2
:: new ( 1 , 2 );
17206 let r
: i64x2
= transmute ( vuzp1q_s64 ( transmute ( a
), transmute ( b
)));
17210 #[simd_test(enable = "neon" )]
17211 unsafe fn test_vuzp1_u32 () {
17212 let a
: u32x2
= u32x2
:: new ( 1 , 0 );
17213 let b
: u32x2
= u32x2
:: new ( 2 , 0 );
17214 let e
: u32x2
= u32x2
:: new ( 1 , 2 );
17215 let r
: u32x2
= transmute ( vuzp1_u32 ( transmute ( a
), transmute ( b
)));
17219 #[simd_test(enable = "neon" )]
17220 unsafe fn test_vuzp1q_u64 () {
17221 let a
: u64x2
= u64x2
:: new ( 1 , 0 );
17222 let b
: u64x2
= u64x2
:: new ( 2 , 0 );
17223 let e
: u64x2
= u64x2
:: new ( 1 , 2 );
17224 let r
: u64x2
= transmute ( vuzp1q_u64 ( transmute ( a
), transmute ( b
)));
17228 #[simd_test(enable = "neon" )]
17229 unsafe fn test_vuzp1q_p64 () {
17230 let a
: i64x2
= i64x2
:: new ( 1 , 0 );
17231 let b
: i64x2
= i64x2
:: new ( 2 , 0 );
17232 let e
: i64x2
= i64x2
:: new ( 1 , 2 );
17233 let r
: i64x2
= transmute ( vuzp1q_p64 ( transmute ( a
), transmute ( b
)));
17237 #[simd_test(enable = "neon" )]
17238 unsafe fn test_vuzp1q_f32 () {
17239 let a
: f32x4
= f32x4
:: new ( 0 ., 8 ., 1 ., 9 .);
17240 let b
: f32x4
= f32x4
:: new ( 1 ., 10 ., 3 ., 11 .);
17241 let e
: f32x4
= f32x4
:: new ( 0 ., 1 ., 1 ., 3 .);
17242 let r
: f32x4
= transmute ( vuzp1q_f32 ( transmute ( a
), transmute ( b
)));
17246 #[simd_test(enable = "neon" )]
17247 unsafe fn test_vuzp1_f32 () {
17248 let a
: f32x2
= f32x2
:: new ( 0 ., 8 .);
17249 let b
: f32x2
= f32x2
:: new ( 1 ., 10 .);
17250 let e
: f32x2
= f32x2
:: new ( 0 ., 1 .);
17251 let r
: f32x2
= transmute ( vuzp1_f32 ( transmute ( a
), transmute ( b
)));
17255 #[simd_test(enable = "neon" )]
17256 unsafe fn test_vuzp1q_f64 () {
17257 let a
: f64x2
= f64x2
:: new ( 0 ., 8 .);
17258 let b
: f64x2
= f64x2
:: new ( 1 ., 10 .);
17259 let e
: f64x2
= f64x2
:: new ( 0 ., 1 .);
17260 let r
: f64x2
= transmute ( vuzp1q_f64 ( transmute ( a
), transmute ( b
)));
17264 #[simd_test(enable = "neon" )]
17265 unsafe fn test_vuzp2_s8 () {
17266 let a
: i8x8
= i8x8
:: new ( 0 , 17 , 0 , 18 , 0 , 18 , 0 , 19 );
17267 let b
: i8x8
= i8x8
:: new ( 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 );
17268 let e
: i8x8
= i8x8
:: new ( 17 , 18 , 18 , 19 , 18 , 19 , 23 , 24 );
17269 let r
: i8x8
= transmute ( vuzp2_s8 ( transmute ( a
), transmute ( b
)));
17273 #[simd_test(enable = "neon" )]
17274 unsafe fn test_vuzp2q_s8 () {
17275 let a
: i8x16
= i8x16
:: new ( 0 , 17 , 0 , 18 , 0 , 18 , 0 , 19 , 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 );
17276 let b
: i8x16
= i8x16
:: new ( 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 , 0 , 29 , 0 , 30 , 0 , 31 , 0 , 32 );
17277 let e
: i8x16
= i8x16
:: new ( 17 , 18 , 18 , 19 , 18 , 19 , 23 , 24 , 18 , 19 , 23 , 24 , 29 , 30 , 31 , 32 );
17278 let r
: i8x16
= transmute ( vuzp2q_s8 ( transmute ( a
), transmute ( b
)));
17282 #[simd_test(enable = "neon" )]
17283 unsafe fn test_vuzp2_s16 () {
17284 let a
: i16x4
= i16x4
:: new ( 0 , 17 , 0 , 18 );
17285 let b
: i16x4
= i16x4
:: new ( 0 , 18 , 0 , 19 );
17286 let e
: i16x4
= i16x4
:: new ( 17 , 18 , 18 , 19 );
17287 let r
: i16x4
= transmute ( vuzp2_s16 ( transmute ( a
), transmute ( b
)));
17291 #[simd_test(enable = "neon" )]
17292 unsafe fn test_vuzp2q_s16 () {
17293 let a
: i16x8
= i16x8
:: new ( 0 , 17 , 0 , 18 , 0 , 18 , 0 , 19 );
17294 let b
: i16x8
= i16x8
:: new ( 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 );
17295 let e
: i16x8
= i16x8
:: new ( 17 , 18 , 18 , 19 , 18 , 19 , 23 , 24 );
17296 let r
: i16x8
= transmute ( vuzp2q_s16 ( transmute ( a
), transmute ( b
)));
17300 #[simd_test(enable = "neon" )]
17301 unsafe fn test_vuzp2q_s32 () {
17302 let a
: i32x4
= i32x4
:: new ( 0 , 17 , 0 , 18 );
17303 let b
: i32x4
= i32x4
:: new ( 0 , 18 , 0 , 19 );
17304 let e
: i32x4
= i32x4
:: new ( 17 , 18 , 18 , 19 );
17305 let r
: i32x4
= transmute ( vuzp2q_s32 ( transmute ( a
), transmute ( b
)));
17309 #[simd_test(enable = "neon" )]
17310 unsafe fn test_vuzp2_u8 () {
17311 let a
: u8x8
= u8x8
:: new ( 0 , 17 , 0 , 18 , 0 , 18 , 0 , 19 );
17312 let b
: u8x8
= u8x8
:: new ( 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 );
17313 let e
: u8x8
= u8x8
:: new ( 17 , 18 , 18 , 19 , 18 , 19 , 23 , 24 );
17314 let r
: u8x8
= transmute ( vuzp2_u8 ( transmute ( a
), transmute ( b
)));
17318 #[simd_test(enable = "neon" )]
17319 unsafe fn test_vuzp2q_u8 () {
17320 let a
: u8x16
= u8x16
:: new ( 0 , 17 , 0 , 18 , 0 , 18 , 0 , 19 , 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 );
17321 let b
: u8x16
= u8x16
:: new ( 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 , 0 , 29 , 0 , 30 , 0 , 31 , 0 , 32 );
17322 let e
: u8x16
= u8x16
:: new ( 17 , 18 , 18 , 19 , 18 , 19 , 23 , 24 , 18 , 19 , 23 , 24 , 29 , 30 , 31 , 32 );
17323 let r
: u8x16
= transmute ( vuzp2q_u8 ( transmute ( a
), transmute ( b
)));
17327 #[simd_test(enable = "neon" )]
17328 unsafe fn test_vuzp2_u16 () {
17329 let a
: u16x4
= u16x4
:: new ( 0 , 17 , 0 , 18 );
17330 let b
: u16x4
= u16x4
:: new ( 0 , 18 , 0 , 19 );
17331 let e
: u16x4
= u16x4
:: new ( 17 , 18 , 18 , 19 );
17332 let r
: u16x4
= transmute ( vuzp2_u16 ( transmute ( a
), transmute ( b
)));
17336 #[simd_test(enable = "neon" )]
17337 unsafe fn test_vuzp2q_u16 () {
17338 let a
: u16x8
= u16x8
:: new ( 0 , 17 , 0 , 18 , 0 , 18 , 0 , 19 );
17339 let b
: u16x8
= u16x8
:: new ( 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 );
17340 let e
: u16x8
= u16x8
:: new ( 17 , 18 , 18 , 19 , 18 , 19 , 23 , 24 );
17341 let r
: u16x8
= transmute ( vuzp2q_u16 ( transmute ( a
), transmute ( b
)));
17345 #[simd_test(enable = "neon" )]
17346 unsafe fn test_vuzp2q_u32 () {
17347 let a
: u32x4
= u32x4
:: new ( 0 , 17 , 0 , 18 );
17348 let b
: u32x4
= u32x4
:: new ( 0 , 18 , 0 , 19 );
17349 let e
: u32x4
= u32x4
:: new ( 17 , 18 , 18 , 19 );
17350 let r
: u32x4
= transmute ( vuzp2q_u32 ( transmute ( a
), transmute ( b
)));
17354 #[simd_test(enable = "neon" )]
17355 unsafe fn test_vuzp2_p8 () {
17356 let a
: i8x8
= i8x8
:: new ( 0 , 17 , 0 , 18 , 0 , 18 , 0 , 19 );
17357 let b
: i8x8
= i8x8
:: new ( 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 );
17358 let e
: i8x8
= i8x8
:: new ( 17 , 18 , 18 , 19 , 18 , 19 , 23 , 24 );
17359 let r
: i8x8
= transmute ( vuzp2_p8 ( transmute ( a
), transmute ( b
)));
17363 #[simd_test(enable = "neon" )]
17364 unsafe fn test_vuzp2q_p8 () {
17365 let a
: i8x16
= i8x16
:: new ( 0 , 17 , 0 , 18 , 0 , 18 , 0 , 19 , 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 );
17366 let b
: i8x16
= i8x16
:: new ( 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 , 0 , 29 , 0 , 30 , 0 , 31 , 0 , 32 );
17367 let e
: i8x16
= i8x16
:: new ( 17 , 18 , 18 , 19 , 18 , 19 , 23 , 24 , 18 , 19 , 23 , 24 , 29 , 30 , 31 , 32 );
17368 let r
: i8x16
= transmute ( vuzp2q_p8 ( transmute ( a
), transmute ( b
)));
17372 #[simd_test(enable = "neon" )]
17373 unsafe fn test_vuzp2_p16 () {
17374 let a
: i16x4
= i16x4
:: new ( 0 , 17 , 0 , 18 );
17375 let b
: i16x4
= i16x4
:: new ( 0 , 18 , 0 , 19 );
17376 let e
: i16x4
= i16x4
:: new ( 17 , 18 , 18 , 19 );
17377 let r
: i16x4
= transmute ( vuzp2_p16 ( transmute ( a
), transmute ( b
)));
17381 #[simd_test(enable = "neon" )]
17382 unsafe fn test_vuzp2q_p16 () {
17383 let a
: i16x8
= i16x8
:: new ( 0 , 17 , 0 , 18 , 0 , 18 , 0 , 19 );
17384 let b
: i16x8
= i16x8
:: new ( 0 , 18 , 0 , 19 , 0 , 23 , 0 , 24 );
17385 let e
: i16x8
= i16x8
:: new ( 17 , 18 , 18 , 19 , 18 , 19 , 23 , 24 );
17386 let r
: i16x8
= transmute ( vuzp2q_p16 ( transmute ( a
), transmute ( b
)));
17390 #[simd_test(enable = "neon" )]
17391 unsafe fn test_vuzp2_s32 () {
17392 let a
: i32x2
= i32x2
:: new ( 0 , 17 );
17393 let b
: i32x2
= i32x2
:: new ( 0 , 18 );
17394 let e
: i32x2
= i32x2
:: new ( 17 , 18 );
17395 let r
: i32x2
= transmute ( vuzp2_s32 ( transmute ( a
), transmute ( b
)));
17399 #[simd_test(enable = "neon" )]
17400 unsafe fn test_vuzp2q_s64 () {
17401 let a
: i64x2
= i64x2
:: new ( 0 , 17 );
17402 let b
: i64x2
= i64x2
:: new ( 0 , 18 );
17403 let e
: i64x2
= i64x2
:: new ( 17 , 18 );
17404 let r
: i64x2
= transmute ( vuzp2q_s64 ( transmute ( a
), transmute ( b
)));
17408 #[simd_test(enable = "neon" )]
17409 unsafe fn test_vuzp2_u32 () {
17410 let a
: u32x2
= u32x2
:: new ( 0 , 17 );
17411 let b
: u32x2
= u32x2
:: new ( 0 , 18 );
17412 let e
: u32x2
= u32x2
:: new ( 17 , 18 );
17413 let r
: u32x2
= transmute ( vuzp2_u32 ( transmute ( a
), transmute ( b
)));
17417 #[simd_test(enable = "neon" )]
17418 unsafe fn test_vuzp2q_u64 () {
17419 let a
: u64x2
= u64x2
:: new ( 0 , 17 );
17420 let b
: u64x2
= u64x2
:: new ( 0 , 18 );
17421 let e
: u64x2
= u64x2
:: new ( 17 , 18 );
17422 let r
: u64x2
= transmute ( vuzp2q_u64 ( transmute ( a
), transmute ( b
)));
17426 #[simd_test(enable = "neon" )]
17427 unsafe fn test_vuzp2q_p64 () {
17428 let a
: i64x2
= i64x2
:: new ( 0 , 17 );
17429 let b
: i64x2
= i64x2
:: new ( 0 , 18 );
17430 let e
: i64x2
= i64x2
:: new ( 17 , 18 );
17431 let r
: i64x2
= transmute ( vuzp2q_p64 ( transmute ( a
), transmute ( b
)));
17435 #[simd_test(enable = "neon" )]
17436 unsafe fn test_vuzp2q_f32 () {
17437 let a
: f32x4
= f32x4
:: new ( 0 ., 8 ., 1 ., 9 .);
17438 let b
: f32x4
= f32x4
:: new ( 2 ., 9 ., 3 ., 11 .);
17439 let e
: f32x4
= f32x4
:: new ( 8 ., 9 ., 9 ., 11 .);
17440 let r
: f32x4
= transmute ( vuzp2q_f32 ( transmute ( a
), transmute ( b
)));
17444 #[simd_test(enable = "neon" )]
17445 unsafe fn test_vuzp2_f32 () {
17446 let a
: f32x2
= f32x2
:: new ( 0 ., 8 .);
17447 let b
: f32x2
= f32x2
:: new ( 2 ., 9 .);
17448 let e
: f32x2
= f32x2
:: new ( 8 ., 9 .);
17449 let r
: f32x2
= transmute ( vuzp2_f32 ( transmute ( a
), transmute ( b
)));
17453 #[simd_test(enable = "neon" )]
17454 unsafe fn test_vuzp2q_f64 () {
17455 let a
: f64x2
= f64x2
:: new ( 0 ., 8 .);
17456 let b
: f64x2
= f64x2
:: new ( 2 ., 9 .);
17457 let e
: f64x2
= f64x2
:: new ( 8 ., 9 .);
17458 let r
: f64x2
= transmute ( vuzp2q_f64 ( transmute ( a
), transmute ( b
)));
17462 #[simd_test(enable = "neon" )]
17463 unsafe fn test_vabal_high_u8 () {
17464 let a
: u16x8
= u16x8
:: new ( 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
17465 let b
: u8x16
= u8x16
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
17466 let c
: u8x16
= u8x16
:: new ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 20 , 0 , 2 , 4 , 6 , 8 , 10 , 12 );
17467 let e
: u16x8
= u16x8
:: new ( 20 , 20 , 20 , 20 , 20 , 20 , 20 , 20 );
17468 let r
: u16x8
= transmute ( vabal_high_u8 ( transmute ( a
), transmute ( b
), transmute ( c
)));
17472 #[simd_test(enable = "neon" )]
17473 unsafe fn test_vabal_high_u16 () {
17474 let a
: u32x4
= u32x4
:: new ( 9 , 10 , 11 , 12 );
17475 let b
: u16x8
= u16x8
:: new ( 1 , 2 , 3 , 4 , 9 , 10 , 11 , 12 );
17476 let c
: u16x8
= u16x8
:: new ( 10 , 10 , 10 , 10 , 20 , 0 , 2 , 4 );
17477 let e
: u32x4
= u32x4
:: new ( 20 , 20 , 20 , 20 );
17478 let r
: u32x4
= transmute ( vabal_high_u16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
17482 #[simd_test(enable = "neon" )]
17483 unsafe fn test_vabal_high_u32 () {
17484 let a
: u64x2
= u64x2
:: new ( 15 , 16 );
17485 let b
: u32x4
= u32x4
:: new ( 1 , 2 , 15 , 16 );
17486 let c
: u32x4
= u32x4
:: new ( 10 , 10 , 10 , 12 );
17487 let e
: u64x2
= u64x2
:: new ( 20 , 20 );
17488 let r
: u64x2
= transmute ( vabal_high_u32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
17492 #[simd_test(enable = "neon" )]
17493 unsafe fn test_vabal_high_s8 () {
17494 let a
: i16x8
= i16x8
:: new ( 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
17495 let b
: i8x16
= i8x16
:: new ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 );
17496 let c
: i8x16
= i8x16
:: new ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 20 , 0 , 2 , 4 , 6 , 8 , 10 , 12 );
17497 let e
: i16x8
= i16x8
:: new ( 20 , 20 , 20 , 20 , 20 , 20 , 20 , 20 );
17498 let r
: i16x8
= transmute ( vabal_high_s8 ( transmute ( a
), transmute ( b
), transmute ( c
)));
17502 #[simd_test(enable = "neon" )]
17503 unsafe fn test_vabal_high_s16 () {
17504 let a
: i32x4
= i32x4
:: new ( 9 , 10 , 11 , 12 );
17505 let b
: i16x8
= i16x8
:: new ( 1 , 2 , 3 , 4 , 9 , 10 , 11 , 12 );
17506 let c
: i16x8
= i16x8
:: new ( 10 , 10 , 10 , 10 , 20 , 0 , 2 , 4 );
17507 let e
: i32x4
= i32x4
:: new ( 20 , 20 , 20 , 20 );
17508 let r
: i32x4
= transmute ( vabal_high_s16 ( transmute ( a
), transmute ( b
), transmute ( c
)));
17512 #[simd_test(enable = "neon" )]
17513 unsafe fn test_vabal_high_s32 () {
17514 let a
: i64x2
= i64x2
:: new ( 15 , 16 );
17515 let b
: i32x4
= i32x4
:: new ( 1 , 2 , 15 , 16 );
17516 let c
: i32x4
= i32x4
:: new ( 10 , 10 , 10 , 12 );
17517 let e
: i64x2
= i64x2
:: new ( 20 , 20 );
17518 let r
: i64x2
= transmute ( vabal_high_s32 ( transmute ( a
), transmute ( b
), transmute ( c
)));
17522 #[simd_test(enable = "neon" )]
17523 unsafe fn test_vqabs_s64 () {
17524 let a
: i64x1
= i64x1
:: new (- 9223372036854775808 );
17525 let e
: i64x1
= i64x1
:: new ( 0x7F_FF_FF_FF_FF_FF_FF_FF );
17526 let r
: i64x1
= transmute ( vqabs_s64 ( transmute ( a
)));
17530 #[simd_test(enable = "neon" )]
17531 unsafe fn test_vqabsq_s64 () {
17532 let a
: i64x2
= i64x2
:: new (- 9223372036854775808 , - 7 );
17533 let e
: i64x2
= i64x2
:: new ( 0x7F_FF_FF_FF_FF_FF_FF_FF , 7 );
17534 let r
: i64x2
= transmute ( vqabsq_s64 ( transmute ( a
)));