This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/65456] powerpc64le autovectorized copy loop missed optimization
- From: "wschmidt at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 24 Apr 2015 13:45:40 +0000
- Subject: [Bug target/65456] powerpc64le autovectorized copy loop missed optimization
- Auto-submitted: auto-generated
- References: <bug-65456-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65456
--- Comment #19 from Bill Schmidt <wschmidt at gcc dot gnu.org> ---
Author: wschmidt
Date: Fri Apr 24 13:45:08 2015
New Revision: 222412
URL: https://gcc.gnu.org/viewcvs?rev=222412&root=gcc&view=rev
Log:
[gcc]
2015-04-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline r222349
2015-04-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/65456
* config/rs6000/rs6000.c (rs6000_option_override_internal): For
VSX + POWER8, enable TARGET_ALLOW_MOVMISALIGN and
TARGET_EFFICIENT_UNALIGNED_VSX if not selected by command line
option.
(rs6000_builtin_mask_for_load): Return 0 for targets with
efficient unaligned VSX accesses so that the vectorizer will use
direct unaligned loads.
(rs6000_builtin_support_vector_misalignment): Always return true
for targets with efficient unaligned VSX accesses.
(rs6000_builtin_vectorization_cost): Cost of unaligned loads and
stores on targets with efficient unaligned VSX accesses is almost
always the same as the cost of an aligned load or store, so model
it that way.
* config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Return 0 for
unaligned vectors if we have efficient unaligned VSX accesses.
* config/rs6000/rs6000.opt (mefficient-unaligned-vector): New
undocumented option.
[gcc/testsuite]
2015-04-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline r222349
2015-04-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/65456
* gcc.dg/vect/bb-slp-24.c: Exclude test for POWER8.
* gcc.dg/vect/bb-slp-25.c: Likewise.
* gcc.dg/vect/bb-slp-29.c: Likewise.
* gcc.dg/vect/bb-slp-32.c: Replace vect_no_align with
vect_no_align && { ! vect_hw_misalign }.
* gcc.dg/vect/bb-slp-9.c: Likewise.
* gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c: Exclude test for
vect_hw_misalign.
* gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c: Likewise.
* gcc.dg/vect/costmodel/ppc/costmodel-vect-76b.c: Adjust tests to
account for POWER8, where peeling for alignment is not needed.
* gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c: Replace
vect_no_align with vect_no_align && { ! vect_hw_misalign }.
* gcc.dg.vect.if-cvt-stores-vect-ifcvt-18.c: Likewise.
* gcc.dg/vect/no-scevccp-outer-6-global.c: Likewise.
* gcc.dg/vect/no-scevccp-outer-6.c: Likewise.
* gcc.dg/vect/no-vfa-vect-43.c: Likewise.
* gcc.dg/vect/no-vfa-vect-57.c: Likewise.
* gcc.dg/vect/no-vfa-vect-61.c: Likewise.
* gcc.dg/vect/no-vfa-vect-depend-1.c: Likewise.
* gcc.dg/vect/no-vfa-vect-depend-2.c: Likewise.
* gcc.dg/vect/no-vfa-vect-depend-3.c: Likewise.
* gcc.dg/vect/pr16105.c: Likewise.
* gcc.dg/vect/pr20122.c: Likewise.
* gcc.dg/vect/pr33804.c: Likewise.
* gcc.dg/vect/pr33953.c: Likewise.
* gcc.dg/vect/pr56787.c: Likewise.
* gcc.dg/vect/pr58508.c: Likewise.
* gcc.dg/vect/slp-25.c: Likewise.
* gcc.dg/vect/vect-105-bit-array.c: Likewise.
* gcc.dg/vect/vect-105.c: Likewise.
* gcc.dg/vect/vect-27.c: Likewise.
* gcc.dg/vect/vect-29.c: Likewise.
* gcc.dg/vect/vect-33.c: Exclude unaligned access test for
POWER8.
* gcc.dg/vect/vect-42.c: Replace vect_no_align with vect_no_align
&& { ! vect_hw_misalign }.
* gcc.dg/vect/vect-44.c: Likewise.
* gcc.dg/vect/vect-48.c: Likewise.
* gcc.dg/vect/vect-50.c: Likewise.
* gcc.dg/vect/vect-52.c: Likewise.
* gcc.dg/vect/vect-56.c: Likewise.
* gcc.dg/vect/vect-60.c: Likewise.
* gcc.dg/vect/vect-72.c: Likewise.
* gcc.dg/vect/vect-75-big-array.c: Likewise.
* gcc.dg/vect/vect-75.c: Likewise.
* gcc.dg/vect/vect-77-alignchecks.c: Likewise.
* gcc.dg/vect/vect-77-global.c: Likewise.
* gcc.dg/vect/vect-78-alignchecks.c: Likewise.
* gcc.dg/vect/vect-78-global.c: Likewise.
* gcc.dg/vect/vect-93.c: Likewise.
* gcc.dg/vect/vect-95.c: Likewise.
* gcc.dg/vect/vect-96.c: Likewise.
* gcc.dg/vect/vect-cond-1.c: Likewise.
* gcc.dg/vect/vect-cond-3.c: Likewise.
* gcc.dg/vect/vect-cond-4.c: Likewise.
* gcc.dg/vect/vect-cselim-1.c: Likewise.
* gcc.dg/vect/vect-multitypes-1.c: Likewise.
* gcc.dg/vect/vect-multitypes-3.c: Likewise.
* gcc.dg/vect/vect-multitypes-4.c: Likewise.
* gcc.dg/vect/vect-multitypes-6.c: Likewise.
* gcc.dg/vect/vect-nest-cycle-1.c: Likewise.
* gcc.dg/vect/vect-nest-cycle-2.c: Likewise.
* gcc.dg/vect/vect-outer-3a-big-array.c: Likewise.
* gcc.dg/vect/vect-outer-3a.c: Likewise.
* gcc.dg/vect/vect-outer-5.c: Likewise.
* gcc.dg/vect/vect-outer-fir-big-array.c: Likewise.
* gcc.dg/vect/vect-outer-fir-lb-big-array.c: Likewise.
* gcc.dg/vect/vect-outer-fir-lb.c: Likewise.
* gcc.dg/vect/vect-outer-fir.c: Likewise.
* gcc.dg/vect/vect-peel-3.c: Likewise.
* gcc.dg/vect/vect-peel-4.c: Likewise.
* gcc.dg/vect/vect-pre-interact.c: Likewise.
* gcc.target/powerpc/pr65456.c: New test.
* gcc.target/powerpc/vsx-vectorize-2.c: Exclude test for POWER8.
* gcc.target/powerpc/vsx-vectorize-4.c: Likewise.
* gcc.target/powerpc/vsx-vectorize-6.c: Likewise.
* gcc.target/powerpc/vsx-vectorize-7.c: Likewise.
* gfortran.dg/vect/vect-2.f90: Replace vect_no_align with
vect_no_align && { ! vect_hw_misalign }.
* gfortran.dg/vect/vect-3.f90: Likewise.
* gfortran.dg/vect/vect-4.f90: Likewise.
* gfortran.dg/vect/vect-5.f90: Likewise.
* lib/target-supports.exp (check_effective_target_vect_no_align):
Return 1 for POWER8.
(check_effective_target_vect_hw_misalign): Return 1 for POWER8.
Backport from mainline r222372
2015-04-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c: Replace
vect_no_align with vect_no_align && { ! vect_hw_misalign }.
Added:
branches/gcc-4_9-branch/gcc/testsuite/gcc.target/powerpc/pr65456.c
Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/config/rs6000/rs6000.c
branches/gcc-4_9-branch/gcc/config/rs6000/rs6000.h
branches/gcc-4_9-branch/gcc/config/rs6000/rs6000.opt
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/bb-slp-24.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/bb-slp-25.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/bb-slp-29.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/bb-slp-32.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/bb-slp-9.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76b.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6-global.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr16105.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr20122.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr33804.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr33953.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr56787.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr58508.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/slp-25.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-105.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-27.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-29.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-33.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-42.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-44.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-48.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-50.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-52.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-56.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-60.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-72.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-75-big-array.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-75.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-77-global.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-78-global.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-93.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-95.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-96.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-cond-1.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-cond-3.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-cond-4.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-1.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-outer-fir-big-array.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb-big-array.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-outer-fir.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-peel-3.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-peel-4.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
branches/gcc-4_9-branch/gcc/testsuite/gfortran.dg/vect/vect-2.f90
branches/gcc-4_9-branch/gcc/testsuite/gfortran.dg/vect/vect-3.f90
branches/gcc-4_9-branch/gcc/testsuite/gfortran.dg/vect/vect-4.f90
branches/gcc-4_9-branch/gcc/testsuite/gfortran.dg/vect/vect-5.f90
branches/gcc-4_9-branch/gcc/testsuite/lib/target-supports.exp