| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 254311
|
| |
|
|
| |
llvm-svn: 254272
|
| |
|
|
| |
llvm-svn: 254271
|
| |
|
|
| |
llvm-svn: 254268
|
| |
|
|
| |
llvm-svn: 254267
|
| |
|
|
| |
llvm-svn: 254106
|
| |
|
|
| |
llvm-svn: 254104
|
| |
|
|
| |
llvm-svn: 254096
|
| |
|
|
|
|
|
|
|
| |
If virtual registers are created late, mappings to WebAssembly
registers need to be added explicitly. This patch adds a function
to do so and teaches WebAssemblyPeephole to use it. This fixes
an out-of-bounds access on the WARegs vector.
llvm-svn: 254094
|
| |
|
|
|
|
|
|
|
|
| |
Instead of trying to move ARGUMENT instructions back up to the top after
they've been scheduled or sunk down, use a fake physical register to
create a liveness constraint that prevents ARGUMENT instructions from
moving down in the first place. This is still not entirely ideal, however
it is more robust than letting them move and moving them back.
llvm-svn: 254084
|
| |
|
|
| |
llvm-svn: 254079
|
| |
|
|
| |
llvm-svn: 254076
|
| |
|
|
| |
llvm-svn: 254075
|
| |
|
|
| |
llvm-svn: 254073
|
| |
|
|
| |
llvm-svn: 254071
|
| |
|
|
|
|
| |
This matches the current spec, for now.
llvm-svn: 253931
|
| |
|
|
|
|
|
|
| |
With the '=' suffix now indicating which operands are output operands, it's
no longer as important to distinguish between a call's inputs and its outputs
using operand ordering, so we can go back to printing them in the normal order.
llvm-svn: 253925
|
| |
|
|
|
|
|
|
| |
This distinguishes input operands from output operands. This is something of
a syntactic experiment to see whether the mild amount of clutter this adds is
outweighed by the extra information it conveys to the reader.
llvm-svn: 253922
|
| |
|
|
| |
llvm-svn: 253916
|
| |
|
|
|
|
|
|
|
| |
The current approach to using get_local and set_local is to use them
implicitly, as register uses and defs. Introduce new copy instructions
which are themselves no-ops except for the get_local and set_local
that they imply, so that we use get_local and set_local consistently.
llvm-svn: 253905
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
WebAssembly is currently using labels to end scopes, so for example a
loop scope looks like this:
BB0_0:
loop BB0_1
...
BB0_1:
with BB0_0 being the label of the first block not in the loop. This
requires that the label be printed even when it's only reachable via
fallthrough. To arrange this, insert a no-op LOOP_END instruction in
such cases at the end of the loop.
llvm-svn: 253901
|
| |
|
|
|
|
| |
These are parts of a separate patch that I accidentally included in r253878.
llvm-svn: 253892
|
| |
|
|
|
|
| |
This eliminates one of the main remaining uses of EmitRawText.
llvm-svn: 253878
|
| |
|
|
|
|
|
|
|
|
| |
Always starting blocks at the top of their containing loops works, but creates
unnecessarily deep nesting because it makes all blocks in a loop overlap.
Refine the BLOCK placement algorithm to start blocks at nearest common
dominating points instead, which significantly shrinks them and reduces
overlapping.
llvm-svn: 253876
|
| |
|
|
|
|
|
|
| |
WebAssembly does not have physical registers, so even if LLVM uses physical
registers like SP, they'll need to be lowered to virtual registers before
AsmPrinter time.
llvm-svn: 253644
|
| |
|
|
| |
llvm-svn: 253643
|
| |
|
|
|
|
| |
the spec.
llvm-svn: 253642
|
| |
|
|
| |
llvm-svn: 253640
|
| |
|
|
| |
llvm-svn: 253638
|
| |
|
|
| |
llvm-svn: 253634
|
| |
|
|
|
|
|
|
|
| |
coloring pass. Turn the logic into "look for an insert point and
then move things past the insert point".
No functional change intended.
llvm-svn: 253626
|
| |
|
|
|
|
| |
unnecessary default case.
llvm-svn: 253621
|
| |
|
|
|
|
|
| |
This unbreaks test/CodeGen/WebAssembly/i32.ll and
test/CodeGen/WebAssembly/i64.ll after r224899.
llvm-svn: 253617
|
| |
|
|
| |
llvm-svn: 253472
|
| |
|
|
|
|
| |
operands.
llvm-svn: 253468
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This also takes the push/pop syntax another step forward, introducing stack
slot numbers to make it easier to see how expressions are connected. For
example, the value pushed in $push7 is popped in $pop7.
And, this begins an experiment with making get_local and set_local implicit
when an operation directly uses or defines a register. This greatly reduces
clutter. If this experiment succeeds, it may make sense to do this for
const instructions as well.
And, this introduces more special code for ARGUMENTS; hopefully this code
will soon be obviated by proper support for live-in virtual registers.
llvm-svn: 253465
|
| |
|
|
|
|
|
|
|
|
| |
This was regressed in r252656 which wasn't quite NFC. Instead of using a
custom instruction as before, use a pattern to select CONST_I32 for the
global addrs.
Differential Revision: http://reviews.llvm.org/D14587
llvm-svn: 253276
|
| |
|
|
|
|
|
|
|
|
|
| |
Summary:
Previously return type information for a function was derived from
return dag nodes. But this didn't work for dags with != return node. So
instead compute it directly from the LLVM function as is done for imports.
Differential Revision: http://reviews.llvm.org/D14593
llvm-svn: 253251
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: This is to match the new version in the spec
Reviewers: sunfish
Subscribers: jfb, llvm-commits, dschuff
Differential Revision: http://reviews.llvm.org/D14519
llvm-svn: 253249
|
| |
|
|
|
|
| |
These passes are not yet enabled by default.
llvm-svn: 253217
|
| |
|
|
|
|
| |
This seems to be the most popular convention among the other backends.
llvm-svn: 253172
|
| |
|
|
| |
llvm-svn: 253150
|
| |
|
|
| |
llvm-svn: 253148
|
| |
|
|
| |
llvm-svn: 253072
|
| |
|
|
|
|
| |
convention. NFC.
llvm-svn: 253070
|
| |
|
|
| |
llvm-svn: 252997
|
| |
|
|
|
|
|
|
| |
This arranges the types in the LLVM instruction names in the same order that
they appear in the WebAssembly opcode names, and eliminates
double-underscores.
llvm-svn: 252988
|
| |
|
|
|
|
|
| |
With MC-based instruction printing, we no longer need instruction names to
mangle in hints about how they should be printed.
llvm-svn: 252987
|
| |
|
|
| |
llvm-svn: 252985
|
| |
|
|
| |
llvm-svn: 252984
|