1 ================================================================================
3 ================================================================================
4 func.func @map_no_inputs(%init: tensor<64xf32>) -> tensor<64xf32> {
6 outs(%init:tensor<64xf32>)
8 %0 = arith.constant 0.0: f32
11 func.return %add : tensor<64xf32>
13 --------------------------------------------------------------------------------
28 (type_list_attr_parens
65 (float_type)))))))))))
74 (float_type))))))))))))))
76 ================================================================================
77 linalg.map with ins and outs
78 ================================================================================
79 func.func @map_binary_memref(%lhs: memref<64xf32>, %rhs: memref<64xf32>,
80 %init: memref<64xf32>) {
82 ins(%lhs, %rhs: memref<64xf32>, memref<64xf32>)
83 outs(%init:memref<64xf32>)
84 (%lhs_elem: f32, %rhs_elem: f32) {
85 %0 = arith.addf %lhs_elem, %rhs_elem: f32
90 --------------------------------------------------------------------------------
166 (float_type)))))))))))
169 (func_dialect)))))))))
171 ================================================================================
172 linalg.generic with attribute dictionary
173 ================================================================================
174 func.func @gather_like(
175 %arg0 : tensor<?x?xf32> {bufferization.writable = false},
176 %arg1 : tensor<?xi32> {bufferization.writable = false},
177 %arg2 : tensor<?x?xf32> {bufferization.writable = true})
180 %0 = linalg.generic {
181 indexing_maps = [affine_map<(d0, d1) -> (d0)>,
182 affine_map<(d0, d1) -> (d0, d1)>],
183 iterator_types = ["parallel", "parallel"]}
184 ins(%arg1 : tensor<?xi32>) outs(%arg2 : tensor<?x?xf32>) {
185 ^bb0(%arg3: i32, %arg4 : f32):
186 %iv1 = linalg.index 1 : index
187 %1 = arith.index_cast %arg3: i32 to index
188 %2 = tensor.extract %arg0[%1, %iv1] : tensor<?x?xf32>
189 linalg.yield %2 : f32
191 return %0 : tensor<?x?xf32>
193 --------------------------------------------------------------------------------
208 (dictionary_attribute
220 (dictionary_attribute
232 (dictionary_attribute
238 (type_list_attr_parens
252 (dictionary_attribute
351 (float_type))))))))))))))
353 ================================================================================
354 tensor.collapse_shape and tensor.expand_shape without reassocation
355 ================================================================================
356 func.func @tensor_reshape_zero_dim(%arg0 : tensor<1x1xf32>, %arg1 : tensor<f32>)
357 -> (tensor<f32>, tensor<1x1xf32>) {
358 %0 = tensor.collapse_shape %arg0 [] : tensor<1x1xf32> into tensor<f32>
359 %1 = tensor.expand_shape %0 [] : tensor<f32> into tensor<1x1xf32>
360 return %0, %1 : tensor<f32>, tensor<1x1xf32>
362 --------------------------------------------------------------------------------
383 (type_list_attr_parens
444 (float_type))))))))))))))
446 ================================================================================
447 tensor.collapse_shape with reassocation
448 ================================================================================
449 func.func @legal_collapsing_reshape_dynamic_tensor
450 (%arg0: tensor<?x?x?x4x?xf32>) -> tensor<?x?x?xf32>
452 %0 = tensor.collapse_shape %arg0 [[0], [1], [2, 3, 4]] :
453 tensor<?x?x?x4x?xf32> into tensor<?x?x?xf32>
454 return %0 : tensor<?x?x?xf32>
456 --------------------------------------------------------------------------------
471 (type_list_attr_parens
512 (float_type))))))))))))))
514 ================================================================================
515 tensor.gather and tensor.scatter
516 ================================================================================
517 func.func @gather_scatter(%dest : tensor<4x5x6xf32>, %indices: tensor<1x3x2xindex>,
518 %indices_i32: tensor<1x3x2xi32>) {
519 %gathered = tensor.gather %dest[%indices_i32] gather_dims([1, 2]) unique:
520 (tensor<4x5x6xf32>, tensor<1x3x2xi32>) -> tensor<1x3x4x1x1xf32>
521 %rank_reduced_gathered = tensor.gather %dest[%indices] gather_dims([1, 2]) unique:
522 (tensor<4x5x6xf32>, tensor<1x3x2xindex>) -> tensor<1x3x4xf32>
524 %scattered = tensor.scatter %gathered into %dest[%indices]
525 scatter_dims([1, 2]) unique:
526 (tensor<1x3x4x1x1xf32>, tensor<4x5x6xf32>, tensor<1x3x2xindex>) -> tensor<4x5x6xf32>
527 %rank_reduced_scattered = tensor.scatter %rank_reduced_gathered into %dest[%indices_i32]
528 scatter_dims([1, 2]) unique:
529 (tensor<1x3x4xf32>, tensor<4x5x6xf32>, tensor<1x3x2xi32>) -> tensor<4x5x6xf32>
532 --------------------------------------------------------------------------------
682 (func_dialect)))))))))
684 ================================================================================
686 ================================================================================
687 func.func @slice(%t: tensor<8x16x4xf32>, %idx : index) {
688 %c0 = arith.constant 0 : index
689 %c1 = arith.constant 1 : index
690 %1 = tensor.extract_slice %t[%c0, %c0, %c0][%idx, %idx, %idx][%c1, %c1, %c1]
691 : tensor<8x16x4xf32> to tensor<?x?x?xf32>
692 %2 = tensor.extract_slice %t[0, 2, 0][4, 4, 4][1, 1, 1]
693 : tensor<8x16x4xf32> to tensor<4x4x4xf32>
694 %3 = tensor.extract_slice %t[0, 2, 0][4, 1, 4][1, 1, 1]
695 : tensor<8x16x4xf32> to tensor<4x4xf32>
699 --------------------------------------------------------------------------------
814 (func_dialect)))))))))
816 ================================================================================
818 ================================================================================
819 func.func @insert_slice(
820 %t: tensor<8x16x4xf32>,
821 %td: tensor<8x?x4xf32>,
822 %t2: tensor<16x32x8xf32>,
823 %t3: tensor<4x4xf32>,
826 %c0 = arith.constant 0 : index
827 %c1 = arith.constant 1 : index
828 %1 = tensor.insert_slice %t into %t2[%c0, %c0, %c0][8, 16, 4][%c1, %c1, %c1]
829 : tensor<8x16x4xf32> into tensor<16x32x8xf32>
830 %2 = tensor.insert_slice %t into %t2[%c0, %idx, %c0][8, 16, 4][%c1, 1, %c1]
831 : tensor<8x16x4xf32> into tensor<16x32x8xf32>
832 %3 = tensor.insert_slice %t3 into %t[0, 2, 0][4, 1, 4][1, 1, 1]
833 : tensor<4x4xf32> into tensor<8x16x4xf32>
834 %4 = tensor.insert_slice %td into %t[0, %idx, 0][8, %sz, 4][1, 1, 1]
835 : tensor<8x?x4xf32> into tensor<8x16x4xf32>
839 --------------------------------------------------------------------------------
1005 (func_dialect)))))))))
1007 ================================================================================
1008 tensor.rank, tensor.generate, tensor.yield, tensor.extract
1009 ================================================================================
1010 func.func @extract_from_tensor.generate(%idx: index, %tensor: tensor<*xf32>) -> index {
1011 %size = tensor.rank %tensor : tensor<*xf32>
1012 %0 = tensor.generate %size {
1014 %1 = tensor.dim %tensor, %arg0 : tensor<*xf32>
1015 tensor.yield %1 : index
1017 %1 = tensor.extract %0[%idx] : tensor<?xindex>
1020 --------------------------------------------------------------------------------
1039 (type_list_attr_parens
1113 (index_type))))))))))))
1115 ================================================================================
1117 ================================================================================
1118 func.func @insert(%arg0: f32, %arg1: index, %arg2: tensor<?x?x?xf32>) {
1119 %0 = tensor.insert %arg0 into %arg2[%arg1, %arg1, %arg1] : tensor<?x?x?xf32>
1122 --------------------------------------------------------------------------------
1163 (func_dialect)))))))))
1165 ================================================================================
1166 tensor.from_elements and tensor.reshape
1167 ================================================================================
1168 func.func @tensor.reshape(%t1: tensor<?x10xf32>) -> tensor<2x2x5xf32> {
1169 %two = arith.constant 2 : i64
1170 %five = arith.constant 5 : i64
1171 %shape = tensor.from_elements %two, %two, %five : tensor<3xi64>
1172 %reshaped = tensor.reshape %t1(%shape) : (tensor<?x10xf32>, tensor<3xi64>) -> tensor<2x2x5xf32>
1173 return %reshaped : tensor<2x2x5xf32>
1175 --------------------------------------------------------------------------------
1190 (type_list_attr_parens
1228 (integer_type))))))))
1251 (float_type)))))))))
1260 (float_type))))))))))))))
1262 ================================================================================
1264 ================================================================================
1265 func.func @pad_dynamic(%arg0: tensor<1x2x2x?xf32>, %low: index, %high: index,
1266 %pad_value: f32) -> tensor<6x?x?x?xf32> {
1267 %0 = tensor.pad %arg0 low[2, %low, 3, 3] high[3, 3, %high, 2] {
1268 ^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index):
1269 tensor.yield %pad_value : f32
1270 } : tensor<1x2x2x?xf32> to tensor<6x?x?x?xf32>
1271 return %0 : tensor<6x?x?x?xf32>
1274 func.func @pad_nofold_same_static_shape(%arg0: tensor<5x6xf32>, %a: index)
1275 -> tensor<5x6xf32> {
1276 %cst = arith.constant 0.000000e+00 : f32
1277 %0 = tensor.pad %arg0 nofold low[%a, 0] high[0, %a] {
1278 ^bb0(%arg1: index, %arg2: index):
1279 tensor.yield %cst : f32
1280 } : tensor<5x6xf32> to tensor<5x6xf32>
1281 return %0 : tensor<5x6xf32>
1283 --------------------------------------------------------------------------------
1310 (type_list_attr_parens
1378 (float_type)))))))))))))
1395 (type_list_attr_parens
1461 (float_type))))))))))))))
1463 ================================================================================
1465 ================================================================================
1466 func.func @test_splat_op(%s : f32) {
1467 %v = tensor.splat %s : tensor<8xf32>
1470 --------------------------------------------------------------------------------
1497 (func_dialect)))))))))
1499 ================================================================================
1501 ================================================================================
1502 func.func @tensor_reshape(%unranked: tensor<*xf32>, %shape: tensor<1xi32>) {
1503 %dyn_vec = tensor.reshape %unranked(%shape)
1504 : (tensor<*xf32>, tensor<1xi32>) -> tensor<?xf32>
1507 --------------------------------------------------------------------------------
1551 (float_type)))))))))
1554 (func_dialect)))))))))
1556 ================================================================================
1557 tensor.pack and tensor.unpack
1558 ================================================================================
1559 func.func @pack_nc_to_ncnc(%source: tensor<128x256xf32>, %dest: tensor<4x16x32x16xf32>) -> tensor<128x256xf32> {
1560 %0 = tensor.pack %source inner_dims_pos = [0, 1] inner_tiles = [32, 16] into %dest : tensor<128x256xf32> -> tensor<4x16x32x16xf32>
1561 %1 = tensor.empty() : tensor<128x256xf32>
1562 %2 = tensor.unpack %0 inner_dims_pos = [0, 1] inner_tiles = [32, 16] into %1 : tensor<4x16x32x16xf32> -> tensor<128x256xf32>
1563 return %2 : tensor<128x256xf32>
1565 --------------------------------------------------------------------------------
1586 (type_list_attr_parens
1600 (inner_dims_pos_attr
1617 (float_type)))))))))
1634 (inner_dims_pos_attr
1651 (float_type)))))))))
1660 (float_type))))))))))))))
1662 ================================================================================
1663 memref.alloc, memref.cast, and memref.copy
1664 ================================================================================
1665 func.func @memref_copy() {
1666 %0 = memref.alloc() : memref<2xf32>
1667 %1 = memref.cast %0 : memref<2xf32> to memref<*xf32>
1668 %2 = memref.alloc() : memref<2xf32>
1669 %3 = memref.cast %0 : memref<2xf32> to memref<*xf32>
1670 memref.copy %1, %3 : memref<*xf32> to memref<*xf32>
1673 --------------------------------------------------------------------------------
1752 (func_dialect)))))))))
1754 ================================================================================
1755 memref.expand_shape and memref.collapse_shape
1756 ================================================================================
1757 func.func @expand_collapse_shape_dynamic(%arg0: memref<?x?x?xf32>,
1758 %arg1: memref<?x?x?xf32, strided<[?, ?, 1], offset: 0>>,
1759 %arg2: memref<?x?x?xf32, strided<[?, ?, 1], offset: ?>>,
1760 %arg3: memref<?x42xf32, strided<[42, 1], offset: 0>>) {
1761 %0 = memref.collapse_shape %arg0 [[0, 1], [2]] :
1762 memref<?x?x?xf32> into memref<?x?xf32>
1763 %r0 = memref.expand_shape %0 [[0, 1], [2]] :
1764 memref<?x?xf32> into memref<?x4x?xf32>
1765 %1 = memref.collapse_shape %arg1 [[0, 1], [2]] :
1766 memref<?x?x?xf32, strided<[?, ?, 1], offset: 0>> into
1767 memref<?x?xf32, strided<[?, 1], offset: 0>>
1768 %r1 = memref.expand_shape %1 [[0, 1], [2]] :
1769 memref<?x?xf32, strided<[?, 1], offset: 0>> into
1770 memref<?x4x?xf32, strided<[?, ?, 1], offset: 0>>
1771 %2 = memref.collapse_shape %arg2 [[0, 1], [2]] :
1772 memref<?x?x?xf32, strided<[?, ?, 1], offset: ?>> into
1773 memref<?x?xf32, strided<[?, 1], offset: ?>>
1774 %r2 = memref.expand_shape %2 [[0, 1], [2]] :
1775 memref<?x?xf32, strided<[?, 1], offset: ?>> into
1776 memref<?x4x?xf32, strided<[?, ?, 1], offset: ?>>
1777 %3 = memref.collapse_shape %arg3 [[0, 1]] :
1778 memref<?x42xf32, strided<[42, 1], offset: 0>> into
1779 memref<?xf32, strided<[1]>>
1780 %r3 = memref.expand_shape %3 [[0, 1]] :
1781 memref<?xf32, strided<[1]>> into memref<?x42xf32>
1784 --------------------------------------------------------------------------------
1807 (integer_literal)))))))
1816 (strided_layout))))))
1826 (integer_literal))))))))
1893 (integer_literal)))))))
1902 (integer_literal))))))))))
1923 (integer_literal)))))))
1932 (integer_literal))))))))))
1952 (strided_layout))))))
1960 (strided_layout)))))))))
1980 (strided_layout))))))
1988 (strided_layout)))))))))
2007 (integer_literal)))))))
2015 (strided_layout)))))))))
2033 (strided_layout))))))
2041 (func_dialect)))))))))
2043 ================================================================================
2045 ================================================================================
2046 func.func @memref_realloc_sd(%src : memref<2xf32>, %d : index) -> memref<?xf32>{
2047 %0 = memref.realloc %src(%d) : memref<2xf32> to memref<?xf32>
2048 return %0 : memref<?xf32>
2050 --------------------------------------------------------------------------------
2069 (type_list_attr_parens
2102 (float_type))))))))))))))
2104 ================================================================================
2106 ================================================================================
2107 func.func @prefetch_locality_hint(%i : index) {
2108 %0 = memref.alloc() : memref<10xf32>
2109 memref.prefetch %0[%i], read, locality<3>, data : memref<10xf32>
2112 --------------------------------------------------------------------------------
2152 (func_dialect)))))))))
2154 ================================================================================
2156 ================================================================================
2157 func.func @rank(%t : memref<4x4x?xf32>) {
2158 %0 = memref.rank %t : memref<4x4x?xf32>
2161 --------------------------------------------------------------------------------
2190 (func_dialect)))))))))
2192 ================================================================================
2194 ================================================================================
2195 func.func @truncation_spillover(%arg0 : memref<?xi32>) -> index {
2196 %c0 = arith.constant 0 : index
2197 %c1 = arith.constant 1 : index
2198 %c2 = arith.constant 2 : index
2199 %c49 = arith.constant 49 : index
2200 %0 = scf.for %arg1 = %c0 to %c2 step %c1 iter_args(%arg2 = %c0) -> index {
2201 %1 = arith.divsi %arg2, %c49 : index
2202 %2 = arith.index_cast %1 : index to i32
2203 memref.store %2, %arg0[%c0] : memref<?xi32>
2204 %3 = arith.addi %arg2, %arg1 : index
2205 scf.yield %3 : index
2207 func.return %0 : index
2209 --------------------------------------------------------------------------------
2224 (type_list_attr_parens
2314 (integer_type))))))))
2331 (index_type)))))))))))
2338 (index_type))))))))))))
2340 ================================================================================
2341 memref.reinterpret_cast
2342 ================================================================================
2343 func.func @memref_reinterpret_cast_static_to_dynamic_sizes(%in: memref<?xf32>)
2344 -> memref<10x?xf32, strided<[?, 1], offset: ?>> {
2345 %out = memref.reinterpret_cast %in to
2346 offset: [1], sizes: [10, 10], strides: [1, 1]
2347 : memref<?xf32> to memref<10x?xf32, strided<[?, 1], offset: ?>>
2348 return %out : memref<10x?xf32, strided<[?, 1], offset: ?>>
2350 --------------------------------------------------------------------------------
2365 (type_list_attr_parens
2373 (strided_layout))))))))
2399 (strided_layout)))))))))
2411 (strided_layout)))))))))))))))
2413 ================================================================================
2415 ================================================================================
2416 func.func @assert(%arg : i1) {
2417 cf.assert %arg, "Some message in case this assertion fails."
2420 --------------------------------------------------------------------------------
2441 (func_dialect)))))))))
2443 ================================================================================
2445 ================================================================================
2446 func.func @signExtendConstantSplat() -> vector<4xi16> {
2447 %c-2 = arith.constant -2 : i8
2448 %splat = vector.splat %c-2 : vector<4xi8>
2449 %ext = arith.extsi %splat : vector<4xi8> to vector<4xi16>
2450 return %ext : vector<4xi16>
2452 --------------------------------------------------------------------------------
2461 (type_list_attr_parens
2488 (integer_type)))))))
2504 (integer_type)))))))
2513 (integer_type)))))))))))))
2515 ================================================================================
2516 arith.cmpi with string parameter
2517 ================================================================================
2518 func.func @notCmpEQ(%arg0: i8, %arg1: i8) -> i1 {
2519 %true = arith.constant true
2520 %cmp = arith.cmpi "eq", %arg0, %arg1 : i8
2521 %ncmp = arith.xori %cmp, %true : i1
2524 --------------------------------------------------------------------------------
2541 (type_list_attr_parens
2580 (integer_type))))))))))))
2582 ================================================================================
2583 bufferization.alloc_tensor
2584 ================================================================================
2585 func.func @test_alloc_tensor_op(%t: tensor<?x5xf32>, %sz: index)
2588 %0 = bufferization.alloc_tensor(%sz) : tensor<?x5xf32>
2589 %1 = bufferization.alloc_tensor() copy(%t) : tensor<?x5xf32>
2590 %2 = bufferization.alloc_tensor() : tensor<5x6xf32>
2591 %3 = bufferization.alloc_tensor(%sz, %sz) : tensor<?x?xf32>
2592 %4 = bufferization.alloc_tensor() copy(%t) {escape = true} : tensor<?x5xf32>
2593 %5 = bufferization.alloc_tensor() copy(%t) {escape = false} : tensor<?x5xf32>
2594 %c100 = arith.constant 100 : index
2595 %6 = bufferization.alloc_tensor() size_hint=%c100 : tensor<100x100xf64, #CSR>
2596 %7 = bufferization.alloc_tensor(%sz) {memory_space = "foo"} : tensor<?xf32>
2597 return %1 : tensor<?x5xf32>
2599 --------------------------------------------------------------------------------
2618 (type_list_attr_parens
2630 (bufferization_dialect
2641 (bufferization_dialect
2652 (bufferization_dialect
2662 (bufferization_dialect
2674 (bufferization_dialect
2677 (dictionary_attribute
2691 (bufferization_dialect
2694 (dictionary_attribute
2717 (bufferization_dialect
2726 (attribute_alias)))))))))
2731 (bufferization_dialect
2734 (dictionary_attribute
2738 (string_literal)))))
2752 (float_type))))))))))))))
2754 ================================================================================
2755 vector.transfer_read and vector.transfer_write
2756 ================================================================================
2757 func.func @vector_transfer_ops(%arg0: memref<?x?xf32>,
2758 %arg1 : memref<?x?xvector<4x3xf32>>,
2759 %arg2 : memref<?x?xvector<4x3xi32>>,
2760 %arg3 : memref<?x?xvector<4x3xindex>>,
2761 %arg4 : memref<?x?x?xf32>) {
2762 %c3 = arith.constant 3 : index
2763 %cst = arith.constant 3.0 : f32
2764 %f0 = arith.constant 0.0 : f32
2765 %c0 = arith.constant 0 : i32
2766 %i0 = arith.constant 0 : index
2767 %i1 = arith.constant 1 : i1
2769 %vf0 = vector.splat %f0 : vector<4x3xf32>
2770 %v0 = vector.splat %c0 : vector<4x3xi32>
2771 %vi0 = vector.splat %i0 : vector<4x3xindex>
2772 %m = arith.constant dense<[0, 0, 1, 0, 1]> : vector<5xi1>
2773 %m2 = vector.splat %i1 : vector<4x5xi1>
2774 %0 = vector.transfer_read %arg0[%c3, %c3], %f0 {permutation_map = affine_map<(d0, d1)->(d0)>} : memref<?x?xf32>, vector<128xf32>
2775 %1 = vector.transfer_read %arg0[%c3, %c3], %f0 {permutation_map = affine_map<(d0, d1)->(d1, d0)>} : memref<?x?xf32>, vector<3x7xf32>
2776 %2 = vector.transfer_read %arg0[%c3, %c3], %cst {permutation_map = affine_map<(d0, d1)->(d0)>} : memref<?x?xf32>, vector<128xf32>
2777 %3 = vector.transfer_read %arg0[%c3, %c3], %cst {permutation_map = affine_map<(d0, d1)->(d1)>} : memref<?x?xf32>, vector<128xf32>
2778 %4 = vector.transfer_read %arg1[%c3, %c3], %vf0 {permutation_map = affine_map<(d0, d1)->(d0, d1)>} : memref<?x?xvector<4x3xf32>>, vector<1x1x4x3xf32>
2779 %5 = vector.transfer_read %arg1[%c3, %c3], %vf0 {in_bounds = [false, true]} : memref<?x?xvector<4x3xf32>>, vector<1x1x4x3xf32>
2780 %6 = vector.transfer_read %arg2[%c3, %c3], %v0 : memref<?x?xvector<4x3xi32>>, vector<5x24xi8>
2781 %7 = vector.transfer_read %arg3[%c3, %c3], %vi0 : memref<?x?xvector<4x3xindex>>, vector<5x48xi8>
2782 %8 = vector.transfer_read %arg0[%c3, %c3], %f0, %m : memref<?x?xf32>, vector<5xf32>
2783 %9 = vector.transfer_read %arg4[%c3, %c3, %c3], %f0, %m2 {permutation_map = affine_map<(d0, d1, d2)->(d1, d0, 0)>} : memref<?x?x?xf32>, vector<5x4x8xf32>
2785 vector.transfer_write %0, %arg0[%c3, %c3] {permutation_map = affine_map<(d0, d1)->(d0)>} : vector<128xf32>, memref<?x?xf32>
2786 vector.transfer_write %1, %arg0[%c3, %c3] {permutation_map = affine_map<(d0, d1)->(d1, d0)>} : vector<3x7xf32>, memref<?x?xf32>
2787 vector.transfer_write %4, %arg1[%c3, %c3] {permutation_map = affine_map<(d0, d1)->(d0, d1)>} : vector<1x1x4x3xf32>, memref<?x?xvector<4x3xf32>>
2788 vector.transfer_write %5, %arg1[%c3, %c3] {in_bounds = [false, false]} : vector<1x1x4x3xf32>, memref<?x?xvector<4x3xf32>>
2789 vector.transfer_write %6, %arg2[%c3, %c3] : vector<5x24xi8>, memref<?x?xvector<4x3xi32>>
2790 vector.transfer_write %7, %arg3[%c3, %c3] : vector<5x48xi8>, memref<?x?xvector<4x3xindex>>
2791 vector.transfer_write %8, %arg0[%c3, %c3], %m : vector<5xf32>, memref<?x?xf32>
2795 --------------------------------------------------------------------------------
2916 (integer_type)))))))
2944 (integer_type)))))))
2955 (integer_type)))))))
2966 (dictionary_attribute
2995 (dictionary_attribute
3025 (dictionary_attribute
3054 (dictionary_attribute
3083 (dictionary_attribute
3115 (dictionary_attribute
3153 (integer_type)))))))
3174 (integer_type)))))))
3207 (dictionary_attribute
3218 (integer_literal)))))))
3237 (dictionary_attribute
3264 (dictionary_attribute
3292 (dictionary_attribute
3313 (float_type)))))))))
3322 (dictionary_attribute
3339 (float_type)))))))))
3358 (integer_type)))))))))
3377 (index_type)))))))))
3398 (func_dialect)))))))))