llvm-project
4042975b - [LV] Support argmin/argmax with strict predicates. (#170223)

Commit
3 days ago
[LV] Support argmin/argmax with strict predicates. (#170223) Extend handleMultiUseReductions to support strict predicates (>, <), matching the first index instead of the last for non-strict predicates. Builds on top of https://github.com/llvm/llvm-project/pull/141431. FindLast reductions with strict predicates are adjusted to compute the correct result as follows: 1. Find the first canonical indices corresponding to partial min/max values, using loop reductions. 2. Find which of the partial min/max values are equal to the overall min/max value. 3. Select among the canonical indices those corresponding to the overall min/max value. 4. Find the first canonical index of overall min/max and scale it back to the original IV using VPDerivedIVRecipe. 5. If the overall min/max equals the starting min/max, the condition in the loop was always false, due to being strict; return the original start value in that case.
Author
Parents
Loading