1*10f8be19SRamkumar Ramachandra'use strict'; 2*10f8be19SRamkumar Ramachandra 3*10f8be19SRamkumar Ramachandramodule.exports = { 4*10f8be19SRamkumar Ramachandra vector_dialect : $ => prec.right(choice( 5*10f8be19SRamkumar Ramachandra // operation ::= `vector.bitcast` $source attr-dict `:` 6*10f8be19SRamkumar Ramachandra // type($source) `to` type($result) operation ::= 7*10f8be19SRamkumar Ramachandra // `vector.broadcast` $source attr-dict `:` type($source) 8*10f8be19SRamkumar Ramachandra // `to` type($vector) operation ::= `vector.shape_cast` 9*10f8be19SRamkumar Ramachandra // $source attr-dict `:` type($source) `to` type($result) 10*10f8be19SRamkumar Ramachandra // operation ::= `vector.type_cast` $memref attr-dict `:` 11*10f8be19SRamkumar Ramachandra // type($memref) `to` type($result) 12*10f8be19SRamkumar Ramachandra seq(choice('vector.bitcast', 'vector.broadcast', 13*10f8be19SRamkumar Ramachandra 'vector.shape_cast', 'vector.type_cast'), 14*10f8be19SRamkumar Ramachandra 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 ::= `vector.constant_mask` $mask_dim_sizes 19*10f8be19SRamkumar Ramachandra // attr-dict `:` type(results) 20*10f8be19SRamkumar Ramachandra seq('vector.constant_mask', 21*10f8be19SRamkumar Ramachandra field('mask', $._dense_idx_list), 22*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 23*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 24*10f8be19SRamkumar Ramachandra 25*10f8be19SRamkumar Ramachandra // operation ::= `vector.create_mask` $operands attr-dict 26*10f8be19SRamkumar Ramachandra // `:` type(results) 27*10f8be19SRamkumar Ramachandra seq('vector.create_mask', 28*10f8be19SRamkumar Ramachandra field('operands', $._value_use_list), 29*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 30*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 31*10f8be19SRamkumar Ramachandra 32*10f8be19SRamkumar Ramachandra // operation ::= `vector.extract` $vector `` $position 33*10f8be19SRamkumar Ramachandra // attr-dict `:` type($vector) operation ::= `vector.load` 34*10f8be19SRamkumar Ramachandra // $base `[` $indices `]` attr-dict 35*10f8be19SRamkumar Ramachandra // `:` type($base) `,` type($nresult) 36*10f8be19SRamkumar Ramachandra // operation ::= `vector.scalable.extract` $source `[` $pos 37*10f8be19SRamkumar Ramachandra // `]` attr-dict 38*10f8be19SRamkumar Ramachandra // `:` type($res) `from` type($source) 39*10f8be19SRamkumar Ramachandra seq(choice('vector.extract', 'vector.load', 40*10f8be19SRamkumar Ramachandra 'vector.scalable.extract'), 41*10f8be19SRamkumar Ramachandra field('operand', $.value_use), 42*10f8be19SRamkumar Ramachandra field('indices', $._dense_idx_list), 43*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 44*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 45*10f8be19SRamkumar Ramachandra 46*10f8be19SRamkumar Ramachandra // operation ::= `vector.fma` $lhs `,` $rhs `,` $acc 47*10f8be19SRamkumar Ramachandra // attr-dict `:` type($lhs) 48*10f8be19SRamkumar Ramachandra seq('vector.fma', field('lhs', $.value_use), ',', 49*10f8be19SRamkumar Ramachandra field('rhs', $.value_use), ',', 50*10f8be19SRamkumar Ramachandra field('acc', $.value_use), 51*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 52*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 53*10f8be19SRamkumar Ramachandra 54*10f8be19SRamkumar Ramachandra // operation ::= `vector.flat_transpose` $matrix attr-dict 55*10f8be19SRamkumar Ramachandra // `:` type($matrix) `->` type($res) 56*10f8be19SRamkumar Ramachandra seq('vector.flat_transpose', field('matrix', $.value_use), 57*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 58*10f8be19SRamkumar Ramachandra field('return', $._function_type_annotation)), 59*10f8be19SRamkumar Ramachandra 60*10f8be19SRamkumar Ramachandra // operation ::= `vector.insert` $source `,` $dest 61*10f8be19SRamkumar Ramachandra // $position attr-dict 62*10f8be19SRamkumar Ramachandra // `:` type($source) `into` type($dest) 63*10f8be19SRamkumar Ramachandra // operation ::= `vector.scalable.insert` $source `,` $dest 64*10f8be19SRamkumar Ramachandra // `[` $pos `]` attr-dict 65*10f8be19SRamkumar Ramachandra // `:` type($source) `into` type($dest) 66*10f8be19SRamkumar Ramachandra // operation ::= `vector.shuffle` operands $mask attr-dict 67*10f8be19SRamkumar Ramachandra // `:` type(operands) operation ::= `vector.store` 68*10f8be19SRamkumar Ramachandra // $valueToStore `,` $base `[` $indices `]` attr-dict 69*10f8be19SRamkumar Ramachandra // `:` type($base) `,` type($valueToStore) 70*10f8be19SRamkumar Ramachandra seq(choice('vector.insert', 'vector.scalable.insert', 71*10f8be19SRamkumar Ramachandra 'vector.shuffle', 'vector.store'), 72*10f8be19SRamkumar Ramachandra field('source', $.value_use), ',', 73*10f8be19SRamkumar Ramachandra field('destination', $.value_use), 74*10f8be19SRamkumar Ramachandra field('position', $._dense_idx_list), 75*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 76*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 77*10f8be19SRamkumar Ramachandra 78*10f8be19SRamkumar Ramachandra // operation ::= `vector.insert_strided_slice` $source `,` 79*10f8be19SRamkumar Ramachandra // $dest attr-dict 80*10f8be19SRamkumar Ramachandra // `:` type($source) `into` type($dest) 81*10f8be19SRamkumar Ramachandra seq('vector.insert_strided_slice', 82*10f8be19SRamkumar Ramachandra field('source', $.value_use), ',', 83*10f8be19SRamkumar Ramachandra field('destination', $.value_use), 84*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 85*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 86*10f8be19SRamkumar Ramachandra 87*10f8be19SRamkumar Ramachandra // operation ::= `vector.matrix_multiply` $lhs `,` $rhs 88*10f8be19SRamkumar Ramachandra // attr-dict 89*10f8be19SRamkumar Ramachandra // `:` `(` type($lhs) `,` type($rhs) `)` 90*10f8be19SRamkumar Ramachandra // `->` type($res) 91*10f8be19SRamkumar Ramachandra seq('vector.matrix_multiply', field('lhs', $.value_use), 92*10f8be19SRamkumar Ramachandra ',', field('rhs', $.value_use), 93*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 94*10f8be19SRamkumar Ramachandra field('return', $._function_type_annotation)), 95*10f8be19SRamkumar Ramachandra 96*10f8be19SRamkumar Ramachandra // operation ::= `vector.print` $source attr-dict `:` 97*10f8be19SRamkumar Ramachandra // type($source) 98*10f8be19SRamkumar Ramachandra seq(choice('vector.print', 'vector.splat'), 99*10f8be19SRamkumar Ramachandra field('operand', $.value_use), 100*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 101*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 102*10f8be19SRamkumar Ramachandra 103*10f8be19SRamkumar Ramachandra seq('vector.transfer_read', 104*10f8be19SRamkumar Ramachandra field('source', seq($.value_use, $._dense_idx_list)), 105*10f8be19SRamkumar Ramachandra field('paddingMask', repeat(seq(',', $.value_use))), 106*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 107*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 108*10f8be19SRamkumar Ramachandra 109*10f8be19SRamkumar Ramachandra seq('vector.transfer_write', field('vector', $.value_use), 110*10f8be19SRamkumar Ramachandra ',', 111*10f8be19SRamkumar Ramachandra field('source', seq($.value_use, $._dense_idx_list)), 112*10f8be19SRamkumar Ramachandra field('mask', optional(seq(',', $.value_use))), 113*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 114*10f8be19SRamkumar Ramachandra field('return', $._type_annotation)), 115*10f8be19SRamkumar Ramachandra 116*10f8be19SRamkumar Ramachandra // operation ::= `vector.yield` attr-dict ($operands^ `:` 117*10f8be19SRamkumar Ramachandra // type($operands))? 118*10f8be19SRamkumar Ramachandra seq('vector.yield', 119*10f8be19SRamkumar Ramachandra field('attributes', optional($.attribute)), 120*10f8be19SRamkumar Ramachandra field('results', optional($._value_use_type_list))))) 121*10f8be19SRamkumar Ramachandra} 122