All transform ops prefixed with transform.structured
now require types. In the vast majority of cases, the syntax involves:
- trailing functional type, e.g.
transform.structured.tile_to_forall_op ... : (!transform.any_op) -> (!transform.any_op, !transform.op<"scf.forall">)
- immediate colon types for values used as parameter in the list, e.g.,
transform.structured.tile %0 tile_sizes [%1 : !transform.any_value] : ... /* type of %0 goes here */
.
!transform.any_op
can be used as a default placeholder in absence of more specific type constraints, !pdl.operation
should not be used unless for connection to PDL.
[RFC] Type System for the Transform Dialect discusses the motivation for the change.