iterators.md (vwcore): Add missing cases for V4HF/V8HF modes.
authorKugan Vivekanandarajah <kuganv@linaro.org>
Tue, 6 Oct 2015 21:08:05 +0000 (21:08 +0000)
committerKugan Vivekanandarajah <kugan@gcc.gnu.org>
Tue, 6 Oct 2015 21:08:05 +0000 (21:08 +0000)
gcc/ChangeLog:

2015-10-07  Kugan Vivekanandarajah  <kuganv@linaro.org>

* config/aarch64/iterators.md (vwcore): Add missing cases for
 V4HF/V8HF modes.

gcc/testsuite/ChangeLog:

2015-10-07  Kugan Vivekanandarajah  <kuganv@linaro.org>

* gcc.target/aarch64/get_lane_f16_1.c: New test.

From-SVN: r228547

gcc/ChangeLog
gcc/config/aarch64/iterators.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/get_lane_f16_1.c [new file with mode: 0644]

index 1b76230e43075695141ff72b92699cfeec735af8..def6e02fbef103d3e053e0a2fc3240f8fc6af188 100644 (file)
@@ -1,3 +1,8 @@
+2015-10-07  Kugan Vivekanandarajah  <kuganv@linaro.org>
+
+       * config/aarch64/iterators.md (vwcore): Add missing cases for
+        V4HF/V8HF modes.
+
 2015-10-06  Aditya Kumar  <aditya.k7@samsung.com>
            Sebastian Pop  <s.pop@samsung.com>
 
index 38c5a2424e4989b962165640bcb7fe122c3648e8..90e8533d4dac31cd81d7f3976e6e6704b473d539 100644 (file)
                           (V4HI "w") (V8HI "w")
                           (V2SI "w") (V4SI "w")
                           (DI   "x") (V2DI "x")
+                          (V4HF "w") (V8HF "w")
                           (V2SF "w") (V4SF "w")
                           (V2DF "x")])
 
index 0991ad0c52a63c62bceea53059666baf774cf6b0..fbae9240173a3f4e38ab7feaa71bc5e2dd29ef82 100644 (file)
@@ -1,3 +1,7 @@
+2015-10-07  Kugan Vivekanandarajah  <kuganv@linaro.org>
+
+       * gcc.target/aarch64/get_lane_f16_1.c: New test.
+
 2015-10-06  Marek Polacek  <polacek@redhat.com>
 
        PR c++/67863
diff --git a/gcc/testsuite/gcc.target/aarch64/get_lane_f16_1.c b/gcc/testsuite/gcc.target/aarch64/get_lane_f16_1.c
new file mode 100644 (file)
index 0000000..77f161e
--- /dev/null
@@ -0,0 +1,25 @@
+
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+
+void fn2 ();
+
+typedef __Float16x4_t float16x4_t;
+__fp16 result_float16x4[1];
+float16x4_t exec_vst1_lane_vector_float16x4, exec_vst1_lane___trans_tmp_1;
+
+void fn1 ()
+{
+  exec_vst1_lane_vector_float16x4 = exec_vst1_lane___trans_tmp_1;
+  __fp16 *__a = result_float16x4;
+  float16x4_t __b = exec_vst1_lane___trans_tmp_1;
+  int __lane = 0;
+  *__a = ({ __b[__lane]; });
+  union {
+      short i;
+      __fp16 f;
+  } tmp_res;
+  tmp_res.f = result_float16x4[0];
+  if (tmp_res.i)
+    fn2();
+}