+2013-01-08 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * config/aarch64/aarch64-builtins.c
+ (aarch64_builtin_vectorized_function): Handle sqrt, sqrtf.
+
2013-01-08 Martin Jambor <mjambor@suse.cz>
PR debug/55579
case BUILT_IN_NEARBYINT:
case BUILT_IN_NEARBYINTF:
return AARCH64_FIND_FRINT_VARIANT (frinti);
+ case BUILT_IN_SQRT:
+ case BUILT_IN_SQRTF:
+ return AARCH64_FIND_FRINT_VARIANT (sqrt);
#undef AARCH64_CHECK_BUILTIN_MODE
#define AARCH64_CHECK_BUILTIN_MODE(C, N) \
(out_mode == N##Imode && out_n == C \
+2013-01-08 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * gcc.target/aarch64/vsqrt.c (test_square_root_v2sf): Use
+ endian-safe float pool loading.
+ (test_square_root_v4sf): Likewise.
+ (test_square_root_v2df): Likewise.
+ * lib/target-supports.exp
+ (check_effective_target_vect_call_sqrtf): Add AArch64.
+
2013-01-08 Martin Jambor <mjambor@suse.cz>
PR debug/55579
void
test_square_root_v2sf ()
{
- float32x2_t val = {4.0f, 9.0f};
+ 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)
void
test_square_root_v4sf ()
{
- float32x4_t val = {4.0f, 9.0f, 16.0f, 25.0f};
+ 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)
void
test_square_root_v2df ()
{
- float64x2_t val = {4.0, 9.0};
+ 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)
verbose "check_effective_target_vect_call_sqrtf: using cached result" 2
} else {
set et_vect_call_sqrtf_saved 0
- if { [istarget i?86-*-*]
+ if { [istarget aarch64*-*-*]
+ || [istarget i?86-*-*]
|| [istarget x86_64-*-*]
|| ([istarget powerpc*-*-*] && [check_vsx_hw_available]) } {
set et_vect_call_sqrtf_saved 1