diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2013-07-05 00:31:17 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2013-07-05 00:31:17 +0000 |
| commit | c2a990bc00faf4a7017590d24a8a3d08b0a2640b (patch) | |
| tree | b6854be2856139d97b8739b27b4fa68ecf2ba5db /llvm/lib/Object | |
| parent | 156a2deafe5694fe0f867eb041bd6b6b8ed8ca90 (diff) | |
| download | bcm5719-llvm-c2a990bc00faf4a7017590d24a8a3d08b0a2640b.tar.gz bcm5719-llvm-c2a990bc00faf4a7017590d24a8a3d08b0a2640b.zip | |
InstCombine: (icmp eq B, 0) | (icmp ult A, B) -> (icmp ule A, B-1)
This transform allows us to turn IR that looks like:
%1 = icmp eq i64 %b, 0
%2 = icmp ult i64 %a, %b
%3 = or i1 %1, %2
ret i1 %3
into:
%0 = add i64 %b, -1
%1 = icmp uge i64 %0, %a
ret i1 %1
which means we go from lowering:
cmpq %rsi, %rdi
setb %cl
testq %rsi, %rsi
sete %al
orb %cl, %al
ret
to lowering:
decq %rsi
cmpq %rdi, %rsi
setae %al
ret
llvm-svn: 185677
Diffstat (limited to 'llvm/lib/Object')
0 files changed, 0 insertions, 0 deletions

