[AArch64][SVE] Fold away SETCC if original input was predicate vector.
authorSander de Smalen <sander.desmalen@arm.com>
Mon, 28 Feb 2022 12:17:25 +0000 (12:17 +0000)
committerSander de Smalen <sander.desmalen@arm.com>
Mon, 28 Feb 2022 14:12:43 +0000 (14:12 +0000)
commiteac2638ec169a5d6987ac4fbbcd430bee4489348
treee463414ed61f90962980ca81ace1b9bd5d094d08
parentb3e8ace19830e35682aadf0e8e8d7ff9270d51c8
[AArch64][SVE] Fold away SETCC if original input was predicate vector.

This adds the following two folds:

Fold 1:
   setcc_merge_zero(
       all_active, extend(nxvNi1 ...), != splat(0))
  -> nxvNi1 ...

Fold 2:
   setcc_merge_zero(
       pred, extend(nxvNi1 ...), != splat(0))
  -> nxvNi1 and(pred, ...)

Reviewed By: david-arm

Differential Revision: https://reviews.llvm.org/D119334
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/test/CodeGen/AArch64/sve-cmp-select.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-masked-gather.ll
llvm/test/CodeGen/AArch64/sve-fixed-length-masked-scatter.ll
llvm/test/CodeGen/AArch64/sve-punpklo-combine.ll
llvm/test/CodeGen/AArch64/sve-setcc.ll