80 lines
4.5 KiB
JavaScript
80 lines
4.5 KiB
JavaScript
'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)
|
|
}
|