1 /* Test the vbsl_f64 AArch64 SIMD intrinsic. */ 2 3 /* { dg-do run } */ 4 /* { dg-options "-O3" } */ 5 6 #include "arm_neon.h" 7 8 extern void abort (void); 9 10 int main(void)11main (void) 12 { 13 float64x1_t expected, actual; 14 float64_t expected_scalar, actual_scalar; 15 float64x1_t arg1, arg2; 16 uint64_t mask = 0xf0fc00fbf000fa0fULL; 17 uint64_t arg1_uint = 0xdeadbeefbada9832ULL; 18 uint64_t arg2_uint = 0xcafe3254deed7111ULL; 19 20 arg1 = vcreate_f64 (arg1_uint); 21 arg2 = vcreate_f64 (arg2_uint); 22 expected = vcreate_f64 ((arg1_uint & mask) | (arg2_uint & ~mask)); 23 actual = vbsl_f64 (vcreate_u64 (mask), arg1, arg2); 24 25 expected_scalar = vget_lane_f64 (expected, 0); 26 actual_scalar = vget_lane_f64 (actual, 0); 27 28 if (expected_scalar != actual_scalar) 29 abort (); 30 31 return 0; 32 } 33