Merge lp:~michaelh1/gcc-linaro/dont-peel-neon into lp:gcc-linaro/4.6

Proposed by Michael Hope
Status: Rejected
Rejected by: Loïc Minier
Proposed branch: lp:~michaelh1/gcc-linaro/dont-peel-neon
Merge into: lp:gcc-linaro/4.6
Diff against target: 61 lines (+26/-5)
3 files modified
ChangeLog.linaro (+17/-0)
gcc/config/arm/arm.c (+6/-3)
gcc/testsuite/lib/target-supports.exp (+3/-2)
To merge this branch: bzr merge lp:~michaelh1/gcc-linaro/dont-peel-neon
Reviewer Review Type Date Requested Status
Michael Hope Disapprove
Review via email: mp+67491@code.launchpad.net

Description of the change

Disable peeling for NEON as NEON can do unaligned loads and the setup cost is too high for small loops.

This request is for testing and benchmarking. If the benchmarks are good then it can be merged.

To post a comment you must log in.
Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild has taken a snapshot of this branch at r106769 and queued it for build.

The snapshot is available at:
 http://ex.seabright.co.nz/snapshots/gcc-linaro-4.6+bzr106769~michaelh1~dont-peel-neon.tar.xdelta3.xz

and will be built on the following builders:
 a9-builder armv5-builder i686 x86_64

You can track the build queue at:
 http://ex.seabright.co.nz/helpers/scheduler

cbuild-snapshot: gcc-linaro-4.6+bzr106769~michaelh1~dont-peel-neon
cbuild-ancestor: lp:gcc-linaro/4.6+bzr106768
cbuild-state: check

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild successfully built this on x86_64-natty-cbuild152-oort3-x86_64r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106769~michaelh1~dont-peel-neon/logs/x86_64-natty-cbuild152-oort3-x86_64r1

The test suite results were unchanged compared to the branch point lp:gcc-linaro/4.6+bzr106768.

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106769~michaelh1~dont-peel-neon/logs/x86_64-natty-cbuild152-oort3-x86_64r1/gcc-testsuite.txt

cbuild-checked: x86_64-natty-cbuild152-oort3-x86_64r1

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :
Download full text (4.6 KiB)

cbuild successfully built this on armv7l-natty-cbuild152-ursa4-cortexa9r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106769~michaelh1~dont-peel-neon/logs/armv7l-natty-cbuild152-ursa4-cortexa9r1

The test suite results changed compared to the branch point lp:gcc-linaro/4.6+bzr106768:
 -PASS: gcc.dg/vect/no-section-anchors-vect-69.c scan-tree-dump-times vect "Alignment of access forced using peeling" 2
 +PASS: gcc.dg/vect/no-section-anchors-vect-69.c scan-tree-dump-times vect "Alignment of access forced using peeling" 1
 +XFAIL: gcc.dg/vect/no-section-anchors-vect-69.c scan-tree-dump-times vect "Alignment of access forced using peeling" 2
 +FAIL: gcc.dg/vect/no-section-anchors-vect-69.c scan-tree-dump-times vect "Alignment of access forced using versioning" 1
 -PASS: gcc.dg/vect/no-section-anchors-vect-69.c scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 +FAIL: gcc.dg/vect/no-section-anchors-vect-69.c scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 -PASS: gcc.dg/vect/section-anchors-vect-69.c scan-tree-dump-times vect "Alignment of access forced using peeling" 4
 +FAIL: gcc.dg/vect/section-anchors-vect-69.c scan-tree-dump-times vect "Alignment of access forced using versioning" 4
 -PASS: gcc.dg/vect/section-anchors-vect-69.c scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 +FAIL: gcc.dg/vect/section-anchors-vect-69.c scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 -PASS: gcc.dg/vect/vect-28.c -flto scan-tree-dump-times vect "Alignment of access forced using peeling" 1
 +FAIL: gcc.dg/vect/vect-28.c -flto scan-tree-dump-times vect "Alignment of access forced using versioning" 1
 -PASS: gcc.dg/vect/vect-28.c -flto scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 +FAIL: gcc.dg/vect/vect-28.c -flto scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 -PASS: gcc.dg/vect/vect-28.c scan-tree-dump-times vect "Alignment of access forced using peeling" 1
 +FAIL: gcc.dg/vect/vect-28.c scan-tree-dump-times vect "Alignment of access forced using versioning" 1
 -PASS: gcc.dg/vect/vect-28.c scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 +FAIL: gcc.dg/vect/vect-28.c scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 -PASS: gcc.dg/vect/vect-33.c -flto scan-tree-dump-times vect "Alignment of access forced using peeling" 1
 +FAIL: gcc.dg/vect/vect-33.c -flto scan-tree-dump-times vect "Alignment of access forced using versioning" 1
 -PASS: gcc.dg/vect/vect-33.c -flto scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 +FAIL: gcc.dg/vect/vect-33.c -flto scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 -PASS: gcc.dg/vect/vect-33.c scan-tree-dump-times vect "Alignment of access forced using peeling" 1
 +FAIL: gcc.dg/vect/vect-33.c scan-tree-dump-times vect "Alignment of access forced using versioning" 1
 -PASS: gcc.dg/vect/vect-33.c scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 +FAIL: gcc.dg/vect/vect-33.c scan-tree-dump-times vect "Vectorizing an unaligned access" 0
 -PASS: gcc.dg/vect/vect-44.c -flto scan-tree-dump-times vect "Alignment of access forced using peeling" 1...

