Revert "[mlir][linalg] Introduce transpose semantic to 'linalg.matmul' ops. (#104783)"
This reverts commit03483737a7and99c8557, which is a fix-up on top of the former. I'm reverting because this commit broke two tests: mlir/test/python/integration/dialects/linalg/opsrun.py mlir/test/python/integration/dialects/transform.py See https://lab.llvm.org/buildbot/#/builders/138/builds/4872 I'm not familiar with the tests, so I'm leaving it to the original author to either remove or adapt the broken tests, as discussed here: https://github.com/llvm/llvm-project/pull/104783#issuecomment-2406390905
This commit is contained in:
@@ -84,6 +84,81 @@ def testNamedStructuredOpCustomForm():
|
||||
|
||||
print(module)
|
||||
|
||||
|
||||
# CHECK-LABEL: TEST: testNamedStructuredOpGenericForm
|
||||
@run
|
||||
def testNamedStructuredOpGenericForm():
|
||||
with Context() as ctx, Location.unknown():
|
||||
module = Module.create()
|
||||
f32 = F32Type.get()
|
||||
with InsertionPoint(module.body):
|
||||
|
||||
@func.FuncOp.from_py_func(
|
||||
RankedTensorType.get((4, 16), f32), RankedTensorType.get((16, 8), f32)
|
||||
)
|
||||
def named_form(lhs, rhs):
|
||||
init_result = tensor.empty([4, 8], f32)
|
||||
# CHECK: "linalg.matmul"(%{{.*}})
|
||||
# CHECK-SAME: cast = #linalg.type_fn<cast_signed>
|
||||
# CHECK-SAME: operandSegmentSizes = array<i32: 2, 1>
|
||||
# CHECK-NEXT: ^bb0(%{{.*}}: f32, %{{.*}}: f32, %{{.*}}: f32):
|
||||
# CHECK-NEXT: arith.mulf{{.*}} (f32, f32) -> f32
|
||||
# CHECK-NEXT: arith.addf{{.*}} (f32, f32) -> f32
|
||||
# CHECK-NEXT: linalg.yield{{.*}} (f32) -> ()
|
||||
# CHECK-NEXT: (tensor<4x16xf32>, tensor<16x8xf32>, tensor<4x8xf32>) -> tensor<4x8xf32>
|
||||
return linalg.matmul(lhs, rhs, outs=[init_result])
|
||||
|
||||
module.operation.print(print_generic_op_form=True)
|
||||
|
||||
|
||||
# CHECK-LABEL: TEST: testNamedStructuredAsGenericOp
|
||||
@run
|
||||
def testNamedStructuredAsGenericOp():
|
||||
with Context() as ctx, Location.unknown():
|
||||
module = Module.create()
|
||||
f32 = F32Type.get()
|
||||
with InsertionPoint(module.body):
|
||||
|
||||
@func.FuncOp.from_py_func(
|
||||
RankedTensorType.get((4, 16), f32), RankedTensorType.get((16, 8), f32)
|
||||
)
|
||||
def generic_form(lhs, rhs):
|
||||
init_result = tensor.EmptyOp([4, 8], f32)
|
||||
# CHECK: linalg.generic
|
||||
return linalg.matmul(
|
||||
lhs, rhs, outs=[init_result.result], emit_generic=True
|
||||
)
|
||||
|
||||
print(module)
|
||||
|
||||
|
||||
# CHECK-LABEL: TEST: testOpResultFromOtherOp
|
||||
@run
|
||||
def testOpResultFromOtherOp():
|
||||
with Context(), Location.unknown():
|
||||
module = Module.create()
|
||||
f32 = F32Type.get()
|
||||
with InsertionPoint(module.body):
|
||||
|
||||
@func.FuncOp.from_py_func(
|
||||
RankedTensorType.get((4, 16), f32), RankedTensorType.get((16, 8), f32)
|
||||
)
|
||||
def pass_an_op_directly(arg0, arg1):
|
||||
one = arith.ConstantOp(F32Type.get(), 1.0)
|
||||
# CHECK: %[[LHS:.*]] = linalg.fill
|
||||
lhs = linalg.fill(one, outs=[arg0])
|
||||
# CHECK: %[[RHS:.*]] = linalg.fill
|
||||
rhs = linalg.fill(one, outs=[arg1])
|
||||
# CHECK: %[[INIT:.*]] = tensor.empty
|
||||
init = tensor.EmptyOp([4, 8], f32)
|
||||
# CHECK: linalg.matmul
|
||||
# CHECK: ins(%[[LHS]], %[[RHS]]
|
||||
# CHECK: outs(%[[INIT]]
|
||||
return linalg.matmul(lhs, rhs, outs=init)
|
||||
|
||||
print(module)
|
||||
|
||||
|
||||
# CHECK-LABEL: TEST: testIdentityRegionOps
|
||||
@run
|
||||
def testIdentityRegionOps():
|
||||
|
||||
Reference in New Issue
Block a user