This commit works towards the effort of defining a consistent assembly
scheme for the spv dialect ops. Currently there are some
inconsistencies in things like: using : and -> to express the return
type of an op.
Following is an initial list of rules proposed by Lei, we will refine
this list as we discuss during reviews:
- Operands:
- Use , to separate SSA values in a list
- Tightly associate type with :directly after the SSA value. : and the type can be omitted if it's clear (i.e., easy to deduce from other types)
- Use keyword and = as prefix to make the meaning of certain SSA value clear
- Use [] to mark the range for indexing SSA values. With [], the type for the SSA value that are inserted into can be placed after [].
- Result: use -> to associate the result type
- Attributes
- Attributes defined in the grammar should be placed in [] , preferably directly after the op.
- Prefer to use unquoted keyword instead of quoted string when possible (For IntEnumAttr it should be possible; for BitEnum it might not be possible to drop the quote given we can have | in the middle.)
- Use keyword like from/ into/etc. to make the assembly read nicer when possible
- Exceptions can exist
Using -> for separating the operands instead of : for the type seems the opposite of everywhere else in MLIR, isn't it?