llvm-project/llvm/test/CodeGen/WebAssembly
Derek Schuff d4207ba0f6 [WebAssembly] Stackify code emitted by eliminateFrameIndex and SP writeback
Summary:
MRI::eliminateFrameIndex can emit several instructions to do address
calculations; these can usually be stackified. Because instructions with
FI operands can have subsequent operands which may be expression trees,
find the top of the leftmost tree and insert the code before it, to keep
the LIFO property.

Also use stackified registers when writing back the SP value to memory
in the epilog; it's unnecessary because SP will not be used after the
epilog, and it results in better code.

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

llvm-svn: 263725
2016-03-17 17:00:29 +00:00
..
address-offsets.ll WebAssembly: fix test 2016-02-28 15:44:54 +00:00
byval.ll [WebAssembly] Stackify code emitted by eliminateFrameIndex and SP writeback 2016-03-17 17:00:29 +00:00
call.ll [WebAssembly] Change a FIXME to a TODO in a comment. 2016-01-19 16:52:50 +00:00
cfg-stackify.ll [WebAssembly] Update for spec change from tableswitch to br_table. 2016-03-08 03:18:12 +00:00
comparisons_f32.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
comparisons_f64.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
comparisons_i32.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
comparisons_i64.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
conv.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
copysign-casts.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
cpus.ll [WebAssembly] Tighten up some regexes in some tests. 2016-01-20 05:55:09 +00:00
dead-vreg.ll [WebAssembly] Rematerialize constants rather than hold them live in registers. 2016-01-19 16:59:23 +00:00
f32.ll [WebAssembly] Define WebAssembly-specific relocation codes. 2016-01-11 23:38:05 +00:00
f64.ll [WebAssembly] Define WebAssembly-specific relocation codes. 2016-01-11 23:38:05 +00:00
fast-isel.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
frem.ll [WebAssembly] Define WebAssembly-specific relocation codes. 2016-01-11 23:38:05 +00:00
func.ll [WebAssembly] Rematerialize constants rather than hold them live in registers. 2016-01-19 16:59:23 +00:00
global.ll [WebAssembly] Optimize memcpy/memmove/memcpy calls. 2016-01-26 04:01:11 +00:00
globl.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
i32-load-store-alignment.ll [WebAssembly] Implement unaligned loads and stores. 2016-01-26 03:39:31 +00:00
i32.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
i64-load-store-alignment.ll [WebAssembly] Implement unaligned loads and stores. 2016-01-26 03:39:31 +00:00
i64.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
ident.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
immediates.ll [WebAssembly] Implement support for custom NaN bit patterns. 2016-02-16 15:14:23 +00:00
inline-asm.ll [WebAssembly] Fix a test to work even when the integrated assembler is enabled. 2016-01-12 21:01:30 +00:00
irreducible-cfg.ll [WebAssembly] Implement irreducible control flow. 2016-03-09 02:01:14 +00:00
legalize.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
lit.local.cfg
load-ext.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
load-store-i1.ll [WebAssembly] Rematerialize constants rather than hold them live in registers. 2016-01-19 16:59:23 +00:00
load.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
mem-intrinsics.ll [WebAssembly] Stackify code emitted by eliminateFrameIndex and SP writeback 2016-03-17 17:00:29 +00:00
memory-addr32.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
memory-addr64.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
non-executable-stack.ll [WebAssembly] Don't create a needless .note.GNU-stack section 2016-01-15 23:59:13 +00:00
offset-folding.ll [WebAssembly] Add tests for negative offsets with global variable addresses. 2016-01-25 15:19:39 +00:00
offset.ll [WebAssembly] Teach address folding to fold bitwise-or nodes. 2016-02-22 20:04:02 +00:00
phi.ll [WebAssembly] Use the default private label prefixes. 2016-01-07 18:49:53 +00:00
reg-stackify.ll [WebAssembly] Properly ignore llvm.dbg.value instructions. 2016-02-22 17:45:20 +00:00
return-int32.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
return-void.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
returned.ll [WebAssembly] Define WebAssembly-specific relocation codes. 2016-01-11 23:38:05 +00:00
select.ll [WebAssembly] Update the select instructions' operand orders to match the spec. 2016-02-05 17:14:59 +00:00
signext-zeroext.ll [WebAssembly] Rematerialize constants rather than hold them live in registers. 2016-01-19 16:59:23 +00:00
store-results.ll WebAssembly: don't optimize frameindex store 2016-01-30 14:11:26 +00:00
store-trunc.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
store.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00
switch.ll [WebAssembly] Update for spec change from tableswitch to br_table. 2016-03-08 03:18:12 +00:00
unreachable.ll [WebAssembly] Define WebAssembly-specific relocation codes. 2016-01-11 23:38:05 +00:00
unused-argument.ll [WebAssembly] Define WebAssembly-specific relocation codes. 2016-01-11 23:38:05 +00:00
userstack.ll [WebAssembly] Stackify code emitted by eliminateFrameIndex and SP writeback 2016-03-17 17:00:29 +00:00
varargs.ll [WebAssembly] Create new registers instead of reusing old ones in RegStackify. 2016-02-16 15:17:21 +00:00
vtable.ll [WebAssembly] Add -m:e to the target triple. 2016-01-07 03:19:23 +00:00