'use strict'; module.exports = { linalg_dialect : $ => prec.right(choice( seq(choice( 'linalg.batch_matmul', 'linalg.batch_matmul_transpose_b', 'linalg.batch_matvec', 'linalg.batch_reduce_matmul', 'linalg.broadcast', 'linalg.conv_1d_ncw_fcw', 'linalg.conv_1d_nwc_wcf', 'linalg.conv_1d', 'linalg.conv_2d_nchw_fchw', 'linalg.conv_2d_ngchw_fgchw', 'linalg.conv_2d_nhwc_fhwc', 'linalg.conv_2d_nhwc_hwcf', 'linalg.conv_2d_nhwc_hwcf_q', 'linalg.conv_2d', 'linalg.conv_3d_ndhwc_dhwcf', 'linalg.conv_3d_ndhwc_dhwcf_q', 'linalg.conv_3d', 'linalg.copy', 'linalg.depthwise_conv_1d_nwc_wc', 'linalg.depthwise_conv_1d_nwc_wcm', 'linalg.depthwise_conv_2d_nchw_chw', 'linalg.depthwise_conv_2d_nhwc_hwc', 'linalg.depthwise_conv_2d_nhwc_hwc_q', 'linalg.depthwise_conv_2d_nhwc_hwcm', 'linalg.depthwise_conv_2d_nhwc_hwcm_q', 'linalg.depthwise_conv_3d_ndhwc_dhwc', 'linalg.depthwise_conv_3d_ndhwc_dhwcm', 'linalg.dot', 'linalg.elemwise_binary', 'linalg.elemwise_unary', 'linalg.fill', 'linalg.fill_rng_2d', 'linalg.matmul', 'linalg.matmul_transpose_b', 'linalg.matmul_unsigned', 'linalg.matvec', 'linalg.mmt4d', 'linalg.pooling_nchw_max', 'linalg.pooling_nchw_sum', 'linalg.pooling_ncw_max', 'linalg.pooling_ncw_sum', 'linalg.pooling_ndhwc_max', 'linalg.pooling_ndhwc_min', 'linalg.pooling_ndhwc_sum', 'linalg.pooling_nhwc_max', 'linalg.pooling_nhwc_max_unsigned', 'linalg.pooling_nhwc_min', 'linalg.pooling_nhwc_min_unsigned', 'linalg.pooling_nhwc_sum', 'linalg.pooling_nwc_max', 'linalg.pooling_nwc_max_unsigned', 'linalg.pooling_nwc_min', 'linalg.pooling_nwc_min_unsigned', 'linalg.pooling_nwc_sum', 'linalg.quantized_batch_matmul', 'linalg.quantized_matmul', 'linalg.vecmat'), repeat1($._ins_outs_attributes), field('return', optional($._function_return))), seq('linalg.generic', repeat1($._ins_outs_attributes), field('body', $.region), field('return', optional($._function_return))), // operation ::= `linalg.index` $dim attr-dict `:` // type($result) seq('linalg.index', field('dimension', $.integer_literal), field('attributes', optional($.attribute)), field('return', $._type_annotation)), seq(choice('linalg.map', 'linalg.reduce'), repeat1($._ins_outs_attributes), field('arguments', $.block_arg_list), field('body', $.region), field('return', optional($._function_return))), seq('linalg.yield', field('attributes', optional($.attribute)), field('results', optional($._value_use_type_list))))), _ins_outs_attributes : $ => choice($._ins, $._outs, $.attribute, $._attribute_entry_list), _ins : $ => seq(token('ins'), '(', $._value_use_type_list, ')'), _outs : $ => seq(token('outs'), '(', $._value_use_type_list, ')'), _attribute_entry_list : $ => seq($.bare_attribute_entry, repeat(seq(',', $.bare_attribute_entry))), bare_attribute_entry : $ => seq($.bare_id, '=', $.attribute_value) }