[all-commits] [llvm/llvm-project] 5238e7: [InstCombine] Replace one-use select operand based...
Nikita Popov via All-commits
all-commits at lists.llvm.org
Sat Jan 16 14:29:55 PST 2021
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 5238e7b302ffc40707677960da9d64e872745dac
https://github.com/llvm/llvm-project/commit/5238e7b302ffc40707677960da9d64e872745dac
Author: Nikita Popov <nikita.ppv at gmail.com>
Date: 2021-01-16 (Sat, 16 Jan 2021)
Changed paths:
M llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
M llvm/test/Transforms/InstCombine/select-binop-cmp.ll
M llvm/test/Transforms/InstCombine/select-safe-transforms.ll
Log Message:
-----------
[InstCombine] Replace one-use select operand based on condition
InstCombine already performs a fold where X == Y ? f(X) : Z is
transformed to X == Y ? f(Y) : Z if f(Y) simplifies. However,
if f(X) only has one use, then we can always directly replace the
use inside the instruction. To actually be profitable, limit it to
the case where Y is a non-expr constant.
This could be further extended to replace uses further up a one-use
instruction chain, but for now this only looks one level up.
Among other things, this also subsumes D94860.
Differential Revision: https://reviews.llvm.org/D94862
More information about the All-commits
mailing list