chelini wrote:

> It was suggested to me by @chelini to only have the `reshape` op to handle 
> all cases and get rid of the `expand_shape` op. We can then implement a 
> canonicalizer to convert when valid. I'm all for this, however want to make 
> sure this is the direction we want to go before I start making test changes. 
> Because there will be a lot. For each test there will be several extra lines 
> for populating the `shape` operand of `reshape`, like (from the test i added 
> in this PR)
> 
> ```
> // CHECK-DAG:   %[[C1:.*]] = arith.constant 1 : index
> // CHECK-DAG:   %[[C0:.*]] = arith.constant 0 : index
> // CHECK-DAG:   %[[DIM0:.*]] = tensor.dim %[[ARG1]], %[[C0]]
> // CHECK-DAG:  %[[DIM1:.*]] = tensor.dim %[[ARG1]], %[[C1]]
> // CHECK-DAG:   %[[C3:.*]] = arith.constant 3 : index
> // CHECK-DAG:   %[[C2:.*]] = arith.constant 2 : index
> // CHECK-DAG:  %[[DIM2:.*]] = tensor.dim %[[ARG1]], %[[C2]]
> // CHECK-DAG:  %[[DIM3:.*]] = tensor.dim %[[ARG1]], %[[C3]]
> // CHECK-NEXT:  %[[INIT_SHAPE:.*]] = tensor.empty() : tensor<4xindex>
> // CHECK-NEXT:  %[[SHAPE0:.*]] = tensor.insert %[[DIM0]] into 
> %[[INIT_SHAPE]][%[[C0]]]
> // CHECK-NEXT:  %[[SHAPE1:.*]] = tensor.insert %[[DIM2]] into 
> %[[SHAPE0]][%[[C1]]]
> // CHECK-NEXT:  %[[SHAPE2:.*]] = tensor.insert %[[DIM1]] into 
> %[[SHAPE1]][%[[C2]]]
> // CHECK-NEXT:  %[[SHAPE3:.*]] = tensor.insert %[[DIM3]] into 
> %[[SHAPE2]][%[[C3]]]
> // CHECK-NEXT:  %[[EXPANDED:.*]] = tensor.reshape %[[PADDED]](%[[SHAPE3]])
> ```
> 
> Since this is a relatively expensive change, I'd like to get opinions before 
> I do it.


Thank you @srcarroll for pushing on this. Indeed, to generalize the lowering, 
we would need to emit a reshape operation, and I think it would be better to 
consistently emit the reshape and then "strength" reduce it to an expanded 
shape when possible. What folks think here @nicolasvasilache and @hanhanW? 
Thanks!

https://github.com/llvm/llvm-project/pull/76003
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to