diff options
author | Chris Lattner <sabre@nondot.org> | 2006-02-02 06:36:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-02-02 06:36:13 +0000 |
commit | b3ddfc42af8d6f5c4b168797ccbcb6b55cb9397f (patch) | |
tree | 48da9ad1b26d449b44dbdf7fff0f6de17032e086 /lib/CodeGen/SelectionDAG/TargetLowering.cpp | |
parent | 29dd2d7d15aeeb6cf2502e7056f4915ed2ba45e0 (diff) |
add two dag combines:
(C1-X) == C2 --> X == C1-C2
(X+C1) == C2 --> X == C2-C1
This allows us to compile this:
bool %X(int %X) {
%Y = add int %X, 14
%Z = setne int %Y, 12345
ret bool %Z
}
into this:
_X:
cmpl $12331, 4(%esp)
setne %al
movzbl %al, %eax
andl $1, %eax
ret
not this:
_X:
movl $14, %eax
addl 4(%esp), %eax
cmpl $12345, %eax
setne %al
movzbl %al, %eax
andl $1, %eax
ret
Testcase here: Regression/CodeGen/X86/compare-add.ll
nukage of the and coming up next.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25898 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/TargetLowering.cpp')
0 files changed, 0 insertions, 0 deletions