| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 176023
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
memory intrinsics in the SDAG builder.
When alignment is zero, the lang ref says that *no* alignment
assumptions can be made. This is the exact opposite of the internal API
contracts of the DAG where alignment 0 indicates that the alignment can
be made to be anything desired.
There is another, more explicit alignment that is better suited for the
role of "no alignment at all": an alignment of 1. Map the intrinsic
alignment to this early so that we don't end up generating aligned DAGs.
It is really terrifying that we've never seen this before, but we
suddenly started generating a large number of alignment 0 memcpys due to
the new code to do memcpy-based copying of POD class members. That patch
contains a bug that rounds bitfield alignments down when they are the
first field. This can in turn produce zero alignments.
This fixes weird crashes I've seen in library users of LLVM on 32-bit
hosts, etc.
llvm-svn: 176022
|
|
|
|
| |
llvm-svn: 176007
|
|
|
|
| |
llvm-svn: 176004
|
|
|
|
| |
llvm-svn: 176002
|
|
|
|
|
|
|
|
|
|
|
| |
This removes a const_cast hack from PPCRegisterInfo::hasReservedSpillSlot().
The proper place to save the frame index for the CR spill slot is in the
PPCFunctionInfo object, not the PPCRegisterInfo object.
No new test cases, as this just reimplements existing function. Existing
tests such as test/CodeGen/PowerPC/crsave.ll are sufficient.
llvm-svn: 175998
|
|
|
|
|
|
|
|
|
|
| |
This is a common pattern with dyn_cast and similar constructs, when the
PHI no longer depends on the select it can often be turned into a simpler
construct or even get hoisted out of the loop.
PR15340.
llvm-svn: 175995
|
|
|
|
| |
llvm-svn: 175991
|
|
|
|
|
|
| |
Fix PR15239.
llvm-svn: 175985
|
|
|
|
|
|
| |
as early as possible; which means during instruction selection.
llvm-svn: 175984
|
|
|
|
|
|
| |
builds.
llvm-svn: 175981
|
|
|
|
|
|
|
| |
true when shouldOnlyCommute is false, so we can remove code that checks
otherwise.
llvm-svn: 175980
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
itself recursively with a new instruction that has not been finalized, in order
to determine whether to keep the instruction. On 'make check' and test-suite the
only cases where the recursive invocation made any transformations were simple
instruction commutations, so I am restricting the recursive invocation to do
only this.
The other cases wouldn't work correctly when updating LiveIntervals, since the
new instructions don't have slot indices and LiveIntervals hasn't yet been
updated. If the other transformations were actually triggering in any test case
it would be possible to support it with a lot of effort, but since they don't
it's not worth it.
llvm-svn: 175979
|
|
|
|
|
|
| |
proper. Fixed this already a few days ago for slti.
llvm-svn: 175975
|
|
|
|
|
|
|
| |
unless it was requested to with an optional parameter that defaults to false, so
we don't need to handle that case in TwoAddressInstructionPass.
llvm-svn: 175974
|
|
|
|
|
|
| |
Fixes PR15115.
llvm-svn: 175962
|
|
|
|
|
|
| |
MachineInstrs don't have a slot index.
llvm-svn: 175961
|
|
|
|
|
|
| |
running ASCI_Purple/SMG2000 in the test-suite.
llvm-svn: 175957
|
|
|
|
| |
llvm-svn: 175956
|
|
|
|
|
|
|
|
| |
TwoAddressInstructionPass. The code in rescheduleMIBelowKill() is a bit tricky,
since multiple instructions need to be moved down, one-at-a-time, in reverse
order.
llvm-svn: 175955
|
|
|
|
|
|
| |
macros.The rest is some small misc. stuff.
llvm-svn: 175950
|
|
|
|
|
|
|
|
| |
Handle an implied 'sp' operand.
rdar://11466783
llvm-svn: 175940
|
|
|
|
|
|
| |
rdar://13273675.
llvm-svn: 175939
|
|
|
|
|
|
| |
update testcase accordingly to give the correct name to the cu.
llvm-svn: 175934
|
|
|
|
|
|
|
| |
the debug info for -gsplit-dwarf so we can encode that location
in the skeleton cu.
llvm-svn: 175933
|
|
|
|
| |
llvm-svn: 175932
|
|
|
|
|
|
|
|
| |
One of the phases of SelectionDAG is LegalizeVectors. We don't need to sort the DAG and copy nodes around if there are no vector ops.
Speeds up the compilation time of SelectionDAG on a big scalar workload by ~8%.
llvm-svn: 175929
|
|
|
|
| |
llvm-svn: 175920
|
|
|
|
|
|
| |
under coldcc
llvm-svn: 175911
|
|
|
|
|
|
|
|
|
| |
16 more little piglits with radeonsi.
NOTE: This is a candidate for the Mesa stable branch.
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175887
|
|
|
|
|
|
|
|
|
| |
24 more little piglits with radeonsi.
NOTE: This is a candidate for the Mesa stable branch.
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175886
|
|
|
|
|
|
|
|
|
| |
9 more little piglits with radeonsi.
NOTE: This is a candidate for the Mesa stable branch.
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175885
|
|
|
|
|
|
|
|
|
| |
instructions.
The Printer will now print instructions with the correct alignment specifier syntax, like
vld1.8 {d16}, [r0:64]
llvm-svn: 175884
|
|
|
|
|
|
|
| |
Listing all of the attributes for the callee of a call/invoke instruction is way
too much and makes the IR unreadable. Use references to attributes instead.
llvm-svn: 175877
|
|
|
|
|
|
| |
to the immediate operand of sli or cmp function.
llvm-svn: 175865
|
|
|
|
| |
llvm-svn: 175862
|
|
|
|
|
|
|
|
|
|
|
|
| |
It was incorrectly checking a Function* being an IntrinsicInst* which
isn't possible. It should always have been checking the CallInst* instead.
Added test case for x86 which ensures we only get one constant load.
It was 2 before this change.
rdar://problem/13267920
llvm-svn: 175853
|
|
|
|
|
|
|
|
| |
There's no apparent reason this code was copied from generated source
into a .cpp. It sets a bad example for those working on other targets
and trying to understand the register info API.
llvm-svn: 175849
|
|
|
|
|
|
|
| |
convey that it's a INOUT argument.
Also, if parsing of entry instructions fails, don't push the entry.
llvm-svn: 175847
|
|
|
|
| |
llvm-svn: 175846
|
|
|
|
| |
llvm-svn: 175843
|
|
|
|
|
|
|
|
| |
The 'nobuiltin' attribute is applied to call sites to indicate that LLVM should
not treat the callee function as a built-in function. I.e., it shouldn't try to
replace that function with different code.
llvm-svn: 175835
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pass. One of the callers of isKilled() can cope with overapproximation of kills
and the other can't, so I added a flag to indicate this.
In theory this could pessimize code slightly, but in practice most physical
register uses are kills, and most important kills of physical registers are the
only uses of that register prior to register allocation, so we can recognize
them as kills even without kill flags.
This is relevant because LiveIntervals gets rid of all kill flags.
llvm-svn: 175821
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to lib/DebugInfo, with dumping in llvm-dwarfdump. This patch adds
initial ability to parse and dump CFA instructions contained in
entries.
To keep it manageable, the patch omits some more advanced capabilities
(accounted in TODOs):
* Parsing of instructions with BLOCK arguments (expression lists)
* Dumping of actual instruction arguments (currently only names are
dumped). This is quite tricky since the dumper has to effectively
"interpret" the instructions.
llvm-svn: 175820
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Storing the load/store instructions with the values
and inspect them using Alias Analysis to make sure
they don't alias, since the GEP pointer operand doesn't
take the offset into account.
Trying hard to not add any extra cost to loads and stores
that don't overlap on global values, AA is *only* calculated
if all of the previous attempts failed.
Using biggest vector register size as the stride for the
vectorization access, as we're being conservative and
the cost model (which calculates the real vectorization
factor) is only run after the legalization phase.
We might re-think this relationship in the future, but
for now, I'd rather be safe than sorry.
llvm-svn: 175818
|
|
|
|
| |
llvm-svn: 175809
|
|
|
|
| |
llvm-svn: 175804
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to TargetFrameLowering, where it belongs. Incidentally, this allows us
to delete some duplicated (and slightly different!) code in TRI.
There are potentially other layering problems that can be cleaned up
as a result, or in a similar manner.
The refactoring was OK'd by Anton Korobeynikov on llvmdev.
Note: this touches the target interfaces, so out-of-tree targets may
be affected.
llvm-svn: 175788
|
|
|
|
| |
llvm-svn: 175785
|
|
|
|
| |
llvm-svn: 175783
|