Define a simplified assembly format
- Dominant language
- C++
- Stars
- 664
- Forks
- 30
- Avg merge
- 4d 9h
- Merged PRs (30d)
- 11
Description
Currently when we `mlir::debugPrint` JSIR, we get the default format, which is pretty verbose:
```mlir
"jsir.file"() <{comments = []}> ({
"jsir.program"() <{source_type = "script"}> ({
%0 = "jsir.identifier"() <{name = "a"}> : () -> !jsir.any
"jshir.if_statement"(%0) ({
%2 = "jsir.identifier"() <{name = "b"}> : () -> !jsir.any
"jsir.expression_statement"(%2) : (!jsir.any) -> ()
}, {
}) : (!jsir.any) -> ()
%1 = "jsir.identifier"() <{name = "a"}> : () -> !jsir.any
"jshir.if_statement"(%1) ({
"jshir.block_statement"() ({
%2 = "jsir.identifier"() <{name = "b"}> : () -> !jsir.any
"jsir.expression_statement"(%2) : (!jsir.any) -> ()
}, {
^bb0:
}) : () -> ()
}, {
%2 = "jsir.identifier"() <{name = "c"}> : () -> !jsir.any
"jsir.expression_statement"(%2) : (!jsir.any) -> ()
}) : (!jsir.any) -> ()
}, {
^bb0:
}) : () -> ()
}) : () -> ()
```
We should provide a custom, simplified assembly format, like this:
```mlir
jsir.file {
jsir.program {source_type = "script"} {
%0 = jsir.identifier {name = "a"}
jshir.if_statement(%0) ({
%2 = jsir.identifier {name = "b"}
jsir.expression_statement(%2)
}, {
})
%1 = jsir.identifier{name = "a"}
jshir.if_statement(%1) ({
jshir.block_statement() ({
%2 = jsir.identifier {name = "b"}
jsir.expression_statement(%2)
}, {
^bb0:
})
}, {
%2 = jsir.identifier {name = "c"}
jsir.expression_statement(%2)
})
}, {
^bb0:
})
})
```
Note: Since JSIR currently doesn't support TypeScript, every expression has the type `jsir.any` and doesn't have to be spelled out explicitly.
The custom [assemblyFormat](https://mlir.llvm.org/docs/DefiningDialects/Operations/#declarative-assembly-format) should be declared in [jsir_ops.generated.td](https://github.com/google/jsir/blob/main/maldoca/js/ir/jsir_ops.generated.td) and [jsir_ops.td](https://github.com/google/jsir/blob/main/maldoca/js/ir/jsir_ops.td). jsir_ops.generated.td is generated by [astgen](https://github.com/google/jsir/tree/main/maldoca/astgen).
Contributor guide
Assessment
This issue has not been assessed yet.