mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-03 01:06:05 +00:00
[WebAssembly] Add some more ideas to README.txt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254880 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
180d5cb8e1
commit
51b079cd28
@ -47,3 +47,46 @@ expression stack across the jump (sometimes). We should (a) model this, and
|
||||
(b) extend the stackifier to utilize it.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
The min/max operators aren't exactly a<b?a:b because of NaN and negative zero
|
||||
behavior. The ARM target has the same kind of min/max instructions and has
|
||||
implemented optimizations for them; we should do similar optimizations for
|
||||
WebAssembly.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
AArch64 runs SeparateConstOffsetFromGEPPass, followed by EarlyCSE and LICM.
|
||||
Would these be useful to run for WebAssembly too? Also, it has an option to
|
||||
run SimplifyCFG after running the AtomicExpand pass. Would this be useful for
|
||||
us too?
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
When is it profitable to set isAsCheapAsAMove on instructions in WebAssembly?
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Register stackification uses the EXPR_STACK physical register to impose
|
||||
ordering dependencies on instructions with stack operands. This is pessimistic;
|
||||
we should consider alternate ways to model stack dependencies.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Lots of things could be done in WebAssemblyTargetTransformInfo.cpp. Similarly,
|
||||
there are numerous optimization-related hooks that can be overridden in
|
||||
WebAssemblyTargetLowering.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Instead of the OptimizeReturned pass, which should consider preserving the
|
||||
"returned" attribute through to MachineInstrs and extending the StoreResults
|
||||
pass to do this optimization on calls too. That would also let the
|
||||
WebAssemblyPeephole pass clean up dead defs for such calls, as it does for
|
||||
stores.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Memset/memcpy/memmove should be marked with the "returned" attribute somehow,
|
||||
even when they are translated through intrinsics.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
Loading…
x
Reference in New Issue
Block a user