diff options
author | Michael Meissner <meissner@linux.vnet.ibm.com> | 2013-05-04 05:38:47 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 2013-05-04 05:38:47 +0000 |
commit | 5ec6aff2dd65faa0176b9cb4a32e2ebf707aa4da (patch) | |
tree | 33ebf64e84aca3b4d16f51cc4c5b88e76ed4106f /gcc/testsuite | |
parent | 2cefad900d3f9b8d4434fb4253e16f72836c2e4a (diff) | |
download | gcc-5ec6aff2dd65faa0176b9cb4a32e2ebf707aa4da.zip gcc-5ec6aff2dd65faa0176b9cb4a32e2ebf707aa4da.tar.gz gcc-5ec6aff2dd65faa0176b9cb4a32e2ebf707aa4da.tar.bz2 |
re PR target/57150 (GCC when targeting power7 spills long double using VSX instructions.)
[gcc]
2013-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/57150
* config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Use DFmode
to save TFmode registers and DImode to save TImode registers for
caller save operations.
(HARD_REGNO_CALL_PART_CLOBBERED): TFmode and TDmode do not need to
mark being partially clobbered since they only use the first
double word.
* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): TFmode
and TDmode only use the upper 64-bits of each VSX register.
[gcc/testsuite]
2013-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/57150
* gcc.target/powerpc/pr57150.c: New file.
From-SVN: r198593
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/pr57150.c | 23 |
2 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bd5b01f..731ccd0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-05-03 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/57150 + * gcc.target/powerpc/pr57150.c: New file. + 2013-05-03 Bill Schmidt <wschmidt@linux.vnet.ibm.com> * gcc.dg/tree-ssa/slsr-32.c: Skip test for now. diff --git a/gcc/testsuite/gcc.target/powerpc/pr57150.c b/gcc/testsuite/gcc.target/powerpc/pr57150.c new file mode 100644 index 0000000..119bc4c --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr57150.c @@ -0,0 +1,23 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O3 -mcpu=power7 -fcaller-saves" } */ +/* { dg-final { scan-assembler-not "lxvd2x" } } */ +/* { dg-final { scan-assembler-not "lxvw4x" } } */ +/* { dg-final { scan-assembler-not "lvx" } } */ +/* { dg-final { scan-assembler-not "stxvd2x" } } */ +/* { dg-final { scan-assembler-not "stxvw4x" } } */ +/* { dg-final { scan-assembler-not "stvx" } } */ + +/* Insure caller save on long double does not use VSX instructions. */ + +extern long double modify (long double); + +void +sum (long double *ptr, long double value, unsigned long n) +{ + unsigned long i; + + for (i = 0; i < n; i++) + ptr[i] += modify (value); +} |