1*10f8be19SRamkumar Ramachandra'use strict'; 2*10f8be19SRamkumar Ramachandra 3*10f8be19SRamkumar Ramachandramodule.exports = { 4*10f8be19SRamkumar Ramachandra tensor_dialect : $ => choice( 5*10f8be19SRamkumar Ramachandra // operation ::= `tensor.empty` `(`$dynamicSizes`)` 6*10f8be19SRamkumar Ramachandra // attr-dict `:` type($result) 7*10f8be19SRamkumar Ramachandra seq('tensor.empty', 8*10f8be19SRamkumar Ramachandra field('dynamicSizes', $._value_use_list_parens), 9*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 10*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 11*10f8be19SRamkumar Ramachandra 12*10f8be19SRamkumar Ramachandra // operation ::= `tensor.cast` $source attr-dict `:` 13*10f8be19SRamkumar Ramachandra // type($source) `to` type($dest) 14*10f8be19SRamkumar Ramachandra seq('tensor.cast', field('in', $.value_use), 15*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 16*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 17*10f8be19SRamkumar Ramachandra 18*10f8be19SRamkumar Ramachandra // operation ::= `tensor.dim` attr-dict $source `,` $index 19*10f8be19SRamkumar Ramachandra // `:` type($source) 20*10f8be19SRamkumar Ramachandra seq('tensor.dim', 21*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 22*10f8be19SRamkumar Ramachandra field('tensor', $.value_use), ',', 23*10f8be19SRamkumar Ramachandra field('index', $.value_use), 24*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 25*10f8be19SRamkumar Ramachandra 26*10f8be19SRamkumar Ramachandra // operation ::= `tensor.collapse_shape` $src 27*10f8be19SRamkumar Ramachandra // $reassociation attr-dict `:` type($src) 28*10f8be19SRamkumar Ramachandra // `into` type($result) 29*10f8be19SRamkumar Ramachandra seq(choice('tensor.collapse_shape', 'tensor.expand_shape'), 30*10f8be19SRamkumar Ramachandra field('tensor', $.value_use), 31*10f8be19SRamkumar Ramachandra field('reassociation', $.nested_idx_list), 32*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 33*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 34*10f8be19SRamkumar Ramachandra 35*10f8be19SRamkumar Ramachandra // operation ::= `tensor.extract` $tensor `[` $indices `]` 36*10f8be19SRamkumar Ramachandra // attr-dict `:` type($tensor) 37*10f8be19SRamkumar Ramachandra seq('tensor.extract', field('tensor', $.value_use), 38*10f8be19SRamkumar Ramachandra field('indices', $._dense_idx_list), 39*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 40*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 41*10f8be19SRamkumar Ramachandra 42*10f8be19SRamkumar Ramachandra // operation ::= `tensor.insert` $scalar `into` $dest `[` 43*10f8be19SRamkumar Ramachandra // $indices `]` attr-dict 44*10f8be19SRamkumar Ramachandra // `:` type($dest) 45*10f8be19SRamkumar Ramachandra seq('tensor.insert', field('scalar', $.value_use), 46*10f8be19SRamkumar Ramachandra token('into'), field('destination', $.value_use), 47*10f8be19SRamkumar Ramachandra field('indices', $._dense_idx_list), 48*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 49*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 50*10f8be19SRamkumar Ramachandra 51*10f8be19SRamkumar Ramachandra // operation ::= `tensor.extract_slice` $source `` 52*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($offsets, 53*10f8be19SRamkumar Ramachandra // $static_offsets) 54*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($sizes, 55*10f8be19SRamkumar Ramachandra // $static_sizes) 56*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($strides, 57*10f8be19SRamkumar Ramachandra // $static_strides) attr-dict `:` 58*10f8be19SRamkumar Ramachandra // type($source) `to` type($result) 59*10f8be19SRamkumar Ramachandra seq('tensor.extract_slice', field('tensor', $.value_use), 60*10f8be19SRamkumar Ramachandra field('offsets', $._dense_idx_list), 61*10f8be19SRamkumar Ramachandra field('sizes', $._dense_idx_list), 62*10f8be19SRamkumar Ramachandra field('strides', $._dense_idx_list), 63*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 64*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 65*10f8be19SRamkumar Ramachandra 66*10f8be19SRamkumar Ramachandra // operation ::= `tensor.insert_slice` $source `into` $dest 67*10f8be19SRamkumar Ramachandra // `` 68*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($offsets, 69*10f8be19SRamkumar Ramachandra // $static_offsets) 70*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($sizes, 71*10f8be19SRamkumar Ramachandra // $static_sizes) 72*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($strides, 73*10f8be19SRamkumar Ramachandra // $static_strides) attr-dict `:` 74*10f8be19SRamkumar Ramachandra // type($source) `into` type($dest) 75*10f8be19SRamkumar Ramachandra // operation ::= `tensor.parallel_insert_slice` $source 76*10f8be19SRamkumar Ramachandra // `into` $dest `` 77*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($offsets, 78*10f8be19SRamkumar Ramachandra // $static_offsets) 79*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($sizes, 80*10f8be19SRamkumar Ramachandra // $static_sizes) 81*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($strides, 82*10f8be19SRamkumar Ramachandra // $static_strides) attr-dict `:` 83*10f8be19SRamkumar Ramachandra // type($source) `into` type($dest) 84*10f8be19SRamkumar Ramachandra seq(choice('tensor.insert_slice', 85*10f8be19SRamkumar Ramachandra 'tensor.parallel_insert_slice'), 86*10f8be19SRamkumar Ramachandra field('source', $.value_use), token('into'), 87*10f8be19SRamkumar Ramachandra field('destination', $.value_use), 88*10f8be19SRamkumar Ramachandra field('offsets', $._dense_idx_list), 89*10f8be19SRamkumar Ramachandra field('sizes', $._dense_idx_list), 90*10f8be19SRamkumar Ramachandra field('strides', $._dense_idx_list), 91*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 92*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 93*10f8be19SRamkumar Ramachandra 94*10f8be19SRamkumar Ramachandra // operation ::= `tensor.from_elements` $elements attr-dict 95*10f8be19SRamkumar Ramachandra // `:` type($result) 96*10f8be19SRamkumar Ramachandra seq('tensor.from_elements', 97*10f8be19SRamkumar Ramachandra field('elements', optional($._value_use_list)), 98*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 99*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 100*10f8be19SRamkumar Ramachandra 101*10f8be19SRamkumar Ramachandra // operation ::= `tensor.gather` $source `[` $indices `]` 102*10f8be19SRamkumar Ramachandra // `gather_dims` `(` $gather_dims `)` 103*10f8be19SRamkumar Ramachandra // (`unique` $unique^)? 104*10f8be19SRamkumar Ramachandra // attr-dict 105*10f8be19SRamkumar Ramachandra // `:` functional-type(operands, results) 106*10f8be19SRamkumar Ramachandra seq('tensor.gather', field('source', $.value_use), 107*10f8be19SRamkumar Ramachandra field('indices', $._dense_idx_list), 108*10f8be19SRamkumar Ramachandra field('gatherDims', $.gather_dims_attr), 109*10f8be19SRamkumar Ramachandra field('unique', optional($.unique_attr)), 110*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 111*10f8be19SRamkumar Ramachandra field('return', $._function_type_annotation)), 112*10f8be19SRamkumar Ramachandra 113*10f8be19SRamkumar Ramachandra // operation ::= `tensor.scatter` $source `into` $dest `[` 114*10f8be19SRamkumar Ramachandra // $indices `]` 115*10f8be19SRamkumar Ramachandra // `scatter_dims` `(` $scatter_dims `)` 116*10f8be19SRamkumar Ramachandra // (`unique` $unique^)? 117*10f8be19SRamkumar Ramachandra // attr-dict 118*10f8be19SRamkumar Ramachandra // `:` functional-type(operands, results) 119*10f8be19SRamkumar Ramachandra seq('tensor.scatter', field('source', $.value_use), 120*10f8be19SRamkumar Ramachandra token('into'), field('destination', $.value_use), 121*10f8be19SRamkumar Ramachandra field('indices', $._dense_idx_list), 122*10f8be19SRamkumar Ramachandra field('scatterDims', $.scatter_dims_attr), 123*10f8be19SRamkumar Ramachandra field('unique', optional($.unique_attr)), 124*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 125*10f8be19SRamkumar Ramachandra field('return', $._function_type_annotation)), 126*10f8be19SRamkumar Ramachandra 127*10f8be19SRamkumar Ramachandra // operation ::= `tensor.pad` $source 128*10f8be19SRamkumar Ramachandra // (`nofold` $nofold^)? 129*10f8be19SRamkumar Ramachandra // `low` `` custom<DynamicIndexList>($low, 130*10f8be19SRamkumar Ramachandra // $static_low) `high` `` 131*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($high, 132*10f8be19SRamkumar Ramachandra // $static_high) $region attr-dict `:` 133*10f8be19SRamkumar Ramachandra // type($source) `to` type($result) 134*10f8be19SRamkumar Ramachandra seq('tensor.pad', field('source', $.value_use), 135*10f8be19SRamkumar Ramachandra field('nofold', optional($.nofold_attr)), 136*10f8be19SRamkumar Ramachandra field('low', seq(token('low'), $._dense_idx_list)), 137*10f8be19SRamkumar Ramachandra field('high', seq(token('high'), $._dense_idx_list)), 138*10f8be19SRamkumar Ramachandra field('body', $.region), 139*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 140*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 141*10f8be19SRamkumar Ramachandra 142*10f8be19SRamkumar Ramachandra // operation ::= `tensor.reshape` $source `(` $shape `)` 143*10f8be19SRamkumar Ramachandra // attr-dict 144*10f8be19SRamkumar Ramachandra // `:` functional-type(operands, results) 145*10f8be19SRamkumar Ramachandra seq('tensor.reshape', field('tensor', $.value_use), 146*10f8be19SRamkumar Ramachandra field('shape', $._value_use_list_parens), 147*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 148*10f8be19SRamkumar Ramachandra field('return', $._function_type_annotation)), 149*10f8be19SRamkumar Ramachandra 150*10f8be19SRamkumar Ramachandra // operation ::= `tensor.splat` $input attr-dict `:` 151*10f8be19SRamkumar Ramachandra // type($aggregate) 152*10f8be19SRamkumar Ramachandra seq('tensor.splat', field('input', $.value_use), 153*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 154*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 155*10f8be19SRamkumar Ramachandra 156*10f8be19SRamkumar Ramachandra // operation ::= `tensor.pack` $source 157*10f8be19SRamkumar Ramachandra // (`padding_value` `(` $padding_value^ `:` 158*10f8be19SRamkumar Ramachandra // type($padding_value) `)`)? 159*10f8be19SRamkumar Ramachandra // (`outer_dims_perm` `=` $outer_dims_perm^)? 160*10f8be19SRamkumar Ramachandra // `inner_dims_pos` `=` $inner_dims_pos 161*10f8be19SRamkumar Ramachandra // `inner_tiles` `=` 162*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($inner_tiles, 163*10f8be19SRamkumar Ramachandra // $static_inner_tiles) `into` $dest 164*10f8be19SRamkumar Ramachandra // attr-dict `:` type($source) `->` 165*10f8be19SRamkumar Ramachandra // type($dest) 166*10f8be19SRamkumar Ramachandra // operation ::= `tensor.unpack` $source 167*10f8be19SRamkumar Ramachandra // (`outer_dims_perm` `=` $outer_dims_perm^)? 168*10f8be19SRamkumar Ramachandra // `inner_dims_pos` `=` $inner_dims_pos 169*10f8be19SRamkumar Ramachandra // `inner_tiles` `=` 170*10f8be19SRamkumar Ramachandra // custom<DynamicIndexList>($inner_tiles, 171*10f8be19SRamkumar Ramachandra // $static_inner_tiles) `into` $dest 172*10f8be19SRamkumar Ramachandra // attr-dict `:` type($source) `->` 173*10f8be19SRamkumar Ramachandra // type($dest) 174*10f8be19SRamkumar Ramachandra seq(choice('tensor.pack', 'tensor.unpack'), 175*10f8be19SRamkumar Ramachandra field('source', $.value_use), 176*10f8be19SRamkumar Ramachandra field('padding_value', 177*10f8be19SRamkumar Ramachandra optional(seq(token('padding_value'), '(', 178*10f8be19SRamkumar Ramachandra $._value_use_and_type, ')'))), 179*10f8be19SRamkumar Ramachandra field('outer_dims_perm', 180*10f8be19SRamkumar Ramachandra optional($.outer_dims_perm_attr)), 181*10f8be19SRamkumar Ramachandra field('inner_dims_pos', $.inner_dims_pos_attr), 182*10f8be19SRamkumar Ramachandra field('inner_tiles', $.inner_tiles_attr), 183*10f8be19SRamkumar Ramachandra token('into'), field('destination', $.value_use), 184*10f8be19SRamkumar Ramachandra field('return', $._function_type_annotation)), 185*10f8be19SRamkumar Ramachandra 186*10f8be19SRamkumar Ramachandra // operation ::= `tensor.generate` $dynamicExtents $body 187*10f8be19SRamkumar Ramachandra // attr-dict `:` type($result) 188*10f8be19SRamkumar Ramachandra seq('tensor.generate', 189*10f8be19SRamkumar Ramachandra field('dynamicExtents', $._value_use_list), 190*10f8be19SRamkumar Ramachandra field('body', $.region), 191*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 192*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 193*10f8be19SRamkumar Ramachandra 194*10f8be19SRamkumar Ramachandra // operation ::= `tensor.rank` $tensor attr-dict `:` 195*10f8be19SRamkumar Ramachandra // type($tensor) operation ::= `tensor.yield` $value 196*10f8be19SRamkumar Ramachandra // attr-dict `:` type($value) 197*10f8be19SRamkumar Ramachandra seq(choice('tensor.rank', 'tensor.yield'), 198*10f8be19SRamkumar Ramachandra field('tensor', $.value_use), 199*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 200*10f8be19SRamkumar Ramachandra field('return', $._type_annotation))) 201*10f8be19SRamkumar Ramachandra} 202