History log of /llvm-project-15.0.7/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp (Results 76 – 98 of 98)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-3.8.0-rc3
# 595e8ab2 22-Feb-2016 Dan Gohman <[email protected]>

[WebAssembly] Properly ignore llvm.dbg.value instructions.

llvm-svn: 261538


# f8f8f093 16-Feb-2016 Derek Schuff <[email protected]>

[WebAssemly] Don't move calls or stores past intervening loads

The register stackifier currently checks for intervening stores (and
loads that may alias them) but doesn't account for the fact that t

[WebAssemly] Don't move calls or stores past intervening loads

The register stackifier currently checks for intervening stores (and
loads that may alias them) but doesn't account for the fact that the
instruction being moved may affect intervening loads.

Differential Revision: http://reviews.llvm.org/D17298

llvm-svn: 261014

show more ...


# 8aa237c3 16-Feb-2016 Dan Gohman <[email protected]>

[WebAssembly] Create new registers instead of reusing old ones in RegStackify.

This avoids some complications updating LiveIntervals to be aware of the new
register lifetimes, because we can just co

[WebAssembly] Create new registers instead of reusing old ones in RegStackify.

This avoids some complications updating LiveIntervals to be aware of the new
register lifetimes, because we can just compute new intervals from scratch
rather than describe how the old ones have been changed.

llvm-svn: 260971

show more ...


Revision tags: llvmorg-3.8.0-rc2
# fbfe5ec4 28-Jan-2016 Dan Gohman <[email protected]>

[WebAssembly] Don't stackify a register def past a get_local use in the same tree.

llvm-svn: 259013


# adf28177 28-Jan-2016 Dan Gohman <[email protected]>

[WebAssembly] Enhanced register stackification

This patch revamps the RegStackifier pass with a new tree traversal mechanism,
enabling three major new features:

- Stackification of values with mul

[WebAssembly] Enhanced register stackification

This patch revamps the RegStackifier pass with a new tree traversal mechanism,
enabling three major new features:

- Stackification of values with multiple uses, using the result value of set_local
- More aggressive stackification of instructions with side effects
- Reordering operands in commutative instructions to enable more stackification.

llvm-svn: 259009

show more ...


# 7e64917f 20-Jan-2016 Dan Gohman <[email protected]>

[WebAssembly] Don't stackify stores across instructions with side effects.

llvm-svn: 258285


Revision tags: llvmorg-3.8.0-rc1
# b6fd39a3 19-Jan-2016 Dan Gohman <[email protected]>

[WebAssembly] Rematerialize constants rather than hold them live in registers.

Teach the register stackifier to rematerialize constants that have multiple
uses instead of leaving them in registers.

[WebAssembly] Rematerialize constants rather than hold them live in registers.

Teach the register stackifier to rematerialize constants that have multiple
uses instead of leaving them in registers. In the WebAssembly encoding, it's
the same code size to materialize most constants as it is to read a value
from a register.

llvm-svn: 258142

show more ...


# 8f59cf75 06-Jan-2016 Dan Gohman <[email protected]>

[WebAssembly] Don't use range-based loop for a list that's being modified

The first instruction in a block is what the rend() iterator points to, so
if it moves, we need to re-evaluate rend() so tha

[WebAssembly] Don't use range-based loop for a list that's being modified

The first instruction in a block is what the rend() iterator points to, so
if it moves, we need to re-evaluate rend() so that we continue to iterate
through the rest of the instructions.

llvm-svn: 256953

show more ...


# 8887d1fa 25-Dec-2015 Dan Gohman <[email protected]>

[WebAssembly] Fix handling of COPY instructions in WebAssemblyRegStackify.

Move RegStackify after coalescing and teach it to use LiveIntervals instead
of depending on SSA form. This avoids a problem

[WebAssembly] Fix handling of COPY instructions in WebAssemblyRegStackify.

Move RegStackify after coalescing and teach it to use LiveIntervals instead
of depending on SSA form. This avoids a problem where a register in a COPY
instruction is stackified and then subsequently coalesced with a register
that is not stackified.

This also puts it after the scheduler, which allows us to simplify the
EXPR_STACK constraint, as we no longer have instructions being reordered
after stackification and before coloring.

llvm-svn: 256402

show more ...


# 8bb5f292 16-Dec-2015 Derek Schuff <[email protected]>

[WebAssembly] Implement eliminateCallFramePseudo

Summary:
Implement eliminateCallFramePsuedo to handle ADJCALLSTACKUP/DOWN
pseudo-instructions. Add a test calling a vararg function which causes non-

[WebAssembly] Implement eliminateCallFramePseudo

