| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to be maintained.
Currently we can't keep any state in the selector object that we get from
subtarget. As a result we have to plumb through all our variables through
multiple functions. This change makes it non-const and adds a virtual init()
method to allow further state to be captured for each target.
AArch64 makes use of this in this patch to cache a call to hasFnAttribute()
which is expensive to call, and is used on each selection of G_BRCOND.
Differential Revision: https://reviews.llvm.org/D65984
llvm-svn: 368652
|
|
|
|
|
|
| |
llvm::Register as started by r367614. NFC
llvm-svn: 367633
|
|
|
|
|
|
|
| |
This regresses the weird types that are newly treated as legal load
types, but fixes incorrectly using flat instrucions on SI.
llvm-svn: 367512
|
|
|
|
| |
llvm-svn: 367509
|
|
|
|
| |
llvm-svn: 367507
|
|
|
|
| |
llvm-svn: 367504
|
|
|
|
| |
llvm-svn: 367498
|
|
|
|
|
|
|
| |
The G_ANYEXT handling can end up reaching selectCOPY, which mutates
the instruction in place.
llvm-svn: 366915
|
|
|
|
|
|
|
| |
The minnum/maxnum case are dead, and the cvt is handled by the
default.
llvm-svn: 366685
|
|
|
|
| |
llvm-svn: 366248
|
|
|
|
| |
llvm-svn: 366246
|
|
|
|
|
|
|
|
| |
Now that the patterns use the new PatFrag address space support, the
only blocker to importing most load patterns is the addressing mode
complex patterns.
llvm-svn: 366237
|
|
|
|
|
|
|
|
|
|
|
|
| |
Apparently the check for legal instructions during instruction
select does not happen without an asserts build, so these would
successfully select in release, and fail in debug.
Make s16 and/or/xor legal. These can just be selected directly
to the 32-bit operation, as is already done in SelectionDAG, so just
make them legal.
llvm-svn: 366210
|
|
|
|
| |
llvm-svn: 366121
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a hack until I come up with a better way of dealing with the
pseudo-register banks used for boolean values. If the use instruction
constrains the register, the selector for the def instruction won't
see that the bank was VCC. A 1-bit SReg_32 is could ambiguously have
been SCCRegBank or VCCRegBank in wave32.
This is necessary to successfully select branches with and and/or/xor
condition.
llvm-svn: 366120
|
|
|
|
|
|
|
|
|
| |
The extra test change is correct, although how it arrives there is a
bug that needs work. With wave32, the test for isVCC ambiguously
reports true for an SCC or VCC source. A new allocatable pseudo
register class for SCC may be necesssary.
llvm-svn: 366119
|
|
|
|
| |
llvm-svn: 366118
|
|
|
|
|
|
| |
This was emitting a copy from a 32-bit register to a 64-bit.
llvm-svn: 366117
|
|
|
|
| |
llvm-svn: 366114
|
|
|
|
| |
llvm-svn: 366102
|
|
|
|
| |
llvm-svn: 366099
|
|
|
|
| |
llvm-svn: 366087
|
|
|
|
| |
llvm-svn: 365484
|
|
|
|
| |
llvm-svn: 365483
|
|
|
|
| |
llvm-svn: 365482
|
|
|
|
| |
llvm-svn: 364933
|
|
|
|
|
|
|
|
| |
The register bank for the destination of the sample argument copy was
wrong. We shouldn't be constraining each source to the result register
bank. Allow constraining the original register to the right size.
llvm-svn: 364928
|
|
|
|
|
|
|
| |
Manually select to workaround tablegen emitter emitting checks for
G_CONSTANT.
llvm-svn: 364927
|
|
|
|
| |
llvm-svn: 364835
|
|
|
|
| |
llvm-svn: 364807
|
|
|
|
|
|
|
|
| |
Also works around tablegen defect in selecting add with unused carry,
but if we have to manually select GEP, might as well handle add
manually.
llvm-svn: 364806
|
|
|
|
| |
llvm-svn: 364805
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: arsenm
Reviewed By: arsenm
Subscribers: hiraditya, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, Petar.Avramovic, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D58804
llvm-svn: 364797
|
|
|
|
| |
llvm-svn: 364795
|
|
|
|
| |
llvm-svn: 364789
|
|
|
|
|
|
|
| |
This is easy to handle and avoids legalization artifacts which are
likely to obscure combines.
llvm-svn: 364787
|
|
|
|
| |
llvm-svn: 364786
|
|
|
|
|
|
|
| |
isVCC has the same bug, but isn't used in a context where it can cause
a problem.
llvm-svn: 364784
|
|
|
|
| |
llvm-svn: 364782
|
|
|
|
| |
llvm-svn: 364766
|
|
|
|
|
|
| |
Select s64 eq/ne scalar icmp.
llvm-svn: 364765
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was checking the size of the register with the value of the size,
which happens to be exec. Also fix assuming VCC is 64-bit to fix
wave32.
Also remove some untested handling for physical registers which is
skipped. This doesn't insert the V_CNDMASK_B32 if SCC is the physical
copy source. I'm not sure if this should be trying to handle this
special case instead of dealing with this in copyPhysReg.
llvm-svn: 364761
|
|
|
|
|
|
|
| |
Zext from s1 is the only case where this should do anything with the
current legal extensions.
llvm-svn: 364760
|
|
|
|
| |
llvm-svn: 364308
|
|
|
|
| |
llvm-svn: 364215
|
|
|
|
|
|
| |
Try to fail for scc, since I don't think that should ever be produced.
llvm-svn: 364199
|
|
|
|
| |
llvm-svn: 363578
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D61330
llvm-svn: 359621
|
|
|
|
|
|
|
|
|
|
|
|
| |
Re-commit r344310.
Reviewers: arsenm
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D53116
llvm-svn: 355159
|