diff options
author | Alan Modra <amodra@gmail.com> | 2016-07-14 13:56:36 +0930 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2016-07-14 13:56:36 +0930 |
commit | b799a4819ae2c4002ca86c339ac6a2a1fb840bdf (patch) | |
tree | 5c44e46fad4af99b65e3e5ff19692a6f488f7312 | |
parent | f63ba78ce6d50bf627dd18018179eb03bf89716f (diff) | |
download | gcc-b799a4819ae2c4002ca86c339ac6a2a1fb840bdf.zip gcc-b799a4819ae2c4002ca86c339ac6a2a1fb840bdf.tar.gz gcc-b799a4819ae2c4002ca86c339ac6a2a1fb840bdf.tar.bz2 |
[RS6000] -mno-vsx should force -mno-power9-dform
PR target/71733
gcc/
* config/rs6000/rs6000.c (rs6000_option_override_internal): Deal
with p9_vector override before power9-dform override.
gcc/testsuite/
* gcc.target/powerpc/p9-novsx.c: New.
From-SVN: r238326
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 16 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/p9-novsx.c | 21 |
4 files changed, 40 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 134db04..a1cf742 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-07-14 Alan Modra <amodra@gmail.com> + + PR target/71733 + * config/rs6000/rs6000.c (rs6000_option_override_internal): Deal + with p9_vector override before power9-dform override. + 2016-07-13 Andi Kleen <ak@linux.intel.com> * value-prof.c (gimple_value_profile_transformations): Don't run diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 99a2e36..63655b1 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -4256,6 +4256,14 @@ rs6000_option_override_internal (bool global_init_p) && !(rs6000_isa_flags_explicit & OPTION_MASK_TOC_FUSION)) rs6000_isa_flags |= OPTION_MASK_TOC_FUSION; + /* ISA 3.0 vector instructions include ISA 2.07. */ + if (TARGET_P9_VECTOR && !TARGET_P8_VECTOR) + { + if (rs6000_isa_flags_explicit & OPTION_MASK_P8_VECTOR) + error ("-mpower9-vector requires -mpower8-vector"); + rs6000_isa_flags &= ~OPTION_MASK_P9_VECTOR; + } + /* -mpower9-dform turns on both -mpower9-dform-scalar and -mpower9-dform-vector. */ if (TARGET_P9_DFORM_BOTH > 0) @@ -4298,14 +4306,6 @@ rs6000_option_override_internal (bool global_init_p) rs6000_isa_flags &= ~OPTION_MASK_P9_DFORM_SCALAR; } - /* ISA 3.0 vector instructions include ISA 2.07. */ - if (TARGET_P9_VECTOR && !TARGET_P8_VECTOR) - { - if (rs6000_isa_flags_explicit & OPTION_MASK_P8_VECTOR) - error ("-mpower9-vector requires -mpower8-vector"); - rs6000_isa_flags &= ~OPTION_MASK_P9_VECTOR; - } - /* There have been bugs with -mvsx-timode that don't show up with -mlra, but do show up with -mno-lra. Given -mlra will become the default once PR 69847 is fixed, turn off the options with problems by default if diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6119421..4591803 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-07-14 Alan Modra <amodra@gmail.com> + + PR target/71733 + * gcc.target/powerpc/p9-novsx.c: New. + 2016-07-13 Andi Kleen <ak@linux.intel.com> * g++.dg/tree-prof/indir-call-prof.C: Basic fixes for autofdo. diff --git a/gcc/testsuite/gcc.target/powerpc/p9-novsx.c b/gcc/testsuite/gcc.target/powerpc/p9-novsx.c new file mode 100644 index 0000000..7e41030 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/p9-novsx.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ +/* { dg-options "-mcpu=power9 -mno-vsx -O1" } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-final { scan-assembler-times "lvx %?v?2,%?r?3" 1 } } */ +/* { dg-final { scan-assembler-times "stvx %?v?2,%?r?3" 1 } } */ + +/* PR target/71733. */ +typedef __attribute__ ((altivec(vector__), aligned(16))) unsigned char vec_t; + +vec_t +f1 (vec_t *dst) +{ + return dst[1]; +} + +void +f2 (vec_t *dst, vec_t src) +{ + dst[1] = src; +} |