| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
a patch my Micah Villmow for PR6465.
llvm-svn: 97692
|
|
|
|
| |
llvm-svn: 97691
|
|
|
|
| |
llvm-svn: 97690
|
|
|
|
|
|
| |
cannot be CSE'ed, but it *can* be used to replace a common subexpression.
llvm-svn: 97688
|
|
|
|
| |
llvm-svn: 97687
|
|
|
|
|
|
| |
over only virtual register defs. This matches what isEqual() is doing.
llvm-svn: 97680
|
|
|
|
|
|
| |
implements a special DenseMapInfo trait for DenseMap<MachineInstr*> that compare the value of the MachineInstr rather than the pointer value. Since the hashing and equality test functions ignore defs it's useful for doing CSE kind optimization.
llvm-svn: 97678
|
|
|
|
|
|
|
|
| |
MULS <Rdm>, <Rn>, <Rdm>
according to A8.6.105 MUL Encoding T1.
llvm-svn: 97675
|
|
|
|
| |
llvm-svn: 97673
|
|
|
|
| |
llvm-svn: 97670
|
|
|
|
| |
llvm-svn: 97667
|
|
|
|
|
|
|
|
|
|
| |
CSE and recursive RAUW calls delete a node from the use list,
invalidating the use list iterator. There's currently no known
way to reproduce this in an unmodified LLVM, however there's no
fundamental reason why a SelectionDAG couldn't be formed which
would trigger this case.
llvm-svn: 97665
|
|
|
|
|
|
| |
physical registers are getting in the way.
llvm-svn: 97664
|
|
|
|
| |
llvm-svn: 97663
|
|
|
|
|
|
| |
error. May not fix it in an ABI complient way. It wasn't clear what gcc does
llvm-svn: 97660
|
|
|
|
| |
llvm-svn: 97659
|
|
|
|
|
|
|
| |
--- Reverse-merging r97592 into '.':
U lib/CodeGen/TargetLoweringObjectFileImpl.cpp
llvm-svn: 97657
|
|
|
|
|
|
| |
and STRHT for disassembly only.
llvm-svn: 97655
|
|
|
|
|
|
| |
Scope accelerator.
llvm-svn: 97652
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
entry we're about to process is obviously going to fail, don't
bother pushing a scope only to have it immediately be popped.
This avoids a lot of scope stack traffic in common cases.
Unfortunately, this requires duplicating some of the predicate
dispatch. To avoid duplicating the actual logic I pulled each
predicate out to its own static function which gets used in
both places.
llvm-svn: 97651
|
|
|
|
|
|
|
|
| |
SwitchOpcodeMatcher) and have DAGISelMatcherOpt form it. This
speeds up selection, particularly for X86 which has lots of
variants of instructions with only type differences.
llvm-svn: 97645
|
|
|
|
|
|
| |
of loops.
llvm-svn: 97642
|
|
|
|
| |
llvm-svn: 97639
|
|
|
|
| |
llvm-svn: 97635
|
|
|
|
|
|
| |
better done by dag combine.
llvm-svn: 97633
|
|
|
|
|
|
| |
for disassembly only.
llvm-svn: 97632
|
|
|
|
| |
llvm-svn: 97631
|
|
|
|
|
|
|
| |
'dsload' pattern. tblgen doesn't check patterns to see if they're
textually identical. This allows better factoring.
llvm-svn: 97630
|
|
|
|
|
|
|
|
| |
that they are not destination type specific. This allows
tblgen to factor them and the type check is redundant with
what the isel does anyway.
llvm-svn: 97629
|
|
|
|
|
|
|
|
| |
whether it should skip checking defs or at least virtual register defs. This subsumes part of the TargetInstrInfo::isIdentical functionality.
- Eliminate TargetInstrInfo::isIdentical and replace it with produceSameValue. In the default case, produceSameValue just checks whether two machine instructions are identical (except for virtual register defs). But targets may override it to check for unusual cases (e.g. ARM pic loads from constant pools).
llvm-svn: 97628
|
|
|
|
| |
llvm-svn: 97627
|
|
|
|
| |
llvm-svn: 97617
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
long test(long x) { return (x & 123124) | 3; }
Currently compiles to:
_test:
orl $3, %edi
movq %rdi, %rax
andq $123127, %rax
ret
This is because instruction and DAG combiners canonicalize
(or (and x, C), D) -> (and (or, D), (C | D))
However, this is only profitable if (C & D) != 0. It gets in the way of the
3-addressification because the input bits are known to be zero.
llvm-svn: 97616
|
|
|
|
|
|
| |
disassembly only.
llvm-svn: 97614
|
|
|
|
| |
llvm-svn: 97608
|
|
|
|
| |
llvm-svn: 97606
|
|
|
|
|
|
| |
We still preprocess calls and fp return stuff.
llvm-svn: 97598
|
|
|
|
|
|
|
| |
now that isel handles chains more aggressively. This also
allows us to make isLegalToFold non-virtual.
llvm-svn: 97597
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CopyToReg/CopyFromReg/INLINEASM. These are annoying because
they have the same opcode before an after isel. Fix this by
setting their NodeID to -1 to indicate that they are selected,
just like what automatically happens when selecting things that
end up being machine nodes.
With that done, give IsLegalToFold a new flag that causes it to
ignore chains. This lets the HandleMergeInputChains routine be
the one place that validates chains after a match is successful,
enabling the new hotness in chain processing. This smarter
chain processing eliminates the need for "PreprocessRMW" in the
X86 and MSP430 backends and enables MSP to start matching it's
multiple mem operand instructions more aggressively.
I currently #if out the dead code in the X86 backend and MSP
backend, I'll remove it for real in a follow-on patch.
The testcase changes are:
test/CodeGen/X86/sse3.ll: we generate better code
test/CodeGen/X86/store_op_load_fold2.ll: PreprocessRMW was
miscompiling this before, we now generate correct code
Convert it to filecheck while I'm at it.
test/CodeGen/MSP430/Inst16mm.ll: Add a testcase for mem/mem
folding to make anton happy. :)
llvm-svn: 97596
|
|
|
|
| |
llvm-svn: 97595
|
|
|
|
|
|
| |
Place the LSDA into the TEXT section on Mach-O. This saves space.
llvm-svn: 97592
|
|
|
|
|
|
| |
llvm-c.
llvm-svn: 97585
|
|
|
|
|
|
|
| |
the opc string passed in, since it's a given from the class inheritance of T2sI.
The fixed the extra 's' in adcss & sbcss when disassembly printing.
llvm-svn: 97582
|
|
|
|
| |
llvm-svn: 97581
|
|
|
|
|
|
|
| |
by loop depth and emit loop-invariant subexpressions outside of loops.
This speeds up MultiSource/Applications/viterbi and others.
llvm-svn: 97580
|
|
|
|
| |
llvm-svn: 97578
|
|
|
|
| |
llvm-svn: 97577
|
|
|
|
|
|
|
| |
SMMULR, SMMLAR, SMMLSR, TBB, TBH, and 16-bit Thumb instruction CPS for
disassembly only.
llvm-svn: 97573
|
|
|
|
|
|
| |
Thanks Duncan!
llvm-svn: 97572
|
|
|
|
|
|
|
| |
Add printMandatoryPredicateOperand() PrintMethod for IT predicate printing.
Ref: A8.3 Conditional execution
llvm-svn: 97571
|