| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
|  | 
llvm-svn: 140745
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
The function needs to scan the implicit operands anyway, so no
performance is won by caching the number of implicit operands added to
an instruction.
This also fixes a bug when adding operands after an implicit operand has
been added manually.  The NumImplicitOps count wasn't kept up to date.
MachineInstr::addOperand() will now consistently place all explicit
operands before all the implicit operands, regardless of the order they
are added.  It is possible to change an MI opcode and add additional
explicit operands.  They will be inserted before any existing implicit
operands.
The only exception is inline asm instructions where operands are never
reordered.  This is because of a hack that marks explicit clobber regs
on inline asm as <implicit-def> to please the fast register allocator.
This hack can go away when InstrEmitter and FastIsel can add exact
<dead> flags to physreg defs.
llvm-svn: 140744
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
them to define"
It broke the unit tests.  Please reapply with tests fixed.
llvm-svn: 140735
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
ends up introducing a cycle in the DAG.
rdar://10196296
llvm-svn: 140733
 | 
| | 
| 
| 
| 
| 
|  | 
multiclasses.
llvm-svn: 140731
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Upon further review, most of the EH code should remain written at the IR
level. The part which breaks SSA form is the dispatch table, so that part will
be moved to the back-end.
llvm-svn: 140730
 | 
| | 
| 
| 
| 
| 
|  | 
does not support them.
llvm-svn: 140723
 | 
| | 
| 
| 
|  | 
llvm-svn: 140721
 | 
| | 
| 
| 
|  | 
llvm-svn: 140719
 | 
| | 
| 
| 
|  | 
llvm-svn: 140718
 | 
| | 
| 
| 
|  | 
llvm-svn: 140709
 | 
| | 
| 
| 
|  | 
llvm-svn: 140705
 | 
| | 
| 
| 
|  | 
llvm-svn: 140704
 | 
| | 
| 
| 
|  | 
llvm-svn: 140703
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Handle general Add expressions to avoid leaving around redundant
32-bit IVs.
llvm-svn: 140701
 | 
| | 
| 
| 
| 
| 
|  | 
Get rid of some of the no-longer-needed parts of PTXAsmPrinter.
llvm-svn: 140698
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Lay some groundwork for converting to MC-based asm printer. This is the first
of probably many patches to bring the back-end back up-to-date with all of the
recent MC changes.
llvm-svn: 140697
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
forgotten to commit.
Build on previous patches to successfully distinguish between an M-series and A/R-series MSR and MRS instruction. These take different mask names and have a *slightly* different opcode format.
Add decoder and disassembler tests.
Improvement on the previous patch - successfully distinguish between valid v6m and v7m masks (one is a subset of the other). The patch had to be edited slightly to apply to ToT.
llvm-svn: 140696
 | 
| | 
| 
| 
| 
| 
|  | 
when there is both a catch and a cleanup.  Correct the comment.
llvm-svn: 140686
 | 
| | 
| 
| 
|  | 
llvm-svn: 140680
 | 
| | 
| 
| 
| 
| 
|  | 
The copies caused use-after-free bugs on std::string implementations without COW (i.e. anything but libstdc++)
llvm-svn: 140679
 | 
| | 
| 
| 
|  | 
llvm-svn: 140678
 | 
| | 
| 
| 
|  | 
llvm-svn: 140677
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
This intrinsic is used to pass the index of the function context to the back-end
for further processing. The back-end is in charge of filling in the rest of the
entries.
llvm-svn: 140676
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
The DWARF exception pass uses the call site information, which is set up here. A
pre-RA pass is too late for it to use this information. So create and setup the
function context here, and then insert the call site values here (and map the
call sites for the DWARF EH pass). This is simpler than the original pass, and
doesn't make the CFG lose its SSA-ness.
It's a win-win-win-win-lose-win-win situation.
llvm-svn: 140675
 | 
| | 
| 
| 
| 
| 
| 
|  | 
We may need an SjLj EH preparation pass for some call site information, at least
in the short term.
llvm-svn: 140674
 | 
| | 
| 
| 
|  | 
llvm-svn: 140670
 | 
| | 
| 
| 
| 
| 
|  | 
implementation correctly while checking nocapture calls.
llvm-svn: 140666
 | 
| | 
| 
| 
| 
| 
|  | 
No functional change intended.
llvm-svn: 140664
 | 
| | 
| 
| 
| 
| 
|  | 
I'll clean up the source in the next commit.
llvm-svn: 140663
 | 
| | 
| 
| 
|  | 
llvm-svn: 140661
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
This also enables domain swizzling for AVX code which required a few
trivial test changes.
The pass will be moved to lib/CodeGen shortly.
llvm-svn: 140659
 | 
| | 
| 
| 
|  | 
llvm-svn: 140655
 | 
| | 
| 
| 
|  | 
llvm-svn: 140653
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
I am going to unify the SSEDomainFix and NEONMoveFix passes into a
single target independent pass.  They are essentially doing the same
thing.
llvm-svn: 140652
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Add inst alias to handle these assembly forms. Add tests, too.
rdar://10178799
llvm-svn: 140647
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
current IR-level pass.
The old SjLj EH pass has some problems, especially with the new EH model. Most
significantly, it violates some of the new restrictions the new model has. For
instance, the 'dispatch' table wants to jump to the landing pad, but we cannot
allow that because only an invoke's unwind edge can jump to a landing pad. This
requires us to mangle the code something awful. In addition, we need to keep the
now dead landingpad instructions around instead of CSE'ing them because the
DWARF emitter uses that information (they are dead because no control flow edge
will execute them - the control flow edge from an invoke's unwind is superceded
by the edge coming from the dispatch).
Basically, this pass belongs not at the IR level where SSA is king, but at the
code-gen level, where we have more flexibility.
llvm-svn: 140646
 | 
| | 
| 
| 
| 
| 
|  | 
of the instruction definitions using Pat<>.
llvm-svn: 140644
 | 
| | 
| 
| 
| 
| 
|  | 
a suboptimal schedule.
llvm-svn: 140643
 | 
| | 
| 
| 
| 
| 
|  | 
Naming conventions consistency. No functional change.
llvm-svn: 140636
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
to be uniqued, without any benefit.
If someone prefers %tmp42 to %42, run instnamer.
llvm-svn: 140634
 | 
| | 
| 
| 
| 
| 
| 
|  | 
require special case handling.
rdar://10117377
llvm-svn: 140629
 | 
| | 
| 
| 
|  | 
llvm-svn: 140626
 | 
| | 
| 
| 
|  | 
llvm-svn: 140625
 | 
| | 
| 
| 
|  | 
llvm-svn: 140624
 | 
| | 
| 
| 
| 
| 
| 
|  | 
a couple of outstanding issues with frame objects occuring as instruction
operands.
llvm-svn: 140616
 | 
| | 
| 
| 
|  | 
llvm-svn: 140615
 | 
| | 
| 
| 
| 
| 
|  | 
Return numbers of 64-bit registers.
llvm-svn: 140609
 | 
| | 
| 
| 
|  | 
llvm-svn: 140607
 | 
| | 
| 
| 
|  | 
llvm-svn: 140606
 |