| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
This implements the review suggestion to simplify the AArch64 backend. If we
later discover that we *really* need the extra complexity of the
ConstantIslands pass for performance reasons it can be resurrected.
llvm-svn: 175258
|
| |
|
|
|
|
|
|
| |
In the near future litpools will be in a different section, which means that
any access to them is at least two instructions. This makes the case for a
movz/movk pair (if total offset <= 32-bits) even more compelling.
llvm-svn: 175257
|
| |
|
|
| |
llvm-svn: 175252
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For some basic blocks, it is possible to generate many candidate pairs for
relatively few pairable instructions. When many (tens of thousands) of these pairs
are generated for a single instruction group, the time taken to generate and
rank the different vectorization plans can become quite large. As a result, we now
cap the number of candidate pairs within each instruction group. This is done by
closing out the group once the threshold is reached (set now at 3000 pairs).
Although this will limit the overall compile-time impact, this may not be the best
way to achieve this result. It might be better, for example, to prune excessive
candidate pairs after the fact the prevent the generation of short, but highly-connected
groups. We can experiment with this in the future.
This change reduces the overall compile-time slowdown of the csa.ll test case in
PR15222 to ~5x. If 5x is still considered too large, a lower limit can be
used as the default.
This represents a functionality change, but only for very large inputs
(thus, there is no regression test).
llvm-svn: 175251
|
| |
|
|
|
|
| |
This reverts commit 82c101153fe7b35bce48781fab038e1b8f31a7bd.
llvm-svn: 175250
|
| |
|
|
|
|
|
| |
not matter but makes it more gcc compatible which avoids possible subtle
problems. Also, turned back on a disabled check in helloworld.ll.
llvm-svn: 175237
|
| |
|
|
| |
llvm-svn: 175235
|
| |
|
|
|
|
|
| |
Unfortunately, I wasn't able to create a test case that demonstrates the
problem I was trying to fix with this patch.
llvm-svn: 175226
|
| |
|
|
|
|
|
| |
defined and used registers. Also add a few helper functions to simplify the
code.
llvm-svn: 175224
|
| |
|
|
| |
llvm-svn: 175222
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
assembler should also accept a two arg form, as the docuemntation specifies that
the first (destination) register is optional.
This patch uses TwoOperandAliasConstraint to add the two argument form.
It also fixes an 80-column formatting problem in:
test/MC/ARM/neon-bitwise-encoding
<rdar://problem/12909419> Clang rejects ARM NEON assembly instructions
llvm-svn: 175221
|
| |
|
|
| |
llvm-svn: 175220
|
| |
|
|
|
|
|
|
| |
1. Define and use function terminateSearch.
2. Use MachineBasicBlock::iterator instead of MachineBasicBlock::instr_iterator.
3. Delete the line which checks whether an instruction is a pseudo.
llvm-svn: 175219
|
| |
|
|
|
|
|
|
|
|
| |
All instances of std::multimap have now been replaced by
DenseMap<K, std::vector<V> >, and this yields a speedup of 5% on the
csa.ll test case from PR15222.
No functionality change intended.
llvm-svn: 175216
|
| |
|
|
|
|
|
|
|
|
| |
This is another commit on the road to removing std::multimap from
BBVectorize. This gives an ~1% speedup on the csa.ll test case
in PR15222.
No functionality change intended.
llvm-svn: 175215
|
| |
|
|
| |
llvm-svn: 175212
|
| |
|
|
| |
llvm-svn: 175209
|
| |
|
|
|
|
|
|
| |
This patch doesn't introduce any functionality changes.
It adds some new fields to the Hexagon instruction classes and
changes their layout to support instruction encoding.
llvm-svn: 175205
|
| |
|
|
| |
llvm-svn: 175204
|
| |
|
|
|
|
|
|
|
| |
LLVMCreateMemoryBufferWithMemoryRange - exposes MemoryBuffer::getMemBuffer
LLVMCreateMemoryBufferWithMemoryRangeCopy - exposes MemoryBuffer::getMemBufferCopy
Patch by Moritz Maxeiner!
llvm-svn: 175199
|
| |
|
|
|
|
| |
-feature flag, instructions definitions, test cases
llvm-svn: 175196
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The important fix is that the constant interpolation value is stored in the
parameter slot P0, which is encoded as 2.
In addition, drop the SI_INTERP_CONST pseudo instruction, pass the parameter
slot as an operand to V_INTERP_MOV_F32 instead of hardcoding it there, and
add a special operand class for the parameter slots for type checking and
pretty printing.
NOTE: This is a candidate for the Mesa stable branch.
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 175193
|
| |
|
|
| |
llvm-svn: 175190
|
| |
|
|
| |
llvm-svn: 175189
|
| |
|
|
|
|
| |
This patch doesn't introduce any functionality changes.
llvm-svn: 175187
|
| |
|
|
|
|
|
|
| |
inline asm with 64-bit data on ARM
Update test case to use -mtriple=arm-linux-gnueabi
llvm-svn: 175186
|
| |
|
|
|
|
|
|
|
| |
It fixes around 100 tfb piglit tests and 16 glean tests.
NOTE: This is a candidate for the Mesa stable branch.
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>
llvm-svn: 175183
|
| |
|
|
|
|
|
|
| |
This allows MachineInstScheduler to reorder them, and thus make scheduling more
efficient.
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>
llvm-svn: 175182
|
| |
|
|
|
| |
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>
llvm-svn: 175181
|
| |
|
|
|
|
|
|
|
| |
This fixes a couple of regressions on (probably not just) cayman
NOTE: This is a candidate for the Mesa stable branch.
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>
llvm-svn: 175180
|
| |
|
|
| |
llvm-svn: 175176
|
| |
|
|
| |
llvm-svn: 175173
|
| |
|
|
|
|
|
|
|
|
| |
If vector types have legal register classes, then LLVM bypasses LegalizeTypes
on them, which causes faults currently since the code to handle them isn't in
place.
This fixes test failures when AArch64 is the default target.
llvm-svn: 175172
|
| |
|
|
|
|
| |
Only comments affected. No code change at all.
llvm-svn: 175169
|
| |
|
|
|
|
|
|
|
| |
The parser will now accept instructions with alignment specifiers written like
vld1.8 {d16}, [r0:64]
, while also still accepting the incorrect syntax
vld1.8 {d16}, [r0, :64]
llvm-svn: 175164
|
| |
|
|
| |
llvm-svn: 175156
|
| |
|
|
|
|
| |
post-operand legalization.
llvm-svn: 175149
|
| |
|
|
|
|
| |
Added a test.
llvm-svn: 175144
|
| |
|
|
|
|
|
| |
Fixes assertion failure in newly added lit test. Might just be a bandaid that
needs to be revisited.
llvm-svn: 175139
|
| |
|
|
| |
llvm-svn: 175133
|
| |
|
|
|
|
| |
register class to match the defining instruction.
llvm-svn: 175130
|
| |
|
|
|
|
| |
'and' instructions. This is a pattern that shows up a lot in ubsan binaries.
llvm-svn: 175128
|
| |
|
|
|
|
|
|
|
| |
up so that we can apply the direct object emitter patch. This patch
should be a nop right now and it's test is to not break what is already
there.
llvm-svn: 175126
|
| |
|
|
|
|
|
| |
CoalescerPairs. Also, make it take a CoalescerPair directly like other methods
of RegisterCoalescer.
llvm-svn: 175123
|
| |
|
|
|
|
|
|
|
|
|
|
| |
of the copy is a subregister def. The current code assumes that it can do a full
def of the destination register, but it is not checking that the def operand is
read-undef. It also doesn't clear the subregister index of the destination in
the new instruction to reflect the full subregister def.
These issues were found running 'make check' with my next commit that enables
rematerialization in more cases.
llvm-svn: 175122
|
| |
|
|
| |
llvm-svn: 175121
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since functions with internal linkage don't have language linkage, it is valid
to overload them:
extern "C" {
static int foo();
static int foo(int);
}
So we mangle them.
llvm-svn: 175120
|
| |
|
|
| |
llvm-svn: 175107
|
| |
|
|
|
|
|
|
|
| |
It's possible (e.g. after an LTO build) that an internal global may be used for
debugging purposes. If that's the case appending a '.b' to it makes it hard to
find that variable. Steal the name from the old GV before deleting it so that
they can find that variable again.
llvm-svn: 175104
|
| |
|
|
| |
llvm-svn: 175102
|