[llvm] [AArch64] Convert UADDV(add(zext, zext)) into UADDLV(concat). (PR #78301)

David Sherwood via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 17 01:38:27 PST 2024


================
@@ -16539,14 +16570,20 @@ static SDValue performUADDVAddCombine(SDValue A, SelectionDAG &DAG) {
     if (SDValue R = performUADDVAddCombine(A.getOperand(1), DAG))
       return DAG.getNode(ISD::ADD, SDLoc(A), A.getValueType(), R,
                          A.getOperand(0));
+
+  if (SDValue R = DetectZextConcat(A, DAG))
+    return R;
+
   return SDValue();
 }
 
 static SDValue performUADDVCombine(SDNode *N, SelectionDAG &DAG) {
   SDValue A = N->getOperand(0);
   if (A.getOpcode() == ISD::ADD)
     if (SDValue R = performUADDVAddCombine(A, DAG))
-      return DAG.getNode(N->getOpcode(), SDLoc(N), N->getValueType(0), R);
+      return R.getOpcode() == AArch64ISD::UADDLV
----------------
david-arm wrote:

Just out of curiosity do we know why the original code is so odd, i.e.

`return DAG.getNode(N->getOpcode(), SDLoc(N), N->getValueType(0), R);`

and why we can't just return `R` instead?

https://github.com/llvm/llvm-project/pull/78301


More information about the llvm-commits mailing list