From 64e9a944fbc4f57fb5be5e57da8ae99bb215fe12 Mon Sep 17 00:00:00 2001 From: Kugan Vivekanandarajah Date: Tue, 6 Oct 2015 21:08:05 +0000 Subject: [PATCH] iterators.md (vwcore): Add missing cases for V4HF/V8HF modes. gcc/ChangeLog: 2015-10-07 Kugan Vivekanandarajah * config/aarch64/iterators.md (vwcore): Add missing cases for V4HF/V8HF modes. gcc/testsuite/ChangeLog: 2015-10-07 Kugan Vivekanandarajah * gcc.target/aarch64/get_lane_f16_1.c: New test. From-SVN: r228547 --- gcc/ChangeLog | 5 ++++ gcc/config/aarch64/iterators.md | 1 + gcc/testsuite/ChangeLog | 4 +++ .../gcc.target/aarch64/get_lane_f16_1.c | 25 +++++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/get_lane_f16_1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1b76230e430..def6e02fbef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-10-07 Kugan Vivekanandarajah + + * config/aarch64/iterators.md (vwcore): Add missing cases for + V4HF/V8HF modes. + 2015-10-06 Aditya Kumar Sebastian Pop diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index 38c5a2424e4..90e8533d4da 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -537,6 +537,7 @@ (V4HI "w") (V8HI "w") (V2SI "w") (V4SI "w") (DI "x") (V2DI "x") + (V4HF "w") (V8HF "w") (V2SF "w") (V4SF "w") (V2DF "x")]) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0991ad0c52a..fbae9240173 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-10-07 Kugan Vivekanandarajah + + * gcc.target/aarch64/get_lane_f16_1.c: New test. + 2015-10-06 Marek Polacek 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 index 00000000000..77f161e9fdb --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/get_lane_f16_1.c @@ -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(); +} -- 2.30.2