[AArch64][SVE] Fix BRKNS bug in optimizePTestInstr
authorCullen Rhodes <cullen.rhodes@arm.com>
Wed, 12 Oct 2022 08:17:45 +0000 (08:17 +0000)
committerCullen Rhodes <cullen.rhodes@arm.com>
Wed, 12 Oct 2022 08:34:41 +0000 (08:34 +0000)
commita17fcb223036a4cbd02a9a96cd3e94d52a3ca7c1
tree03659afd6fccf7a66abb5b55c121011274db78d1
parent495d9e1f3fe65ae93cda969720a2ed0b75170e2f
[AArch64][SVE] Fix BRKNS bug in optimizePTestInstr

The BRKNS instruction is unlike the other instructions that set flags
since it has an all active implicit predicate, so the existing

  PTEST(PG, BRKN(PG, A, B)) -> BRKNS(PG, A, B)

in AArch64InstrInfo::optimizePTestInstr is incorrect, however

  PTEST(PTRUE_B(31), BRKN(PG, A, B)) -> BRKNS(PG, A, B)

is correct.

Spotted by @paulwalker-arm in D134946.

Reviewed By: paulwalker-arm

Differential Revision: https://reviews.llvm.org/D135655
llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
llvm/lib/Target/AArch64/SVEInstrFormats.td
llvm/test/CodeGen/AArch64/sve-ptest-removal-brk.ll