| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 124469
|
| |
|
|
| |
llvm-svn: 123121
|
| |
|
|
| |
llvm-svn: 123061
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X = sext x; x >s c ? X : C+1 --> X = sext x; X <s C+1 ? C+1 : X
X = sext x; x <s c ? X : C-1 --> X = sext x; X >s C-1 ? C-1 : X
X = zext x; x >u c ? X : C+1 --> X = zext x; X <u C+1 ? C+1 : X
X = zext x; x <u c ? X : C-1 --> X = zext x; X >u C-1 ? C-1 : X
X = sext x; x >u c ? X : C+1 --> X = sext x; X <u C+1 ? C+1 : X
X = sext x; x <u c ? X : C-1 --> X = sext x; X >u C-1 ? C-1 : X
Instead of calculating this with mixed types promote all to the
larger type. This enables scalar evolution to analyze this
expression. PR8866
llvm-svn: 123034
|
| |
|
|
| |
llvm-svn: 123033
|
| |
|
|
|
|
| |
sext from i1.
llvm-svn: 122453
|
| |
|
|
|
|
|
|
|
|
|
| |
the form
(x & 2^n) ? 2^m+C : C
we can offset both arms by C to get the "(x & 2^n) ? 2^m : 0" form, optimize the
select to a shift and apply the offset afterwards.
llvm-svn: 121609
|
| |
|
|
|
|
| |
to catch cases where n != m with a shift.
llvm-svn: 121608
|
| |
|
|
| |
llvm-svn: 117510
|
| |
|
|
|
|
| |
this one.
llvm-svn: 108530
|
| |
|
|
| |
llvm-svn: 108436
|
| |
|
|
|
|
|
|
| |
the corresponding or-icmp-and pattern. This has the added benefit of doing
the matching earlier, and thus being less susceptible to being confused by
earlier transforms.
llvm-svn: 108429
|
| |
|
|
|
|
| |
This now passes LIT, nighty test, and llvm-gcc bootstrap on my machine.
llvm-svn: 108422
|
| |
|
|
| |
llvm-svn: 108389
|
| |
|
|
|
|
| |
value into a single larger comparison.
llvm-svn: 108378
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(X >s -1) ? C1 : C2 and (X <s 0) ? C2 : C1
into ((X >>s 31) & (C2 - C1)) + C1, avoiding the conditional.
This optimization could be extended to take non-const C1 and C2 but we better
stay conservative to avoid code size bloat for now.
for
int sel(int n) {
return n >= 0 ? 60 : 100;
}
we now generate
sarl $31, %edi
andl $40, %edi
leal 60(%rdi), %eax
instead of
testl %edi, %edi
movl $60, %ecx
movl $100, %eax
cmovnsl %ecx, %eax
llvm-svn: 107866
|
| |
|
|
|
|
| |
inst simplify. No functionality change.
llvm-svn: 101873
|
| |
|
|
|
|
|
|
| |
handle NaN properly.
Do (X une Y) ? X : Y -> X if one of X and Y is not zero.
llvm-svn: 96955
|
| |
|
|
|
|
| |
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!
llvm-svn: 96223
|
| |
|
|
|
|
|
|
| |
"sext cond" instead of a select. This simplifies some instcombine
code, matches the policy for zext (cond ? 1 : 0 -> zext), and allows
us to generate better code for a testcase on ppc.
llvm-svn: 94339
|
| |
|
|
| |
llvm-svn: 92760
|
| |
|
|
| |
llvm-svn: 92688
|
|
|
llvm-svn: 92687
|