| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
The block must no be nullptr for the addLiveIns()/addLiveOuts()
function.
llvm-svn: 268340
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the AddPristinesAndCSRs parameters from
addLiveIns()/addLiveOuts().
We need to respect pristine registers after prologue epilogue insertion,
Seeing that we got this wrong in at least two commits already, we should
rather pay the small price to query MachineFrameInfo for it.
There are three cases that did not set AddPristineAndCSRs to true even
after register allocation:
- ExecutionDepsFix: live-out registers are used as a hint that the
register is used soon. This is not true for pristine registers so
use the new addLiveOutsNoPristines() to maintain this behaviour.
- SystemZShortenInst: Not setting AddPristineAndCSRs to true looks like
a bug, should do the right thing automatically now.
- StackMapLivenessAnalysis: Not adding pristine registers looks like a
bug to me. Added a FIXME comment but maintain the current behaviour
as a change may need to get coordinated with GC runtimes.
llvm-svn: 268336
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This operation may branch to the handler block and we do not want it
to happen anywhere within the basic block.
Moreover, by marking it "terminator and branch" the machine verifier
does not wrongly assume (because of AnalyzeBranch not knowing better)
the branch is analyzable. Indeed, the target was seeing only the
unconditional branch and not the faulting load op and thought it was
a simple unconditional block.
The machine verifier was complaining because of that and moreover,
other optimizations could have done wrong transformation!
In the process, simplify the representation of the handler block in
the faulting load op. Now, we directly reference the handler block
instead of using a label. This has the benefits of:
1. MC knows how to issue a label for a BB, so leave that to it.
2. Accessing the target BB from its label is painful, whereas it is
direct from a MBB operand.
Note: The 2 bytes offset in implicit-null-check.ll comes from the
fact the unconditional jumps are not removed anymore, as the whole
terminator sequence is not analyzable anymore.
Will fix it in a subsequence commit.
llvm-svn: 268327
|
|
|
|
|
|
| |
Begun adding placeholder for future support for vperm2f128/vshuff64x2 style 128/256-bit wide shuffles
llvm-svn: 268306
|
|
|
|
|
|
|
|
| |
lowering
movmsk.ll tests are unchanged.
llvm-svn: 268237
|
|
|
|
|
|
|
|
| |
Fixes PR27241.
Differential Revision: http://reviews.llvm.org/D19688
llvm-svn: 268227
|
|
|
|
|
|
|
|
| |
wrong immediate predicate check was being used for 64-bit instructions with 8-bit immediates.
This didn't cause a bug because the order of the patterns ensured that the 64-bit instructions with 32-bit immediates were selected first.
llvm-svn: 268212
|
|
|
|
|
|
| |
there fix the execution domain for VPACKSSDW/VPACKUSDW.
llvm-svn: 268200
|
|
|
|
|
|
|
|
| |
implementation take a scalar register and generate a vector without COPY_TO_REGCLASS (turn it into a VR128 register ) .The issue is that during register allocation we may spill a scalar value using 128-bit loads and stores, wasting cache bandwidth.
Differential Revision: http://reviews.llvm.org/D19579
llvm-svn: 268190
|
|
|
|
|
|
| |
VLX and BWI are supported.
llvm-svn: 268189
|
|
|
|
|
|
| |
and VPMADDUBSW/VPMADDWD.
llvm-svn: 268188
|
|
|
|
|
|
| |
marked as requiring VLX.
llvm-svn: 268186
|
|
|
|
|
|
| |
the output file.
llvm-svn: 268184
|
|
|
|
|
|
| |
with an AddedComplexity that made this unreachable.
llvm-svn: 268183
|
|
|
|
|
|
| |
the output file.
llvm-svn: 268181
|
|
|
|
| |
llvm-svn: 268180
|
|
|
|
|
|
| |
the same thing but vector_extract is deprecated. NFC
llvm-svn: 268179
|
|
|
|
| |
llvm-svn: 268174
|
|
|
|
| |
llvm-svn: 268164
|
|
|
|
| |
llvm-svn: 268106
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the cmake build to enable them.
Summary:
Historically, we had a switch in the Makefiles for turning on "expensive
checks". This has never been ported to the cmake build, but the
(dead-ish) code is still around.
This will also make it easier to turn it on in buildbots.
Reviewers: chandlerc
Subscribers: jyknight, mzolotukhin, RKSimon, gberry, llvm-commits
Differential Revision: http://reviews.llvm.org/D19723
llvm-svn: 268050
|
|
|
|
|
|
| |
included in one place. Just define the class directly in the cpp file. NFC
llvm-svn: 267985
|
|
|
|
|
|
| |
duplicating parts of it. NFC
llvm-svn: 267984
|
|
|
|
|
|
| |
previously called in multiple cases. This seems to help the inliner reduce code. NFC
llvm-svn: 267964
|
|
|
|
| |
llvm-svn: 267854
|
|
|
|
|
|
| |
TargetLoweringBase. This is what the majority of the targets want and removes a bunch of code. Set it to Legal explicitly in the few cases where that's the desired behavior.
llvm-svn: 267853
|
|
|
|
|
|
|
|
|
| |
For compilations with no explicit cpu specified, this exhibits
nice gains on Silvermont, with neutral performance on big cores.
Differential Revision: http://reviews.llvm.org/D19138
llvm-svn: 267809
|
|
|
|
| |
llvm-svn: 267806
|
|
|
|
|
|
|
|
|
|
|
| |
The callseq_end node must be glued with the TLS calls, otherwise,
the generic code will miss the uses of the returned value and will
mark it dead.
Moreover, TLSCall 64-bit pseudo must not set an implicit-use on RDI,
the pseudo uses the symbol address at this point not RDI and the
lowering will do the right thing.
llvm-svn: 267797
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19592
llvm-svn: 267773
|
|
|
|
| |
llvm-svn: 267723
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We run after PEI, so we need to AddPristinesAndCSRs.
In practice, that makes no difference here, because we only ask about
liveness of super-registers of defined GR8/GR16 registers, so they
can't be pristine. Still, it's the correct thing to do.
Thanks to Quentin for noticing!
Follow-up to r267495.
llvm-svn: 267658
|
|
|
|
|
|
|
| |
It's probably the case for all 3 MMX users out there, but with
hand-crafted IR, you can trigger selection failures. Fix that.
llvm-svn: 267652
|
|
|
|
|
|
|
|
|
| |
This effectively adds back the extractelt combine removed by r262358:
the direct case can still occur (because x86_mmx is special, see
r262446), but it's the indirect case that's now superseded by the
generic combine.
llvm-svn: 267651
|
|
|
|
|
|
|
|
| |
the pattern is matched.
Differential revision: http://reviews.llvm.org/D14840
llvm-svn: 267649
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the prologue.
Do not use basic blocks that have EFLAGS live-in as prologue if we need
to realign the stack. Realigning the stack uses AND instruction and this
clobbers EFLAGS.
An other alternative would have been to save and restore EFLAGS around
the stack realignment code, but this is likely inefficient.
Fixes PR27531.
llvm-svn: 267634
|
|
|
|
|
|
|
| |
When the simple analysis provided by MachineBasicBlock::computeRegisterLiveness
fails, fall back on the LivePhysReg utility.
llvm-svn: 267623
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19439
llvm-svn: 267608
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D17176
llvm-svn: 267606
|
|
|
|
|
|
|
| |
We don't need to copy the sret argument into %rax upon return.
rdar://25671494
llvm-svn: 267579
|
|
|
|
|
|
|
|
| |
Handle MachineBasicBlock as a memory displacement operand in the LEA optimization pass.
Differential Revision: http://reviews.llvm.org/D19409
llvm-svn: 267551
|
|
|
|
|
|
|
|
|
| |
Kill-flags, which computeRegisterLiveness uses, are not reliable.
LivePhysRegs is.
Differential Revision: http://reviews.llvm.org/D19472
llvm-svn: 267495
|
|
|
|
|
|
| |
with a fixed size array. NFC
llvm-svn: 267377
|
|
|
|
|
|
| |
We aren't currently making use of this in any successful mask decode and its actually incorrect as it inserts the wrong number of SM_SentinelUndef mask elements.
llvm-svn: 267350
|
|
|
|
| |
llvm-svn: 267349
|
|
|
|
|
|
| |
Fixed issue with VPPERM target shuffle mask decoding that was incorrectly masking off the 3-bit permute op with a 2-bit mask.
llvm-svn: 267346
|
|
|
|
|
|
|
|
| |
Reused the ability to split constants of a type wider than the shuffle mask to work with masks generated from scalar constants transfered to xmm.
This fixes an issue preventing PSHUFB target shuffle masks decoding rematerialized scalar constants and also exposes the XOP VPPERM bug described in PR27472.
llvm-svn: 267343
|
|
|
|
|
|
| |
branches internally for the one difference, allowing the rest of the code to be common. NFC
llvm-svn: 267331
|
|
|
|
|
|
| |
The CTLZ operation is only Custom for vectors if AVX512 is enabled so if a vector gets here AVX512 is implied. NFC
llvm-svn: 267330
|
|
|
|
|
|
| |
cmove/ne+cttz/ctlz. These are folded by DAG combine now.
llvm-svn: 267326
|