[all-commits] [llvm/llvm-project] 39e602: [InstCombine] try to fold binop with phi operands
Sanjay Patel via All-commits
all-commits at lists.llvm.org
Sat Jan 22 12:01:32 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 39e602b6c4335b2572c74eaf9a666bebde7fd8b5
https://github.com/llvm/llvm-project/commit/39e602b6c4335b2572c74eaf9a666bebde7fd8b5
Author: Sanjay Patel <spatel at rotateright.com>
Date: 2022-01-22 (Sat, 22 Jan 2022)
Changed paths:
M llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
M llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
M llvm/lib/Transforms/InstCombine/InstCombineInternal.h
M llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
M llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
M llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
M llvm/test/Transforms/InstCombine/binop-phi-operands.ll
M llvm/test/Transforms/InstCombine/zext-or-icmp.ll
Log Message:
-----------
[InstCombine] try to fold binop with phi operands
This is an alternate version of D115914 that handles/tests all binary opcodes.
I suspect that we don't see these patterns too often because -simplifycfg
would convert the minimal cases into selects rather than leave them in phi form
(note: instcombine has logic holes for combining the select patterns too though,
so that's another potential patch).
We only create a new binop in a predecessor that unconditionally branches to
the final block.
https://alive2.llvm.org/ce/z/C57M2F
https://alive2.llvm.org/ce/z/WHwAoU (not safe to speculate an sdiv for example)
https://alive2.llvm.org/ce/z/rdVUvW (but it is ok on this path)
Differential Revision: https://reviews.llvm.org/D117110
More information about the All-commits
mailing list