[llvm] [AArch64] Convert concat(uhadd(a,b), uhadd(c,d)) to uhadd(concat(a,c), concat(b,d)) (PR #79464)

David Green via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 25 08:34:59 PST 2024


================
@@ -18200,6 +18200,19 @@ static SDValue performConcatVectorsCombine(SDNode *N,
     return true;
   };
 
+  // concat(uhadd(a, b), uhadd(c, d)) -> uhadd(concat(a, c), concat(b, d))
----------------
davemgreen wrote:

There is some code that also looks at uhadd but with extract_subvector. Could that be made more generic to perform this fold more generally? We could expand it in the future to handle other operations too.

Do you mind also adding a check that the dest size is 128bits, to make sure this doesn't trigger for SVE fixed length vector too.

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


More information about the llvm-commits mailing list