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, ...)
Paths
| Differential D119334
[AArch64][SVE] Fold away SETCC if original input was predicate vector. ClosedPublic Authored by sdesmalen on Feb 9 2022, 6:36 AM.
Details Summary 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, ...)
Diff Detail
Unit TestsFailed Event Timelinesdesmalen added a child revision: D119336: [AArch64][SVE] Avoid multiple PTRUE values for SETCC..Feb 9 2022, 8:22 AM
This revision is now accepted and ready to land.Feb 28 2022, 1:40 AM This revision was landed with ongoing or failed builds.Feb 28 2022, 6:14 AM Closed by commit rGeac2638ec169: [AArch64][SVE] Fold away SETCC if original input was predicate vector. (authored by sdesmalen). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 407145 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
|
nit: Hi @sdesmalen, this is only a minor issue, but the notation in the comments is a little inconsistent in places. I found this a little confusing at first. For example, in some places it's
and in others it's
Is it worth just sticking to a single notation for clarity?