| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
| |
Reviewers: kuhar, chandlerc, NutshellySima, brzycki
Reviewed By: NutshellySima, brzycki
Differential Revision: https://reviews.llvm.org/D54317
llvm-svn: 346618
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: The debug_info_offset values in .debug_{,gnu_}pub{name,types} may be relocated. Change it to DWARFSection so that we can get relocated values.
Reviewers: ruiu, dblaikie, grimar, JDevlieghere
Reviewed By: JDevlieghere
Subscribers: aprantl, JDevlieghere, llvm-commits
Differential Revision: https://reviews.llvm.org/D54375
llvm-svn: 346615
|
| |
|
|
|
|
|
|
| |
As discussed in https://reviews.llvm.org/D52104
Differential Revision: https://reviews.llvm.org/D52143
llvm-svn: 346606
|
| |
|
|
| |
llvm-svn: 346605
|
| |
|
|
|
|
|
|
| |
In a lot of places an empty string was passed as the ErrorBanner to
logAllUnhandledErrors. This patch makes that argument optional to
simplify the call sites.
llvm-svn: 346604
|
| |
|
|
|
|
| |
getConstant will create a BUILD_VECTOR for us and use a legal type if necessary. So just create the simple node and let BUILD_VECTOR legalization do the canonicalization.
llvm-svn: 346603
|
| |
|
|
|
|
|
|
| |
SDNode*. NFC
Removes the need to call getNode internally and to recreate an SDValue after the call.
llvm-svn: 346600
|
| |
|
|
| |
llvm-svn: 346596
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a long-awaited follow-up suggested in D33578. Since then, we've picked up even more
opportunities for vector narrowing from changes like D53784, so there are a lot of test diffs.
Apart from 2-3 strange cases, these are all wins.
I've structured this to be no-functional-change-intended for any target except for x86
because I couldn't tell if AArch64, ARM, and AMDGPU would improve or not. All of those
targets have existing regression tests (4, 4, 10 files respectively) that would be
affected. Also, Hexagon overrides the shouldReduceLoadWidth() hook, but doesn't show
any regression test diffs. The trade-off is deciding if an extra vector load is better
than a single wide load + extract_subvector.
For x86, this is almost always better (on paper at least) because we often can fold
loads into subsequent ops and not increase the official instruction count. There's also
some unknown -- but potentially large -- benefit from using narrower vector ops if wide
ops are implemented with multiple uops and/or frequency throttling is avoided.
Differential Revision: https://reviews.llvm.org/D54073
llvm-svn: 346595
|
| |
|
|
| |
llvm-svn: 346592
|
| |
|
|
|
|
|
|
| |
No lit tests fail with this code removed.
This is a pre-commit for D54346.
llvm-svn: 346590
|
| |
|
|
|
|
| |
types (PR39615)
llvm-svn: 346589
|
| |
|
|
| |
llvm-svn: 346588
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
There are two AGU units, and per 1cy, there can be either two loads,
or a load and a store; but not two stores, or two loads and a store.
Additionally, loads shouldn't affect the store scheduler and vice versa.
(but *should* affect the PdEX scheduler.)
Required rL346545.
Fixes https://bugs.llvm.org/show_bug.cgi?id=39465
llvm-svn: 346587
|
| |
|
|
|
|
|
|
|
| |
This patch allows internalising globals if all accesses to them
(from live functions) are from non-volatile load instructions
Differential revision: https://reviews.llvm.org/D49362
llvm-svn: 346584
|
| |
|
|
|
|
|
|
| |
any_extend of the remainder from an 8-bit sdivrem.
The sdivrem will emit its own MOVSX to move %ah to the low byte of a register. By using a MOVSX for an any_extend this allows a post-isel peephole to merge them.
llvm-svn: 346581
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: rnk, thakis
Reviewed By: krytarowski
Differential Revision: https://reviews.llvm.org/D54363
llvm-svn: 346577
|
| |
|
|
| |
llvm-svn: 346576
|
| |
|
|
|
|
|
|
|
|
| |
directly using X86ISD::UNPCKL/X86ISD::UNPCKH.
This gives shuffle lowering the freedom to use zero_extend_vector_inreg for the unpckl shuffle. Shuffle combining usually makes this swap later, but not when AVX512 is enabled it seems.
While there also use DAG.getConstant to create a 0 vector instead of using the helper the forces a specific BUILD_VECTOR. I don't think that helper is usually needed. We're basically free to create a constant build_vector anytime and it will be legalized on its own.
llvm-svn: 346574
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: aheejin, dschuff
Subscribers: sbc100, jgravelle-google, sunfish, jfb, llvm-commits
Differential Revision: https://reviews.llvm.org/D54362
llvm-svn: 346570
|
| |
|
|
| |
llvm-svn: 346569
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This patch adds support for funclets in frame lowering and ISel
lowering. Together with D50288 and D50166, it enables C++ exception
handling.
Patch by Sanjin Sijaric, with some fixes by me.
Differential Revision: https://reviews.llvm.org/D51524
llvm-svn: 346568
|
| |
|
|
|
|
| |
gcc wants parentheses around the logical OR since there is a logical AND for the string.
llvm-svn: 346564
|
| |
|
|
|
|
|
|
|
|
|
|
| |
LDRcp should be deleted when the dest register is dead in register
coalescing. Without MemOp, dead LDRcp will cause dead constant pool
value which references to non-existing label.
Patch by Yin Ma.
Differential Revision: https://reviews.llvm.org/D54173
llvm-svn: 346563
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ComputeValueKnownInPredecessors has a "visited" set to prevent infinite
loops, since a value can be visited more than once. However, the
implementation didn't prevent the algorithm from taking exponential
time. Instead of removing elements from the RecursionSet one at a time,
we should keep around the whole set until
ComputeValueKnownInPredecessors finishes, then discard it.
The testcase is synthetic because I was having trouble effectively
reducing the original. But it's basically the same idea.
Instead of failing, we could theoretically cache the result instead.
But I don't think it would help substantially in practice.
Differential Revision: https://reviews.llvm.org/D54239
llvm-svn: 346562
|
| |
|
|
|
|
|
|
|
|
| |
lowering to isel. Change to use vpmovzx instead of vpmovsx.
With avx512f but not avx512bw we need to extend to v16i32 then truncate that to to v16i8. Previously we emitted both nodes during lowering, but I'm trying to switch to using target independent nodes and with that switched the extend+truncate wou
This patch changes the implementation to what will be necessary with that patch which helps minimize test diffs.
llvm-svn: 346552
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: t.p.northover, SjoerdMeijer, kristof.beyls
Reviewed By: kristof.beyls
Subscribers: olista01, javed.absar, kristof.beyls, kristina, llvm-commits
Differential Revision: https://reviews.llvm.org/D53908
llvm-svn: 346546
|
| |
|
|
|
|
|
|
|
|
| |
Before: const wchar_t * {L"%"}
Now: L"%"
See also PR39593.
Differential Revision: https://reviews.llvm.org/D54294
llvm-svn: 346544
|
| |
|
|
| |
llvm-svn: 346543
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D54282
llvm-svn: 346540
|
| |
|
|
|
|
|
|
| |
This makes X86ISD::VSEXT more similar to ISD::SIGN_EXTEND and ISD::ZERO_EXTEND.
I'm hoping to replace X86ISD::VSEXT/VZEXT with target independent nodes. Making the target specific nodes similar to the target independent nodes helps minimize test diffs in that patch.
llvm-svn: 346539
|
| |
|
|
|
|
| |
start of the source vector
llvm-svn: 346538
|
| |
|
|
| |
llvm-svn: 346537
|
| |
|
|
| |
llvm-svn: 346535
|
| |
|
|
|
|
|
|
| |
For SK_ExtractSubvector, the default 'Ty' type is the source operand type and 'SubTy' is the destination subvector type
I got this the wrong way around when I added rL346510
llvm-svn: 346534
|
| |
|
|
|
|
|
|
|
|
|
| |
Eliminate the stack frame in functions with the noreturn nounwind
attributes, and when the noreturn-stack-elim target feature is
enabled. This reduces the code and stack space needed for noreturn
functions.
Differential Revision: https://reviews.llvm.org/D54210
llvm-svn: 346532
|
| |
|
|
|
|
|
|
|
|
|
|
| |
vector op legalization and DAG legalization. Fix bad one use check in combineShuffleOfScalars
It's possible for vector op legalization to generate a shuffle. If that happens we should give a chance for DAG combine to combine that with a build_vector input.
I also fixed a bug in combineShuffleOfScalars that was considering the number of uses on a undef input to a shuffle. We don't care how many times undef is used.
Differential Revision: https://reviews.llvm.org/D54283
llvm-svn: 346530
|
| |
|
|
|
|
|
|
| |
This only covers AMDGPU BE, hopefully all occurrences.
Differential Revision: https://reviews.llvm.org/D54235
llvm-svn: 346528
|
| |
|
|
|
|
|
|
| |
Both -fPIC and -G0 disable placement of globals in small data section,
but if a global has an explicit section assigmnent placing it in small
data, it should go there anyway.
llvm-svn: 346523
|
| |
|
|
|
|
|
|
|
|
|
| |
Previous version used type erasure through a `void* (*)()` pointer,
which triggered gcc warning and implied a lot of reinterpret_cast.
This version should make it harder to hit ourselves in the foot.
Differential revision: https://reviews.llvm.org/D54203
llvm-svn: 346522
|
| |
|
|
| |
llvm-svn: 346515
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently in llvm, CalleeSavedInfo can only assign a callee saved register to
stack frame index to be spilled in the prologue. We would like to enable
spilling gprs to vector registers. This patch adds the capability to spill to
other registers aside from just the stack. It also adds the changes for power9
to spill gprs to volatile vector registers when they are available.
This happens only for leaf functions when using the option
-ppc-enable-pe-vector-spills.
Differential Revision: https://reviews.llvm.org/D39386
llvm-svn: 346512
|
| |
|
|
|
|
|
|
| |
(PR39368)
Add ShuffleVectorInst::isExtractSubvectorMask helper to match shuffle masks.
llvm-svn: 346510
|
| |
|
|
|
|
|
|
|
| |
only debug directives are requested."
This reverts commit r345972. Need to update the description + possibly
to update the patch itself after discussion with Eric Christofer.
llvm-svn: 346508
|
| |
|
|
|
|
|
|
|
|
|
| |
A minor improvement of buildVector() that skips creating an
INSERT_VECTOR_ELT for a Value which has already been used for the
REPLICATE.
Review: Ulrich Weigand
https://reviews.llvm.org/D54315
llvm-svn: 346504
|
| |
|
|
|
|
|
| |
This reverts commit r346453.
This is a complex change to a widely-used interface, and was not reviewed.
llvm-svn: 346500
|
| |
|
|
|
|
|
|
|
| |
Now that we have mixed type sizes, i1 values need to be explicitly
handled as we want to avoid promoting these values.
Differential Revision: https://reviews.llvm.org/D54308
llvm-svn: 346499
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
I noticed that we weren't generating broadcasts as much I thought we would with
D54271, and this is part of the problem.
Widening the shuffle elements means adding bitcasts and hiding the relationship
between a splatted scalar and the vector. If we can form a broadcast, do that
before going through the rest of the shuffle lowering because broadcasts should
be cheap and can often be load-folded.
Differential Revision: https://reviews.llvm.org/D54280
llvm-svn: 346498
|
| |
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D53492
Patch by James Clarke.
llvm-svn: 346497
|
| |
|
|
|
|
|
|
| |
Legalize s64 G_CONSTANT using narrowScalar on MIPS 32.
Differential Revision: https://reviews.llvm.org/D54255
llvm-svn: 346495
|