[llvm] [AArch64] Optimize vector multiplications by certain constants for v2i64 (PR #183827)
David Green via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 6 03:19:56 PST 2026
================
@@ -5919,6 +5919,44 @@ static unsigned selectUmullSmull(SDValue &N0, SDValue &N1, SelectionDAG &DAG,
return 0;
}
+// Transform mul<v2i64, splat(2^n +-1)> into a SHL and ADD/SUB
+// this transormation is much faster when vector mul is not supported
+static SDValue convertMulToShlAdd(SDNode *N, SelectionDAG &DAG) {
+ const SDNode *Operand = N->getOperand(1).getNode();
+ APInt SplatValue;
+ ISD::isConstantSplatVector(Operand, SplatValue);
+
+ // Not a constant splat so should just stay as a mulitplcation operation
----------------
davemgreen wrote:
mulitplcation -> multiplication
https://github.com/llvm/llvm-project/pull/183827
More information about the llvm-commits
mailing list