brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.8 KiB · f77e2a7 Raw
143 lines · javascript
1'use strict';2 3module.exports = {4  arith_dialect : $ => choice(5                    // operation ::= `arith.constant` attr-dict $value6                    seq('arith.constant',7                        field('attributes', optional($.attribute)),8                        field('value', $._literal_and_type)),9 10                    // operation ::= `arith.addi` $lhs `,` $rhs attr-dict `:`11                    // type($result) operation ::= `arith.subi` $lhs `,` $rhs12                    // attr-dict `:` type($result) operation ::= `arith.divsi`13                    // $lhs `,` $rhs attr-dict `:` type($result) operation ::=14                    // `arith.divui` $lhs `,` $rhs attr-dict `:` type($result)15                    // operation ::= `arith.ceildivsi` $lhs `,` $rhs attr-dict16                    // `:` type($result) operation ::= `arith.ceildivui` $lhs17                    // `,` $rhs attr-dict `:` type($result) operation ::=18                    // `arith.floordivsi` $lhs `,` $rhs attr-dict `:`19                    // type($result) operation ::= `arith.remsi` $lhs `,` $rhs20                    // attr-dict `:` type($result) operation ::= `arith.remui`21                    // $lhs `,` $rhs attr-dict `:` type($result) operation ::=22                    // `arith.muli` $lhs `,` $rhs attr-dict `:` type($result)23                    // operation ::= `arith.mulsi_extended` $lhs `,` $rhs24                    // attr-dict `:` type($lhs) operation ::=25                    // `arith.mului_extended` $lhs `,` $rhs attr-dict `:`26                    // type($lhs) operation ::= `arith.andi` $lhs `,` $rhs27                    // attr-dict `:` type($result) operation ::= `arith.ori`28                    // $lhs `,` $rhs attr-dict `:` type($result) operation ::=29                    // `arith.xori` $lhs `,` $rhs attr-dict `:` type($result)30                    // operation ::= `arith.maxsi` $lhs `,` $rhs attr-dict `:`31                    // type($result) operation ::= `arith.maxui` $lhs `,` $rhs32                    // attr-dict `:` type($result) operation ::= `arith.minsi`33                    // $lhs `,` $rhs attr-dict `:` type($result) operation ::=34                    // `arith.minui` $lhs `,` $rhs attr-dict `:` type($result)35                    // operation ::= `arith.shli` $lhs `,` $rhs attr-dict `:`36                    // type($result) operation ::= `arith.shrsi` $lhs `,` $rhs37                    // attr-dict `:` type($result) operation ::= `arith.shrui`38                    // $lhs `,` $rhs attr-dict `:` type($result)39                    seq(choice('arith.addi', 'arith.subi', 'arith.divsi',40                               'arith.divui', 'arith.ceildivsi',41                               'arith.ceildivui', 'arith.floordivsi',42                               'arith.remsi', 'arith.remui', 'arith.muli',43                               'arith.mulsi_extended', 'arith.mului_extended',44                               'arith.andi', 'arith.ori', 'arith.xori',45                               'arith.maxsi', 'arith.maxui', 'arith.minsi',46                               'arith.minui', 'arith.shli', 'arith.shrsi',47                               'arith.shrui'),48                        field('lhs', $.value_use), ',',49                        field('rhs', $.value_use),50                        field('attributes', optional($.attribute)),51                        field('return', $._type_annotation)),52 53                    // operation ::= `arith.addui_extended` $lhs `,` $rhs54                    // attr-dict `:` type($sum)55                    //                `,` type($overflow)56                    seq('arith.addui_extended', field('lhs', $.value_use), ',',57                        field('rhs', $.value_use),58                        field('attributes', optional($.attribute)),59                        field('return', seq(':', $.type, ',', $.type))),60 61                    // operation ::= `arith.addf` $lhs `,` $rhs (`fastmath` ``62                    // $fastmath^)?63                    //                attr-dict `:` type($result)64                    // operation ::= `arith.divf` $lhs `,` $rhs (`fastmath` ``65                    // $fastmath^)?66                    //                attr-dict `:` type($result)67                    // operation ::= `arith.maximumf` $lhs `,` $rhs (`fastmath` ``68                    // $fastmath^)?69                    //                attr-dict `:` type($result)70                    // operation ::= `arith.minimumf` $lhs `,` $rhs (`fastmath` ``71                    // $fastmath^)?72                    //                attr-dict `:` type($result)73                    // operation ::= `arith.mulf` $lhs `,` $rhs (`fastmath` ``74                    // $fastmath^)?75                    //                attr-dict `:` type($result)76                    // operation ::= `arith.remf` $lhs `,` $rhs (`fastmath` ``77                    // $fastmath^)?78                    //                attr-dict `:` type($result)79                    // operation ::= `arith.subf` $lhs `,` $rhs (`fastmath` ``80                    // $fastmath^)?81                    //                attr-dict `:` type($result)82                    seq(choice('arith.addf', 'arith.divf', 'arith.maximumf',83                               'arith.minimumf', 'arith.mulf', 'arith.remf',84                               'arith.subf'),85                        field('lhs', $.value_use), ',',86                        field('rhs', $.value_use),87                        field('fastmath', optional($.fastmath_attr)),88                        field('attributes', optional($.attribute)),89                        field('return', $._type_annotation)),90 91                    // operation ::= `arith.negf` $operand (`fastmath` ``92                    // $fastmath^)?93                    //                attr-dict `:` type($result)94                    seq(choice('arith.negf'), field('operand', $.value_use),95                        field('fastmath', optional($.fastmath_attr)),96                        field('attributes', optional($.attribute)),97                        field('return', $._type_annotation)),98 99                    // operation ::= `arith.cmpi` $predicate `,` $lhs `,` $rhs100                    // attr-dict `:` type($lhs) operation ::= `arith.cmpf`101                    // $predicate `,` $lhs `,` $rhs attr-dict `:` type($lhs)102                    seq(choice('arith.cmpi', 'arith.cmpf'),103                        field('predicate',104                              choice('eq', 'ne', 'oeq', 'olt', 'ole', 'ogt',105                                     'oge', 'slt', 'sle', 'sgt', 'sge', 'ult',106                                     'ule', 'ugt', 'uge', $.string_literal)),107                        ',', field('lhs', $.value_use), ',',108                        field('rhs', $.value_use),109                        field('attributes', optional($.attribute)),110                        field('return', $._type_annotation)),111 112                    // operation ::= `arith.extf` $in attr-dict `:` type($in)113                    // `to` type($out) operation ::= `arith.extsi` $in attr-dict114                    // `:` type($in) `to` type($out) operation ::= `arith.extui`115                    // $in attr-dict `:` type($in) `to` type($out) operation ::=116                    // `arith.fptosi` $in attr-dict `:` type($in) `to`117                    // type($out) operation ::= `arith.fptoui` $in attr-dict `:`118                    // type($in) `to` type($out) operation ::=119                    // `arith.index_cast` $in attr-dict `:` type($in) `to`120                    // type($out) operation ::= `arith.index_castui` $in121                    // attr-dict `:` type($in) `to` type($out) operation ::=122                    // `arith.sitofp` $in attr-dict `:` type($in) `to`123                    // type($out) operation ::= `arith.uitofp` $in attr-dict `:`124                    // type($in) `to` type($out) operation ::= `arith.bitcast`125                    // $in attr-dict `:` type($in) `to` type($out) operation ::=126                    // `arith.truncf` $in attr-dict `:` type($in) `to`127                    // type($out) operation ::= `arith.trunci` $in attr-dict `:`128                    // type($in) `to` type($out)129                    seq(choice('arith.extf', 'arith.extsi', 'arith.extui',130                               'arith.fptosi', 'arith.fptoui',131                               'arith.index_cast', 'arith.index_castui',132                               'arith.sitofp', 'arith.uitofp', 'arith.bitcast',133                               'arith.truncf', 'arith.trunci'),134                        field('in', $.value_use),135                        field('attributes', optional($.attribute)),136                        field('return', $._type_annotation)),137 138                    seq('arith.select', field('cond', $.value_use), ',',139                        field('trueblk', $.value_use), ',',140                        field('falseblk', $.value_use),141                        field('return', $._type_annotation)))142}143