[Mlir-commits] [mlir] [mlir][spirv] Add definition for VectorTimesMatrixOp (PR #124571)
Jakub Kuderski
llvmlistbot at llvm.org
Tue Jan 28 08:46:18 PST 2025
================
@@ -198,4 +197,53 @@ def SPIRV_TransposeOp : SPIRV_Op<"Transpose", [Pure]> {
// -----
+def SPIRV_VectorTimesMatrixOp : SPIRV_Op<"VectorTimesMatrix", [
+ Pure,
+ AllElementTypesMatch<["vector", "result"]>
+ ]> {
+ let summary = "Linear-algebraic Vector X Matrix.";
+
+ let description = [{
+ Result Type must be a vector of floating-point type.
+
+ Vector must be a vector with the same Component Type as the Component
+ Type in Result Type. Its number of components must equal the number of
+ components in each column in Matrix.
+
+ Matrix must be a matrix with the same Component Type as the Component
+ Type in Result Type. Its number of columns must equal the number of
+ components in Result Type.
+
+ <!-- End of AutoGen section -->
+
+ #### Example:
+
+ ```mlir
+ %result = spirv.VectorTimesMatrix %vector, %matrix : vector<4xf32>, !spirv.matrix<4 x vector<4xf32>> -> vector<4xf32>
+ ```
+ }];
+
+ let availability = [
+ MinVersion<SPIRV_V_1_0>,
+ MaxVersion<SPIRV_V_1_6>,
+ Extension<[]>,
+ Capability<[SPIRV_C_Matrix]>
+ ];
+
+ let arguments = (ins
+ SPIRV_VectorOf<SPIRV_Float>:$vector,
+ SPIRV_MatrixOrCoopMatrixOf<SPIRV_Float>:$matrix
----------------
kuhar wrote:
Oh, I don't think we should allow coop matrix types here; I think these are only supported in `MatrixTimesScalar` outside of the coop matrix ops: https://github.com/KhronosGroup/SPIRV-Registry/blob/main/extensions/KHR/SPV_KHR_cooperative_matrix.asciidoc#:~:text=Allow%20cooperative%20matrix%20types%20for%20OpMatrixTimesScalar.
https://github.com/llvm/llvm-project/pull/124571
More information about the Mlir-commits
mailing list