| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
This only really matters when the index is non-constant since the
constant case already gets taken care of by other combines.
llvm-svn: 274569
|
| |
|
|
|
|
|
|
|
|
| |
The other use really does only care about the SDNode (it checks the
opcode against a whitelist), but bitFieldPlacement can be misled if
the node produces multiple results.
Patch by Ismail Badawi.
llvm-svn: 274567
|
| |
|
|
|
|
|
|
|
|
| |
Because of the special immediate operand, the constant
bus is already used so SGPRs are never useful.
r263212 changed the name of the immediate operand, which
broke the verifier check for the restriction.
llvm-svn: 274564
|
| |
|
|
| |
llvm-svn: 274563
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
These have been replaced with TableGen code (except for isConstantLoad,
which is still used for R600). The queries were broken for cases
where MemOperand was a PseudoSourceValue.
Reviewers: arsenm
Subscribers: arsenm, kzhuravl, llvm-commits
Differential Revision: http://reviews.llvm.org/D21684
llvm-svn: 274561
|
| |
|
|
|
|
|
|
|
| |
This patch also removes the SCEV variants of getStepVector() since they have no
uses after the refactoring.
Differential Revision: http://reviews.llvm.org/D21903
llvm-svn: 274558
|
| |
|
|
|
|
| |
2 source registers. NFC.
llvm-svn: 274556
|
| |
|
|
| |
llvm-svn: 274555
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D21789
llvm-svn: 274553
|
| |
|
|
|
|
|
|
| |
integer instructions
Differential Revision: http://reviews.llvm.org/D21972
llvm-svn: 274551
|
| |
|
|
| |
llvm-svn: 274550
|
| |
|
|
|
|
|
|
|
|
|
|
| |
this kind.
Reviewers: sdardis
Subscribers: dsanders, sdardis, llvm-commits
Differential Revision: http://reviews.llvm.org/D21986
llvm-svn: 274547
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The important thing I was missing was ensuring newly added constants were kept in topological order. Repositioning the node is correct if the constant is newly added (so it has no topological ordering) but wrong if it already existed - positioning it next in the worklist would break the topological ordering.
Original commit message:
[Thumb] Select a BIC instead of AND if the immediate can be encoded more optimally negated
If an immediate is only used in an AND node, it is possible that the immediate can be more optimally materialized when negated. If this is the case, we can negate the immediate and use a BIC instead;
int i(int a) {
return a & 0xfffffeec;
}
Used to produce:
ldr r1, [CONSTPOOL]
ands r0, r1
CONSTPOOL: 0xfffffeec
And now produces:
movs r1, #255
adds r1, #20 ; Less costly immediate generation
bics r0, r1
llvm-svn: 274543
|
| |
|
|
|
|
|
|
| |
for k_Token. NFC.
It turns out that MSVC requires this.
llvm-svn: 274538
|
| |
|
|
| |
llvm-svn: 274536
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch corresponds to review:
http://reviews.llvm.org/D20443
It changes the legalization strategy for illegal vector types from integer
promotion to widening. This only applies for vectors with elements of width
that is a multiple of a byte since we have hardware support for vectors with
1, 2, 3, 8 and 16 byte elements.
Integer promotion for vectors is quite expensive on PPC due to the sequence
of breaking apart the vector, extending the elements and reconstituting the
vector. Two of these operations are expensive.
This patch causes between minor and major improvements in performance on most
benchmarks. There are very few benchmarks whose performance regresses. These
regressions can be handled in a subsequent patch with a DAG combine (similar
to how this patch handles int -> fp conversions of illegal vector types).
llvm-svn: 274535
|
| |
|
|
|
|
|
|
|
| |
Normal archives do not have empty UID/GID fields. However, the Microsoft
Import library format is a customized archive (it just uses an alternate symbol
index format). When the import library is constructed by lib.exe, the UID and
GID fields are left empty. Do not abort on such an input.
llvm-svn: 274528
|
| |
|
|
|
|
|
|
|
| |
This moves of the r600 logic out of isGlobalLoad() and into the
TableGen files.
Differential Revision: http://reviews.llvm.org/D21710
llvm-svn: 274527
|
| |
|
|
|
|
| |
than a const string&.
llvm-svn: 274526
|
| |
|
|
|
|
| |
we can shorten the length of the comparison strings and avoid repeatedly comparing the common prefix. No functional change intended.
llvm-svn: 274522
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The isGlobalLoad() query was returning true for constant address space loads
with memory types less than 32-bits, which is wrong. This logic has been
replaced with PatFrag in the TableGen files, to provide the same functionality.
Reviewers: arsenm
Subscribers: arsenm, kzhuravl, llvm-commits
Differential Revision: http://reviews.llvm.org/D21696
llvm-svn: 274521
|
| |
|
|
| |
llvm-svn: 274520
|
| |
|
|
|
|
| |
were autoupgraded to native IR in r274506 and r274506.
llvm-svn: 274519
|
| |
|
|
|
|
|
|
| |
These are printed as part of Fetch clauses.
Differential Revision: http://reviews.llvm.org/D21730
llvm-svn: 274517
|
| |
|
|
|
|
| |
This reverts commit r274510 - it made green dragon unhappy.
llvm-svn: 274512
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We were using DAG->getConstant instead of DAG->getTargetConstant. This meant that we could inadvertently increase the use count of a constant if stars aligned, which it did in this testcase. Increasing the use count of the constant could cause ISel to fall over (because DAGToDAG lowering assumed the constant had only one use!)
Original commit message:
[Thumb] Select a BIC instead of AND if the immediate can be encoded more optimally negated
If an immediate is only used in an AND node, it is possible that the immediate can be more optimally materialized when negated. If this is the case, we can negate the immediate and use a BIC instead;
int i(int a) {
return a & 0xfffffeec;
}
Used to produce:
ldr r1, [CONSTPOOL]
ands r0, r1
CONSTPOOL: 0xfffffeec
And now produces:
movs r1, #255
adds r1, #20 ; Less costly immediate generation
bics r0, r1
llvm-svn: 274510
|
| |
|
|
| |
llvm-svn: 274506
|
| |
|
|
| |
llvm-svn: 274498
|
| |
|
|
| |
llvm-svn: 274497
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This complements the earlier addition of IntrWriteMem and IntrWriteArgMem
LLVM intrinsic properties, see D18291.
Also start using the attribute for memset, memcpy, and memmove intrinsics,
and remove their special-casing in BasicAliasAnalysis.
Reviewers: reames, joker.eph
Subscribers: joker.eph, llvm-commits
Differential Revision: http://reviews.llvm.org/D18714
llvm-svn: 274485
|
| |
|
|
|
|
|
|
|
|
| |
concatenation of the inputs more general purpose.
We can now handle concatenation of each source multiple times. The previous code just checked for each source to appear once in either order.
This also now handles an entire source vector sized piece having undef indices correctly. We now concat with UNDEF instead of using one of the sources. This is responsible for the test case change.
llvm-svn: 274483
|
| |
|
|
| |
llvm-svn: 274481
|
| |
|
|
| |
llvm-svn: 274480
|
| |
|
|
| |
llvm-svn: 274479
|
| |
|
|
| |
llvm-svn: 274478
|
| |
|
|
| |
llvm-svn: 274476
|
| |
|
|
|
|
| |
condition. NFCI.
llvm-svn: 274474
|
| |
|
|
| |
llvm-svn: 274473
|
| |
|
|
|
|
|
|
| |
handle undef indices.
Undef indices can now be treated as zeros. Or if its undef ORed with zero, we will keep the undef.
llvm-svn: 274472
|
| |
|
|
|
|
|
|
|
|
| |
After the block placement, if a block ends with a conditional branch, but the
next block is not its successor. The conditional branch should be changed to
unconditional branch. This patch fixes PR28307, PR28297, PR28402.
Differential Revision: http://reviews.llvm.org/D21811
llvm-svn: 274470
|
| |
|
|
| |
llvm-svn: 274469
|
| |
|
|
| |
llvm-svn: 274468
|
| |
|
|
| |
llvm-svn: 274467
|
| |
|
|
|
|
| |
comments
llvm-svn: 274466
|
| |
|
|
| |
llvm-svn: 274465
|
| |
|
|
| |
llvm-svn: 274464
|
| |
|
|
| |
llvm-svn: 274463
|
| |
|
|
| |
llvm-svn: 274462
|
| |
|
|
| |
llvm-svn: 274461
|
| |
|
|
|
|
|
|
|
|
| |
This patch adds support for including the avx512 mask register information in the mask/maskz versions of shuffle instruction comments.
This initial version just adds support for MOVDDUP/MOVSHDUP/MOVSLDUP to reduce the mass of test regenerations, other shuffle instructions can be added in due course.
Differential Revision: http://reviews.llvm.org/D21953
llvm-svn: 274459
|