brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.4 KiB · fa929c2 Raw
548 lines · plain
1// RUN: mlir-opt -allow-unregistered-dialect %s | mlir-opt -allow-unregistered-dialect -verify-diagnostics | FileCheck %s2 3// CHECK: %[[I64:.*]] =4%i64 = "foo.op"() : () -> (i64)5// CHECK: %[[I32:.*]] =6%i32 = "foo.op"() : () -> (i32)7// CHECK: %[[MEMREF:.*]] =8%memref = "foo.op"() : () -> (memref<1xf64>)9 10// CHECK: test.format_literal_op keyword_$. -> :, = <> () []( ) ? + * {11// CHECK-NEXT: } {foo.some_attr}12test.format_literal_op keyword_$. -> :, = <> () []( ) ? + * {13} {foo.some_attr}14 15// CHECK: test.format_attr_op 1016// CHECK-NOT: {attr17test.format_attr_op 1018 19// CHECK: test.format_opt_attr_op_a(10)20// CHECK-NOT: {opt_attr21test.format_opt_attr_op_a(10)22test.format_opt_attr_op_a23 24// CHECK: test.format_opt_attr_op_b 1025// CHECK-NOT: {opt_attr26test.format_opt_attr_op_b 1027test.format_opt_attr_op_b28 29// CHECK: test.format_symbol_name_attr_op @name30// CHECK-NOT: {attr31test.format_symbol_name_attr_op @name32 33// CHECK: test.format_symbol_name_attr_op @opt_name34// CHECK-NOT: {attr35test.format_symbol_name_attr_op @opt_name36test.format_opt_symbol_name_attr_op37 38// CHECK: test.format_opt_symbol_ref_attr_op @foo39// CHECK: test.format_opt_symbol_ref_attr_op {test.unit}40test.format_opt_symbol_ref_attr_op @foo {test.unit}41test.format_opt_symbol_ref_attr_op {test.unit}42 43// CHECK: test.format_attr_dict_w_keyword attributes {attr = 10 : i64}44test.format_attr_dict_w_keyword attributes {attr = 10 : i64}45 46// CHECK: test.format_attr_dict_w_keyword attributes {attr = 10 : i64, opt_attr = 10 : i64}47test.format_attr_dict_w_keyword attributes {attr = 10 : i64, opt_attr = 10 : i64}48 49// CHECK: test.format_buildable_type_op %[[I64]]50%ignored = test.format_buildable_type_op %i6451 52//===----------------------------------------------------------------------===//53// Format regions54//===----------------------------------------------------------------------===//55 56// CHECK: test.format_region_a_op {57// CHECK-NEXT: test.return58test.format_region_a_op {59  "test.return"() : () -> ()60}61 62// CHECK: test.format_region_b_op {63// CHECK-NEXT: test.return64test.format_region_b_op {65  "test.return"() : () -> ()66}67 68// CHECK: test.format_region_c_op region {69// CHECK-NEXT: test.return70test.format_region_c_op region {71  "test.return"() : () -> ()72}73// CHECK: test.format_region_c_op74// CHECK-NOT: region {75test.format_region_c_op76 77// CHECK: test.format_variadic_region_a_op {78// CHECK-NEXT: test.return79// CHECK-NEXT: }, {80// CHECK-NEXT: test.return81// CHECK-NEXT: }82test.format_variadic_region_a_op {83  "test.return"() : () -> ()84}, {85  "test.return"() : () -> ()86}87// CHECK: test.format_variadic_region_b_op {88// CHECK-NEXT: test.return89// CHECK-NEXT: }, {90// CHECK-NEXT: test.return91// CHECK-NEXT: } found_regions92test.format_variadic_region_b_op {93  "test.return"() : () -> ()94}, {95  "test.return"() : () -> ()96} found_regions97// CHECK: test.format_variadic_region_b_op98// CHECK-NOT: {99// CHECK-NOT: found_regions100test.format_variadic_region_b_op101 102// CHECK: test.format_implicit_terminator_region_a_op {103// CHECK-NEXT: }104test.format_implicit_terminator_region_a_op {105  "test.return"() : () -> ()106}107// CHECK: test.format_implicit_terminator_region_a_op {108// CHECK-NEXT: test.return"() {foo.attr109test.format_implicit_terminator_region_a_op {110  "test.return"() {foo.attr} : () -> ()111}112// CHECK: test.format_implicit_terminator_region_a_op {113// CHECK-NEXT: test.return"(%[[I64]]) : (i64)114test.format_implicit_terminator_region_a_op {115  "test.return"(%i64) : (i64) -> ()116}117 118//===----------------------------------------------------------------------===//119// Format results120//===----------------------------------------------------------------------===//121 122// CHECK: test.format_result_a_op memref<1xf64>123%ignored_a:2 = test.format_result_a_op memref<1xf64>124 125// CHECK: test.format_result_b_op i64, memref<1xf64>126%ignored_b:2 = test.format_result_b_op i64, memref<1xf64>127 128// CHECK: test.format_result_c_op (i64) -> memref<1xf64>129%ignored_c:2 = test.format_result_c_op (i64) -> memref<1xf64>130 131// CHECK: test.format_variadic_result : i64, i64, i64132%ignored_v:3 = test.format_variadic_result : i64, i64, i64133 134// CHECK: test.format_multiple_variadic_results : (i64, i64, i64), (i32, i32)135%ignored_mv:5 = test.format_multiple_variadic_results : (i64, i64, i64), (i32, i32)136 137//===----------------------------------------------------------------------===//138// Format operands139//===----------------------------------------------------------------------===//140 141// CHECK: test.format_operand_a_op %[[I64]], %[[MEMREF]] : i64, memref<1xf64>142test.format_operand_a_op %i64, %memref : i64, memref<1xf64>143 144// CHECK: test.format_operand_b_op %[[I64]], %[[MEMREF]] : memref<1xf64>145test.format_operand_b_op %i64, %memref : memref<1xf64>146 147// CHECK: test.format_operand_c_op %[[I64]], %[[MEMREF]] : i64, memref<1xf64>148test.format_operand_c_op %i64, %memref : i64, memref<1xf64>149 150// CHECK: test.format_operand_d_op %[[I64]], %[[MEMREF]] : memref<1xf64>151test.format_operand_d_op %i64, %memref : memref<1xf64>152 153// CHECK: test.format_operand_e_op %[[I64]], %[[MEMREF]] : i64, memref<1xf64>154test.format_operand_e_op %i64, %memref : i64, memref<1xf64>155 156// CHECK: test.format_variadic_operand %[[I64]], %[[I64]], %[[I64]] : i64, i64, i64157test.format_variadic_operand %i64, %i64, %i64 : i64, i64, i64158 159// CHECK: test.format_variadic_of_variadic_operand (%[[I64]], %[[I64]]), (), (%[[I64]]) : (i64, i64), (), (i64)160test.format_variadic_of_variadic_operand (%i64, %i64), (), (%i64) : (i64, i64), (), (i64)161 162// CHECK: test.format_multiple_variadic_operands (%[[I64]], %[[I64]], %[[I64]]), (%[[I64]], %[[I32]] : i64, i32)163test.format_multiple_variadic_operands (%i64, %i64, %i64), (%i64, %i32 : i64, i32)164 165//===----------------------------------------------------------------------===//166// Format successors167//===----------------------------------------------------------------------===//168 169"foo.successor_test_region"() ({170  ^bb0:171    // CHECK: test.format_successor_a_op ^bb1 {attr}172    test.format_successor_a_op ^bb1 {attr}173 174  ^bb1:175    // CHECK: test.format_successor_a_op ^bb1, ^bb2 {attr}176    test.format_successor_a_op ^bb1, ^bb2 {attr}177 178  ^bb2:179    // CHECK: test.format_successor_a_op {attr}180    test.format_successor_a_op {attr}181 182}) { arg_names = ["i", "j", "k"] } : () -> ()183 184//===----------------------------------------------------------------------===//185// Format optional attributes186//===----------------------------------------------------------------------===//187 188// CHECK: test.format_optional_unit_attribute is_optional189test.format_optional_unit_attribute is_optional190 191// CHECK: test.format_optional_unit_attribute192// CHECK-NOT: is_optional193test.format_optional_unit_attribute194 195// CHECK: test.format_optional_unit_attribute_no_elide unit196test.format_optional_unit_attribute_no_elide unit197 198// CHECK: test.format_optional_unit_property is_optional199test.format_optional_unit_property is_optional200 201// CHECK: test.format_optional_unit_property202// CHECK-NOT: is_optional203test.format_optional_unit_property204 205// CHECK: test.format_optional_unit_property_no_elide unit206test.format_optional_unit_property_no_elide unit207 208// CHECK: test.format_optional_enum_attr case5209test.format_optional_enum_attr case5210 211// CHECK: test.format_optional_enum_attr212// CHECK-NOT: "case5"213test.format_optional_enum_attr214 215// CHECK: test.format_optional_default_attrs "foo" @foo case10216test.format_optional_default_attrs "foo" @foo case10217 218// CHECK: test.format_optional_default_attr219// CHECK-NOT: "default"220// CHECK-NOT: @default221// CHECK-NOT: case5222test.format_optional_default_attrs "default" @default case5223 224//===----------------------------------------------------------------------===//225// Format optional operands and results226//===----------------------------------------------------------------------===//227 228// CHECK: test.format_optional_operand_result_a_op(%[[I64]] : i64) : i64229test.format_optional_operand_result_a_op(%i64 : i64) : i64230 231// CHECK: test.format_optional_operand_result_a_op( : ) : i64232test.format_optional_operand_result_a_op( : ) : i64233 234// CHECK: test.format_optional_operand_result_a_op(%[[I64]] : i64) :235// CHECK-NOT: i64236test.format_optional_operand_result_a_op(%i64 : i64) :237 238// CHECK: test.format_optional_operand_result_a_op(%[[I64]] : i64) : [%[[I64]], %[[I64]]]239test.format_optional_operand_result_a_op(%i64 : i64) : [%i64, %i64]240 241// CHECK: test.format_optional_operand_result_b_op(%[[I64]] : i64) : i64242test.format_optional_operand_result_b_op(%i64 : i64) : i64243 244// CHECK: test.format_optional_operand_result_b_op : i64245test.format_optional_operand_result_b_op( : ) : i64246 247// CHECK: test.format_optional_operand_result_b_op : i64248test.format_optional_operand_result_b_op : i64249 250//===----------------------------------------------------------------------===//251// Format optional results252//===----------------------------------------------------------------------===//253 254// CHECK: test.format_optional_result_a_op255test.format_optional_result_a_op256 257// CHECK: test.format_optional_result_a_op : i64 -> i64, i64258test.format_optional_result_a_op : i64 -> i64, i64259 260// CHECK: test.format_optional_result_b_op261test.format_optional_result_b_op262 263// CHECK: test.format_optional_result_b_op : i64 -> i64, i64264test.format_optional_result_b_op : i64 -> i64, i64265 266// CHECK: test.format_optional_result_c_op : (i64) -> (i64, i64)267test.format_optional_result_c_op : (i64) -> (i64, i64)268 269//===----------------------------------------------------------------------===//270// Format optional with else271//===----------------------------------------------------------------------===//272 273// CHECK: test.format_optional_else then274test.format_optional_else then275 276// CHECK: test.format_optional_else else277test.format_optional_else else278 279//===----------------------------------------------------------------------===//280// Default-valued properties (ex. optional) elided in property dictionary281// TODO: elisions generate extra spaces282//===----------------------------------------------------------------------===//283 284// CHECK: test.format_optional_prop_dict {{$}}285test.format_optional_prop_dict286 287// CHECK: test.format_optional_prop_dict {{$}}288test.format_optional_prop_dict <{a = [], b = 1 : i32}>289 290// CHECK: test.format_optional_prop_dict {{$}}291test.format_optional_prop_dict <{}>292 293// CHECK: test.format_optional_prop_dict <{a = ["foo"]}>294test.format_optional_prop_dict <{a = ["foo"]}>295 296// CHECK: test.format_optional_prop_dict <{b = 2 : i32}>297test.format_optional_prop_dict <{b = 2 : i32}>298 299// CHECK: test.format_optional_prop_dict <{a = ["foo"], b = 2 : i32}>300test.format_optional_prop_dict <{a = ["foo"], b = 2 : i32}>301 302//===----------------------------------------------------------------------===//303// Format a custom attribute304//===----------------------------------------------------------------------===//305 306// CHECK: test.format_compound_attr <1, !test.smpla, [5, 6]>307test.format_compound_attr <1, !test.smpla, [5, 6]>308 309//-----310 311 312// CHECK:   module attributes {test.nested = #test.cmpnd_nested<nested = <1, !test.smpla, [5, 6]>>} {313module attributes {test.nested = #test.cmpnd_nested<nested = <1, !test.smpla, [5, 6]>>} {314}315 316//-----317 318// Same as above, but fully spelling the inner attribute prefix `#test.cmpnd_a`.319// CHECK:   module attributes {test.nested = #test.cmpnd_nested<nested = <1, !test.smpla, [5, 6]>>} {320module attributes {test.nested = #test.cmpnd_nested<nested = #test.cmpnd_a<1, !test.smpla, [5, 6]>>} {321}322 323// CHECK: test.format_nested_attr <nested = <1, !test.smpla, [5, 6]>>324test.format_nested_attr #test.cmpnd_nested<nested = <1, !test.smpla, [5, 6]>>325 326//-----327 328// Same as above, but fully spelling the inner attribute prefix `#test.cmpnd_a`.329// CHECK: test.format_nested_attr <nested = <1, !test.smpla, [5, 6]>>330test.format_nested_attr #test.cmpnd_nested<nested = #test.cmpnd_a<1, !test.smpla, [5, 6]>>331 332//-----333 334// CHECK: module attributes {test.someAttr = #test.cmpnd_nested_inner<42 <1, !test.smpla, [5, 6]>>}335module attributes {test.someAttr = #test.cmpnd_nested_inner<42 <1, !test.smpla, [5, 6]>>}336{337}338 339//-----340 341// CHECK: module attributes {test.someAttr = #test.cmpnd_nested_outer<i <42 <1, !test.smpla, [5, 6]>>>}342module attributes {test.someAttr = #test.cmpnd_nested_outer<i <42 <1, !test.smpla, [5, 6]>>>}343{344}345 346//-----347 348// CHECK: test.format_cpmd_nested_attr nested <i <42 <1, !test.smpla, [5, 6]>>>349test.format_cpmd_nested_attr nested <i <42 <1, !test.smpla, [5, 6]>>>350 351//-----352 353// CHECK: test.format_qual_cpmd_nested_attr nested #test.cmpnd_nested_outer<i <42 <1, !test.smpla, [5, 6]>>>354test.format_qual_cpmd_nested_attr nested #test.cmpnd_nested_outer<i <42 <1, !test.smpla, [5, 6]>>>355 356//-----357 358// Check the `qualified` directive in the declarative assembly format.359// CHECK: @qualifiedCompoundNestedExplicit(%arg0: !test.cmpnd_nested_outer<i <42 <1, !test.smpla, [5, 6]>>>)360func.func @qualifiedCompoundNestedExplicit(%arg0: !test.cmpnd_nested_outer<i !test.cmpnd_inner<42 <1, !test.smpla, [5, 6]>>>) -> () {361  // Verify that the type prefix is not elided362  // CHECK: format_qual_cpmd_nested_type %arg0 nested !test.cmpnd_nested_outer<i <42 <1, !test.smpla, [5, 6]>>>363  test.format_qual_cpmd_nested_type %arg0 nested !test.cmpnd_nested_outer<i <42 <1, !test.smpla, [5, 6]>>>364  return365}366 367//-----368 369//===----------------------------------------------------------------------===//370// Format custom directives371//===----------------------------------------------------------------------===//372 373// CHECK: test.format_custom_directive_operands %[[I64]], %[[I64]] -> (%[[I64]])374test.format_custom_directive_operands %i64, %i64 -> (%i64)375 376// CHECK: test.format_custom_directive_operands %[[I64]] -> (%[[I64]])377test.format_custom_directive_operands %i64 -> (%i64)378 379// CHECK: test.format_custom_directive_operands_and_types %[[I64]], %[[I64]] -> (%[[I64]]) : i64, i64 -> (i64)380test.format_custom_directive_operands_and_types %i64, %i64 -> (%i64) : i64, i64 -> (i64)381 382// CHECK: test.format_custom_directive_operands_and_types %[[I64]] -> (%[[I64]]) : i64 -> (i64)383test.format_custom_directive_operands_and_types %i64 -> (%i64) : i64 -> (i64)384 385// CHECK: test.format_custom_directive_attributes 54 : i64386test.format_custom_directive_attributes 54 : i64387 388// CHECK: test.format_custom_directive_attributes 54 : i64, 46 : i64389test.format_custom_directive_attributes 54 : i64, 46 : i64390 391// CHECK: test.format_custom_directive_regions {392// CHECK-NEXT: test.return393// CHECK-NEXT: }394test.format_custom_directive_regions {395  "test.return"() : () -> ()396}397 398// CHECK: test.format_custom_directive_regions {399// CHECK-NEXT: test.return400// CHECK-NEXT: }, {401// CHECK-NEXT: test.return402// CHECK-NEXT: }403test.format_custom_directive_regions {404  "test.return"() : () -> ()405}, {406  "test.return"() : () -> ()407}408 409// CHECK: test.format_custom_directive_results : i64, i64 -> (i64)410test.format_custom_directive_results : i64, i64 -> (i64)411 412// CHECK: test.format_custom_directive_results : i64 -> (i64)413test.format_custom_directive_results : i64 -> (i64)414 415// CHECK: test.format_custom_directive_results_with_type_refs : i64, i64 -> (i64) type_refs_capture : i64, i64 -> (i64)416test.format_custom_directive_results_with_type_refs : i64, i64 -> (i64) type_refs_capture : i64, i64 -> (i64)417 418// CHECK: test.format_custom_directive_results_with_type_refs : i64 -> (i64) type_refs_capture : i64 -> (i64)419test.format_custom_directive_results_with_type_refs : i64 -> (i64) type_refs_capture : i64 -> (i64)420 421// CHECK: test.format_custom_directive_with_optional_operand_ref %[[I64]] : 1422test.format_custom_directive_with_optional_operand_ref %i64 : 1423 424// CHECK: test.format_custom_directive_with_optional_operand_ref : 0425test.format_custom_directive_with_optional_operand_ref : 0426 427func.func @foo() {428  // CHECK: test.format_custom_directive_successors ^bb1, ^bb2429  test.format_custom_directive_successors ^bb1, ^bb2430 431^bb1:432  // CHECK: test.format_custom_directive_successors ^bb2433  test.format_custom_directive_successors ^bb2434 435^bb2:436  return437}438 439// CHECK: test.format_custom_directive_spacing "a" "b"440test.format_custom_directive_spacing "a" "b"441 442// CHECK: test.format_literal_following_optional_group(5 : i32) : i32 {a}443test.format_literal_following_optional_group(5 : i32) : i32 {a}444 445func.func @variadic(%a: i32) {446  // CHECK: test.ellipsis(%{{.*}} ...) : i32 ...447  test.ellipsis(%a ...) : i32 ...448  return449}450 451//===----------------------------------------------------------------------===//452// Format trait type inference453//===----------------------------------------------------------------------===//454 455// CHECK: test.format_infer_variadic_type_from_non_variadic %[[I64]], %[[I64]] : i64456test.format_infer_variadic_type_from_non_variadic %i64, %i64 : i64457 458//===----------------------------------------------------------------------===//459// AllTypesMatch type inference460//===----------------------------------------------------------------------===//461 462// CHECK: test.format_all_types_match_var %[[I64]], %[[I64]] : i64463%ignored_res1 = test.format_all_types_match_var %i64, %i64 : i64464 465// CHECK: test.format_all_types_match_attr 1 : i64, %[[I64]]466%ignored_res2 = test.format_all_types_match_attr 1 : i64, %i64467 468//===----------------------------------------------------------------------===//469// TypesMatchWith type inference470//===----------------------------------------------------------------------===//471 472// CHECK: test.format_types_match_var %[[I64]] : i64473%ignored_res3 = test.format_types_match_var %i64 : i64474 475// CHECK: test.format_types_match_variadic %[[I64]], %[[I64]], %[[I64]] : i64, i64, i64476%ignored_res4:3 = test.format_types_match_variadic %i64, %i64, %i64 : i64, i64, i64477 478// CHECK: test.format_types_match_attr 1 : i64479%ignored_res5 = test.format_types_match_attr 1 : i64480 481// CHECK: test.format_types_match_context %[[I64]] : i64482%ignored_res6 = test.format_types_match_context %i64 : i64483 484//===----------------------------------------------------------------------===//485// InferTypeOpInterface type inference486//===----------------------------------------------------------------------===//487 488// CHECK: test.format_infer_type489%ignored_res7a = test.format_infer_type490 491// CHECK: test.format_infer_type2492%ignored_res7b = test.format_infer_type2493 494// CHECK: test.format_infer_type_all_operands_and_types(%[[I64]], %[[I32]]) : i64, i32495%ignored_res8:2 = test.format_infer_type_all_operands_and_types(%i64, %i32) : i64, i32496 497// CHECK: test.format_infer_type_all_types_one_operand(%[[I64]], %[[I32]]) : i64, i32498%ignored_res9:2 = test.format_infer_type_all_types_one_operand(%i64, %i32) : i64, i32499 500// CHECK: test.format_infer_type_all_types_two_operands(%[[I64]], %[[I32]]) (%[[I64]], %[[I32]]) : i64, i32, i64, i32501%ignored_res10:4 = test.format_infer_type_all_types_two_operands(%i64, %i32) (%i64, %i32) : i64, i32, i64, i32502 503// CHECK: test.format_infer_type_all_types(%[[I64]], %[[I32]]) : i64, i32504%ignored_res11:2 = test.format_infer_type_all_types(%i64, %i32) : i64, i32505 506// CHECK: test.format_infer_type_regions507// CHECK-NEXT: ^bb0(%{{.*}}: {{.*}}, %{{.*}}: {{.*}}):508%ignored_res12:2 = test.format_infer_type_regions {509^bb0(%arg0: i32, %arg1: f32):510  "test.terminator"() : () -> ()511}512 513// CHECK: test.format_infer_type_variadic_operands(%[[I32]], %[[I32]] : i32, i32) (%[[I64]], %[[I64]] : i64, i64)514%ignored_res13:4 = test.format_infer_type_variadic_operands(%i32, %i32 : i32, i32) (%i64, %i64 : i64, i64)515 516// CHECK: test.with_properties_and_attr 16 <{rhs = 16 : i64}>517test.with_properties_and_attr 16 <{rhs = 16 : i64}>518 519// CHECK: test.with_properties_and_inferred_type 16 <{packed, rhs = 16 : i64}>520%should_be_i32 = test.with_properties_and_inferred_type 16 <{packed, rhs = 16 : i64}>521// Assert through the verifier that its inferred as i32.522test.format_all_types_match_var %should_be_i32, %i32 : i32523 524// CHECK: test.using_property_in_custom_and_other [1, 4, 20] <{other = 16 : i64}>525test.using_property_in_custom_and_other [1, 4, 20] <{other = 16 : i64}>526 527//===----------------------------------------------------------------------===//528// Check DefaultValuedStrAttr529//===----------------------------------------------------------------------===//530 531// CHECK: test.has_str_value532test.has_str_value {}533 534//===----------------------------------------------------------------------===//535// ElseAnchorOp536//===----------------------------------------------------------------------===//537 538// CHECK-LABEL: @else_anchor_op539func.func @else_anchor_op(%a: !test.else_anchor<?>, %b: !test.else_anchor<5>) {540  // CHECK: test.else_anchor(?) {a = !test.else_anchor_struct<?>}541  test.else_anchor(?) {a = !test.else_anchor_struct<?>}542  // CHECK: test.else_anchor(%{{.*}} : !test.else_anchor<?>) {a = !test.else_anchor_struct<a = 0>}543  test.else_anchor(%a : !test.else_anchor<?>) {a = !test.else_anchor_struct<a = 0>}544  // CHECK: test.else_anchor(%{{.*}} : !test.else_anchor<5>) {a = !test.else_anchor_struct<b = 0>}545  test.else_anchor(%b : !test.else_anchor<5>) {a = !test.else_anchor_struct<b = 0>}546  return547}548