@@ -44,53 +44,48 @@ module {
4444
4545// CHECK-LABEL:   func.func @simple_cf_into_structured_load_2( 
4646// CHECK-SAME:  %[[VAL_0:.*]]: memref<*xi64> {tt.divisibility = 16 : i32}, %[[VAL_1:.*]]: memref<*xi64> {tt.divisibility = 16 : i32}, %[[VAL_2:.*]]: memref<*xf32> {tt.divisibility = 16 : i32}, %[[VAL_3:.*]]: i32, %[[VAL_4:.*]]: i32, %[[VAL_5:.*]]: i32, %[[VAL_6:.*]]: i32, %[[VAL_7:.*]]: i32, %[[VAL_8:.*]]: i32) { 
47- // CHECK-DAG:       %[[VAL_9:.*]] = llvm.mlir.constant(1 : i64) : i64 
48- // CHECK-DAG:       %[[VAL_10:.*]] = llvm.mlir.constant(0 : i64) : i64 
49- // CHECK-DAG:       %[[VAL_11:.*]] = llvm.mlir.undef : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
50- // CHECK-DAG:       %[[VAL_12:.*]] = llvm.mlir.constant(4 : i32) : i32 
51- // CHECK-DAG:       %[[VAL_13:.*]] = arith.constant 0 : index 
52- // CHECK-DAG:       %[[VAL_14:.*]] = llvm.mlir.constant(8 : i32) : i32 
53- // CHECK-DAG:       %[[VAL_15:.*]] = arith.constant 2 : i32 
54- // CHECK-DAG:       %[[VAL_16:.*]] = arith.constant 0 : i32 
55- // CHECK-NOT: separator of consecutive DAGs 
56- // CHECK:           %[[VAL_17:.*]] = memref.cast %[[VAL_2]] : memref<*xf32> to memref<1xf32> 
57- // CHECK:           %[[VAL_18:.*]] = builtin.unrealized_conversion_cast %[[VAL_17]] : memref<1xf32> to !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
58- // CHECK:           %[[VAL_19:.*]] = llvm.extractvalue %[[VAL_18]][0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
59- // CHECK:           %[[VAL_20:.*]] = memref.cast %[[VAL_1]] : memref<*xi64> to memref<1xi64> 
60- // CHECK:           %[[VAL_21:.*]] = builtin.unrealized_conversion_cast %[[VAL_20]] : memref<1xi64> to !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
61- // CHECK:           %[[VAL_22:.*]] = llvm.extractvalue %[[VAL_21]][0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
62- // CHECK:           %[[VAL_23:.*]] = memref.cast %[[VAL_0]] : memref<*xi64> to memref<1xi64> 
63- // CHECK:           %[[VAL_24:.*]] = builtin.unrealized_conversion_cast %[[VAL_23]] : memref<1xi64> to !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
64- // CHECK:           %[[VAL_25:.*]] = llvm.extractvalue %[[VAL_24]][0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
65- // CHECK:           %[[VAL_26:.*]] = arith.remsi %[[VAL_6]], %[[VAL_15]] : i32 
66- // CHECK:           %[[VAL_27:.*]] = arith.cmpi eq, %[[VAL_26]], %[[VAL_16]] : i32 
67- // CHECK:           cf.cond_br %[[VAL_27]], ^bb1, ^bb2 
47+ // CHECK:           %[[VAL_9:.*]] = llvm.mlir.constant(1 : i64) : i64 
48+ // CHECK:           %[[VAL_10:.*]] = llvm.mlir.constant(0 : i64) : i64 
49+ // CHECK:           %[[VAL_11:.*]] = llvm.mlir.undef : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
50+ // CHECK:           %[[VAL_12:.*]] = arith.constant 0 : index 
51+ // CHECK:           %[[VAL_13:.*]] = arith.constant 2 : i32 
52+ // CHECK:           %[[VAL_14:.*]] = arith.constant 0 : i32 
53+ // CHECK:           %[[VAL_15:.*]] = memref.cast %[[VAL_2]] : memref<*xf32> to memref<1xf32> 
54+ // CHECK:           %[[VAL_16:.*]] = builtin.unrealized_conversion_cast %[[VAL_15]] : memref<1xf32> to !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
55+ // CHECK:           %[[VAL_17:.*]] = llvm.extractvalue %[[VAL_16]][0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
56+ // CHECK:           %[[VAL_18:.*]] = memref.cast %[[VAL_1]] : memref<*xi64> to memref<1xi64> 
57+ // CHECK:           %[[VAL_19:.*]] = builtin.unrealized_conversion_cast %[[VAL_18]] : memref<1xi64> to !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
58+ // CHECK:           %[[VAL_20:.*]] = llvm.extractvalue %[[VAL_19]][0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
59+ // CHECK:           %[[VAL_21:.*]] = memref.cast %[[VAL_0]] : memref<*xi64> to memref<1xi64> 
60+ // CHECK:           %[[VAL_22:.*]] = builtin.unrealized_conversion_cast %[[VAL_21]] : memref<1xi64> to !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
61+ // CHECK:           %[[VAL_23:.*]] = llvm.extractvalue %[[VAL_22]][0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
62+ // CHECK:           %[[VAL_24:.*]] = arith.remsi %[[VAL_6]], %[[VAL_13]] : i32 
63+ // CHECK:           %[[VAL_25:.*]] = arith.cmpi eq, %[[VAL_24]], %[[VAL_14]] : i32 
64+ // CHECK:           cf.cond_br %[[VAL_25]], ^bb1, ^bb2 
6865// CHECK:         ^bb1: 
69- // CHECK:           %[[VAL_28 :.*]] = llvm.getelementptr %[[VAL_25 ]][16 ] : (!llvm.ptr) -> !llvm.ptr, i8  
70- // CHECK:           cf.br ^bb3(%[[VAL_28 ]] : !llvm.ptr) 
66+ // CHECK:           %[[VAL_26 :.*]] = llvm.getelementptr %[[VAL_23 ]][2 ] : (!llvm.ptr) -> !llvm.ptr, i64  
67+ // CHECK:           cf.br ^bb3(%[[VAL_26 ]] : !llvm.ptr) 
7168// CHECK:         ^bb2: 
72- // CHECK:           %[[VAL_29:.*]] = llvm.getelementptr %[[VAL_22]][24] : (!llvm.ptr) -> !llvm.ptr, i8 
73- // CHECK:           cf.br ^bb3(%[[VAL_29]] : !llvm.ptr) 
74- // CHECK:         ^bb3(%[[VAL_30:.*]]: !llvm.ptr): 
75- // CHECK:           %[[VAL_31:.*]] = arith.muli %[[VAL_6]], %[[VAL_14]] : i32 
76- // CHECK:           %[[VAL_32:.*]] = llvm.getelementptr %[[VAL_30]]{{\[}}%[[VAL_31]]] : (!llvm.ptr, i32) -> !llvm.ptr, i8 
77- // CHECK:           %[[VAL_33:.*]] = llvm.insertvalue %[[VAL_32]], %[[VAL_11]][0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
78- // CHECK:           %[[VAL_34:.*]] = llvm.insertvalue %[[VAL_32]], %[[VAL_33]][1] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
79- // CHECK:           %[[VAL_35:.*]] = llvm.insertvalue %[[VAL_10]], %[[VAL_34]][2] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
80- // CHECK:           %[[VAL_36:.*]] = llvm.insertvalue %[[VAL_9]], %[[VAL_35]][3, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
81- // CHECK:           %[[VAL_37:.*]] = llvm.insertvalue %[[VAL_9]], %[[VAL_36]][4, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
82- // CHECK:           %[[VAL_38:.*]] = builtin.unrealized_conversion_cast %[[VAL_37]] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> to memref<1xi64> 
83- // CHECK:           %[[VAL_39:.*]] = memref.load %[[VAL_38]]{{\[}}%[[VAL_13]]] : memref<1xi64> 
84- // CHECK:           %[[VAL_40:.*]] = arith.muli %[[VAL_6]], %[[VAL_12]] : i32 
85- // CHECK:           %[[VAL_41:.*]] = llvm.getelementptr %[[VAL_19]]{{\[}}%[[VAL_40]]] : (!llvm.ptr, i32) -> !llvm.ptr, i8 
86- // CHECK:           %[[VAL_42:.*]] = arith.sitofp %[[VAL_39]] : i64 to f32 
87- // CHECK:           %[[VAL_43:.*]] = llvm.insertvalue %[[VAL_41]], %[[VAL_11]][0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
88- // CHECK:           %[[VAL_44:.*]] = llvm.insertvalue %[[VAL_41]], %[[VAL_43]][1] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
89- // CHECK:           %[[VAL_45:.*]] = llvm.insertvalue %[[VAL_10]], %[[VAL_44]][2] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
90- // CHECK:           %[[VAL_46:.*]] = llvm.insertvalue %[[VAL_9]], %[[VAL_45]][3, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
91- // CHECK:           %[[VAL_47:.*]] = llvm.insertvalue %[[VAL_9]], %[[VAL_46]][4, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
92- // CHECK:           %[[VAL_48:.*]] = builtin.unrealized_conversion_cast %[[VAL_47]] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> to memref<1xf32> 
93- // CHECK:           memref.store %[[VAL_42]], %[[VAL_48]]{{\[}}%[[VAL_13]]] : memref<1xf32> 
69+ // CHECK:           %[[VAL_27:.*]] = llvm.getelementptr %[[VAL_20]][3] : (!llvm.ptr) -> !llvm.ptr, i64 
70+ // CHECK:           cf.br ^bb3(%[[VAL_27]] : !llvm.ptr) 
71+ // CHECK:         ^bb3(%[[VAL_28:.*]]: !llvm.ptr): 
72+ // CHECK:           %[[VAL_29:.*]] = llvm.getelementptr %[[VAL_28]]{{\[}}%[[VAL_6]]] : (!llvm.ptr, i32) -> !llvm.ptr, i64 
73+ // CHECK:           %[[VAL_30:.*]] = llvm.insertvalue %[[VAL_29]], %[[VAL_11]][0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
74+ // CHECK:           %[[VAL_31:.*]] = llvm.insertvalue %[[VAL_29]], %[[VAL_30]][1] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
75+ // CHECK:           %[[VAL_32:.*]] = llvm.insertvalue %[[VAL_10]], %[[VAL_31]][2] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
76+ // CHECK:           %[[VAL_33:.*]] = llvm.insertvalue %[[VAL_9]], %[[VAL_32]][3, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
77+ // CHECK:           %[[VAL_34:.*]] = llvm.insertvalue %[[VAL_9]], %[[VAL_33]][4, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
78+ // CHECK:           %[[VAL_35:.*]] = builtin.unrealized_conversion_cast %[[VAL_34]] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> to memref<1xi64> 
79+ // CHECK:           %[[VAL_36:.*]] = memref.load %[[VAL_35]]{{\[}}%[[VAL_12]]] : memref<1xi64> 
80+ // CHECK:           %[[VAL_37:.*]] = llvm.getelementptr %[[VAL_17]]{{\[}}%[[VAL_6]]] : (!llvm.ptr, i32) -> !llvm.ptr, f32 
81+ // CHECK:           %[[VAL_38:.*]] = arith.sitofp %[[VAL_36]] : i64 to f32 
82+ // CHECK:           %[[VAL_39:.*]] = llvm.insertvalue %[[VAL_37]], %[[VAL_11]][0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
83+ // CHECK:           %[[VAL_40:.*]] = llvm.insertvalue %[[VAL_37]], %[[VAL_39]][1] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
84+ // CHECK:           %[[VAL_41:.*]] = llvm.insertvalue %[[VAL_10]], %[[VAL_40]][2] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
85+ // CHECK:           %[[VAL_42:.*]] = llvm.insertvalue %[[VAL_9]], %[[VAL_41]][3, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
86+ // CHECK:           %[[VAL_43:.*]] = llvm.insertvalue %[[VAL_9]], %[[VAL_42]][4, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> 
87+ // CHECK:           %[[VAL_44:.*]] = builtin.unrealized_conversion_cast %[[VAL_43]] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> to memref<1xf32> 
88+ // CHECK:           memref.store %[[VAL_38]], %[[VAL_44]]{{\[}}%[[VAL_12]]] : memref<1xf32> 
9489// CHECK:           return 
9590// CHECK:         } 
9691
0 commit comments