/* { dg-do run } */ /* { dg-options "-O3" } */ #include "arm_neon.h" #include "stdio.h" extern void abort (void); void test_square_root_v2sf () { const float32_t pool[] = {4.0f, 9.0f}; float32x2_t val; float32x2_t res; val = vld1_f32 (pool); res = vsqrt_f32 (val); if (vget_lane_f32 (res, 0) != 2.0f) abort (); if (vget_lane_f32 (res, 1) != 3.0f) abort (); } void test_square_root_v4sf () { const float32_t pool[] = {4.0f, 9.0f, 16.0f, 25.0f}; float32x4_t val; float32x4_t res; val = vld1q_f32 (pool); res = vsqrtq_f32 (val); if (vgetq_lane_f32 (res, 0) != 2.0f) abort (); if (vgetq_lane_f32 (res, 1) != 3.0f) abort (); if (vgetq_lane_f32 (res, 2) != 4.0f) abort (); if (vgetq_lane_f32 (res, 3) != 5.0f) abort (); } void test_square_root_v2df () { const float64_t pool[] = {4.0, 9.0}; float64x2_t val; float64x2_t res; val = vld1q_f64 (pool); res = vsqrtq_f64 (val); if (vgetq_lane_f64 (res, 0) != 2.0) abort (); if (vgetq_lane_f64 (res, 1) != 3.0) abort (); } int main (void) { test_square_root_v2sf (); test_square_root_v4sf (); test_square_root_v2df (); return 0; }