Summary:
Implement eliminateCallFramePsuedo to handle ADJCALLSTACKUP/DOWN
pseudo-instructions. Add a test calling a vararg function which causes non-0
adjustments. This revealed an issue with RegisterCoalescer wherein it
eliminates a COPY from SP32 to a vreg but failes to update the live ranges
of EXPR_STACK, causing a machineinstr verifier failure (so this test
is commented out).

Also add a dynamic alloca test, which causes a callseq_end dag node with
a 0 (instead of undef) second argument to be generated. We currently fail to
select that, so adjust the ADJCALLSTACKUP tablegen code to handle it.

Differential Revision: http://reviews.llvm.org/D15587

llvm-svn: 255844

show more ...


# a712a6c4 14-Dec-2015 Dan Gohman <[email protected]>

[WebAssembly] Avoid adding redundant EXPR_STACK uses.

llvm-svn: 255563


# 31448f16 08-Dec-2015 Dan Gohman <[email protected]>

[WebAssembly] Fix a typo in a comment.

llvm-svn: 254999


# d70e5907 08-Dec-2015 Dan Gohman <[email protected]>

[WebAssembly] Assert MRI.isSSA() in passes that depend on SSA form.

llvm-svn: 254995


# 4da4abd8 05-Dec-2015 Dan Gohman <[email protected]>

[WebAssembly] Fix scheduling dependencies in register-stackified code

Add physical register defs to instructions used from stackified
instructions to prevent them from being scheduled into the middl

[WebAssembly] Fix scheduling dependencies in register-stackified code

Add physical register defs to instructions used from stackified
instructions to prevent them from being scheduled into the middle of
a stack sequence. This is a conservative measure which may be loosened
in the future.

Differential Revision: http://reviews.llvm.org/D15252

llvm-svn: 254811

show more ...


# 35bfb24c 04-Dec-2015 Dan Gohman <[email protected]>

[WebAssembly] Initial varargs support.

Full varargs support will depend on prologue/epilogue support, but this patch
gets us started with most of the basic infrastructure.

Differential Revision: ht

[WebAssembly] Initial varargs support.

Full varargs support will depend on prologue/epilogue support, but this patch
gets us started with most of the basic infrastructure.

Differential Revision: http://reviews.llvm.org/D15231

llvm-svn: 254799

show more ...


# 391a98af 03-Dec-2015 Dan Gohman <[email protected]>

[WebAssembly] Fix dominance check for PHIs in the StoreResult pass

When a block has no terminator instructions, getFirstTerminator() returns
end(), which can't be used in dominance checks. Check dom

[WebAssembly] Fix dominance check for PHIs in the StoreResult pass

When a block has no terminator instructions, getFirstTerminator() returns
end(), which can't be used in dominance checks. Check dominance for phi
operands separately.

Also, remove some bits from WebAssemblyRegStackify.cpp that were causing
trouble on the same testcase; they were left behind from an earlier
experiment.

Differential Revision: http://reviews.llvm.org/D15210

llvm-svn: 254662

show more ...


# 53d13997 02-Dec-2015 Dan Gohman <[email protected]>

[WebAssembly] Fix comments to say "LIFO" instead of "FIFO" when describing a stack.

llvm-svn: 254523


Revision tags: llvmorg-3.7.1
# 7a6b9825 29-Nov-2015 Dan Gohman <[email protected]>

[WebAssembly] Minor clang-format and selected clang-tidy cleanups. NFC.

llvm-svn: 254267


# 81719f85 25-Nov-2015 Dan Gohman <[email protected]>

[WebAssembly] Support for register stackifying with load and store instructions.

llvm-svn: 254076


Revision tags: llvmorg-3.7.1-rc2
# 7bafa0ea 20-Nov-2015 Dan Gohman <[email protected]>

[WebAssembly] Add asserts that the expression stack is used in stack order.

llvm-svn: 253638


# b0992daf 20-Nov-2015 Dan Gohman <[email protected]>

[WebAssemby] Enforce FIFO ordering for instructions using stackified registers.

llvm-svn: 253634


# 4ba4816b 18-Nov-2015 Dan Gohman <[email protected]>

[WebAssembly] Enable register coloring and register stackifying.

This also takes the push/pop syntax another step forward, introducing stack
slot numbers to make it easier to see how expressions are

[WebAssembly] Enable register coloring and register stackifying.

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

show more ...


Revision tags: llvmorg-3.7.1-rc1
# 1462faad 16-Nov-2015 Dan Gohman <[email protected]>

[WebAssembly] Prototype passes for register coloring and register stackifying.

These passes are not yet enabled by default.

llvm-svn: 253217


1234