| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The def instruction for the vreg may not match, because it may be
folding through a reg_sequence. The assert was overly conservative and
not necessary. It's not actually important if DefMI really defined the
register, because the fold that will be done cares about the def of
the value that will be folded.
For some reason copies aren't making it through the reg_sequence,
although they should.
llvm-svn: 363876
|
|
|
|
|
|
|
|
| |
This reapplies r363678, using the correct chain for the CopyToReg for
v0. glueCopyToM0 counterintuitively changes the operands of the
original node.
llvm-svn: 363870
|
|
|
|
|
|
|
|
|
| |
There may or may not be additional work to handle this correctly on
SI/CI.
........
Breaks EXPENSIVE_CHECKS buildbots - http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/78/
llvm-svn: 363797
|
|
|
|
|
|
|
|
|
|
|
| |
This allows targets to make more decisions about reserved registers
after isel. For example, now it should be certain there are calls or
stack objects in the frame or not, which could have been introduced by
legalization.
Patch by Matthias Braun
llvm-svn: 363757
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D63511
llvm-svn: 363729
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D63506
llvm-svn: 363721
|
|
|
|
|
|
|
| |
There may or may not be additional work to handle this correctly on
SI/CI.
llvm-svn: 363678
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Invert the name and return value to better reflect the imprecise
nature.
Force passing in the DefMI, since it's known in the 2 users and could
possibly fail for an arbitrary vreg.
Allow specifying a specific user instruction. Scan through use
instructions, instead of use operands. Add scan thresholds instead of
searching infinitely.
Stop using a set to track seen uses. I didn't understand this usage,
or why it would not check the last use. I don't think the use list has
any particular order.
llvm-svn: 363675
|
|
|
|
|
|
| |
These may be inserted to assert uniformity somewhere.
llvm-svn: 363670
|
|
|
|
|
|
|
| |
The copy was found by searching the uses of a virtual register, so
it's already known to be virtual.
llvm-svn: 363669
|
|
|
|
|
|
| |
The lifetime intrinsic was erased, which was the next iterator.
llvm-svn: 363668
|
|
|
|
| |
llvm-svn: 363667
|
|
|
|
|
|
|
|
| |
GCNScheduleDAGMILive.
Differential revision: https://reviews.llvm.org/D62401
llvm-svn: 363661
|
|
|
|
|
|
|
|
|
| |
This is part of the approved D63204 pending parent revision.
This small change is in fact a part of the VOP2b legalization which
does not technically belong to wave32 support, so extracted
separately.
llvm-svn: 363625
|
|
|
|
|
|
|
|
|
| |
AMDGPUPropagateAttributes will not work on function bitcatsts,
so move AMDGPUFixFunctionBitcasts before it.
Differential Revision: https://reviews.llvm.org/D63455
llvm-svn: 363614
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The purpose of the padding is to guard against stale code being
fetched into the instruction cache by the lowest level prefetching.
We're generating relocatable ELF here, and so the padding should
arguably be added by the linker. This is in fact what Mesa does.
This also fixes multi-part shaders for Mesa.
Change-Id: I6bfede58f20e9f337762ccf39ef9e0e263e69e82
Reviewers: arsenm, rampitec, t-tye
Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63427
llvm-svn: 363602
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D63206
llvm-svn: 363588
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The pass works in two modes:
Mode 1: Just set attributes starting from kernels. This can work at
the very beginning of opt and llc pipeline, but cannot clone functions
because it must be a function pass.
Mode 2: Actually clone functions for new attributes. This can only work
after all function passes in the opt pipeline because it has to be a
module pass.
Differential Revision: https://reviews.llvm.org/D63208
llvm-svn: 363586
|
|
|
|
|
|
|
|
| |
I keep using the wrong instruction when manually writing tests. This
really needs to check the number of operands, but I don't see an easy
way to do that right now.
llvm-svn: 363579
|
|
|
|
| |
llvm-svn: 363578
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D63207
llvm-svn: 363577
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: arsenm
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, hiraditya, Petar.Avramovic, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60640
llvm-svn: 363576
|
|
|
|
|
|
|
| |
Even if the target doesn't have flat instructions, addrspace(0) is
still flat. It just happens to not work.
llvm-svn: 363561
|
|
|
|
|
|
| |
Tests will be in future commits when new intrinsics are handled here.
llvm-svn: 363559
|
|
|
|
|
|
|
| |
Use separate enums for each kind, avoid repeating overloads, and add
missing classof implementation.
llvm-svn: 363558
|
|
|
|
| |
llvm-svn: 363543
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch changes MIR stack-id from an integer to an enum,
and adds printing/parsing support for this in MIR files. The default
stack-id '0' is now renamed to 'default'.
This should make MIR tests that have stack objects with different stack-ids
more descriptive. It also clarifies code operating on StackID.
Reviewers: arsenm, thegameg, qcolombet
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D60137
llvm-svn: 363533
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
We will use absolute relocations for LDS symbols.
Change-Id: I9a32795ed0ea835e433a787129cfe3c57ee9a325
Reviewers: arsenm, rampitec
Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61492
llvm-svn: 363517
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Instead of encoding a high-word of 0 using a fake TargetGlobalAddress,
just use a literal target constant. This simplifies some subsequent changes.
The generated assembly is now more explicit about the kind of relocation
that is to be used.
Change-Id: I066835202d23b5941fa7a358eb4b89e9b71ab6f8
Reviewers: arsenm, rampitec
Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61491
llvm-svn: 363516
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Change-Id: Ie4c971462a7749740938c687144e77441dac2539
Reviewers: rampitec, arsenm
Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D62486
Change-Id: Iae59523edd75c74918d2118df6571a7b671717a0
llvm-svn: 363514
|
|
|
|
|
|
|
|
|
| |
This is cpp source part of wave32 support, excluding overriden
getRegClass().
Differential Revision: https://reviews.llvm.org/D63351
llvm-svn: 363513
|
|
|
|
|
|
|
| |
This reapplies r363410, avoiding null dereference if there is no
AltRegBank.
llvm-svn: 363478
|
|
|
|
|
|
|
|
|
|
|
| |
This patch breaks UBSan build bots. See
https://github.com/google/sanitizers/wiki/SanitizerBotReproduceBuild for
a guide as to how to reproduce the error.
This reverts commit c2864c0de07efb5451d32d27a7d4ff2984830929.
This reverts rL363410.
llvm-svn: 363476
|
|
|
|
|
|
|
|
|
|
|
| |
Currently you get extra waits, because waits are inserted for the
register dependencies of the call, and the function prolog waits on
everything.
Currently waits are still inserted on returns. It may make sense to
not do this, and wait in the caller instead.
llvm-svn: 363465
|
|
|
|
|
|
|
|
|
| |
The way SelectionDAG treats memory operands is very frustrating, and
by default drops them unless a property is set on the pattern. There
is no pattern for manually selected instructions, so this requires
manually setting them.
llvm-svn: 363455
|
|
|
|
|
|
|
| |
This seems to only be used for generating some kind
of documentation, but might as well set it.
llvm-svn: 363454
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Function bodies marked inline in an opencl source are eliminated but MaxBB check may prevent inlining them leaving undefined references.
Reviewers: rampitec, arsenm
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, Anastasia, t-tye, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63337
llvm-svn: 363418
|
|
|
|
|
|
|
|
|
|
|
| |
Earlier commit has added AMDGPUOperand::isBoolReg(). Turns out
gcc issues warning about unused function since D63204 is not
yet submitted.
Added NFC part of D63204 to have a use of that function and
mute the warning.
llvm-svn: 363416
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Avoid producing illegal register bank copies for reg_sequence and
phi. The default implementation assumes it is possible to pick any
operand's bank and use that for the result, introducing a copy for
operands with a different bank. This does not check for illegal
copies. It is not legal to introduce a VGPR->SGPR copy, so any VGPR
operand requires the result to be a VGPR.
The changes in getInstrMappingImpl aren't strictly necessary, since
AMDGPU now just bypasses this for reg_sequence/phi. This could be
replaced with an assert in case other targets run into this. It is
currently responsible for producing the error for unsatisfiable
copies, but this will be better served with a verifier check.
For phis, for now assume any undetermined operands must be
VGPRs. Eventually, this needs to be able to defer mapping these
operations. This also does not yet have a way to check for whether the
block is in a divergent region.
llvm-svn: 363410
|
|
|
|
|
|
|
| |
I don't think this was causing any observable issues, but was making
reading the DAG dump confusing.
llvm-svn: 363389
|
|
|
|
| |
llvm-svn: 363385
|
|
|
|
| |
llvm-svn: 363384
|
|
|
|
| |
llvm-svn: 363383
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D63307
llvm-svn: 363344
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D63301
llvm-svn: 363339
|
|
|
|
|
|
|
| |
It was missing from D63293 and breaks in a debug tablegen w/o
this part.
llvm-svn: 363323
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D63293
llvm-svn: 363299
|
|
|
|
|
|
|
|
|
| |
Added missing ImmArg and SourceOfDivergence to the crosslane
intrinsics.
Differential Revision: https://reviews.llvm.org/D63216
llvm-svn: 363276
|
|
|
|
|
|
|
|
|
|
| |
See bug 40820: https://bugs.llvm.org/show_bug.cgi?id=40820
Reviewers: artem.tamazov, arsenm
Differential Revision: https://reviews.llvm.org/D61125
llvm-svn: 363255
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D63203
llvm-svn: 363186
|