Alex Coplan <alex.cop...@arm.com> writes:
> Hello,
>
> This patch adds a missing not to the SVE2 BCAX (Bitwise clear and
> exclusive or) pattern,

Oops.  Even worse is that I'd made the test match the bug in the code. :-(

> fixing the PR. Since SVE doesn't have an unpredicated not instruction,
> we need to use a (vacuously) predicated not here.
>
> To ensure that the predicate is instantiated correctly (to all 1s) for
> the intrinsics, we pull out a separate expander from the define_insn.
>
> From the ISA reference [1]:
>> Bitwise AND elements of the second source vector with the
>> corresponding inverted elements of the third source vector, then
>> exclusive OR the results with corresponding elements of the first
>> source vector.
>
> Testing:
>  * Regression tested an aarch64-linux-gnu cross configured with
>    --with-arch=armv8.2-a+sve2, no new failures.
>  * Bootstrap and regression test on aarch64-linux-gnu in progress.
>
> The following execution tests went from FAIL to PASS on the SVE2
> regression run as a result of this change:
>
> FAIL->PASS: gcc.c-torture/execute/pr37573.c   -O3 -fomit-frame-pointer 
> -funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
> FAIL->PASS: gcc.c-torture/execute/pr37573.c   -O3 -g  execution test
> FAIL->PASS: gcc.dg/torture/pr69714.c   -O3 -fomit-frame-pointer 
> -funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
> FAIL->PASS: gcc.dg/torture/pr69714.c   -O3 -g  execution test
> FAIL->PASS: gcc.dg/vect/pr70021.c execution test
> FAIL->PASS: gcc.dg/vect/pr70021.c -flto -ffat-lto-objects execution test
>
> OK for trunk (provided patch passes bootstrap/regtest)?

OK, thanks.  Please also backport to GCC 10 after a few days on trunk
(no separate approval needed).

Richard

Reply via email to