| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
The current implementation generates stack loads/stores, which are
really just mov instructions from/to "special" registers.  This may
not be the most efficient implementation, compared to an approach where
the stack registers are directly folded into instructions, but this is
easier to implement and I have yet to see a case where ptxas is unable
to see through this kind of register usage and know what is really
going on.
llvm-svn: 133443
 | 
| | 
| 
| 
| 
| 
|  | 
with 32bit values.
llvm-svn: 133439
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Change PHINodes to store simple pointers to their incoming basic blocks,
instead of full-blown Uses.
Note that this loses an optimization in SplitCriticalEdge(), because we
can no longer walk the use list of a BasicBlock to find phi nodes. See
the comment I removed starting "However, the foreach loop is slow for
blocks with lots of predecessors".
Extend replaceAllUsesWith() on a BasicBlock to also update any phi
nodes in the block's successors. This mimics what would have happened
when PHINodes were proper Users of their incoming blocks. (Note that
this only works if OldBB->replaceAllUsesWith(NewBB) is called when
OldBB still has a terminator instruction, so it still has some
successors.)
llvm-svn: 133435
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Change various bits of code to make better use of the existing PHINode
API, to insulate them from forthcoming changes in how PHINodes store
their operands.
llvm-svn: 133434
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
I don't think the AugmentedUse struct buys us much, either in
correctness or in ease of use. Ditch it, and simplify Use::getUser() and
User::allocHungoffUses().
llvm-svn: 133433
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
* Don't introduce a duplicated bb in the CFG
* When making a branch unconditional, clear the PredCond array so that it
  is really unconditional.
llvm-svn: 133432
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
dragonegg buildbots back to life.  Original commit message:
Teach early dup how to duplicate basic blocks with one successor and only phi instructions
into more complex blocks.
llvm-svn: 133430
 | 
| | 
| 
| 
| 
| 
| 
|  | 
source vector type is to be split while the target vector is to be promoted.
(eg: <4 x i64> -> <4 x i8> )
llvm-svn: 133424
 | 
| | 
| 
| 
| 
| 
|  | 
create a overload conflict. Make sure we pick up the llvm one.
llvm-svn: 133416
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
phi instructions
into more complex blocks.
llvm-svn: 133415
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
all over the place in different styles and variants.  Standardize on two
preferred entrypoints: one that takes a StructType and ArrayRef, and one that
takes StructType and varargs.
In cases where there isn't a struct type convenient, we now add a
ConstantStruct::getAnon method (whose name will make more sense after a few
more patches land).  
It would be "really really nice" if the ConstantStruct::get and 
ConstantVector::get methods didn't make temporary std::vectors.
llvm-svn: 133412
 | 
| | 
| 
| 
| 
| 
|  | 
const Constant *.
llvm-svn: 133400
 | 
| | 
| 
| 
| 
| 
|  | 
vector space, reuse types.
llvm-svn: 133389
 | 
| | 
| 
| 
|  | 
llvm-svn: 133388
 | 
| | 
| 
| 
| 
| 
|  | 
instead of scalarizing, and doing an element-by-element truncat.
llvm-svn: 133382
 | 
| | 
| 
| 
| 
| 
| 
|  | 
top level type without a specified number.  This syntax isn't documented
and blocks forward progress.
llvm-svn: 133371
 | 
| | 
| 
| 
|  | 
llvm-svn: 133369
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
top level type without a specified number.  This asmprinter has never
generated this, as you can tell by no tests being updated.  It also isn't
documented.
llvm-svn: 133368
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
making usage
much cleaner.
llvm-svn: 133364
 | 
| | 
| 
| 
|  | 
llvm-svn: 133363
 | 
| | 
| 
| 
|  | 
llvm-svn: 133362
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
from Assembly/Writer.h to being
a private class in AsmWriter.cpp.
llvm-svn: 133361
 | 
| | 
| 
| 
| 
| 
|  | 
removes some gunk from LLVMContext.
llvm-svn: 133360
 | 
| | 
| 
| 
| 
| 
|  | 
temporary std::string for every function being checked.
llvm-svn: 133355
 | 
| | 
| 
| 
|  | 
llvm-svn: 133352
 | 
| | 
| 
| 
|  | 
llvm-svn: 133351
 | 
| | 
| 
| 
|  | 
llvm-svn: 133350
 | 
| | 
| 
| 
|  | 
llvm-svn: 133349
 | 
| | 
| 
| 
|  | 
llvm-svn: 133348
 | 
| | 
| 
| 
|  | 
llvm-svn: 133347
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
In cases such as the attached test, where the case value for a switch
destination is used in a phi node that follows the destination, it
might be better to replace that value with the condition value of the
switch, so that more blocks can be folded away with
TryToSimplifyUncondBranchFromEmptyBlock because there are less
conflicts in the phi node.
llvm-svn: 133344
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
type's bitwidth matches the (allocated) size of the alloca. This severely
pessimizes vector scalar replacement when the only vector type being used is
something like <3 x float> on x86 or ARM whose allocated size matches a
<4 x float>.
I hope to fix some of the flawed assumptions about allocated size throughout
scalar replacement and reenable this in most cases.
llvm-svn: 133338
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
for pre-2.9 bitcode files.  We keep x86 unaligned loads, movnt, crc32, and the
target indep prefetch change.
As usual, updating the testsuite is a PITA.
llvm-svn: 133337
 | 
| | 
| 
| 
| 
| 
|  | 
alloca. Fixes part of <rdar://problem/9580800>.
llvm-svn: 133336
 | 
| | 
| 
| 
| 
| 
|  | 
unless ScalarKind is Vector.
llvm-svn: 133335
 | 
| | 
| 
| 
|  | 
llvm-svn: 133331
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
This slightly changes the GPR allocation order on Darwin where R9 is not
a callee-saved register:
Before: %R0 %R1 %R2 %R3 %R12 %R9 %LR %R4 %R5 %R6 %R8 %R10 %R11
After:  %R0 %R1 %R2 %R3 %R9 %R12 %LR %R4 %R5 %R6 %R8 %R10 %R11
llvm-svn: 133326
 | 
| | 
| 
| 
|  | 
llvm-svn: 133325
 | 
| | 
| 
| 
|  | 
llvm-svn: 133321
 | 
| | 
| 
| 
| 
| 
|  | 
* Make this used only if CFI is used.
llvm-svn: 133319
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
range without a libcall to a new mulo<mode> libcall
that we'd have to create.
Finishes the rest of rdar://9090077 and rdar://9210061
llvm-svn: 133318
 | 
| | 
| 
| 
|  | 
llvm-svn: 133314
 | 
| | 
| 
| 
|  | 
llvm-svn: 133313
 | 
| | 
| 
| 
|  | 
llvm-svn: 133310
 | 
| | 
| 
| 
|  | 
llvm-svn: 133308
 | 
| | 
| 
| 
|  | 
llvm-svn: 133307
 | 
| | 
| 
| 
|  | 
llvm-svn: 133305
 | 
| | 
| 
| 
|  | 
llvm-svn: 133301
 | 
| | 
| 
| 
|  | 
llvm-svn: 133299
 | 
| | 
| 
| 
|  | 
llvm-svn: 133298
 |