[llvm] [RISCV] Initial codegen support for the XRivosVizip extension (PR #131933)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 28 13:08:29 PDT 2025


================
@@ -4621,6 +4623,48 @@ static bool isElementRotate(const std::array<std::pair<int, int>, 2> &SrcInfo,
          SrcInfo[1].second - SrcInfo[0].second == (int)NumElts;
 }
 
+static bool isAlternating(const std::array<std::pair<int, int>, 2> &SrcInfo,
+                          const ArrayRef<int> Mask, bool RequiredPolarity) {
+  int NumElts = Mask.size();
+  for (unsigned i = 0; i != NumElts; ++i) {
+    int M = Mask[i];
+    if (M < 0)
+      continue;
+    int Src = M >= NumElts;
+    int Diff = (int)i - (M % NumElts);
+    bool C = Src == SrcInfo[1].first && Diff == SrcInfo[1].second;
+    assert(C ^ (Src == SrcInfo[0].first && Diff == SrcInfo[0].second) &&
----------------
topperc wrote:

`^` -> `!=`

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


More information about the llvm-commits mailing list