On Thu, Jun 15, 2017 at 07:39:39PM -0400, Michael Meissner wrote: > I thought the patch was fine as I posted. I had an optimization I thought > about (optimizing for inserting 0.0f) and I noticed some problems with it. > However, even in backing out the change, there are some problems. So, I will > hopefully reissue the patch tomorrow. Ok, the problem was I need to patch the compiler with a work around to run code on the current alpha hardware, and in backing out the patches of the code I was working on, I backed out the work around as well. This patch replaces the first patch. It adds an optimazation so that if you set a field in a V4SFmode vector to 0.0f, the compiler will know it can just clear the field, and it doesn't have to convert the 0.0 in internal scalar format to vector format witht he XSCVDPSPN instruction. As before, I have bootstrapped this patch on a little endian power8 system, and I had no regressions in the test suite. The new tests pr79799-{1,2,3,5}.c all generate the appropriate code. I have also done a non-bootstrap build and make check on the alpha power9 hardware with --with-cpu=power9, and there are no regressions. The executable test (pr79799-4.c) runs fine. Can I install this change to the trunk? After a week of burn-in, can I install this on the GCC 7.x branch? Note, it will not work on previous branches. [gcc] 2017-06-15 Michael Meissner PR target/79799 * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support for doing vector set of SFmode on ISA 3.0. * config/rs6000/vsx.md (vsx_set_v4sf_p9): Likewise. (vsx_set_v4sf_p9_zero): Special case setting 0.0f to a V4SF element. (vsx_insert_extract_v4sf_p9): Add an optimization for inserting a SFmode value into a V4SF variable that was extracted from another V4SF variable without converting the element to double precision and back to single precision vector format. (vsx_insert_extract_v4sf_p9_2): Likewise. [gcc/testsuite] 2017-06-15 Michael Meissner PR target/79799 * gcc.target/powerpc/pr79799-1.c: New test. * gcc.target/powerpc/pr79799-2.c: Likewise. * gcc.target/powerpc/pr79799-3.c: Likewise. * gcc.target/powerpc/pr79799-4.c: Likewise. * gcc.target/powerpc/pr79799-5.c: Likewise. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797