[Mlir-commits] [mlir] [mlir][spirv] Add definition for VectorTimesMatrixOp (PR #124571)
Jakub Kuderski
llvmlistbot at llvm.org
Tue Jan 28 08:43:57 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
+ );
+
+ let results = (outs
+ SPIRV_VectorOf<SPIRV_Float>:$result
+ );
----------------
kuhar wrote:
Also this -- would be nice to keep matvec and vecmat in sync
https://github.com/llvm/llvm-project/pull/124571
More information about the Mlir-commits
mailing list