llvm-project/llvm/test/CodeGen/WebAssembly
Dan Gohman 4b9d7916ee [WebAssembly] Implement instruction selection for constant offsets in addresses.
Add instruction patterns for matching load and store instructions with constant
offsets in addresses. The code is fairly redundant due to the need to replicate
everything between imm, tglobaldadr, and texternalsym, but this appears to be
common tablegen practice. The main alternative appears to be to introduce
matching functions with C++ code, but sticking with purely generated matchers
seems better for now.

Also note that this doesn't yet support offsets from getelementptr, which will
be the most common case; that will depend on a change in target-independent code
in order to set the NoUnsignedWrap flag, which I'll submit separately. Until
then, the testcase uses ptrtoint+add+inttoptr with a nuw on the add.

Also implement isLegalAddressingMode with an approximation of this.

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

llvm-svn: 255681
2015-12-15 22:01:29 +00:00
..
call.ll [WebAssembly] Add type prefixes to call instructions 2015-12-14 22:56:51 +00:00
cfg-stackify.ll [WebAssembly] Implement a new algorithm for placing BLOCK markers 2015-12-14 22:51:54 +00:00
comparisons_f32.ll [WebAssembly] Make several tests more strict. 2015-11-25 17:33:15 +00:00
comparisons_f64.ll [WebAssembly] Make several tests more strict. 2015-11-25 17:33:15 +00:00
comparisons_i32.ll [WebAssembly] Suffix output operands with '='. 2015-11-23 21:55:57 +00:00
comparisons_i64.ll [WebAssembly] Suffix output operands with '='. 2015-11-23 21:55:57 +00:00
conv.ll PeepholeOptimizer: Ignore dead implicit defs 2015-12-10 00:37:51 +00:00
copysign-casts.ll [WebAssembly] Tighten up several CHECK tests. 2015-12-10 14:52:34 +00:00
cpus.ll [WebAssembly] Tighten up some testcase regular expressions. 2015-12-06 19:31:44 +00:00
dead-vreg.ll [WebAssembly] Reintroduce ARGUMENT moving logic 2015-12-09 16:23:59 +00:00
f32.ll [WebAssembly] Add type prefixes to call instructions 2015-12-14 22:56:51 +00:00
f64.ll [WebAssembly] Add type prefixes to call instructions 2015-12-14 22:56:51 +00:00
fast-isel.ll [WebAssembly] Suffix output operands with '='. 2015-11-23 21:55:57 +00:00
frem.ll [WebAssembly] Add type prefixes to call instructions 2015-12-14 22:56:51 +00:00
func.ll [WebAssembly] Suffix output operands with '='. 2015-11-23 21:55:57 +00:00
global.ll [WebAssembly] Implement instruction selection for constant offsets in addresses. 2015-12-15 22:01:29 +00:00
globl.ll [WebAssembly] Switch to a more traditional assembly syntax 2015-10-06 00:27:55 +00:00
i32.ll [WebAssembly] Suffix output operands with '='. 2015-11-23 21:55:57 +00:00
i64.ll [WebAssembly] Suffix output operands with '='. 2015-11-23 21:55:57 +00:00
immediates.ll [WebAssembly] Suffix output operands with '='. 2015-11-23 21:55:57 +00:00
inline-asm.ll [WebAssembly] Tighten up several CHECK tests. 2015-12-10 14:52:34 +00:00
legalize.ll [WebAssembly] Tighten up several CHECK tests. 2015-12-10 14:52:34 +00:00
lit.local.cfg
load-ext.ll [WebAssembly] Support constant offsets on loads and stores 2015-12-05 00:26:39 +00:00
load-store-i1.ll [WebAssembly] Fix scheduling dependencies in register-stackified code 2015-12-05 00:51:40 +00:00
load.ll [WebAssembly] Support constant offsets on loads and stores 2015-12-05 00:26:39 +00:00
loop-idiom.ll WebAssembly: disable some loop-idiom recognition 2015-10-28 17:50:23 +00:00
memory-addr32.ll [WebAssembly] Make several tests more strict. 2015-11-25 17:33:15 +00:00
memory-addr64.ll [WebAssembly] Make several tests more strict. 2015-11-25 17:33:15 +00:00
offset-folding.ll [WebAssembly] Enable folding of offsets into global variable addresses. 2015-12-06 19:33:32 +00:00
offset.ll [WebAssembly] Implement instruction selection for constant offsets in addresses. 2015-12-15 22:01:29 +00:00
phi.ll [WebAssembly] Reintroduce ARGUMENT moving logic 2015-12-09 16:23:59 +00:00
reg-stackify.ll [WebAssembly] Reintroduce ARGUMENT moving logic 2015-12-09 16:23:59 +00:00
return-int32.ll [WebAssembly] Enable register coloring and register stackifying. 2015-11-18 16:12:01 +00:00
return-void.ll [WebAssembly] Switch to a more traditional assembly syntax 2015-10-06 00:27:55 +00:00
returned.ll [WebAssembly] Add type prefixes to call instructions 2015-12-14 22:56:51 +00:00
select.ll [WebAssembly] Fold setne and seteq comparisons into selects. 2015-11-25 22:13:48 +00:00
signext-zeroext.ll [WebAssembly] Make several tests more strict. 2015-11-25 17:33:15 +00:00
store-results.ll [WebAssembly] Implement instruction selection for constant offsets in addresses. 2015-12-15 22:01:29 +00:00
store-trunc.ll [WebAssembly] Support constant offsets on loads and stores 2015-12-05 00:26:39 +00:00
store.ll [WebAssembly] Support constant offsets on loads and stores 2015-12-05 00:26:39 +00:00
switch.ll [WebAssembly] Reintroduce ARGUMENT moving logic 2015-12-09 16:23:59 +00:00
unreachable.ll [WebAssembly] Reintroduce ARGUMENT moving logic 2015-12-09 16:23:59 +00:00
unused-argument.ll [WebAssembly] Add type prefixes to call instructions 2015-12-14 22:56:51 +00:00
userstack.ll [WebAssembly] Implement prolog/epilog insertion and FrameIndex elimination 2015-12-11 23:49:46 +00:00
varargs.ll [WebAssembly] Reintroduce ARGUMENT moving logic 2015-12-09 16:23:59 +00:00