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