<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/83676>83676</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Missing canonicalization `min(..., 64) ceilDiv 64` to1
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
MaheshRavishankar
</td>
</tr>
</table>
<pre>
I have a use case where I need to canonicalize the following sequence of operations
```
#map = affine_map<(d0) -> (d0 * -64 + 1000, 64)>
#map3 = affine_map<(d0) -> (d0 ceildiv 64)>
%6 = scf.forall (%arg0, %arg1) in (16, 8) shared_outs(%arg2 = %5) -> (tensor<1000x500xi32>) {
%7 = affine.min #map(%arg0)
%11 = affine.apply #map3(%7)
}
```
`%11` is always 1.
I first tried a hack which is the top commit in this branch https://github.com/MaheshRavishankar/llvm-project/tree/aie_pad_pack_hack. This works and gives me the right result.
I tried to solve this properly in the top commit in this branch https://github.com/MaheshRavishankar/llvm-project/tree/aie_pad_pack (the `HEAD^1` in the same commit as the branch above). The issue here is that the for the right way, it is needed to prove that `%arg0` is lower bounded by 0, but I have no way of specifying that without teaching the expr simplification about `scf.forall` op.
Any thoughts @matthias-springer or @Groverkss
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8VE1v6zYQ_DX0ZRGBor6sgw5JHLc5vEvRu7GSViJrSlRJyo776wtSbp5fUxQ9FTAMi9bOzuwOB51T40zUsOKFFYcdrl4a23xDSU7-ghflJM5ntLvW9LfmHSReCBBWR9ChI7hKsgTvMBP14A10OJtZdajVHwReEgxGa3NV8wiOfl9p7gjMAGYhi16Z2TF-YPz5_l3y-2d7FNmEC7DsADgMaqbThAvLXpnY95yJGp5Y9gbxCZh4hqcyByZeIOWcM_EKZc5EzbK3R7Tsv8F1pHSvLl8gijLWu25IBmNR6_A-EwXaMbbcfqYBTc3hv7QMx_tw4CRa6k9m9e6zSEQ4JorikYCn2RnLsteg5KPg_ENlIrAQNbDqZSMDAKGwehCUTLFp0PlIq_6hIE0fK3BZ9O1ek21F1WcFqw7_vJjPwwDHSg7KAeor3hykCTy-9A6Dss6Dt4p6QJDYneEqVSdDTTCINwt0ZpqUDyPzUjloLc6dBOn94lj2zMSRieOovFzbpDMTE8cv_mTiqPVlelqs-Y06z8TRWyImjqjotGB_WrA7n0L3BH4NPa7Gnh3g3MOoLuRg2uxq1Sg9WHKr9n9XsmnwBpzRF9qoLjZYWd827v-rmugUScBK_vPb84EVb9sqNiIOJ_qLCW6TvhPB1lyIiToMgkA5txLEWxwXgv5-be3DPK54CzYOoly86tscFmviHNDDZobot80O2lzJQmvWObzc3iDej3b1cA-R2QTYEAZuoU4Nt5AREeuqvDSrB0_Yye2UgD4WC05Ni1aD6mJ2BCVrbP39PobuZvlxc8_zDQLiKL0DlvMJvZcK3ZNbrJpHsmBsOP8pyLFn5-7Vu77J-jqrcUdNWvE6q0VRlTvZdDkNlShEkad1tc-7tuBpXQ1D1ubU5229U43gIucZF2mRlmmZ1HwQxNt-j1RRmtcs5zSh0klYc2LsuIt7aPZZWZU7jS1pFyNZiJmu25KYECGhbROt0a6jYznXynn3HcUrr6n5ppwLc3sI421grOSTmpnYJ0nymZAx7A5b2JUcvEl3q9XNv_g1tPtq0UjSMXGMIv4MAAD__8eN9ZI">