| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
it wants it emitted to _text/_data.
llvm-svn: 28185
|
| |
|
|
| |
llvm-svn: 28184
|
| |
|
|
|
|
| |
support assemblers that distinguish the two.
llvm-svn: 28183
|
| |
|
|
| |
llvm-svn: 28182
|
| |
|
|
|
|
| |
Domagoj Babic!
llvm-svn: 28181
|
| |
|
|
|
|
|
| |
and is unlikely to change in future releases. This also simplifies the
parsing of the full and major llvm-gcc version numbers in the script.
llvm-svn: 28180
|
| |
|
|
|
|
| |
header.
llvm-svn: 28179
|
| |
|
|
| |
llvm-svn: 28178
|
| |
|
|
| |
llvm-svn: 28177
|
| |
|
|
| |
llvm-svn: 28176
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
short test2(short X, short x) {
int Y = (short)(X+x);
return Y >> 1;
}
to:
_test2:
add r2, r3, r4
extsh r2, r2
srawi r3, r2, 1
blr
instead of:
_test2:
add r2, r3, r4
extsh r2, r2
srwi r2, r2, 1
extsh r3, r2
blr
llvm-svn: 28175
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
_test4:
srawi r3, r3, 16
blr
instead of:
_test4:
srwi r2, r3, 16
extsh r3, r2
blr
for:
short test4(unsigned X) {
return (X >> 16);
}
llvm-svn: 28174
|
| |
|
|
| |
llvm-svn: 28173
|
| |
|
|
| |
llvm-svn: 28172
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
short test4(unsigned X) {
return (X >> 16);
}
to:
_test4:
movl 4(%esp), %eax
sarl $16, %eax
ret
instead of:
_test4:
movl $-65536, %eax
andl 4(%esp), %eax
sarl $16, %eax
ret
llvm-svn: 28171
|
| |
|
|
| |
llvm-svn: 28170
|
| |
|
|
| |
llvm-svn: 28169
|
| |
|
|
| |
llvm-svn: 28168
|
| |
|
|
| |
llvm-svn: 28167
|
| |
|
|
|
|
| |
then so is the input sign bit. This fixes mediabench/g721 on X86.
llvm-svn: 28166
|
| |
|
|
|
|
| |
to be only 31.25% dense, rather than 75% dense.
llvm-svn: 28165
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
movw. That is we promote the destination operand to r16. So
%CH = TRUNC_R16_R8 %BP
is emitted as
movw %bp, %cx.
This is incorrect. If %cl is live, it would be clobbered.
Ideally we want to do the opposite, that is emitted it as
movb ??, %ch
But this is not possible since %bp does not have a r8 sub-register.
We are now defining a new register class R16_ which is a subclass of R16
containing only those 16-bit registers that have r8 sub-registers (i.e.
AX - DX). We isel the truncate to two instructions, a MOV16to16_ to copy the
value to the R16_ class, followed by a TRUNC_R16_R8.
Due to bug 770, the register colaescer is not going to coalesce between R16 and
R16_. That will be fixed later so we can eliminate the MOV16to16_. Right now, it
can only be eliminated if we are lucky that source and destination registers are
the same.
llvm-svn: 28164
|
| |
|
|
|
|
|
| |
definition of the User class is available, this fixes the build with some
compiler versions.
llvm-svn: 28163
|
| |
|
|
| |
llvm-svn: 28162
|
| |
|
|
| |
llvm-svn: 28161
|
| |
|
|
| |
llvm-svn: 28160
|
| |
|
|
|
|
| |
Change test to be a positive test instead of a negative test
llvm-svn: 28159
|
| |
|
|
| |
llvm-svn: 28158
|
| |
|
|
|
|
| |
without explicit permission.
llvm-svn: 28157
|
| |
|
|
|
|
|
|
| |
still a couple missed optimizations, but we now generate all the possible
rlwimis for multiple inserts into the same bitfield. More regression tests
to come.
llvm-svn: 28156
|
| |
|
|
|
|
|
| |
to handle all kinds of stuff, including silly things like:
sextinreg(setcc,i16) -> setcc.
llvm-svn: 28155
|
| |
|
|
| |
llvm-svn: 28154
|
| |
|
|
|
|
| |
not a legal path on Windows.
llvm-svn: 28153
|
| |
|
|
| |
llvm-svn: 28152
|
| |
|
|
| |
llvm-svn: 28151
|
| |
|
|
| |
llvm-svn: 28150
|
| |
|
|
| |
llvm-svn: 28149
|
| |
|
|
| |
llvm-svn: 28148
|
| |
|
|
| |
llvm-svn: 28147
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
sign_extend_inreg operations. Though ComputeNumSignBits is still rudimentary,
this is enough to compile this:
short test(short X, short x) {
int Y = X+x;
return (Y >> 1);
}
short test2(short X, short x) {
int Y = (short)(X+x);
return Y >> 1;
}
into:
_test:
add r2, r3, r4
srawi r3, r2, 1
blr
_test2:
add r2, r3, r4
extsh r2, r2
srawi r3, r2, 1
blr
instead of:
_test:
add r2, r3, r4
srawi r2, r2, 1
extsh r3, r2
blr
_test2:
add r2, r3, r4
extsh r2, r2
srawi r2, r2, 1
extsh r3, r2
blr
llvm-svn: 28146
|
| |
|
|
|
|
| |
This will certainly be enhanced in the future.
llvm-svn: 28145
|
| |
|
|
| |
llvm-svn: 28144
|
| |
|
|
|
|
|
|
| |
a cast immediately before a PHI node.
This fixes Regression/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll
llvm-svn: 28143
|
| |
|
|
| |
llvm-svn: 28142
|
| |
|
|
|
|
|
|
|
|
| |
Make the "fold (and (cast A), (cast B)) -> (cast (and A, B))" transformation
only apply when both casts really will cause code to be generated. If one or
both doesn't, then this xform doesn't remove a cast.
This fixes Transforms/InstCombine/2006-05-06-Infloop.ll
llvm-svn: 28141
|
| |
|
|
| |
llvm-svn: 28140
|
| |
|
|
| |
llvm-svn: 28139
|
| |
|
|
| |
llvm-svn: 28138
|
| |
|
|
|
|
|
|
|
|
| |
27,28c27
< movzwl %di, %edi
< movl %edi, %ebx
---
> movw %di, %bx
llvm-svn: 28137
|
| |
|
|
| |
llvm-svn: 28136
|