[llvm] [AArch64][Codegen] Improve small shufflevector/concat lowering for SME (PR #116662)

Sander de Smalen via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 20 00:53:35 PST 2024


================
@@ -26161,6 +26238,8 @@ SDValue AArch64TargetLowering::PerformDAGCombine(SDNode *N,
 
     break;
   }
+  case AArch64ISD::ZIP1:
+    return performZIP1Combine(N, DAG);
----------------
sdesmalen-arm wrote:

For a test like `@concat_v4f16` in sve-streaming-mode-fixed-length-concat.ll, I think this should be a pattern that we match explicitly in `LowerFixedLengthVECTOR_SHUFFLEToSVE` rather than having to rely on a combine of ZIP1. Just before where it currently falls back on `GenerateFixedLengthSVETBL`, it tries a number of patterns such as `isZIP_v_undef_Mask`. It seems like some patterns there are missing to handle:

```
  t2: v4f16,ch = CopyFromReg t0, Register:v4f16 %0
  t4: v4f16,ch = CopyFromReg t0, Register:v4f16 %1
t19: v4f16 = vector_shuffle<0,1,4,5> t2, t4
```

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


More information about the llvm-commits mailing list