Merge lp:~linaro-toolchain-dev/gcc-linaro/neon-shifts-4.7 into lp:gcc-linaro/4.7
- neon-shifts-4.7
- Merge into 4.7
Status: | Rejected |
---|---|
Rejected by: | Andrew Stubbs |
Proposed branch: | lp:~linaro-toolchain-dev/gcc-linaro/neon-shifts-4.7 |
Merge into: | lp:gcc-linaro/4.7 |
Prerequisite: | lp:~ams-codesourcery/gcc-linaro/arm-64-bit-shifts-4.7 |
To merge this branch: | bzr merge lp:~linaro-toolchain-dev/gcc-linaro/neon-shifts-4.7 |
Related bugs: | |
Related blueprints: |
Better 64 bit shifts in NEON
(Medium)
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Michael Hope | Needs Fixing | ||
Review via email: mp+99530@code.launchpad.net |
This proposal supersedes a proposal from 2012-03-09.
Commit message
Description of the change
Implement DImode shifts in NEON.
Patch posted upstream here:
http://
UPDATE 20120309: Fixed bug with negative shifts. No update upstream yet.
UPDATE 20120327: Fixed Bootstrap failure. No update upstream yet.
Michael Hope (michaelh1) wrote : Posted in a previous version of this proposal | # |
Michael Hope (michaelh1) wrote : Posted in a previous version of this proposal | # |
cbuild had trouble building this on armv7l-
See the *failed.txt logs under the build results at:
http://
The test suite results were not checked.
cbuild-checked: armv7l-
Michael Hope (michaelh1) wrote : Posted in a previous version of this proposal | # |
cbuild successfully built this on x86_64-
The build results are available at:
http://
The testsuite results are the same as the branch point lp:gcc-linaro/4.7+bzr114965
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: x86_64-
Michael Hope (michaelh1) wrote : Posted in a previous version of this proposal | # |
cbuild successfully built this on armv7l-
The build results are available at:
http://
+UNSUPPORTED: gcc.target/
+UNSUPPORTED: gcc.target/
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: armv7l-
Michael Hope (michaelh1) wrote : Posted in a previous version of this proposal | # |
cbuild successfully built this on i686-natty-
The build results are available at:
http://
The testsuite results are the same as the branch point lp:gcc-linaro/4.7+bzr114965
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: i686-natty-
Michael Hope (michaelh1) wrote : Posted in a previous version of this proposal | # |
cbuild has taken a snapshot of this branch at r114970 and queued it for build.
The diff against the ancestor r114965 is available at:
http://
and will be built on the following builders:
a9-builder armv5-builder i686 x86_64
You can track the build queue at:
http://
cbuild-snapshot: gcc-linaro-
cbuild-ancestor: lp:gcc-linaro/4.7+bzr114965
cbuild-state: check
Michael Hope (michaelh1) wrote : Posted in a previous version of this proposal | # |
cbuild successfully built this on i686-natty-
The build results are available at:
http://
The testsuite results are the same as the branch point lp:gcc-linaro/4.7+bzr114965
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: i686-natty-
Michael Hope (michaelh1) wrote : Posted in a previous version of this proposal | # |
cbuild successfully built this on x86_64-
The build results are available at:
http://
The testsuite results are the same as the branch point lp:gcc-linaro/4.7+bzr114965
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: x86_64-
Michael Hope (michaelh1) wrote : Posted in a previous version of this proposal | # |
cbuild had trouble building this on armv7l-
See the *failed.txt logs under the build results at:
http://
The test suite results were not checked.
cbuild-checked: armv7l-
Michael Hope (michaelh1) wrote : Posted in a previous version of this proposal | # |
cbuild successfully built this on armv7l-
The build results are available at:
http://
+UNSUPPORTED: gcc.target/
+UNSUPPORTED: gcc.target/
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: armv7l-
Michael Hope (michaelh1) wrote : | # |
cbuild has taken a snapshot of this branch at r114971 and queued it for build.
The diff against the ancestor r114965 is available at:
http://
and will be built on the following builders:
a9-builder armv5-builder i686 x86_64
You can track the build queue at:
http://
cbuild-snapshot: gcc-linaro-
cbuild-ancestor: lp:gcc-linaro/4.7+bzr114965
cbuild-state: check
Michael Hope (michaelh1) wrote : | # |
cbuild successfully built this on x86_64-
The build results are available at:
http://
The testsuite results are the same as the branch point lp:gcc-linaro/4.7+bzr114965
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: x86_64-
Michael Hope (michaelh1) wrote : | # |
cbuild successfully built this on i686-natty-
The build results are available at:
http://
The testsuite results are the same as the branch point lp:gcc-linaro/4.7+bzr114965
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: i686-natty-
Michael Hope (michaelh1) wrote : | # |
cbuild successfully built this on i686-natty-
The build results are available at:
http://
The testsuite results are the same as the branch point lp:gcc-linaro/4.7+bzr114965
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: i686-natty-
Michael Hope (michaelh1) wrote : | # |
cbuild successfully built this on i686-natty-
The build results are available at:
http://
The testsuite results are the same as the branch point lp:gcc-linaro/4.7+bzr114965
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: i686-natty-
Michael Hope (michaelh1) wrote : | # |
cbuild successfully built this on armv7l-
The build results are available at:
http://
+UNSUPPORTED: gcc.target/
+UNSUPPORTED: gcc.target/
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: armv7l-
Michael Hope (michaelh1) wrote : | # |
cbuild successfully built this on armv7l-
The build results are available at:
http://
-PASS: gcc.dg/
-PASS: gcc.dg/
+FAIL: gcc.dg/
+UNRESOLVED: gcc.dg/
-FAIL: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
+PASS: gcc.target/
The full diff is at:
http://
The full testsuite results are at:
http://
cbuild-checked: armv7l-
Michael Hope (michaelh1) wrote : | # |
The extra failure is:
spawn /scratch/
/tmp/cc0h1XGt.s: Assembler messages:
/tmp/cc0h1XGt.s:37: Error: co-processor offset out of range
/tmp/cc0h1XGt.s:43: Error: co-processor offset out of range
/tmp/cc0h1XGt.s:49: Error: co-processor offset out of range
Andrew Stubbs (ams-codesourcery) wrote : | # |
Hmmm, I've now built this on guinep.
Andrew Stubbs (ams-codesourcery) wrote : | # |
The error is caused by an instruction like this:
fldd d16, .L12 @ int
(where .L12 is out of range for an fldd instruction.)
This is annoying because my patch doesn't meddle with any of the constant pool code: this is a latent bug, I think.
Andrew Stubbs (ams-codesourcery) wrote : | # |
I've examined the broken testcase and the neon-shift patterns within it, but I can't see any fault there.
The testcase is built at -O0 in which only the first alternative is used; this means a straight-forward 4-byte neon shift instruction, so it's hard to see how that could be a problem. Right shifts might be problematic, as they split to 3 instructions, but this testcase doesn't use any.
I've not yet determined where the miscalculation does occur, however, it must be due to a split after the machine reorg pass, so it ought to be easy to find, if tedious.
Andrew Stubbs (ams-codesourcery) wrote : | # |
Ok. I've checked what's going on here. This testcase uses several "atomic_*" insns from sync.md.
The insns typically split into about 7 new insns, AFAICS, and none of the patterns in sync.md have a length attribute, so they'll have been counted as only one machine instruction. This is not a problem, presumably, when optimization is enabled because the constant pools are not laid down until the machine reorg pass, which is quite late, and they're very likely to have already split by that stage. Unfortunately, when optimization is not enabled, as in this testcase, the split does not occur until the very last opportunity, and this is after reorg. Therefore, whether the test passes or not is entirely down to chance, and my patch happened to perturb things sufficiently change the result.
The problem are new and were not present in the sources I used to develop the patch, hence why I had trouble reproducing the problem initially.
cbuild has taken a snapshot of this branch at r114969 and queued it for build.
The diff against the ancestor r114965 is available at: builds. linaro. org/toolchain/ snapshots/ gcc-linaro- 4.7+bzr114969~ ams-codesourcer y~neon- shifts- 4.7.diff
http://
and will be built on the following builders:
a9-builder armv5-builder i686 x86_64
You can track the build queue at: ex.seabright. co.nz/helpers/ scheduler
http://
cbuild-snapshot: gcc-linaro- 4.7+bzr114969~ ams-codesourcer y~neon- shifts- 4.7
cbuild-ancestor: lp:gcc-linaro/4.7+bzr114965
cbuild-state: check