[Mlir-commits] [llvm] [mlir] [mlir][spirv] Add vector.interleave to spirv.VectorShuffle conversion (PR #93240)

Jakub Kuderski llvmlistbot at llvm.org
Mon May 27 09:55:03 PDT 2024


================
@@ -578,6 +578,49 @@ struct VectorShuffleOpConvert final
   }
 };
 
+struct VectorInterleaveOpConvert final
+    : public OpConversionPattern<vector::InterleaveOp> {
+  using OpConversionPattern::OpConversionPattern;
+
+  LogicalResult
+  matchAndRewrite(vector::InterleaveOp interleaveOp, OpAdaptor adaptor,
+                  ConversionPatternRewriter &rewriter) const override {
+    // Check the result vector type
+    VectorType oldResultType = interleaveOp.getResultVectorType();
+    Type newResultType = getTypeConverter()->convertType(oldResultType);
+    if (!newResultType)
+      return rewriter.notifyMatchFailure(interleaveOp,
+                                         "unsupported result vector type");
+
+    // Interleave the indices
+    VectorType sourceType = interleaveOp.getSourceVectorType();
+    int n = sourceType.getNumElements();
+
+    // Input vectors of size 1 are converted to scalars by the type converter.
+    // We cannot use spirv::VectorShuffleOp directly in this case, and need to
+    // use spirv::CompositeConstructOp.
----------------
kuhar wrote:

```suggestion
    // Input vectors of size 1 are converted to scalars by the type converter.
    // We cannot use `spirv::VectorShuffleOp` directly in this case, and need to
    // use `spirv::CompositeConstructOp`.
```
```suggestion
    // Input vectors of size 1 are converted to scalars by the type converter.
    // We cannot use spirv::VectorShuffleOp directly in this case, and need to
    // use spirv::CompositeConstructOp.
```

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


More information about the Mlir-commits mailing list