| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
handling them in isVectorizableIntrinsic function.
llvm-svn: 207085
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added support for bytes replication feature, so it could be GAS compatible.
E.g. instructions below:
"vmov.i32 d0, 0xffffffff"
"vmvn.i32 d0, 0xabababab"
"vmov.i32 d0, 0xabababab"
"vmov.i16 d0, 0xabab"
are incorrect, but we could deal with such cases.
For first one we should emit:
"vmov.i8 d0, 0xff"
For second one ("vmvn"):
"vmov.i8 d0, 0x54"
For last two instructions it should emit:
"vmov.i8 d0, 0xab"
P.S.: In ARMAsmParser.cpp I have also fixed few nearby style issues in old code.
Just for keeping method bodies in harmony with themselves.
llvm-svn: 207080
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This excludes avx512 as I don't have hardware to verify. It excludes _dq
variants because they are represented in the IR as <{2,4} x i64> when it's
actually a byte shift of the entire i{128,265}.
This also excludes _dq_bs as they aren't at all supported by the backend.
There are also no corresponding instructions in the ISA. I have no idea why
they exist...
llvm-svn: 207058
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Since the upper 64 bits of the destination register are undefined when
performing this operation, we can substitute it and let the optimizer
figure out that only a copy is needed.
Also added range merging, if an instruction copies a range that can be
merged with a previous copied range.
Added test cases for both optimizations.
Reviewers: grosbach, nadav
CC: llvm-commits
Differential Revision: http://reviews.llvm.org/D3357
llvm-svn: 207055
|
| |
|
|
| |
llvm-svn: 207054
|
| |
|
|
|
|
|
| |
This is dependent on changes that are not fully ready to be merged yet (WoA
object file emission). The test can be re-enabled for that target later.
llvm-svn: 207038
|
| |
|
|
|
|
|
|
| |
GCOV provides an option to prepend output file names with the source
file name, to disambiguate between covered data that's included from
multiple sources. Add a flag to llvm-cov that does the same.
llvm-svn: 207035
|
| |
|
|
|
|
| |
This is a COFF specific test, move it to COFF to fix the Hexagon buildbots.
llvm-svn: 207030
|
| |
|
|
|
|
|
| |
The test was changed from aarch64 to arm64 but not moved. The test would fail
if the backend was not built.
llvm-svn: 207029
|
| |
|
|
|
|
|
| |
Emit the flag to indicate to the assembler that a section contains data if there
is pre-populated data present.
llvm-svn: 207028
|
| |
|
|
|
|
|
|
|
| |
ANDS does not use the same encoding scheme as other xxxS instructions (e.g.,
ADDS). Take that into account to avoid wrong peephole optimization.
<rdar://problem/16693089>
llvm-svn: 207020
|
| |
|
|
| |
llvm-svn: 207017
|
| |
|
|
| |
llvm-svn: 207015
|
| |
|
|
| |
llvm-svn: 206989
|
| |
|
|
|
|
|
|
|
| |
For now it contains a single flag, SanitizeAddress, which enables
AddressSanitizer instrumentation of inline assembly.
Patch by Yuri Gorshenin.
llvm-svn: 206971
|
| |
|
|
|
|
|
|
|
|
|
| |
loops & a number of vectorized loops.
Use -stats to see how many loops were analyzed for possible vectorization and how many of them were actually vectorized.
Patch by Zinovy Nis
Differential Revision: http://reviews.llvm.org/D3438
llvm-svn: 206956
|
| |
|
|
| |
llvm-svn: 206953
|
| |
|
|
|
|
| |
Note, currently we have no 'vararg' support for darwin macros.
llvm-svn: 206951
|
| |
|
|
|
|
|
|
| |
AArch64 has feature predicates for NEON, FP and CRYPTO instructions.
This allows the compiler to generate code without using FP, NEON
or CRYPTO instructions.
llvm-svn: 206949
|
| |
|
|
|
|
|
| |
The 'CHECK: add' line was occasionally matching against the filename,
breaking the subsequent CHECK-NOT. Also use CHECK-LABEL.
llvm-svn: 206936
|
| |
|
|
|
|
| |
This fixes pr19484.
llvm-svn: 206917
|
| |
|
|
|
|
|
|
|
|
|
|
| |
In the case where the constant comes from a cloned cast instruction, the
materialization code has to go before the cloned cast instruction.
This commit fixes the method that finds the materialization insertion point
by making it aware of this case.
This fixes <rdar://problem/15532441>
llvm-svn: 206913
|
| |
|
|
|
|
| |
Patch by Maks Naumov!
llvm-svn: 206911
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
diagnostic that includes location information.
Currently if one has this assembly:
.quad (0x1234 + (4 * SOME_VALUE))
where SOME_VALUE is undefined ones gets the less than
useful error message with no location information:
% clang -c x.s
clang -cc1as: fatal error: error in backend: expected relocatable expression
With this fix one now gets a more useful error message
with location information:
% clang -c x.s
x.s:5:8: error: expected relocatable expression
.quad (0x1234 + (4 * SOME_VALUE))
^
To do this I plumbed the SMLoc through the MCObjectStreamer
EmitValue() and EmitValueImpl() interfaces so it could be used
when creating the MCFixup.
rdar://12391022
llvm-svn: 206906
|
| |
|
|
| |
llvm-svn: 206904
|
| |
|
|
| |
llvm-svn: 206897
|
| |
|
|
| |
llvm-svn: 206889
|
| |
|
|
| |
llvm-svn: 206888
|
| |
|
|
| |
llvm-svn: 206887
|
| |
|
|
|
|
| |
Added encoding tests.
llvm-svn: 206884
|
| |
|
|
|
|
| |
patch by Yuri Gribov
llvm-svn: 206883
|
| |
|
|
| |
llvm-svn: 206877
|
| |
|
|
| |
llvm-svn: 206876
|
| |
|
|
|
|
|
| |
This gives DAG patterns matching indexed patterns where either side is an
indexed vector.
llvm-svn: 206875
|
| |
|
|
|
|
|
|
|
|
| |
The point of these calls is to allow Thumb-1 code to make use of the VFP unit
to perform its operations. This is not desirable with -msoft-float, since most
of the reasons you'd want that apply equally to the runtime library.
rdar://problem/13766161
llvm-svn: 206874
|
| |
|
|
|
|
| |
ANY_EXTEND and SIGN_EXTEND.
llvm-svn: 206873
|
| |
|
|
|
|
| |
review.
llvm-svn: 206869
|
| |
|
|
|
|
| |
Don't know why I didn't just do this in the first place.
llvm-svn: 206862
|
| |
|
|
| |
llvm-svn: 206861
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The branch that skips irreducible backedges was only active when
propagating mass at the top-level. In particular, when propagating mass
through a loop recognized by `LoopInfo` with irreducible control flow
inside, irreducible backedges would not be skipped.
Not sure where that idea came from, but the result was that mass was
lost until after loop exit. Added a testcase that covers this case.
llvm-svn: 206860
|
| |
|
|
|
|
|
|
|
|
| |
while checking candidate for bit field extract.
Otherwise the value may not fit in uint64_t and this will trigger an
assertion.
This fixes PR19503.
llvm-svn: 206834
|
| |
|
|
|
|
|
|
| |
With a constant mask a vpermil* is just a shufflevector. This patch implements
that simplification. This allows us to produce denser code. It should also
allow more folding down the line.
llvm-svn: 206801
|
| |
|
|
|
|
|
| |
Make sure only general purpose registers are valid for offset regs and
that 32-bit regs are only valid for sxtw and uxtw extends.
llvm-svn: 206799
|
| |
|
|
|
|
|
|
|
| |
With this MC is able to handle _GLOBAL_OFFSET_TABLE_ in 64 bit mode, which is
needed for medium and large code models.
This fixes pr19470.
llvm-svn: 206793
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The -tailcallelim pass should be checking if byval or inalloca args can
be captured before marking calls as tail calls. This was the real root
cause of PR7272.
With a better fix in place, revert the inliner change from r105255. The
test case it introduced still passes and has been moved to
test/Transforms/Inline/byval-tail-call.ll.
Reviewers: chandlerc
Differential Revision: http://reviews.llvm.org/D3403
llvm-svn: 206789
|
| |
|
|
|
|
| |
instruction
llvm-svn: 206774
|
| |
|
|
|
|
|
|
|
| |
This reverts commit r206707, reapplying r206704. The preceding commit
to CalcSpillWeights should have sorted out the failing buildbots.
<rdar://problem/14292693>
llvm-svn: 206766
|
| |
|
|
|
|
|
|
| |
Use volatile store to protect the generated PTX from DCE.
Patch by Jingyue Wu.
llvm-svn: 206763
|
| |
|
|
| |
llvm-svn: 206749
|
| |
|
|
| |
llvm-svn: 206747
|