================================================================================
Tensor type of known dimensions
================================================================================
func.func @test_addi_tensor(%arg0 : tensor<8x8xi64>, %arg1 : tensor<8x8xi64>) -> tensor<8x8xi64> {
%0 = arith.addi %arg0, %arg1 : tensor<8x8xi64>
return %0 : tensor<8x8xi64>
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(integer_type)))))
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(integer_type))))))
(func_return
(type_list_attr_parens
(type
(builtin_type
(tensor_type
(dim_list
(integer_type)))))))
(region
(entry_block
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(integer_type))))))))
(operation
(custom_operation
(func_dialect
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(integer_type))))))))))))))
================================================================================
vector type with one dimension
================================================================================
func.func @test_addi_vector(%arg0 : vector<8xi64>, %arg1 : vector<8xi64>) -> vector<8xi64> {
%0 = arith.addi %arg0, %arg1 : vector<8xi64>
return %0 : vector<8xi64>
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))
(func_return
(type_list_attr_parens
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))))
(region
(entry_block
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(custom_operation
(func_dialect
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))))))))
================================================================================
vector type without dimensions
================================================================================
func.func @test_cmpi_vector_0d(%arg0 : vector<i64>, %arg1 : vector<i64>) -> vector<i1> {
%0 = arith.cmpi ult, %arg0, %arg1 : vector<i64>
return %0 : vector<i1>
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(vector_type
(integer_type))))
(value_use)
(type
(builtin_type
(vector_type
(integer_type)))))
(func_return
(type_list_attr_parens
(type
(builtin_type
(vector_type
(integer_type))))))
(region
(entry_block
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(integer_type)))))))
(operation
(custom_operation
(func_dialect
(value_use)
(type
(builtin_type
(vector_type
(integer_type)))))))))))))
================================================================================
vector type with multiple dimensions
================================================================================
func.func @cmpi_equal_vector_operands(%arg0: vector<1x8xi64>)
-> (vector<1x8xi1>, vector<1x8xi1>, vector<1x8xi1>, vector<1x8xi1>,
vector<1x8xi1>, vector<1x8xi1>, vector<1x8xi1>, vector<1x8xi1>,
vector<1x8xi1>, vector<1x8xi1>) {
%0 = arith.cmpi eq, %arg0, %arg0 : vector<1x8xi64>
%1 = arith.cmpi sle, %arg0, %arg0 : vector<1x8xi64>
%2 = arith.cmpi sge, %arg0, %arg0 : vector<1x8xi64>
%3 = arith.cmpi ule, %arg0, %arg0 : vector<1x8xi64>
%4 = arith.cmpi uge, %arg0, %arg0 : vector<1x8xi64>
%5 = arith.cmpi ne, %arg0, %arg0 : vector<1x8xi64>
%6 = arith.cmpi slt, %arg0, %arg0 : vector<1x8xi64>
%7 = arith.cmpi sgt, %arg0, %arg0 : vector<1x8xi64>
%8 = arith.cmpi ult, %arg0, %arg0 : vector<1x8xi64>
%9 = arith.cmpi ugt, %arg0, %arg0 : vector<1x8xi64>
return %0, %1, %2, %3, %4, %5, %6, %7, %8, %9
: vector<1x8xi1>, vector<1x8xi1>, vector<1x8xi1>, vector<1x8xi1>,
vector<1x8xi1>, vector<1x8xi1>, vector<1x8xi1>, vector<1x8xi1>,
vector<1x8xi1>, vector<1x8xi1>
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))
(func_return
(type_list_attr_parens
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))))
(region
(entry_block
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(custom_operation
(func_dialect
(value_use)
(value_use)
(value_use)
(value_use)
(value_use)
(value_use)
(value_use)
(value_use)
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))))))))
================================================================================
Scalable vector type
================================================================================
func.func @test_addi_scalable_vector(%arg0 : vector<[8]xi64>, %arg1 : vector<[8]xi64>)
-> vector<[8]xi64> {
%0 = arith.addi %arg0, %arg1 : vector<[8]xi64>
return %0 : vector<[8]xi64>
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))
(func_return
(type_list_attr_parens
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type))))))
(region
(entry_block
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))
(operation
(custom_operation
(func_dialect
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(integer_type)))))))))))))
================================================================================
!llvm.ptr dialect type
================================================================================
llvm.func @byvalattr(%arg0: !llvm.ptr<i32> {llvm.byval}) {
llvm.return
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(llvm_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(dialect_type
(pretty_dialect_item
(dialect_namespace)
(dialect_ident)
(pretty_dialect_item_body))))
(attribute
(dictionary_attribute
(attribute_entry
(bare_id)))))
(region
(entry_block
(operation
(custom_operation
(llvm_dialect)))))))))
================================================================================
Linalg matmul with memref of unknown dimensions
================================================================================
func.func @matmul(%arg0: memref<?xi8>, %M: index, %N: index, %K: index) {
%c0 = arith.constant 0 : index
%c1 = arith.constant 1 : index
%A = memref.view %arg0[%c0][%M, %K] : memref<?xi8> to memref<?x?xf32>
%B = memref.view %arg0[%c0][%K, %N] : memref<?xi8> to memref<?x?xf32>
%C = memref.view %arg0[%c0][%M, %N] : memref<?xi8> to memref<?x?xf32>
linalg.matmul ins(%A, %B: memref<?x?xf32>, memref<?x?xf32>)
outs(%C: memref<?x?xf32>)
return
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(memref_type
(dim_list
(integer_type)))))
(value_use)
(type
(builtin_type
(index_type)))
(value_use)
(type
(builtin_type
(index_type)))
(value_use)
(type
(builtin_type
(index_type))))
(region
(entry_block
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(integer_literal)
(type
(builtin_type
(index_type))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(integer_literal)
(type
(builtin_type
(index_type))))))
(operation
(op_result
(value_use))
(custom_operation
(memref_dialect
(value_use)
(value_use)
(value_use)
(value_use)
(type
(builtin_type
(memref_type
(dim_list
(integer_type)))))
(type
(builtin_type
(memref_type
(dim_list
(float_type))))))))
(operation
(op_result
(value_use))
(custom_operation
(memref_dialect
(value_use)
(value_use)
(value_use)
(value_use)
(type
(builtin_type
(memref_type
(dim_list
(integer_type)))))
(type
(builtin_type
(memref_type
(dim_list
(float_type))))))))
(operation
(op_result
(value_use))
(custom_operation
(memref_dialect
(value_use)
(value_use)
(value_use)
(value_use)
(type
(builtin_type
(memref_type
(dim_list
(integer_type)))))
(type
(builtin_type
(memref_type
(dim_list
(float_type))))))))
(operation
(custom_operation
(linalg_dialect
(value_use)
(value_use)
(type
(builtin_type
(memref_type
(dim_list
(float_type)))))
(type
(builtin_type
(memref_type
(dim_list
(float_type)))))
(value_use)
(type
(builtin_type
(memref_type
(dim_list
(float_type))))))))
(operation
(custom_operation
(func_dialect)))))))))
================================================================================
Various tensors of dimensions `?` and `*` using tensor.cast
================================================================================
func.func @cast(%arg0: tensor<*xf32>, %arg1 : tensor<4x4xf32>, %arg2: tensor<?x?xf32>) {
%0 = tensor.cast %arg0 : tensor<*xf32> to tensor<?x?xf32>
%1 = tensor.cast %arg1 : tensor<4x4xf32> to tensor<*xf32>
%2 = tensor.cast %arg2 : tensor<?x?xf32> to tensor<4x?xf32>
%3 = tensor.cast %2 : tensor<4x?xf32> to tensor<?x?xf32>
return
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(float_type)))))
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(float_type)))))
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))
(region
(entry_block
(operation
(op_result
(value_use))
(custom_operation
(tensor_dialect
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(float_type)))))
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))))
(operation
(op_result
(value_use))
(custom_operation
(tensor_dialect
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(float_type)))))
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))))
(operation
(op_result
(value_use))
(custom_operation
(tensor_dialect
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(float_type)))))
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))))
(operation
(op_result
(value_use))
(custom_operation
(tensor_dialect
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(float_type)))))
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))))
(operation
(custom_operation
(func_dialect)))))))))
================================================================================
Dense and sparse matrix literals
================================================================================
func.func @fold_extract(%arg0 : index) -> (f32, f16, f16, i32, complex<f32>) {
%const_0 = arith.constant 0 : index
%const_1 = arith.constant 1 : index
%const_3 = arith.constant 3 : index
%0 = arith.constant dense<4.0> : tensor<4xf32>
%ext_1 = tensor.extract %0[%arg0] : tensor<4xf32>
// Fold an extract into a sparse with a sparse index.
%1 = arith.constant sparse<[[0, 0, 0], [1, 1, 1]], [-5.0, -2.0]> : tensor<4x4x4xf16>
%ext_2 = tensor.extract %1[%const_1, %const_1, %const_1] : tensor<4x4x4xf16>
// Fold an extract into a sparse with a non sparse index.
%2 = arith.constant sparse<[[1, 1, 1]], [-2.0]> : tensor<2x2x2xf16>
%ext_3 = tensor.extract %2[%const_0, %const_0, %const_0] : tensor<2x2x2xf16>
// Fold an extract into a dense tensor.
%3 = arith.constant dense<[[[1, -2, 1, 36]], [[0, 2, -1, 64]]]> : tensor<2x1x4xi32>
%ext_4 = tensor.extract %3[%const_1, %const_0, %const_3] : tensor<2x1x4xi32>
// Fold an extract into a complex constant.
%4 = arith.constant dense<(1.2, 2.3)> : tensor<complex<f32>>
%ext_5 = tensor.extract %4[] : tensor<complex<f32>>
return %ext_1, %ext_2, %ext_3, %ext_4, %ext_5 : f32, f16, f16, i32, complex<f32>
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(index_type))))
(func_return
(type_list_attr_parens
(type
(builtin_type
(float_type)))
(type
(builtin_type
(float_type)))
(type
(builtin_type
(float_type)))
(type
(builtin_type
(integer_type)))
(type
(builtin_type
(complex_type
(float_type))))))
(region
(entry_block
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(integer_literal)
(type
(builtin_type
(index_type))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(integer_literal)
(type
(builtin_type
(index_type))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(integer_literal)
(type
(builtin_type
(index_type))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(tensor_literal
(float_literal))
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))))
(operation
(op_result
(value_use))
(custom_operation
(tensor_dialect
(value_use)
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))))
(comment)
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(tensor_literal
(nested_idx_list
(nested_idx_list
(integer_literal)
(integer_literal)
(integer_literal))
(nested_idx_list
(integer_literal)
(integer_literal)
(integer_literal)))
(nested_idx_list
(float_literal)
(float_literal)))
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))))
(operation
(op_result
(value_use))
(custom_operation
(tensor_dialect
(value_use)
(value_use)
(value_use)
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))))
(comment)
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(tensor_literal
(nested_idx_list
(nested_idx_list
(integer_literal)
(integer_literal)
(integer_literal)))
(nested_idx_list
(float_literal)))
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))))
(operation
(op_result
(value_use))
(custom_operation
(tensor_dialect
(value_use)
(value_use)
(value_use)
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(float_type))))))))
(comment)
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(tensor_literal
(nested_idx_list
(nested_idx_list
(nested_idx_list
(integer_literal)
(integer_literal)
(integer_literal)
(integer_literal)))
(nested_idx_list
(nested_idx_list
(integer_literal)
(integer_literal)
(integer_literal)
(integer_literal)))))
(type
(builtin_type
(tensor_type
(dim_list
(integer_type))))))))
(operation
(op_result
(value_use))
(custom_operation
(tensor_dialect
(value_use)
(value_use)
(value_use)
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(integer_type))))))))
(comment)
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(tensor_literal
(complex_literal
(float_literal)
(float_literal)))
(type
(builtin_type
(tensor_type
(dim_list
(complex_type
(float_type)))))))))
(operation
(op_result
(value_use))
(custom_operation
(tensor_dialect
(value_use)
(type
(builtin_type
(tensor_type
(dim_list
(complex_type
(float_type)))))))))
(operation
(custom_operation
(func_dialect
(value_use)
(value_use)
(value_use)
(value_use)
(value_use)
(type
(builtin_type
(float_type)))
(type
(builtin_type
(float_type)))
(type
(builtin_type
(float_type)))
(type
(builtin_type
(integer_type)))
(type
(builtin_type
(complex_type
(float_type)))))))))))))
================================================================================
Empty dense literal
================================================================================
func.func @empty_dense_literal() -> () {
"foo2"(){bar = dense<> : tensor<0xi32>} : () -> ()
return
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list)
(func_return
(type_list_attr_parens))
(region
(entry_block
(operation
(generic_operation
(string_literal)
(attribute
(dictionary_attribute
(attribute_entry
(bare_id)
(attribute_value
(tensor_literal)
(type
(builtin_type
(tensor_type
(dim_list
(integer_type)))))))))
(function_type)))
(operation
(custom_operation
(func_dialect)))))))))
================================================================================
!llvm.struct dialect type
================================================================================
llvm.func @return_s_long() ->
!llvm.struct<"long", (i32, struct<(i32, i1)>, f32, ptr<func<void ()>>)>
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(llvm_dialect
(symbol_ref_id)
(func_arg_list)
(func_return
(type_list_attr_parens
(type
(dialect_type
(pretty_dialect_item
(dialect_namespace)
(dialect_ident)
(pretty_dialect_item_body
(pretty_dialect_item_body)
(pretty_dialect_item_body
(pretty_dialect_item_body))))))))))))
================================================================================
Type alias definition
================================================================================
!baz = i64
!qux = !llvm.struct<(!baz)>
!rec = !llvm.struct<"a", (ptr<struct<"a">>)>
llvm.func @aliases() {
"some.op"() : () -> !llvm.struct<(i32, f32, !qux)>
"some.op"() : () -> !rec
llvm.return
}
--------------------------------------------------------------------------------
(toplevel
(type_alias_def
(type
(builtin_type
(integer_type))))
(type_alias_def
(type
(dialect_type
(pretty_dialect_item
(dialect_namespace)
(dialect_ident)
(pretty_dialect_item_body)))))
(type_alias_def
(type
(dialect_type
(pretty_dialect_item
(dialect_namespace)
(dialect_ident)
(pretty_dialect_item_body
(pretty_dialect_item_body
(pretty_dialect_item_body)))))))
(operation
(custom_operation
(llvm_dialect
(symbol_ref_id)
(func_arg_list)
(region
(entry_block
(operation
(generic_operation
(string_literal)
(function_type
(type
(dialect_type
(pretty_dialect_item
(dialect_namespace)
(dialect_ident)
(pretty_dialect_item_body)))))))
(operation
(generic_operation
(string_literal)
(function_type
(type
(type_alias)))))
(operation
(custom_operation
(llvm_dialect)))))))))
================================================================================
negative constant value_use
================================================================================
func.func @indexCastFold(%arg0: i8) -> index {
%c-2 = arith.constant -2 : i8
%idx = arith.index_cast %c-2 : i8 to index
return %idx : index
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(integer_type))))
(func_return
(type_list_attr_parens
(type
(builtin_type
(index_type)))))
(region
(entry_block
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(integer_literal)
(type
(builtin_type
(integer_type))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(type
(builtin_type
(integer_type)))
(type
(builtin_type
(index_type))))))
(operation
(custom_operation
(func_dialect
(value_use)
(type
(builtin_type
(index_type))))))))))))
================================================================================
inf value_use
================================================================================
func.func @test_maxf(%arg0 : f32) -> f32 {
%c0 = arith.constant 0.0 : f32
%-inf = arith.constant 0xFF800000 : f32
%0 = arith.maximumf %-inf, %arg0 : f32
return %0 : f32
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(float_type))))
(func_return
(type_list_attr_parens
(type
(builtin_type
(float_type)))))
(region
(entry_block
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(float_literal)
(type
(builtin_type
(float_type))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(integer_literal)
(type
(builtin_type
(float_type))))))
(operation
(op_result
(value_use))
(custom_operation
(arith_dialect
(value_use)
(value_use)
(type
(builtin_type
(float_type))))))
(operation
(custom_operation
(func_dialect
(value_use)
(type
(builtin_type
(float_type))))))))))))
================================================================================
array literal
================================================================================
func.func @foo(%a : f32) -> vector<1x2xf32> {
%0 = "test_create_broadcast"(%a) {broadcast_dims = array<i64: 0, 1>} : (f32) -> vector<1x2xf32>
return %0: vector<1x2xf32>
}
--------------------------------------------------------------------------------
(toplevel
(operation
(custom_operation
(func_dialect
(symbol_ref_id)
(func_arg_list
(value_use)
(type
(builtin_type
(float_type))))
(func_return
(type_list_attr_parens
(type
(builtin_type
(vector_type
(vector_dim_list)
(float_type))))))
(region
(entry_block
(operation
(op_result
(value_use))
(generic_operation
(string_literal)
(value_use)
(attribute
(dictionary_attribute
(attribute_entry
(bare_id)
(attribute_value
(array_literal
(type
(builtin_type
(integer_type)))
(integer_literal)
(integer_literal))))))
(function_type
(type
(builtin_type
(float_type)))
(type
(builtin_type
(vector_type
(vector_dim_list)
(float_type)))))))
(operation
(custom_operation
(func_dialect
(value_use)
(type
(builtin_type
(vector_type
(vector_dim_list)
(float_type)))))))))))))