[llvm] [AArch64] Enable using SVE2 bit-sel instructions with Neon types. (PR #146906)
Paul Walker via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 7 05:37:58 PDT 2025
================
@@ -5368,6 +5368,19 @@ multiclass sve2_int_bitwise_ternary_op<bits<3> opc, string asm,
def : SVE_3_Op_Pat<nxv8i16, op, nxv8i16, nxv8i16, nxv8i16, !cast<Instruction>(NAME)>;
def : SVE_3_Op_Pat<nxv4i32, op, nxv4i32, nxv4i32, nxv4i32, !cast<Instruction>(NAME)>;
def : SVE_3_Op_Pat<nxv2i64, op, nxv2i64, nxv2i64, nxv2i64, !cast<Instruction>(NAME)>;
+
+ // Allow selecting SVE2 ternary ops with Neon types.
+ foreach VT = [nxv16i8, nxv8i16, nxv4i32, nxv2i64] in {
----------------
paulwalker-arm wrote:
Do you specially care about the case when FEAT_SHA3 is not available? I ask because when available the NEON variants look to have less restrictive register requirements? Specially for BCAX and EOR3 which have a dedicated result register.
If you just want to use the other instructions (bsl1n etc) then a quick fix would be to pass the VT array into the class and then only set the parameter for the instructions that are in addition to those available under FEAT_SHA3.
https://github.com/llvm/llvm-project/pull/146906
More information about the llvm-commits
mailing list