@@ -43,4 +43,45 @@ func.func @canonicalize_optimize_sqrt_reciprocal_bf16(%arg0: tensor<1x5x1x1xbf16
4343 return %2 : tensor <1 x5 x1 x1 xbf16 >
4444}
4545#loc0 = loc (" Pow_B" )
46- #loc1 = loc (" Reciprocal_C" )
46+ #loc1 = loc (" Reciprocal_C" )
47+
48+ // -----
49+
50+ // CHECK-LABEL: @reshape_canonicalize_double
51+ func.func @reshape_canonicalize_double (%arg0: tensor <?x10 xf32 >) -> tensor <?x5 xf32 > {
52+ // CHECK: %[[VAL_1:.*]] = tosa.reshape %arg0 {new_shape = array<i64: -1, 5>} {{.*}} loc([[LOC:.*]])
53+ // CHECK: return %[[VAL_1]]
54+ %0 = tosa.reshape %arg0 {new_shape = array<i64 : 5 , -1 >}: (tensor <?x10 xf32 >) -> tensor <5 x?xf32 > loc (#loc0 )
55+ %1 = tosa.reshape %0 {new_shape = array<i64 : -1 , 5 >}: (tensor <5 x?xf32 >) -> tensor <?x5 xf32 > loc (#loc1 )
56+ return %1 : tensor <?x5 xf32 >
57+ }
58+ #loc0 = loc (" reshape1" )
59+ #loc1 = loc (" reshape2" )
60+
61+ // CHECK-DAG: #[[A:.*]] = loc("reshape1")
62+ // CHECK-DAG: #[[B:.*]] = loc("reshape2")
63+ // CHECK-DAG: [[LOC]] = loc(fused[#[[A]], #[[B]]])
64+
65+ // -----
66+
67+ // CHECK-LABEL: @reshape_canonicalize_double_fused_locs
68+ func.func @reshape_canonicalize_double_fused_locs (%arg0: tensor <?x10 xf32 >) -> tensor <?x5 xf32 > {
69+ // CHECK: %[[VAL_1:.*]] = tosa.reshape %arg0 {new_shape = array<i64: -1, 5>} {{.*}} loc([[LOC:.*]])
70+ // CHECK: return %[[VAL_1]]
71+ %0 = tosa.reshape %arg0 {new_shape = array<i64 : 5 , -1 >}: (tensor <?x10 xf32 >) -> tensor <5 x?xf32 > loc (#fused_loc0 )
72+ %1 = tosa.reshape %0 {new_shape = array<i64 : -1 , 5 >}: (tensor <5 x?xf32 >) -> tensor <?x5 xf32 > loc (#fused_loc1 )
73+ return %1 : tensor <?x5 xf32 >
74+ }
75+ #loc0 = loc (" reshape1_1" )
76+ #loc1 = loc (" reshape1_2" )
77+ #loc2 = loc (" reshape2_1" )
78+ #loc3 = loc (" reshape2_2" )
79+
80+ // CHECK-DAG: #[[A:.*]] = loc("reshape1_1")
81+ // CHECK-DAG: #[[B:.*]] = loc("reshape1_2")
82+ // CHECK-DAG: #[[C:.*]] = loc("reshape2_1")
83+ // CHECK-DAG: #[[D:.*]] = loc("reshape2_2")
84+ // CHECK-DAG: [[LOC]] = loc(fused[#[[A]], #[[B]], #[[C]], #[[D]]])
85+
86+ #fused_loc0 = loc (fused [#loc0 , #loc1 ])
87+ #fused_loc1 = loc (fused [#loc2 , #loc3 ])
0 commit comments