| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
More missing guards. My build didn't notice it due to a stale file left over
from a Global ISel build.
llvm-svn: 292369
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Adds a RegisterBank tablegen class that can be used to declare the register
banks and an associated tablegen pass to generate the necessary code.
Changes since last commit:
The new tablegen pass is now correctly guarded by LLVM_BUILD_GLOBAL_ISEL and
this should fix the buildbots however it may not be the whole fix. The previous
buildbot failures suggest there may be a memory bug lurking that I'm unable to
reproduce (including when using asan) or spot in the source. If they re-occur
on this commit then I'll need assistance from the bot owners to track it down.
Reviewers: t.p.northover, ab, rovka, qcolombet
Reviewed By: qcolombet
Subscribers: aditya_nandakumar, rengolin, kristof.beyls, vkalintiris, mgorny, dberris, llvm-commits, rovka
Differential Revision: https://reviews.llvm.org/D27338
llvm-svn: 292367
|
| |
|
|
|
|
|
|
|
|
|
| |
Enable an ELFObjectFile to read the its arm build attributes to
produce a target triple with a specific ARM architecture.
llvm-objdump now uses this functionality to automatically produce
a more accurate target.
Differential Revision: https://reviews.llvm.org/D28769
llvm-svn: 292366
|
| |
|
|
|
|
| |
As discussed on D28777 - we don't need to handle 'all element' shuffles inside InstCombiner::visitCallInst as InstCombiner::SimplifyDemandedVectorElts will do everything we need.
llvm-svn: 292365
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch improves the mul instruction combine function (combineMul)
by adding new layer of logic.
In this patch, we are adding the ability to fold (mul x, -((1 << c) -1))
or (mul x, -((1 << c) +1)) into (neg(X << c) -x) or (neg((x << c) + x) respective.
Differential Revision: https://reviews.llvm.org/D28232
llvm-svn: 292358
|
| |
|
|
|
|
|
|
|
|
|
| |
identify such problem earlier"
This reverts commit r292210, as it broke the Thumb buldbot with:
clang-5.0: error: the clang compiler does not support '-fxray-instrument
on thumbv7-unknown-linux-gnueabihf'.
llvm-svn: 292357
|
| |
|
|
|
|
|
|
| |
During post-RA pseudo expansion, an 'undef' flag of the source operand should
be propagated by emitGRX32Move().
Review: Ulrich Weigand
llvm-svn: 292353
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch fixes bugzilla 31576 (https://llvm.org/bugs/show_bug.cgi?id=31576).
"data32" instruction prefix was not defined in the llvm.
An exception had to be added to the X86 tablegen and AsmPrinter because both "data16" and "data32" are encoded to 0x66 (but in different modes).
Differential Revision: https://reviews.llvm.org/D28468
llvm-svn: 292352
|
| |
|
|
|
|
|
|
|
| |
follow LLVM's naming conventions while I'm here.
Again, sorry I didn't spot this earlier to coalesce with other cleanup
changes.
llvm-svn: 292333
|
| |
|
|
|
|
|
|
|
| |
deleted.
I've expanded its test coverage a bit including adding one test that
will crash clearly without this change.
llvm-svn: 292332
|
| |
|
|
| |
llvm-svn: 292328
|
| |
|
|
|
|
| |
build bot.
llvm-svn: 292327
|
| |
|
|
| |
llvm-svn: 292325
|
| |
|
|
|
|
|
| |
The grow_memory instruction now returns the previous memory size. Add the
return type to the LLVM intrinsic.
llvm-svn: 292322
|
| |
|
|
|
|
|
|
|
|
|
| |
You can now define the register class of a virtual register on the
operand itself avoiding the need to use a "registers:" block.
Example: "%0:gr64 = COPY %rax"
Differential Revision: https://reviews.llvm.org/D22398
llvm-svn: 292321
|
| |
|
|
|
|
| |
warnings; other minor fixes (NFC).
llvm-svn: 292320
|
| |
|
|
| |
llvm-svn: 292319
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: tra, majnemer
Subscribers: llvm-commits, jholewinski
Differential Revision: https://reviews.llvm.org/D28825
llvm-svn: 292316
|
| |
|
|
| |
llvm-svn: 292310
|
| |
|
|
|
|
|
| |
Some instructions were printed as "foo\tbar", but most are printed as
"foo \bar". Standardize on the latter form.
llvm-svn: 292306
|
| |
|
|
|
|
|
| |
!strconcat is a variadic function; it will concatenate an arbitrary
number of strings. There's no need to nest it.
llvm-svn: 292305
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This change also lets us use max.{s,u}16. There's a vague warning in a
test about this maybe being less efficient, but I could not come up with
a case where the resulting SASS (sm_35 or sm_60) was different with or
without max.{s,u}16. It's true that nvcc seems to emit only
max.{s,u}32, but even ptxas 7.0 seems to have no problem generating
efficient SASS from max.{s,u}16 (the casts up to i32 and back down to
i16 seem to be implicit and nops, happening via register aliasing).
In the absence of evidence, better to have fewer special cases, emit
more straightforward code, etc. In particular, if a new GPU has 16-bit
min/max instructions, we want to be able to use them.
Reviewers: tra
Subscribers: jholewinski, llvm-commits
Differential Revision: https://reviews.llvm.org/D28732
llvm-svn: 292304
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Previously we lowered it literally, to shifts and xors.
Reviewers: tra
Subscribers: jholewinski, llvm-commits
Differential Revision: https://reviews.llvm.org/D28722
llvm-svn: 292303
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Avoid an unnecessary conversion operation when using the result of
ctpop.i32 or ctpop.i16 as an i32, as in both cases the ptx instruction
we run returns an i32.
(Previously if we used the value as an i32, we'd do an unnecessary
zext+trunc.)
Reviewers: tra
Subscribers: jholewinski, llvm-commits
Differential Revision: https://reviews.llvm.org/D28721
llvm-svn: 292302
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: tra
Subscribers: llvm-commits, jholewinski
Differential Revision: https://reviews.llvm.org/D28720
llvm-svn: 292301
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
* Disable "ctlz speculation", which inserts a branch on every ctlz(x) which
has defined behavior on x == 0 to check whether x is, in fact zero.
* Add DAG patterns that avoid re-truncating or re-expanding the result
of the 16- and 64-bit ctz instructions.
Reviewers: tra
Subscribers: llvm-commits, jholewinski
Differential Revision: https://reviews.llvm.org/D28719
llvm-svn: 292299
|
| |
|
|
| |
llvm-svn: 292295
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Threshold in loop unorller.
Summary: Partial unrolling should have separate threshold with full unrolling.
Reviewers: efriedma, mzolotukhin
Reviewed By: efriedma, mzolotukhin
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D28831
llvm-svn: 292293
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The patch is to solve the performance problem described in PR27827.
Register coalescing sometimes cannot remove a copy because of interference.
But if we can find a reverse copy in one of the predecessor block of the copy,
the copy is partially redundent and we may remove the copy partially by moving
it to the predecessor block without the reverse copy.
Differential Revision: https://reviews.llvm.org/D28585
llvm-svn: 292292
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: The causes google/ossfuzz#84
Reviewers: kcc
Subscribers: mgorny
Differential Revision: https://reviews.llvm.org/D28827
llvm-svn: 292289
|
| |
|
|
|
|
| |
code between cmp and memcmp handling)
llvm-svn: 292287
|
| |
|
|
|
|
| |
use-after-scope in mutator tests
llvm-svn: 292286
|
| |
|
|
|
|
| |
As with G_ICMP we'd written the CSET instructions backwards.
llvm-svn: 292285
|
| |
|
|
| |
llvm-svn: 292284
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Some platforms (notably iOS) use a different calling convention for unnamed vs
named parameters in varargs functions, so we need to keep track of this
information when translating calls.
Since not many platforms are involved, the guts of the special handling is in
the ValueHandler class (with a generic implementation that should work for most
targets).
llvm-svn: 292283
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
unique exit block if available rather than rolling it ourselves.
This is a little disappointing because that helper doesn't do anything
clever to short-circuit the (surprisingly expensive) computation of all
exit blocks. What's worse is that the way we compute this is hopelessly,
hilariously inefficient. We're literally computing the same information
two different ways and multiple times each way:
- hasDedicatedExits computes the exit block set and then looks at the
predecessors of each
- getExitingBlocks computes the set of loop blocks which have exiting
successors
- getUniqueExitBlock(s) computes the set of non-loop blocks reached from
loop blocks (sound familiar?)
Anyways, at some point we should clean all of this up in the LoopInfo
API, but for now just simplifying the user I'm about to touch.
llvm-svn: 292282
|
| |
|
|
|
|
| |
conventions, missed this one in a previous cleanup patch (sorry).
llvm-svn: 292279
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Correctly populating Machine PHIs relies on knowing exactly how the IR level
CFG was lowered to MachineIR. This needs to be tracked by any translation
phases that meddle (currently only SwitchInst handling).
This reapplies r291973 which was reverted because of testing failures. Fixes:
+ Don't return an ArrayRef to a local temporary.
+ Incorporate Kristof's suggested comment improvements.
llvm-svn: 292278
|
| |
|
|
|
|
|
|
|
|
| |
I hope that for any code, it is changed only with good reason and only
when the author knows what they are doing...
There is of course good reason to comment here about the subtlety of the
process, and I've left that comment in tact.
llvm-svn: 292275
|
| |
|
|
|
|
|
|
|
|
|
|
| |
instead of members.
No state was being provided by the object so this seems strictly
simpler.
I've also tried to improve the name and comments for the functions to
more thoroughly document what they are doing.
llvm-svn: 292274
|
| |
|
|
|
|
|
|
|
|
|
| |
that we know has exactly one element when all we are going to do is get
that one element out of it.
Instead, pass around that one element.
There are more simplifications to come in this code...
llvm-svn: 292273
|
| |
|
|
|
|
|
| |
conventions more conistently before hacking on this code to integrate
nicely with new PM's loop pass infrastructure. NFC.
llvm-svn: 292272
|
| |
|
|
|
|
|
| |
This reduces the size of and increases the symmetry with the planned functional change in:
https://reviews.llvm.org/D28406
llvm-svn: 292260
|
| |
|
|
|
| |
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
llvm-svn: 292258
|
| |
|
|
|
|
|
|
|
|
|
| |
If a memory instruction will be vectorized, but it's pointer operand is
non-consecutive-like, the instruction is a gather or scatter operation. Its
pointer operand will be non-uniform. This should fix PR31671.
Reference: https://llvm.org/bugs/show_bug.cgi?id=31671
Differential Revision: https://reviews.llvm.org/D28819
llvm-svn: 292254
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D26701
llvm-svn: 292252
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Depends on D28740
Reviewers: dberlin, chandlerc, hfinkel, majnemer
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D28741
llvm-svn: 292249
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
r292188 confused MSVC because of the combined lack of a default
case and return statement.
Move the unreachable outside of the NumLibFuncs case, to make it
obvious that all cases should be handled.
llvm_unreachable is __declspec(noreturn), so I'm assuming this
does appease MSVC.
llvm-svn: 292246
|
| |
|
|
| |
llvm-svn: 292244
|
| |
|
|
|
|
|
|
| |
Even with the fix from r291630, this still causes problems. I get
widespread assertion failures in the Swift runtime's WeakRefCount::increment()
function. I sent a reduced testcase in reply to the commit.
llvm-svn: 292242
|