Open sdjordjevicTT opened 1 week ago
We don't have any validation for unary ops that they verify single input and single output. For example, today it is allowed to compile the following IR, even though the gelu op is a unary op:
#any_device = #tt.operand_constraint<dram|l1|scalar|tile|any_device|any_device_tile> module attributes {} { func.func @forward(%arg0: tensor<64x128xf32>, %arg1: tensor<64x128xf32>) -> tensor<64x128xf32> { %0 = tensor.empty() : tensor<64x128xf32> %1 = "ttir.gelu"(%arg0, %arg1, %0) <{operandSegmentSizes = array<i32: 2, 1>, operand_constraints = [#any_device, #any_device, #any_device]}> : (tensor<64x128xf32>, tensor<64x128xf32>, tensor<64x128xf32>) -> tensor<64x128xf32> return %1 : tensor<64x128xf32> } }
We don't have any validation for unary ops that they verify single input and single output. For example, today it is allowed to compile the following IR, even though the gelu op is a unary op: