| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
| |
class SIMD(lselem-post).
Including following 14 instructions:
4 ld1 insts: post-index load multiple 1-element structure to sequential 1/2/3/4 registers.
ld2/ld3/ld4: post-index load multiple N-element structure to sequential N registers (N=2,3,4).
4 st1 insts: post-index store multiple 1-element structure from sequential 1/2/3/4 registers.
st2/st3/st4: post-index store multiple N-element structure from sequential N registers (N = 2,3,4).
llvm-svn: 194043
|
| |
|
|
| |
llvm-svn: 194041
|
| |
|
|
|
|
| |
This reverts commit d8acf0078cf363252727acff00f85ae8074f95b3.
llvm-svn: 194040
|
| |
|
|
|
|
|
| |
This will allow for much easier testing when the input files are in a
different folder from the test script.
llvm-svn: 194034
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This patch enables llvm-cov to correctly output the run count stored in
the GCDA file. GCOVProfiling currently does not generate this
information, so the GCDA run data had to be hacked on from a GCDA file
generated by gcc. This is corrected by a subsequent patch.
With the run and program data included, both llvm-cov and gcov produced
the same output.
llvm-svn: 194033
|
| |
|
|
|
|
|
|
|
|
|
| |
As with the other loop unrolling parameters (the unrolling threshold, partial
unrolling, etc.) runtime unrolling can now also be controlled via the
constructor. This will be necessary for moving non-trivial unrolling late in
the pass manager (after loop vectorization).
No functionality change intended.
llvm-svn: 194027
|
| |
|
|
|
|
|
|
| |
constant islands code to Mips."
It broke -Asserts build.
llvm-svn: 194026
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ResolveFrameIndex had what appeared to be a very nasty hack for when the
frame-index referred to a callee-saved register. In this case it "adjusted" the
offset so that the address was correct if (and only if) the MachineInstr
immediately followed the respective push.
This "worked" for all forms of GPR & DPR but was only ever used to set the
frame pointer itself, and once this was put in a more sensible location the
entire state-tracking machinery it relied on became redundant. So I stripped
it.
The only wrinkle is that "add r7, sp, #0" might theoretically be slower (need
an actual ALU slot) compared to "mov r7, sp" so I added a micro-optimisation
that also makes emitARMRegUpdate and emitT2RegUpdate also work when NumBytes ==
0.
No test changes since there shouldn't be any functionality change.
llvm-svn: 194025
|
| |
|
|
|
|
|
|
|
|
|
|
| |
If an inline assembly operand has multiple constraints (e.g. "Ir" for immediate
or register) and an operand modifier (E.g. "w" for "print register as wN") then
we need to decide behaviour when the modifier doesn't apply to the constraint.
Previousely produced some combination of an assertion failure and a fatal
error. GCC's behaviour appears to be to ignore the modifier and print the
operand in the default way. This patch should implement that.
llvm-svn: 194024
|
| |
|
|
|
|
| |
when compiling with DEBUG.
llvm-svn: 194021
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two test cases are added which reflect the next level of functionality:
constants getting moved to water areas that are out of range from the
initial placement at the end of the function and basic blocks being split to
create water when none exists that can be used. There is a bunch of this
code that is not complete and has been marked with IN_PROGRESS. I will
finish cleaning this all up during the next week or two and submit the
rest of the test cases. I have elminated some code for dealing with
inline assembly because to me it unecessarily complicates things and
some of the newer features of llvm like function attributies and builtin
assembler give me better tools to solve the alignment issues created
there. Also, for Mips16 I even have the option of not doing constant
islands in the present of inline assembler if I chose.
llvm-svn: 194019
|
| |
|
|
| |
llvm-svn: 194017
|
| |
|
|
|
|
|
|
| |
those produced by clang for the inline asm bswap conversion.
Modified from a patch by Chris Smowton.
llvm-svn: 194016
|
| |
|
|
|
|
|
|
| |
strict weak ordering.
STL debug mode checks this.
llvm-svn: 194015
|
| |
|
|
|
|
| |
This fixes an assertion failure with a different sized address space.
llvm-svn: 194014
|
| |
|
|
|
|
|
|
| |
When the elements are extracted from a select on vectors
or a vector select, do the select on the extracted scalars
from the input if there is only one use.
llvm-svn: 194013
|
| |
|
|
| |
llvm-svn: 194007
|
| |
|
|
| |
llvm-svn: 194006
|
| |
|
|
|
|
|
|
| |
In order to create an ObjectFile implementation that uses bitcode files, we
need to propagate the bitcode errors to the ObjectFile interface, so we need
to convert it to use the same error handling as ObjectFile: error_code.
llvm-svn: 193996
|
| |
|
|
| |
llvm-svn: 193992
|
| |
|
|
|
|
| |
This is just bdver2 + FSGSBase.
llvm-svn: 193984
|
| |
|
|
|
|
|
|
|
| |
Enable pretty
stack traces by default if you use PrettyStackTraceProgram, so that existing LLVM-based
tools will continue to get it without any changes.
llvm-svn: 193971
|
| |
|
|
|
|
| |
added EVEX_KZ to tablegen
llvm-svn: 193959
|
| |
|
|
| |
llvm-svn: 193958
|
| |
|
|
| |
llvm-svn: 193957
|
| |
|
|
|
|
|
|
|
|
|
| |
Instead of doing a RPO traversal of the whole function remember the blocks
containing gathers (typically <= 2) and scan them in dominator-first order.
The actual CSE is still quadratic, but I'm not confident that adding a
scoped hash table here is worth it as we're only looking at the generated
instructions and not arbitrary code.
llvm-svn: 193956
|
| |
|
|
|
|
|
|
| |
This reverts commit r193356, it caused PR17781.
A reduced test case covering this regression has been added to the test suite.
llvm-svn: 193955
|
| |
|
|
| |
llvm-svn: 193954
|
| |
|
|
| |
llvm-svn: 193947
|
| |
|
|
|
|
|
|
|
|
| |
This adds an SimplifyLibCalls case which converts the special __sinpi and
__cospi (float & double variants) into a __sincospi_stret where appropriate to
remove duplicated work.
Patch by Tim Northover
llvm-svn: 193943
|
| |
|
|
|
|
|
| |
rdar://12856873
Patch by Evan Cheng, with a fix for rdar://13209539 by Tilmann Scheller
llvm-svn: 193942
|
| |
|
|
| |
llvm-svn: 193941
|
| |
|
|
|
|
|
|
| |
intercept crashes. LLVM already has
the ability to disable this functionality. This patch exposes it via the C API.
llvm-svn: 193937
|
| |
|
|
| |
llvm-svn: 193933
|
| |
|
|
| |
llvm-svn: 193932
|
| |
|
|
|
|
| |
This is a fixed version of 193928 which keeps these uses in sync.
llvm-svn: 193931
|
| |
|
|
|
|
|
|
|
|
| |
COFFObjectFile::getSymbolFileOffset."
Investigating a bot failure.
This reverts commit r193928.
llvm-svn: 193929
|
| |
|
|
|
|
| |
COFFObjectFile::getSymbolFileOffset.
llvm-svn: 193928
|
| |
|
|
| |
llvm-svn: 193927
|
| |
|
|
|
|
|
|
| |
Doing this with a hash map doesn't change behavior and avoids calling
isIdenticalTo O(n^2) times. This should probably eventually move into a utility
class shared with EarlyCSE and the limited CSE in the SLPVectorizer.
llvm-svn: 193926
|
| |
|
|
|
|
|
| |
There is still a long way to go for llvm-nm, but at least we now match
nm's letter output in the cases we test for.
llvm-svn: 193912
|
| |
|
|
|
|
|
| |
- When selecting BLEND from vselect, the operands need swapping as due to the
difference between vselect and SSE/AVX's BLEND insn
llvm-svn: 193900
|
| |
|
|
|
|
|
| |
Added -o option to llvm-cov. If no output file is specified, it defaults
to STDOUT.
llvm-svn: 193899
|
| |
|
|
| |
llvm-svn: 193895
|
| |
|
|
| |
llvm-svn: 193894
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the loop vectorizer was part of the SCC inliner pass manager gvn would
run after the loop vectorizer followed by instcombine. This way redundancy
(multiple uses) were removed and instcombine could perform scalarization on the
induction variables. Having moved the loop vectorizer to later we no longer run
any form of redundancy elimination before we perform instcombine. This caused
vectorized induction variables to survive that did not before.
On a recent iMac this helps linpack back from 6000Mflops to 7000Mflops.
This should also help lpbench and paq8p.
I ran a Release (without Asserts) build over the test-suite and did not see any
negative impact on compile time.
radar://15339680
llvm-svn: 193891
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In a failed attempt to allow the gnu-public-names.ll test case to not
hardcode the size of the unit that the pubnames section referred to I've
at least managed to have unit headers and pubnames headers print out in
a similar style.
This failed to achieve the desired goal because the header in a unit
specifies the length of the unit without the length element of the
header whereas the length in the pubnames includes this element, so the
numbers are off by 4 bytes. I don't know of any arithmetic powers in
FileCheck so the test case can't simply say "CU_LENGTH + 4".
llvm-svn: 193872
|
| |
|
|
| |
llvm-svn: 193871
|
| |
|
|
| |
llvm-svn: 193869
|
| |
|
|
|
|
| |
intended.
llvm-svn: 193867
|