[InstCombine] fold select-of-zero-or-ones with negated op
authorSanjay Patel <spatel@rotateright.com>
Mon, 28 Feb 2022 17:03:11 +0000 (12:03 -0500)
committerSanjay Patel <spatel@rotateright.com>
Mon, 28 Feb 2022 17:07:49 +0000 (12:07 -0500)
commitf422c5d87142cc1dc65cf7fb15444c2afc810611
treed2f575708a4f9a01ae77ef67a5247dd44505e2e4
parent614f36fd38ec1f0a9f8d12470adec60bf9345c52
[InstCombine] fold select-of-zero-or-ones with negated op

(X u< 2) ? -X : -1 --> sext (X != 0)
(X u> 1) ? -1 : -X --> sext (X != 0)

https://alive2.llvm.org/ce/z/U3y5Bb
https://alive2.llvm.org/ce/z/hgi-4p

This is part of solving:
llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
llvm/test/Transforms/InstCombine/select.ll