brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · a8e3f0f Raw
119 lines · javascript
1'use strict';2 3module.exports = {4  affine_dialect : $ => prec.right(choice(5                     seq('affine.apply',6                         field('operand',7                               seq($.attribute, $._dim_and_symbol_use_list)),8                         field('attributes', optional($.attribute))),9 10                     // operation ::= `affine.delinearize_index` $linear_index11                     // `into` ` `12                     //               `(` $basis `)` attr-dict `:`13                     //               type($multi_index)14                     seq('affine.delinearlize_index',15                         field('operand', $.value_use), 'into',16                         field('basis', $._value_use_list_parens),17                         field('attributes', optional($.attribute)),18                         field('return', $._type_annotation)),19 20                     // operation ::= `affine.dma_start` ssa-use `[`21                     // multi-dim-affine-map-of-ssa-ids `]`,22                     //               `[` multi-dim-affine-map-of-ssa-ids `]`,23                     //               `[` multi-dim-affine-map-of-ssa-ids `]`,24                     //               ssa-use `:` memref-type25                     seq(choice('affine.dma_start', 'affine.dma_wait'),26                         field('operands',27                               seq($.value_use, $._multi_dim_affine_expr_sq,28                                   repeat(seq(',', $.value_use,29                                              $._multi_dim_affine_expr_sq)))),30                         ',', field('numElements', $._value_use_list),31                         field('return', $._type_annotation)),32 33                     // operation   ::= `affine.for` ssa-id `=` lower-bound `to`34                     // upper-bound35                     //                 (`step` integer-literal)? `{` op* `}`36                     seq('affine.for', field('iv', $.value_use), '=',37                         field('lowerBound',38                               seq(optional(token('max')), $._bound)),39                         token('to'),40                         field('upperBound',41                               seq(optional(token('min')), $._bound)),42                         field('step',43                               optional(seq(token('step'), $.integer_literal))),44                         field('iter_args',45                               optional(seq(token('iter_args'),46                                            $._value_assignment_list))),47                         field('return', optional($._function_return)),48                         field('body', $.region),49                         field('attributes', optional($.attribute))),50 51                     // operation  ::= `affine.if` if-op-cond `{` op* `}`52                     // (`else` `{` op* `}`)? if-op-cond ::= integer-set-attr53                     // dim-and-symbol-use-list54                     seq('affine.if',55                         field('condition',56                               seq($.attribute, $._dim_and_symbol_use_list)),57                         field('return', optional($._function_return)),58                         field('trueblk', $.region),59                         field('falseblk',60                               optional(seq(token('else'), $.region))),61                         field('attributes', optional($.attribute))),62 63                     // operation ::= `affine.load` ssa-use `[`64                     // multi-dim-affine-map-of-ssa-ids `]`65                     //               `:` memref-type66                     seq(choice('affine.load', 'affine.vector_load'),67                         field('operand', $.value_use),68                         field('multiDimAffineMap',69                               $._multi_dim_affine_expr_sq),70                         field('return', $._type_annotation)),71 72                     // operation ::= `affine.min` affine-map-attribute73                     // dim-and-symbol-use-list74                     seq(choice('affine.min', 'affine.max'),75                         field('operand',76                               seq($.attribute, $._dim_and_symbol_use_list))),77 78                     seq('affine.parallel',79                         field('iv', $._value_use_list_parens), '=',80                         field('lowerBound', $._multi_dim_affine_expr_parens),81                         token('to'),82                         field('upperBound', $._multi_dim_affine_expr_parens),83                         field('step',84                               optional(seq(token('step'),85                                            $._multi_dim_affine_expr_parens))),86                         field('reduce',87                               optional(seq(token('reduce'), '(',88                                            $.string_literal,89                                            repeat(seq(',', $.string_literal)),90                                            ')'))),91                         field('return', optional($._function_return)),92                         field('body', $.region)),93 94                     seq('affine.prefetch', field('source', $.value_use),95                         field('indices',96                               optional($._multi_dim_affine_expr_sq)),97                         ',', field('isWrite', $.isWrite_attr), ',',98                         field('localityHint', $.localityHint_attr), ',',99                         field('isDataCache', $.isDataCache_attr),100                         field('attributes', optional($.attribute)),101                         field('return', $._type_annotation)),102 103                     // operation ::= `affine.store` ssa-use, ssa-use `[`104                     // multi-dim-affine-map-of-ssa-ids `]`105                     //               `:` memref-type106                     seq(choice('affine.store', 'affine.vector_store'),107                         field('source', $.value_use), ',',108                         field('destination', $.value_use),109                         field('multiDimAffineMap',110                               $._multi_dim_affine_expr_sq),111                         field('return', $._type_annotation)),112 113                     // operation ::= `affine.yield` attr-dict ($operands^ `:`114                     // type($operands))?115                     seq('affine.yield',116                         field('attributes', optional($.attribute)),117                         field('results', optional($._value_use_type_list)))))118}119