brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.4 KiB · c39d856 Raw
108 lines · javascript
1'use strict';2 3module.exports = {4  scf_dialect : $ => prec.right(choice(5                  // operation ::= `scf.condition` `(` $condition `)` attr-dict6                  // ($args^ `:` type($args))?7                  seq('scf.condition',8                      field('condition', $._value_use_list_parens),9                      field('attributes', optional($.attribute)),10                      field('arguments', optional($._value_use_type_list))),11 12                  seq('scf.execute_region',13                      field('return', optional($._function_return)),14                      field('body', $.region),15                      field('attributes', optional($.attribute))),16 17                  seq('scf.if', field('condition', $.value_use),18                      field('return', optional($._function_return)),19                      field('trueblk', $.region),20                      field('falseblk',21                            optional(seq(token('else'), $.region)))),22 23                  // operation ::= `scf.index_switch` $arg attr-dict (`->`24                  // type($results)^)?25                  //               custom<SwitchCases>($cases, $caseRegions)26                  //               `\n`27                  //               `` `default` $defaultRegion28                  seq('scf.index_switch', field('flag', $._value_use_and_type),29                      field('attributes', optional($.attribute)),30                      field('result', optional($._function_return)),31                      $.scf_case_label, $.region,32                      repeat(seq($.scf_case_label, $.region))),33 34                  // scf.for %iv = %lb to %ub step %step {35                  // ... // body36                  // }37                  seq('scf.for', field('iv', $.value_use), '=',38                      field('lb', $.value_use), token('to'),39                      field('ub', $.value_use),40                      field('step', seq(token('step'), $.value_use)),41                      field('iter_args',42                            optional(seq(token('iter_args'),43                                         $._value_assignment_list))),44                      field('return', optional($._function_return)),45                      field('body', $.region),46                      field('attributes', optional($.attribute))),47 48                  seq('scf.forall', field('iv', $._value_use_list_parens),49                      field('bounds',50                            seq(choice(seq('=', $._value_use_list_parens,51                                           token('to')),52                                       token('in')),53                                $._value_use_list_parens)),54                      field('step', optional(seq(token('step'),55                                                 $._value_use_list_parens))),56                      field('shared_outs',57                            optional(seq(token('shared_outs'),58                                         $._value_assignment_list))),59                      field('return', optional($._function_return)),60                      field('body', $.region),61                      field('attributes', optional($.attribute))),62 63                  seq('scf.forall.in_parallel', field('body', $.region),64                      field('attributes', optional($.attribute))),65 66                  seq('scf.parallel', field('iv', $._value_use_list_parens),67                      '=', field('lb', $._value_use_list_parens), token('to'),68                      field('ub', $._value_use_list_parens),69                      field('step',70                            seq(token('step'), $._value_use_list_parens)),71                      field('init', optional(seq(token('init'),72                                                 $._value_use_list_parens))),73                      field('return', optional($._function_return)),74                      field('body', $.region),75                      field('attributes', optional($.attribute))),76 77                  seq('scf.reduce', field('operand', $._value_use_list_parens),78                      field('return', $._type_annotation),79                      field('body', $.region)),80 81                  // operation ::= `scf.reduce.return` $result attr-dict `:`82                  // type($result)83                  seq('scf.reduce.return', field('result', $.value_use),84                      field('attributes', optional($.attribute)),85                      field('return', $._type_annotation)),86 87                  // op ::= `scf.while` assignments `:` function-type region88                  // `do` region89                  //        `attributes` attribute-dict90                  // initializer ::= /* empty */ | `(` assignment-list `)`91                  seq('scf.while',92                      field('assignments', optional($._value_assignment_list)),93                      field('return', $._function_type_annotation),94                      field('condblk', $.region), 'do',95                      field('doblk', $.region),96                      field('attributes',97                            optional(seq('attributes', $.attribute)))),98 99                  // operation ::= `scf.yield` attr-dict ($results^ `:`100                  // type($results))?101                  seq('scf.yield', field('attributes', optional($.attribute)),102                      field('results', optional($._value_use_type_list))),103                  )),104 105  scf_case_label : $ => choice(seq(token('case'), $.integer_literal),106                               token('default'))107}108