From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24696 invoked by alias); 23 Apr 2015 21:04:25 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 24594 invoked by uid 55); 23 Apr 2015 21:04:19 -0000 From: "wschmidt at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/65456] powerpc64le autovectorized copy loop missed optimization Date: Thu, 23 Apr 2015 21:04:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 5.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: wschmidt at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: wschmidt at gcc dot gnu.org X-Bugzilla-Target-Milestone: 6.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-04/txt/msg02073.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65456 --- Comment #18 from Bill Schmidt --- Author: wschmidt Date: Thu Apr 23 21:03:40 2015 New Revision: 222386 URL: https://gcc.gnu.org/viewcvs?rev=222386&root=gcc&view=rev Log: [gcc] 2015-04-23 Bill Schmidt Backport from mainline r222349 2015-04-22 Bill Schmidt 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-23 Bill Schmidt Backport from mainline r222349 2015-04-22 Bill Schmidt 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 * gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c: Replace vect_no_align with vect_no_align && { ! vect_hw_misalign }. Modified: branches/gcc-5-branch/gcc/ChangeLog branches/gcc-5-branch/gcc/config/rs6000/rs6000.c branches/gcc-5-branch/gcc/config/rs6000/rs6000.h branches/gcc-5-branch/gcc/config/rs6000/rs6000.opt branches/gcc-5-branch/gcc/testsuite/ChangeLog branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/bb-slp-24.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/bb-slp-25.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/bb-slp-29.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/bb-slp-32.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/bb-slp-9.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76b.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6-global.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/pr16105.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/pr20122.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/pr33804.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/pr33953.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/pr56787.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/pr58508.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/slp-25.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-105-big-array.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-105.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-27.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-29.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-33.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-42.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-44.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-48.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-50.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-52.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-56.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-60.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-72.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-75-big-array.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-75.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-77-global.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-78-global.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-93.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-95.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-96.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-cond-1.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-cond-3.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-cond-4.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-1.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-outer-5.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-outer-fir-big-array.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb-big-array.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-outer-fir.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-peel-3.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-peel-4.c branches/gcc-5-branch/gcc/testsuite/gcc.dg/vect/vect-pre-interact.c branches/gcc-5-branch/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c branches/gcc-5-branch/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c branches/gcc-5-branch/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c branches/gcc-5-branch/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c branches/gcc-5-branch/gcc/testsuite/gfortran.dg/vect/vect-2.f90 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/vect/vect-3.f90 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/vect/vect-4.f90 branches/gcc-5-branch/gcc/testsuite/gfortran.dg/vect/vect-5.f90 branches/gcc-5-branch/gcc/testsuite/lib/target-supports.exp