I have small question about one particular requirement of Declarative Assembly Format:
All operand and result types must appear within the format using the various
typedirectives, either individually or with the
IMHO, it introduces extra redundancy in ASM form for SSACFG regions:
%0 = some.op() -> tensor<1x2x3x4xf32> // %0 type is defined %1 = other.op(%0 : tensor<1x2x3x4xf32>) -> tensor<5x6x7x8xf32> // duplicate %0 type
Since, for SSACFG region there is use-def dominance requirement, the values for operation’s operands should be already resolved and their types should be already known. But Declarative Assembly Format forces to duplicate the type information for values (unless some special cases). This leads to quite verbose ASM files, especially with complex types (tensor/memref with non trivial encoding/layout/memory space), which hard to read and analyze.
I can agree, that this types duplication adds extra validation logic during the ASM parsing, but can’t it be made optional?