]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Fix bug with max/min (PR116934)
authorSaurabh Jha <saurabh.jha@arm.com>
Thu, 3 Oct 2024 13:16:31 +0000 (13:16 +0000)
committerSaurabh Jha <saurabh.jha@arm.com>
Fri, 4 Oct 2024 19:04:15 +0000 (19:04 +0000)
commit20ce363c557d6458ec3193ab4e7df760fbe34976
treec27c27116dfc606c54b2732d3a8ab3a4059125b2
parent58b9024c996951f8d768f1c83a74e5f3eef8a1c7
aarch64: Fix bug with max/min (PR116934)

In ac4cdf5cb43c0b09e81760e2a1902ceebcf1a135, I introduced a bug where
I put the new unspecs, UNSPEC_COND_SMAX and UNSPEC_COND_SMIN, into the
wrong iterator.

I should have put new unspecs in SVE_COND_FP_MAXMIN but I put it in
SVE_COND_FP_BINARY_REG instead. That was incorrect because the
SVE_COND_FP_MAXMIN iterator is being used for predicated floating-point
maximum/minimum, not SVE_COND_FP_BINARY_REG.

Also added a testcase to validate the new change.

Regression tested on aarch64-unknown-linux-gnu and found no regressions.
There are some test cases with "libitm" in their directory names which
appear in compare_tests output as changed tests but it looks like they
are in the output just because of changed build directories, like from
build-patched/aarch64-unknown-linux-gnu/./libitm/* to
build-pristine/aarch64-unknown-linux-gnu/./libitm/*. I didn't think it
was a cause of concern and have pushed this for review.

gcc/ChangeLog:

PR target/116934
* config/aarch64/iterators.md: Move UNSPEC_COND_SMAX and
UNSPEC_COND_SMIN to correct iterators.

gcc/testsuite/ChangeLog:

PR target/116934
* gcc.target/aarch64/sve2/pr116934.c: New test.
gcc/config/aarch64/iterators.md
gcc/testsuite/gcc.target/aarch64/sve2/pr116934.c [new file with mode: 0644]