[AArch64][SVE] Enable shouldFoldSelectWithIdentityConstant for SVE.
Instcombine will canonicalize `select(c, binop(a, b), a)` to `binop(select(c, b, identityvalue), a)`. The original select form makes a more natural form for vector predicated operations for vector architectures like SVE where predication is well supported. This patch enables shouldFoldSelectWithIdentityConstant for SVE so that more predicated instructions can be generated, helping simplify the handling with identity constants. Predicated FMA patterns have also been adjusted here as they need to look at FMF's. Other operations like add/sub, mul, and/or/xor and mla/mls have been recently updated. There is one test (scalable_int_min_max) that increases in size. There are multiple selects that could be combined into a single select but does not currently fold. Differential Revision: https://reviews.llvm.org/D149967
Loading
Please sign in to comment