| Commit message (Collapse) | Author | Age | Files | Lines | 
| ... |  | 
| | 
| 
| 
|  | 
llvm-svn: 36222
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This compiles:
int baz(long long a) { return (short)(((int)(a >>24)) >> 9); }
into:
_baz:
        srwi r2, r3, 1
        extsh r3, r2
        blr
on PPC, instead of:
_baz:
        slwi r2, r3, 8
        srwi r2, r2, 9
        extsh r3, r2
        blr
GCC produces:
_baz:
        srwi r10,r4,24
        insrwi r10,r3,24,0
        srawi r9,r3,24
        srawi r3,r10,9
        extsh r3,r3
        blr
This implements CodeGen/PowerPC/shl_elim.ll
llvm-svn: 36221
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
long live interval that has low usage density.
1. Change order of coalescing to join physical registers with virtual
   registers first before virtual register intervals become too long.
2. Check size and usage density to determine if it's worthwhile to join.
3. If joining is aborted, assign virtual register live interval allocation
   preference field to the physical register.
4. Register allocator should try to allocate to the preferred register
   first (if available) to create identify moves that can be eliminated.
llvm-svn: 36218
 | 
| | 
| 
| 
| 
| 
|  | 
a live interval.
llvm-svn: 36216
 | 
| | 
| 
| 
| 
| 
|  | 
specific register class.
llvm-svn: 36215
 | 
| | 
| 
| 
|  | 
llvm-svn: 36214
 | 
| | 
| 
| 
|  | 
llvm-svn: 36213
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
a chance to hack on it.  This compiles:
int baz(long long a) { return (short)(((int)(a >>24)) >> 9); }
into:
_baz:
        slwi r2, r3, 8
        srwi r2, r2, 9
        extsh r3, r2
        blr
instead of:
_baz:
        srwi r2, r4, 24
        rlwimi r2, r3, 8, 0, 23
        srwi r2, r2, 9
        extsh r3, r2
        blr
This implements CodeGen/PowerPC/sign_ext_inreg1.ll
llvm-svn: 36212
 | 
| | 
| 
| 
| 
| 
|  | 
gets called.
llvm-svn: 36208
 | 
| | 
| 
| 
|  | 
llvm-svn: 36205
 | 
| | 
| 
| 
|  | 
llvm-svn: 36203
 | 
| | 
| 
| 
|  | 
llvm-svn: 36202
 | 
| | 
| 
| 
|  | 
llvm-svn: 36201
 | 
| | 
| 
| 
|  | 
llvm-svn: 36200
 | 
| | 
| 
| 
|  | 
llvm-svn: 36199
 | 
| | 
| 
| 
|  | 
llvm-svn: 36198
 | 
| | 
| 
| 
|  | 
llvm-svn: 36197
 | 
| | 
| 
| 
| 
| 
|  | 
it is defined in.
llvm-svn: 36196
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Also, fixed static case in presence of eax livin. This fixes PR331
PS: Why don't we still have push/pop instructions? :)
llvm-svn: 36195
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
field into SubclassData in Value.  This shrinks GlobalVAlue from 48->40
bytes, Function from 88->76, and GlobalVariable from 76->68.  This trims
4640 bytes off my testcase, reading a bc file without materializing any
functions.
llvm-svn: 36192
 | 
| | 
| 
| 
|  | 
llvm-svn: 36191
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
object is always constant.  As such, evaluate it at compile time instead of storing
it as an ivar in SymbolTableListTraits.  This shrinks every SymbolTableListTraits
ilist by a word, shrinking BasicBlock from 44->40 bytes, Function from 96->88 bytes,
and Module from 60->52 bytes.
llvm-svn: 36189
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
of two.  This shrinkifies Function by 8 bytes (104->96) and Module by 8
bytes (68->60).  On a testcase of mine, this reduces the memory used to
read a module header from 565680b to 561024, a little over 4K.
llvm-svn: 36188
 | 
| | 
| 
| 
|  | 
llvm-svn: 36185
 | 
| | 
| 
| 
|  | 
llvm-svn: 36183
 | 
| | 
| 
| 
| 
| 
|  | 
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070416/047888.html
llvm-svn: 36182
 | 
| | 
| 
| 
|  | 
llvm-svn: 36180
 | 
| | 
| 
| 
|  | 
llvm-svn: 36179
 | 
| | 
| 
| 
| 
| 
|  | 
used because we *do* want to allow nulls in names.
llvm-svn: 36178
 | 
| | 
| 
| 
|  | 
llvm-svn: 36177
 | 
| | 
| 
| 
| 
| 
| 
|  | 
forcing every small argument of every function regardless of attributes or
calling convention to be expanded.
llvm-svn: 36174
 | 
| | 
| 
| 
| 
| 
| 
|  | 
replaced it with a FIXME should have determined what did work.  Then he would have
realized that the code was in fact correct, and would have avoided breaking it.
llvm-svn: 36173
 | 
| | 
| 
| 
|  | 
llvm-svn: 36159
 | 
| | 
| 
| 
|  | 
llvm-svn: 36158
 | 
| | 
| 
| 
|  | 
llvm-svn: 36157
 | 
| | 
| 
| 
|  | 
llvm-svn: 36156
 | 
| | 
| 
| 
| 
| 
|  | 
Thanks, Chris.
llvm-svn: 36155
 | 
| | 
| 
| 
| 
| 
|  | 
function passes.
llvm-svn: 36154
 | 
| | 
| 
| 
| 
| 
|  | 
pass required by one of pass managed by the manager.
llvm-svn: 36153
 | 
| | 
| 
| 
| 
| 
|  | 
target for tabs checking.
llvm-svn: 36146
 | 
| | 
| 
| 
|  | 
llvm-svn: 36144
 | 
| | 
| 
| 
|  | 
llvm-svn: 36143
 | 
| | 
| 
| 
| 
| 
|  | 
Thanks, Chris.
llvm-svn: 36139
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Subtarget option names must be given in lower case in order to be
recognized. Fixes test/CodeGen/Alpha/ctlz.ll
llvm-svn: 36125
 | 
| | 
| 
| 
|  | 
llvm-svn: 36123
 | 
| | 
| 
| 
|  | 
llvm-svn: 36122
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Use the new parameter on Function::getIntrinsicID to identify cases where
a function is being called with an "llvm." name but it isn't actually an
intrinsic. In such cases generate an error.
llvm-svn: 36121
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Don't assert everytime an intrinsic name isn't recognized. Instead, make
the assert optional when callin getIntrinsicID(). This allows the assembler
to handle invalid intrinsic names gracefully.
llvm-svn: 36120
 | 
| | 
| 
| 
|  | 
llvm-svn: 36102
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Fix a div-by-zero bug noticed by APInt. This fixes:
test/Transforms/IndVarsSimplify/exit_value_tests.llx
llvm-svn: 36099
 |