diff options
author | Tamar Christina <tamar.christina@arm.com> | 2023-10-02 11:51:10 +0100 |
---|---|---|
committer | Tamar Christina <tamar.christina@arm.com> | 2023-10-02 11:51:10 +0100 |
commit | f2b23a59cbe46a7839811cbeb962c2081b329b73 (patch) | |
tree | 29b7f71d0b461f6c22a0012f6ca69c4b20543998 /gcc/ada/gcc-interface/misc.cc | |
parent | a35ab1c1a3d04c28519a062fedfebda818b927a4 (diff) | |
download | gcc-f2b23a59cbe46a7839811cbeb962c2081b329b73.zip gcc-f2b23a59cbe46a7839811cbeb962c2081b329b73.tar.gz gcc-f2b23a59cbe46a7839811cbeb962c2081b329b73.tar.bz2 |
AArch64: Fix scalar xorsign lowering
In GCC-9 our scalar xorsign pattern broke and we didn't notice it because the
testcase was not strong enough. With this commit
8d2d39587d941a40f25ea0144cceb677df115040 is the first bad commit
commit 8d2d39587d941a40f25ea0144cceb677df115040
Author: Segher Boessenkool <segher@kernel.crashing.org>
Date: Mon Oct 22 22:23:39 2018 +0200
combine: Do not combine moves from hard registers
combine started introducing useless moves on hard registers, when one of the
arguments to our scalar xorsign is a hardreg we get an additional move inserted.
This leads to combine forming an AND with the immediate inside and using the
superflous move to do the r->w move, instead of what we wanted before which was
for the `and` to be a vector and and have reload pick the right alternative.
To fix this the patch just forces the use of the vector version directly and
so combine has no chance to mess it up.
gcc/ChangeLog:
* config/aarch64/aarch64-simd.md (xorsign<mode>3): Renamed to..
(@xorsign<mode>3): ...This.
* config/aarch64/aarch64.md (xorsign<mode>3): Renamed to...
(@xorsign<mode>3): ..This and emit vectors directly
* config/aarch64/iterators.md (VCONQ): Add SF and DF.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/xorsign.c:
Diffstat (limited to 'gcc/ada/gcc-interface/misc.cc')
0 files changed, 0 insertions, 0 deletions