parameters: (
      A=TensorDef(T1, S.M, S.K),
      B=TensorDef(T2, S.K, S.N),
      C=TensorDef(U, S.M, S.N, output=True))
docstring: Performs a matrix multiplication of two 2D inputs.
  
    Numeric casting is performed on the operands to the inner multiply, promoting
    them to the same data type as the accumulator/output.
docstring_summary: Performs a matrix multiplication of two 2D inputs.
docstring_tokens: Performs a matrix multiplication of two 2D inputs .
function: def matmul(
      A=TensorDef(T1, S.M, S.K),
      B=TensorDef(T2, S.K, S.N),
      C=TensorDef(U, S.M, S.N, output=True)):
    """Performs a matrix multiplication of two 2D inputs.
  
    Numeric casting is performed on the operands to the inner multiply, promoting
    them to the same data type as the accumulator/output.
    """
    domain(D.m, D.n, D.k)
    implements(ContractionOpInterface)
    C[D.m, D.n] += TypeFn.cast(U, A[D.m, D.k]) * TypeFn.cast(U, B[D.k, D.n])
function_tokens: def matmul ( A = TensorDef ( T1 , S . M , S . K ) , B = TensorDef ( T2 , S . K , S . N ) , C = TensorDef ( U , S . M , S . N , output = True ) ) : domain ( D . m , D . n , D . k ) implements ( ContractionOpInterface ) C [ D . m , D . n ] += TypeFn . cast ( U , A [ D . m , D . k ] ) * TypeFn . cast ( U , B [ D . k , D . n ] )