summaryrefslogtreecommitdiff
path: root/test/Transforms/InstCombine/or.ll
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-09-28 21:48:02 +0000
committerChris Lattner <sabre@nondot.org>2004-09-28 21:48:02 +0000
commit955f331a7732876f6c2d7f5f73a337f6af4149f2 (patch)
tree398c3bc22eab75a1850af3f7f390ace002335128 /test/Transforms/InstCombine/or.ll
parent7f12bbbc92611c2fe5d83926a25e544d3dafb849 (diff)
downloadllvm-955f331a7732876f6c2d7f5f73a337f6af4149f2.tar.gz
llvm-955f331a7732876f6c2d7f5f73a337f6af4149f2.tar.bz2
llvm-955f331a7732876f6c2d7f5f73a337f6af4149f2.tar.xz
Fold (and (setcc X, C1), (setcc X, C2))
This is important for several reasons: 1. Benchmarks have lots of code that looks like this (perlbmk in particular): %tmp.2.i = setne int %tmp.0.i, 128 ; <bool> [#uses=1] %tmp.6343 = seteq int %tmp.0.i, 1 ; <bool> [#uses=1] %tmp.63 = and bool %tmp.2.i, %tmp.6343 ; <bool> [#uses=1] we now fold away the setne, a clear improvement. 2. In the more important cases, such as (X >= 10) & (X < 20), we now produce smaller code: (X-10) < 10. 3. Perhaps the nicest effect of this patch is that it really helps out the code generators. In particular, for a 'range test' like the above, instead of generating this on X86 (the difference on PPC is even more pronounced): cmp %EAX, 50 setge %CL cmp %EAX, 100 setl %AL and %CL, %AL cmp %CL, 0 we now generate this: add %EAX, -50 cmp %EAX, 50 Furthermore, this causes setcc's to be folded into branches more often. These combinations trigger dozens of times in the spec benchmarks, particularly in 176.gcc, 186.crafty, 253.perlbmk, 254.gap, & 099.go. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16559 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstCombine/or.ll')
0 files changed, 0 insertions, 0 deletions