| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
register operands.
As specified in A8.8.72/A8.8.73/A8.8.74 in the ARM ARM, all variants of the ARM LDRD instruction have the following two constraints:
LDRD<c> <Rt>, <Rt2>, ...
(a) Rt must be even-numbered and not r14
(b) Rt2 must be R(t+1)
If those two constraints are not met the result of executing the instruction will be unpredictable.
Constraint (b) was already enforced, this commit adds support for constraint (a).
Fixes rdar://14479793.
llvm-svn: 191520
|
| |
|
|
|
|
|
| |
This intrinsic is lowered into an equivalent BUILD_VECTOR which is further
lowered into a sequence of insert.w's on MIPS32.
llvm-svn: 191519
|
| |
|
|
|
|
|
| |
This intrinsic is lowered into equivalent copy_s.w instructions during
legalization.
llvm-svn: 191518
|
| |
|
|
|
|
|
|
| |
expected values.
No functional change.
llvm-svn: 191517
|
| |
|
|
|
|
|
| |
For v4f32 and v2f64, INSERT_VECTOR_ELT is matched by a pseudo-insn which is
later expanded to appropriate insve.[wd] insns.
llvm-svn: 191515
|
| |
|
|
|
|
|
| |
For v4f32 and v2f64, EXTRACT_VECTOR_ELT is matched by a pseudo-insn which may
be expanded to subregister copies and/or instructions as appropriate.
llvm-svn: 191514
|
| |
|
|
| |
llvm-svn: 191512
|
| |
|
|
|
|
|
|
| |
intrinsics)
Updated some of the vshf since they (correctly) emit splati's now
llvm-svn: 191511
|
| |
|
|
|
|
|
|
|
|
| |
This change fixes the problem reported in pr17380 and re-add the dagcombine
transformation ensuring that the value types are always legal if the
transformation is triggered after Legalization took place.
Added the test case from pr17380.
llvm-svn: 191509
|
| |
|
|
|
|
|
|
| |
This file contains notes about the instruction selection for MSA. For example,
it notes that ilvl.d is cannot be selected because ilvev.d covers the same
cases and is selected instead of ilvl.d.
llvm-svn: 191507
|
| |
|
|
| |
llvm-svn: 191505
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(literal/immediate) destination register operands.
LDRD<c> <Rt>, <Rt2>, <label>
LDRD<c> <Rt>, <Rt2>, [<Rn>{, #+/-<imm>}]
LDRD<c> <Rt>, <Rt2>, [<Rn>], #+/-<imm>
LDRD<c> <Rt>, <Rt2>, [<Rn>, #+/-<imm>]!
As specified in A8.8.72/A8.8.73 in the ARM ARM, the T1 encoding has a constraint which enforces that Rt != Rt2.
If this constraint is not met the result of executing the instruction will be unpredictable.
Fixes rdar://14479780.
llvm-svn: 191504
|
| |
|
|
|
|
|
|
|
|
|
|
| |
lowerMSABinaryIntr, lowerMSABinaryImmIntr, lowerMSABranchIntr,
and lowerMSAUnaryIntr were trivially small functions. Inlined them into
their callers.
lowerMSASplat now takes its callers SDLoc instead of making a new one.
No functional change.
llvm-svn: 191503
|
| |
|
|
|
|
| |
error when using it in FR=0 mode.
llvm-svn: 191498
|
| |
|
|
| |
llvm-svn: 191496
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: jacksprat, dsanders
Reviewed By: dsanders
Differential Revision: http://llvm-reviews.chandlerc.com/D1755
llvm-svn: 191495
|
| |
|
|
| |
llvm-svn: 191491
|
| |
|
|
|
|
| |
AVX512 isn't enabled. Currently it works simply because the SSE and AVX version of the same patterns are checked first in the DAG isel table.
llvm-svn: 191490
|
| |
|
|
|
|
| |
is used in AVX512 mode.
llvm-svn: 191489
|
| |
|
|
| |
llvm-svn: 191488
|
| |
|
|
|
|
| |
Phabricator code review is located at: http://llvm-reviews.chandlerc.com/D1759
llvm-svn: 191481
|
| |
|
|
|
|
|
|
| |
given."
This reverts commit r191472 because it's failing on BE machine.
llvm-svn: 191480
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a patch to add capability to llvm-objdump to dump COFF Import Table
entries, so that we can write tests for LLD checking Import Table contents.
llvm-objdump did not print anything but just file name if the format is COFF
and -private-headers option is given. This is a patch adds capability for
dumping DLL Import Table, which is specific to the COFF format.
In this patch I defined a new iterator to iterate over import table entries.
Also added a few functions to COFFObjectFile.cpp to access fields of the entry.
Differential Revision: http://llvm-reviews.chandlerc.com/D1719
llvm-svn: 191472
|
| |
|
|
|
|
|
|
| |
CFE produces it to indicate artificial locations.
c.f.: DWARF standard, Table 6.2:
line -- An unsigned integer indicating a source line number. Lines are numbered beginning at 1. The compiler may emit the value 0 in cases where an instruction cannot be attributed to any source line.
llvm-svn: 191471
|
| |
|
|
|
|
| |
Patch by Matheus Almeida
llvm-svn: 191461
|
| |
|
|
|
|
|
|
|
|
| |
revision of the MSA spec (1.06).
This does not affect any of the existing output.
Patch by Matheus Almeida
llvm-svn: 191460
|
| |
|
|
|
|
|
| |
t2PLDi12, t2PLDi8, t2PLDs was omitted in Thumb2InstrInfo.
This patch fixes it.
llvm-svn: 191441
|
| |
|
|
|
|
|
|
| |
When generating code for shared libraries, even local calls may be
intercepted, so we need a nop after the call for the linker to fix up the
TOC. Test case adapted from the one provided in PR17354.
llvm-svn: 191440
|
| |
|
|
| |
llvm-svn: 191438
|
| |
|
|
| |
llvm-svn: 191432
|
| |
|
|
| |
llvm-svn: 191431
|
| |
|
|
|
|
| |
Patch by Artyom Skrobov.
llvm-svn: 191428
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When asked to pad an irregular number of bytes, we should fill with
zeros. This is consistent with the behavior specified in the AIX
Assembler Language Reference as well as other LLVM and binutils
assemblers.
N.B. There is a small deviation from binutils' PPC assembler:
when handling pads which are greater than 4 bytes but not mod 4,
binutils will not emit any NOP sequences at all and only use zeros.
This may or may not be a bug but there is no excellent rationale as to
why that behavior is important to emulate. If that behavior is needed,
we can change writeNopData() to behave in the same way.
This fixes PR17352.
llvm-svn: 191426
|
| |
|
|
| |
llvm-svn: 191423
|
| |
|
|
| |
llvm-svn: 191422
|
| |
|
|
| |
llvm-svn: 191421
|
| |
|
|
|
|
|
|
|
| |
Encodings were checked against the Power ISA documents and double
checked against binutils.
This fixes PR17350.
llvm-svn: 191419
|
| |
|
|
|
|
|
|
| |
This is the first set of instructions with a ".b" modifier thus we need to add the required code to disassemble a MSA128B register class.
Patch by Matheus Almeida
llvm-svn: 191415
|
| |
|
|
|
|
|
|
|
|
|
| |
of the MSA spec (1.06).
Internal changes only.
Patch by Matheus Almeida
llvm-svn: 191414
|
| |
|
|
|
|
| |
Patch by Matheus Almeida
llvm-svn: 191413
|
| |
|
|
|
|
|
|
|
|
| |
In more detail, this patch adds the ability to parse, encode and decode MSA registers ($w0-$w31). The format of 2RF instructions (MipsMSAInstrFormat.td) was updated so that we could attach a test case to this patch i.e., the test case parses, encodes and decodes 2 MSA instructions. Following patches will add the remainder of the instructions.
Note that DecodeMSA128BRegisterClass is missing from MipsDisassembler.td because it's not yet required at this stage and having it would cause a compiler warning (unused function).
Patch by Matheus Almeida
llvm-svn: 191412
|
| |
|
|
|
|
|
|
|
|
|
|
| |
revision of the MSA spec (1.06).
This only changes internal encodings and doesn't affect output.
Patch by Matheus Almeida
llvm-svn: 191411
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Generally, it is desirable to distribute (a + b) * c to a*c + b*c for
ARM with VMLx forwarding, where a, b and c are vectors.
However, for (a + b)*(a + b), distribution will result in one extra
instruction.
With distribution:
x = a + b (add)
y = a * x (mul)
z = y + b * y (mla)
Without distribution:
x = a + b (add)
z = x * x (mul)
This patch checks if a mul is a square of add/sub. If yes, skip
distribution.
llvm-svn: 191410
|
| |
|
|
| |
llvm-svn: 191408
|
| |
|
|
| |
llvm-svn: 191407
|
| |
|
|
| |
llvm-svn: 191401
|
| |
|
|
|
|
|
| |
and make one cosmetic cleanup to make it look the same as gcc
in this area; adjusting test cases.
llvm-svn: 191400
|
| |
|
|
|
|
|
|
|
|
|
|
| |
(shl (zext (shr A, X)), X) => (zext (shl (shr A, X), X)).
The rule only triggers when there are no other uses of the
zext to avoid materializing more instructions.
This helps the DAGCombiner understand that the shl/shr
sequence can then be converted into an and instruction.
llvm-svn: 191393
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Ideally, the machinel model is added at the time the instructions are
defined. But many instructions in X86InstrSSE.td still need a model.
Without this workaround the scheduler asserts because x86 already has
itinerary classes for these instructions, indicating they should be
modeled by the scheduler. Since we use the new machine model for other
instructions, it expects a new machine model for these too.
llvm-svn: 191391
|
| |
|
|
|
|
|
| |
Put them under a separate flag for experimentation. They are more likely to
interfere with loop vectorization which happens later in the pass pipeline.
llvm-svn: 191371
|