aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
diff options
context:
space:
mode:
authorMichael Meissner <meissner@linux.vnet.ibm.com>2015-08-12 21:54:23 +0000
committerMichael Meissner <meissner@gcc.gnu.org>2015-08-12 21:54:23 +0000
commit683be46fa65feb540990b6cfea729f4234d71298 (patch)
treee042ba5e831a20c5580d65644efdfb4ad9e683ad /gcc/go
parent17795822b27b7b5381525b1d7c98ca181be9bc80 (diff)
downloadgcc-683be46fa65feb540990b6cfea729f4234d71298.zip
gcc-683be46fa65feb540990b6cfea729f4234d71298.tar.gz
gcc-683be46fa65feb540990b6cfea729f4234d71298.tar.bz2
re PR target/67071 (GCC misses an optimization to load vector constants)
[gcc] 2015-08-12 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/67071 * config/rs6000/predicates.md (easy_vector_constant_vsldoi): New predicate to allow construction of vector constants using the VSLDOI vector shift instruction. * config/rs6000/rs6000-protos.h (vspltis_shifted): Add declaration. * config/rs6000/rs6000.c (vspltis_shifted): New function to return the number of bytes to be shifted left and filled in with either all zero or all one bits. (gen_easy_altivec_constant): Call vsplitis_shifted if no other methods exist. (output_vec_const_move): On power8, generate XXLORC to generate a vector constant with all 1's. Do a split if we need to use a VSLDOI instruction. * config/rs6000/rs6000.h (EASY_VECTOR_MSB): Use mode mask to properly test for the MSB. * config/rs6000/altivec.md (VSLDOI splitter): Add splitter for vector constants that can be created with VSLDOI. [gcc/testsuite] 2015-08-12 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/67071 * gcc.target/powerpc/pr67071-1.c: New file to test PR 67071 new vector constants. * gcc.target/powerpc/pr67071-2.c: Likewise. * gcc.target/powerpc/pr67071-3.c: Likewise. From-SVN: r226836
Diffstat (limited to 'gcc/go')
0 files changed, 0 insertions, 0 deletions