| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
by the number of defs first for it to match the instruction itinerary.
llvm-svn: 117518
|
|
|
|
|
|
|
|
| |
memory, so a MachineMemOperand is useful (not propagated
into the MachineInstr yet). No functional change except
for dump output.
llvm-svn: 117413
|
|
|
|
| |
llvm-svn: 117404
|
|
|
|
|
|
|
| |
declarations in !NDEBUG to avoid -Wunused-variable warnings. Patch by
Matt Beaumont-Gay!
llvm-svn: 117345
|
|
|
|
|
|
| |
Do not count use of sdisel for single call instruction.
llvm-svn: 117316
|
|
|
|
|
|
|
|
| |
order line number info.
Add counters to count how many basic blocks are entirely selected by fastisel.
llvm-svn: 117310
|
|
|
|
|
|
| |
name and prefixed with 'LLVM_'.
llvm-svn: 117203
|
|
|
|
|
|
|
|
| |
potentially null "CalledFunction". Thanks Duncan!
This is needed for indirect calls.
llvm-svn: 117061
|
|
|
|
|
|
|
|
| |
floating point args.
This should be the minimum set of functions that could possibly need it.
llvm-svn: 116978
|
|
|
|
|
|
|
| |
types are no longer Legal on X86, we don't need it.
No functional change. 8499854.
llvm-svn: 116947
|
|
|
|
| |
llvm-svn: 116890
|
|
|
|
|
|
|
| |
setup they require. Use this for ARM/Darwin to rematerialize the base
pointer from the frame pointer when required. rdar://8564268
llvm-svn: 116879
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.
Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.
I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.
llvm-svn: 116820
|
|
|
|
|
|
| |
if any floating point arguments are passed to an external function.
llvm-svn: 116665
|
|
|
|
| |
llvm-svn: 116664
|
|
|
|
|
|
| |
truncate the stack pointer to 32-bits on a 64-bit machine.
llvm-svn: 116169
|
|
|
|
| |
llvm-svn: 115792
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
allow target to correctly compute latency for cases where static scheduling
itineraries isn't sufficient. e.g. variable_ops instructions such as
ARM::ldm.
This also allows target without scheduling itineraries to compute operand
latencies. e.g. X86 can return (approximated) latencies for high latency
instructions such as division.
- Compute operand latencies for those defined by load multiple instructions,
e.g. ldm and those used by store multiple instructions, e.g. stm.
llvm-svn: 115755
|
|
|
|
|
|
|
|
|
| |
of hardware signed integer conversion without
having to do a double cast (uint64_t --> double --> float). This is based on the algorithm from compiler_rt's __floatundisf
for X86-64.
llvm-svn: 115634
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
// %a = ...
// %b = and i32 %a, 2
// %c = srl i32 %b, 1
// brcond i32 %c ...
//
// into
//
// %a = ...
// %b = and i32 %a, 2
// %c = setcc eq %b, 0
// brcond %c ...
Make sure it restores local variable N1, which corresponds to the condition operand if it fails to match.
This apparently breaks TCE but since that backend isn't in the tree I don't have a test for it.
llvm-svn: 115571
|
|
|
|
|
|
| |
unused argument here. This is a known limitation recorded debuginfo-tests/trunk/dbg-declare2.ll function 'f6' test case.
llvm-svn: 115323
|
|
|
|
| |
llvm-svn: 115310
|
|
|
|
| |
llvm-svn: 115300
|
|
|
|
| |
llvm-svn: 115294
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The x86_mmx type is used for MMX intrinsics, parameters and
return values where these use MMX registers, and is also
supported in load, store, and bitcast.
Only the above operations generate MMX instructions, and optimizations
do not operate on or produce MMX intrinsics.
MMX-sized vectors <2 x i32> etc. are lowered to XMM or split into
smaller pieces. Optimizations may occur on these forms and the
result casted back to x86_mmx, provided the result feeds into a
previous existing x86_mmx operation.
The point of all this is prevent optimizations from introducing
MMX operations, which is unsafe due to the EMMS problem.
llvm-svn: 115243
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
edited during emission.
If the basic block ends in a switch that gets lowered to a jump table, any
phis at the default edge were getting updated wrong. The jump table data
structure keeps a pointer to the header blocks that wasn't getting updated
after the MBB is split.
This bug was exposed on 32-bit Linux when disabling critical edge splitting in
codegen prepare.
The fix is to uipdate stale MBB pointers whenever a block is split during
emission.
llvm-svn: 115191
|
|
|
|
|
|
| |
pipeline forwarding path.
llvm-svn: 115098
|
|
|
|
| |
llvm-svn: 114999
|
|
|
|
|
|
| |
and asserts.
llvm-svn: 114843
|
|
|
|
| |
llvm-svn: 114767
|
|
|
|
| |
llvm-svn: 114750
|
|
|
|
|
|
| |
doubt it but it's possible it's exposing another bug somewhere.
llvm-svn: 114681
|
|
|
|
|
|
| |
Patch by Nathan Jeffords!
llvm-svn: 114661
|
|
|
|
|
|
| |
conditional one.
llvm-svn: 114634
|
|
|
|
|
|
|
|
|
|
|
|
| |
when the unconditional branch destination is the fallthrough block. The
canonicalization makes it easier to allow optimizations on DAGs to invert
conditional branches. The branch folding pass (and AnalyzeBranch) will clean up
the unnecessary unconditional branches later.
This is one of the patches leading up to disabling codegen prepare critical edge
splitting.
llvm-svn: 114630
|
|
|
|
|
|
|
| |
lowered using a series of shifts.
Fixes <rdar://problem/8285015>.
llvm-svn: 114599
|
|
|
|
| |
llvm-svn: 114490
|
|
|
|
|
|
|
|
| |
that complex patterns are matched after the entire pattern has
a structural match, therefore the NodeStack isn't in a useful
state when the actual call to the matcher happens.
llvm-svn: 114489
|
|
|
|
|
|
|
|
|
| |
current basic block then insert DBG_VALUE so that debug value of the variable is also transfered to new vreg.
Testcase is in r114476.
This fixes radar 8412415.
llvm-svn: 114478
|
|
|
|
| |
llvm-svn: 114474
|
|
|
|
|
|
|
|
|
| |
target-dependent, by using
the predicate to discover the number of sign bits. Enhance X86's target lowering to provide
a useful response to this query.
llvm-svn: 114473
|
|
|
|
|
|
|
| |
matched, allow ComplexPatterns to opt into getting the parent node
of the operand being matched.
llvm-svn: 114472
|
|
|
|
|
|
|
| |
I think I've audited all uses, so it should be dependable for address spaces,
and the pointer+offset info should also be accurate when there.
llvm-svn: 114464
|
|
|
|
| |
llvm-svn: 114461
|
|
|
|
|
|
| |
and store intrinsics are represented with MemIntrinsicSDNodes.
llvm-svn: 114454
|
|
|
|
|
|
| |
MachinePointerInfo around more.
llvm-svn: 114452
|
|
|
|
| |
llvm-svn: 114450
|
|
|
|
|
|
| |
with an indexed load/store that has an offset in the index.
llvm-svn: 114449
|
|
|
|
|
|
| |
SelectionDAG::getExtLoad overload, and eliminate it.
llvm-svn: 114446
|
|
|
|
|
|
| |
getLoad overloads.
llvm-svn: 114443
|