[AArch64] Use __aarch64_vget_lane* macros for getting the lane in some lane multiply...
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Wed, 24 Sep 2014 12:47:59 +0000 (12:47 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Wed, 24 Sep 2014 12:47:59 +0000 (12:47 +0000)
* config/aarch64/arm_neon.h (vmuld_lane_f64): Use macro for getting
the lane.
(vmuld_laneq_f64): Likewise.
(vmuls_lane_f32): Likewise.
(vmuls_laneq_f32): Likewise.

* gcc.target/aarch64/simd/vmul_lane_const_lane_1.c: New test.

From-SVN: r215553

gcc/ChangeLog
gcc/config/aarch64/arm_neon.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/simd/vmul_lane_const_lane_1.c [new file with mode: 0644]

index a14d4f2..f87abcb 100644 (file)
@@ -1,3 +1,11 @@
+2014-09-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * config/aarch64/arm_neon.h (vmuld_lane_f64): Use macro for getting
+       the lane.
+       (vmuld_laneq_f64): Likewise.
+       (vmuls_lane_f32): Likewise.
+       (vmuls_laneq_f32): Likewise.
+
 2014-09-24  Kirill Yukhin  <kirill.yukhin@intel.com>
 
        PR bootstrap/63235
index e62c783..feca00e 100644 (file)
@@ -18611,13 +18611,13 @@ vmul_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __lane)
 __extension__ static __inline float64_t __attribute__ ((__always_inline__))
 vmuld_lane_f64 (float64_t __a, float64x1_t __b, const int __lane)
 {
-  return __a * vget_lane_f64 (__b, __lane);
+  return __a * __aarch64_vget_lane_f64 (__b, __lane);
 }
 
 __extension__ static __inline float64_t __attribute__ ((__always_inline__))
 vmuld_laneq_f64 (float64_t __a, float64x2_t __b, const int __lane)
 {
-  return __a * vgetq_lane_f64 (__b, __lane);
+  return __a * __aarch64_vgetq_lane_f64 (__b, __lane);
 }
 
 /* vmuls_lane  */
@@ -18625,13 +18625,13 @@ vmuld_laneq_f64 (float64_t __a, float64x2_t __b, const int __lane)
 __extension__ static __inline float32_t __attribute__ ((__always_inline__))
 vmuls_lane_f32 (float32_t __a, float32x2_t __b, const int __lane)
 {
-  return __a * vget_lane_f32 (__b, __lane);
+  return __a * __aarch64_vget_lane_f32 (__b, __lane);
 }
 
 __extension__ static __inline float32_t __attribute__ ((__always_inline__))
 vmuls_laneq_f32 (float32_t __a, float32x4_t __b, const int __lane)
 {
-  return __a * vgetq_lane_f32 (__b, __lane);
+  return __a * __aarch64_vgetq_lane_f32 (__b, __lane);
 }
 
 /* vmul_laneq  */
index 357b049..a9e2849 100644 (file)
@@ -1,3 +1,7 @@
+2014-09-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * gcc.target/aarch64/simd/vmul_lane_const_lane_1.c: New test.
+
 2014-09-24  Jakub Jelinek  <jakub@redhat.com>
 
        PR sanitizer/63316
diff --git a/gcc/testsuite/gcc.target/aarch64/simd/vmul_lane_const_lane_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vmul_lane_const_lane_1.c
new file mode 100644 (file)
index 0000000..2455181
--- /dev/null
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+#include "arm_neon.h"
+
+float64_t
+wrap_vmuld_lane_f64 (float64_t a, float64x1_t b)
+{
+  return vmuld_lane_f64 (a, b, 0);
+}
+
+float64_t
+wrap_vmuld_laneq_f64 (float64_t a, float64x2_t b)
+{
+  return vmuld_laneq_f64 (a, b, 0);
+}
+
+float32_t
+wrap_vmuls_lane_f32 (float32_t a, float32x2_t b)
+{
+  return vmuls_lane_f32 (a, b, 0);
+}
+
+float32_t
+wrap_vmuls_laneq_f32 (float32_t a, float32x4_t b)
+{
+  return vmuls_laneq_f32 (a, b, 0);
+}