Read more...

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild successfully built this on i686-natty-cbuild152-oort4-i686r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106769~michaelh1~dont-peel-neon/logs/i686-natty-cbuild152-oort4-i686r1

The test suite results were unchanged compared to the branch point lp:gcc-linaro/4.6+bzr106768.

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106769~michaelh1~dont-peel-neon/logs/i686-natty-cbuild152-oort4-i686r1/gcc-testsuite.txt

cbuild-checked: i686-natty-cbuild152-oort4-i686r1

Revision history for this message
Michael Hope (michaelh1) wrote :

Self-rejecting. I have a build that we can benchmark with now.

review: Disapprove
Revision history for this message
Michael Hope (michaelh1) wrote :

cbuild successfully built this on i686-natty-cbuild152-oort4-i686r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106769~michaelh1~dont-peel-neon/logs/i686-natty-cbuild152-oort4-i686r1

The testsuite results are the same as the branch point lp:gcc-linaro/4.6+bzr106768

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106769~michaelh1~dont-peel-neon/logs/i686-natty-cbuild152-oort4-i686r1/gcc-testsuite.txt

Revision history for this message
Loïc Minier (lool) wrote :

Rejecting per your earlier self-reject

Unmerged revisions

106769. By Michael Hope

Disable peeling for NEON as NEON can do unaligned loads and the
setup cost is too high for small loops.

This request is for testing and benchmarking. If the benchmarks are
good then it can be merged.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog.linaro'
2--- ChangeLog.linaro 2011-07-07 13:15:23 +0000
3+++ ChangeLog.linaro 2011-07-11 05:35:32 +0000
4@@ -1,3 +1,20 @@
5+2011-07-11 Michael Hope <michael.hope@linaro.org>
6+
7+ Merge from Sourcery G++ 4.5:
8+
9+ 2011-04-01 Julian Brown <julian@codesourcery.com>
10+
11+ Issue #6223
12+
13+ gcc/
14+ * config/arm/arm.c (arm_vector_alignment_reachable): Don't use
15+ peeling for alignment for NEON.
16+
17+ gcc/testsuite/
18+ * lib/target-supports.exp
19+ (check_effective_target_vector_alignment_reachable): Not true for
20+ ARM NEON.
21+
22 2011-07-07 Richard Sandiford <richard.sandiford@linaro.org>
23
24 gcc/
25
26=== modified file 'gcc/config/arm/arm.c'
27--- gcc/config/arm/arm.c 2011-06-29 09:13:17 +0000
28+++ gcc/config/arm/arm.c 2011-07-11 05:35:32 +0000
29@@ -23874,10 +23874,13 @@
30 static bool
31 arm_vector_alignment_reachable (const_tree type, bool is_packed)
32 {
33- /* Vectors which aren't in packed structures will not be less aligned than
34- the natural alignment of their element type, so this is safe. */
35+ /* NOTE: returning true here will unconditionally peel loop iterations so
36+ that aligned accesses can be used. This is undesirable when misaligned
37+ accesses are available, particularly for small loop iteration counts,
38+ since the overhead for dispatching to multiple versions of the loop is
39+ quite high. */
40 if (TARGET_NEON && !BYTES_BIG_ENDIAN)
41- return !is_packed;
42+ return false;
43
44 return default_builtin_vector_alignment_reachable (type, is_packed);
45 }
46
47=== modified file 'gcc/testsuite/lib/target-supports.exp'
48--- gcc/testsuite/lib/target-supports.exp 2011-07-04 11:13:51 +0000
49+++ gcc/testsuite/lib/target-supports.exp 2011-07-11 05:35:32 +0000
50@@ -3027,8 +3027,9 @@
51 if [info exists et_vector_alignment_reachable_saved] {
52 verbose "check_effective_target_vector_alignment_reachable: using cached result" 2
53 } else {
54- if { [check_effective_target_vect_aligned_arrays]
55- || [check_effective_target_natural_alignment_32] } {
56+ if { ([check_effective_target_vect_aligned_arrays]
57+ || [check_effective_target_natural_alignment_32])
58+ && !([istarget arm*-*-*] && [check_effective_target_arm_neon]) } {
59 set et_vector_alignment_reachable_saved 1
60 } else {
61 set et_vector_alignment_reachable_saved 0

Subscribers

People subscribed via source and target branches