summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/llvm_autogenerated/call.s111
-rw-r--r--test/llvm_autogenerated/cfg-stackify.s648
-rw-r--r--test/llvm_autogenerated/comparisons_f32.s172
-rw-r--r--test/llvm_autogenerated/comparisons_f64.s172
-rw-r--r--test/llvm_autogenerated/comparisons_i32.s104
-rw-r--r--test/llvm_autogenerated/comparisons_i64.s104
-rw-r--r--test/llvm_autogenerated/conv.s266
-rw-r--r--test/llvm_autogenerated/copysign-casts.s26
-rw-r--r--test/llvm_autogenerated/cpus.s13
-rw-r--r--test/llvm_autogenerated/dead-vreg.s44
-rw-r--r--test/llvm_autogenerated/f32.s166
-rw-r--r--test/llvm_autogenerated/f64.s166
-rw-r--r--test/llvm_autogenerated/fast-isel.s22
-rw-r--r--test/llvm_autogenerated/frem.s24
-rw-r--r--test/llvm_autogenerated/func.s65
-rw-r--r--test/llvm_autogenerated/global.s149
-rw-r--r--test/llvm_autogenerated/globl.s11
-rw-r--r--test/llvm_autogenerated/i32.s184
-rw-r--r--test/llvm_autogenerated/i64.s184
-rw-r--r--test/llvm_autogenerated/ident.s5
-rw-r--r--test/llvm_autogenerated/immediates.s220
-rw-r--r--test/llvm_autogenerated/inline-asm.s103
-rw-r--r--test/llvm_autogenerated/legalize.s919
-rw-r--r--test/llvm_autogenerated/load-ext.s104
-rw-r--r--test/llvm_autogenerated/load-store-i1.s74
-rw-r--r--test/llvm_autogenerated/load.s44
-rw-r--r--test/llvm_autogenerated/memory-addr32.s22
-rw-r--r--test/llvm_autogenerated/memory-addr64.s22
-rw-r--r--test/llvm_autogenerated/offset-folding.s54
-rw-r--r--test/llvm_autogenerated/offset.s366
-rw-r--r--test/llvm_autogenerated/phi.s43
-rw-r--r--test/llvm_autogenerated/reg-stackify.s92
-rw-r--r--test/llvm_autogenerated/return-int32.s13
-rw-r--r--test/llvm_autogenerated/return-void.s11
-rw-r--r--test/llvm_autogenerated/returned.s42
-rw-r--r--test/llvm_autogenerated/select.s124
-rw-r--r--test/llvm_autogenerated/signext-zeroext.s56
-rw-r--r--test/llvm_autogenerated/store-results.s61
-rw-r--r--test/llvm_autogenerated/store-trunc.s49
-rw-r--r--test/llvm_autogenerated/store.s40
-rw-r--r--test/llvm_autogenerated/switch.s79
-rw-r--r--test/llvm_autogenerated/unreachable.s29
-rw-r--r--test/llvm_autogenerated/unused-argument.s30
-rw-r--r--test/llvm_autogenerated/userstack.s79
-rw-r--r--test/llvm_autogenerated/varargs.s96
-rw-r--r--test/llvm_autogenerated/vtable.s206
46 files changed, 5614 insertions, 0 deletions
diff --git a/test/llvm_autogenerated/call.s b/test/llvm_autogenerated/call.s
new file mode 100644
index 000000000..3a9df9eb1
--- /dev/null
+++ b/test/llvm_autogenerated/call.s
@@ -0,0 +1,111 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/call.ll"
+ .globl call_i32_nullary
+ .type call_i32_nullary,@function
+call_i32_nullary:
+ .result i32
+ i32.call $push0=, i32_nullary
+ return $pop0
+func_end0:
+ .size call_i32_nullary, func_end0-call_i32_nullary
+
+ .globl call_i64_nullary
+ .type call_i64_nullary,@function
+call_i64_nullary:
+ .result i64
+ i64.call $push0=, i64_nullary
+ return $pop0
+func_end1:
+ .size call_i64_nullary, func_end1-call_i64_nullary
+
+ .globl call_float_nullary
+ .type call_float_nullary,@function
+call_float_nullary:
+ .result f32
+ f32.call $push0=, float_nullary
+ return $pop0
+func_end2:
+ .size call_float_nullary, func_end2-call_float_nullary
+
+ .globl call_double_nullary
+ .type call_double_nullary,@function
+call_double_nullary:
+ .result f64
+ f64.call $push0=, double_nullary
+ return $pop0
+func_end3:
+ .size call_double_nullary, func_end3-call_double_nullary
+
+ .globl call_void_nullary
+ .type call_void_nullary,@function
+call_void_nullary:
+ call void_nullary
+ return
+func_end4:
+ .size call_void_nullary, func_end4-call_void_nullary
+
+ .globl call_i32_unary
+ .type call_i32_unary,@function
+call_i32_unary:
+ .param i32
+ .result i32
+ i32.call $push0=, i32_unary, $0
+ return $pop0
+func_end5:
+ .size call_i32_unary, func_end5-call_i32_unary
+
+ .globl call_i32_binary
+ .type call_i32_binary,@function
+call_i32_binary:
+ .param i32, i32
+ .result i32
+ i32.call $push0=, i32_binary, $0, $1
+ return $pop0
+func_end6:
+ .size call_i32_binary, func_end6-call_i32_binary
+
+ .globl call_indirect_void
+ .type call_indirect_void,@function
+call_indirect_void:
+ .param i32
+ call_indirect $0
+ return
+func_end7:
+ .size call_indirect_void, func_end7-call_indirect_void
+
+ .globl call_indirect_i32
+ .type call_indirect_i32,@function
+call_indirect_i32:
+ .param i32
+ .result i32
+ i32.call_indirect $push0=, $0
+ return $pop0
+func_end8:
+ .size call_indirect_i32, func_end8-call_indirect_i32
+
+ .globl tail_call_void_nullary
+ .type tail_call_void_nullary,@function
+tail_call_void_nullary:
+ call void_nullary
+ return
+func_end9:
+ .size tail_call_void_nullary, func_end9-tail_call_void_nullary
+
+ .globl fastcc_tail_call_void_nullary
+ .type fastcc_tail_call_void_nullary,@function
+fastcc_tail_call_void_nullary:
+ call void_nullary
+ return
+func_end10:
+ .size fastcc_tail_call_void_nullary, func_end10-fastcc_tail_call_void_nullary
+
+ .globl coldcc_tail_call_void_nullary
+ .type coldcc_tail_call_void_nullary,@function
+coldcc_tail_call_void_nullary:
+ call void_nullary
+ return
+func_end11:
+ .size coldcc_tail_call_void_nullary, func_end11-coldcc_tail_call_void_nullary
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/cfg-stackify.s b/test/llvm_autogenerated/cfg-stackify.s
new file mode 100644
index 000000000..912e54b09
--- /dev/null
+++ b/test/llvm_autogenerated/cfg-stackify.s
@@ -0,0 +1,648 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/cfg-stackify.ll"
+ .globl test0
+ .type test0,@function
+test0:
+ .param i32
+ .local i32
+ i32.const $1=, 0
+BB0_1:
+ loop BB0_3
+ i32.const $push0=, 1
+ i32.add $1=, $1, $pop0
+ i32.ge_s $push1=, $1, $0
+ br_if $pop1, BB0_3
+ call something
+ br BB0_1
+BB0_3:
+ return
+func_end0:
+ .size test0, func_end0-test0
+
+ .globl test1
+ .type test1,@function
+test1:
+ .param i32
+ .local i32
+ i32.const $1=, 0
+BB1_1:
+ loop BB1_3
+ i32.const $push0=, 1
+ i32.add $1=, $1, $pop0
+ i32.ge_s $push1=, $1, $0
+ br_if $pop1, BB1_3
+ call something
+ br BB1_1
+BB1_3:
+ return
+func_end1:
+ .size test1, func_end1-test1
+
+ .globl test2
+ .type test2,@function
+test2:
+ .param i32, i32
+ block BB2_2
+ i32.const $push0=, 1
+ i32.lt_s $push1=, $1, $pop0
+ br_if $pop1, BB2_2
+BB2_1:
+ loop BB2_2
+ i32.const $push5=, -1
+ i32.add $1=, $1, $pop5
+ f64.load $push2=, 0($0)
+ f64.const $push3=, 0x1.999999999999ap1
+ f64.mul $push4=, $pop2, $pop3
+ f64.store $discard=, 0($0), $pop4
+ i32.const $push6=, 8
+ i32.add $0=, $0, $pop6
+ br_if $1, BB2_1
+BB2_2:
+ return
+func_end2:
+ .size test2, func_end2-test2
+
+ .globl doublediamond
+ .type doublediamond,@function
+doublediamond:
+ .param i32, i32, i32
+ .result i32
+ .local i32
+ block BB3_5
+ block BB3_2
+ i32.const $push0=, 0
+ i32.store $3=, 0($2), $pop0
+ br_if $0, BB3_2
+ i32.const $push4=, 1
+ i32.store $discard=, 0($2), $pop4
+ br BB3_5
+BB3_2:
+ block BB3_4
+ i32.const $push1=, 2
+ i32.store $discard=, 0($2), $pop1
+ br_if $1, BB3_4
+ i32.const $push3=, 3
+ i32.store $discard=, 0($2), $pop3
+ br BB3_5
+BB3_4:
+ i32.const $push2=, 4
+ i32.store $discard=, 0($2), $pop2
+BB3_5:
+ i32.const $push5=, 5
+ i32.store $discard=, 0($2), $pop5
+ return $3
+func_end3:
+ .size doublediamond, func_end3-doublediamond
+
+ .globl triangle
+ .type triangle,@function
+triangle:
+ .param i32, i32
+ .result i32
+ .local i32
+ block BB4_2
+ i32.const $push0=, 0
+ i32.store $2=, 0($0), $pop0
+ br_if $1, BB4_2
+ i32.const $push1=, 1
+ i32.store $discard=, 0($0), $pop1
+BB4_2:
+ i32.const $push2=, 2
+ i32.store $discard=, 0($0), $pop2
+ return $2
+func_end4:
+ .size triangle, func_end4-triangle
+
+ .globl diamond
+ .type diamond,@function
+diamond:
+ .param i32, i32
+ .result i32
+ .local i32
+ block BB5_3
+ block BB5_2
+ i32.const $push0=, 0
+ i32.store $2=, 0($0), $pop0
+ br_if $1, BB5_2
+ i32.const $push2=, 1
+ i32.store $discard=, 0($0), $pop2
+ br BB5_3
+BB5_2:
+ i32.const $push1=, 2
+ i32.store $discard=, 0($0), $pop1
+BB5_3:
+ i32.const $push3=, 3
+ i32.store $discard=, 0($0), $pop3
+ return $2
+func_end5:
+ .size diamond, func_end5-diamond
+
+ .globl single_block
+ .type single_block,@function
+single_block:
+ .param i32
+ .result i32
+ i32.const $push0=, 0
+ i32.store $push1=, 0($0), $pop0
+ return $pop1
+func_end6:
+ .size single_block, func_end6-single_block
+
+ .globl minimal_loop
+ .type minimal_loop,@function
+minimal_loop:
+ .param i32
+ .result i32
+ i32.const $push0=, 0
+ i32.store $discard=, 0($0), $pop0
+BB7_1:
+ loop BB7_2
+ i32.const $push1=, 1
+ i32.store $discard=, 0($0), $pop1
+ br BB7_1
+BB7_2:
+func_end7:
+ .size minimal_loop, func_end7-minimal_loop
+
+ .globl simple_loop
+ .type simple_loop,@function
+simple_loop:
+ .param i32, i32
+ .result i32
+ .local i32
+ i32.const $push0=, 0
+ i32.store $2=, 0($0), $pop0
+BB8_1:
+ loop BB8_2
+ i32.const $push1=, 1
+ i32.store $discard=, 0($0), $pop1
+ i32.const $push3=, 0
+ i32.eq $push4=, $1, $pop3
+ br_if $pop4, BB8_1
+BB8_2:
+ i32.const $push2=, 2
+ i32.store $discard=, 0($0), $pop2
+ return $2
+func_end8:
+ .size simple_loop, func_end8-simple_loop
+
+ .globl doubletriangle
+ .type doubletriangle,@function
+doubletriangle:
+ .param i32, i32, i32
+ .result i32
+ .local i32
+ block BB9_4
+ i32.const $push0=, 0
+ i32.store $3=, 0($2), $pop0
+ br_if $0, BB9_4
+ block BB9_3
+ i32.const $push1=, 2
+ i32.store $discard=, 0($2), $pop1
+ br_if $1, BB9_3
+ i32.const $push2=, 3
+ i32.store $discard=, 0($2), $pop2
+BB9_3:
+ i32.const $push3=, 4
+ i32.store $discard=, 0($2), $pop3
+BB9_4:
+ i32.const $push4=, 5
+ i32.store $discard=, 0($2), $pop4
+ return $3
+func_end9:
+ .size doubletriangle, func_end9-doubletriangle
+
+ .globl ifelse_earlyexits
+ .type ifelse_earlyexits,@function
+ifelse_earlyexits:
+ .param i32, i32, i32
+ .result i32
+ .local i32
+ block BB10_4
+ block BB10_2
+ i32.const $push0=, 0
+ i32.store $3=, 0($2), $pop0
+ br_if $0, BB10_2
+ i32.const $push3=, 1
+ i32.store $discard=, 0($2), $pop3
+ br BB10_4
+BB10_2:
+ i32.const $push1=, 2
+ i32.store $discard=, 0($2), $pop1
+ br_if $1, BB10_4
+ i32.const $push2=, 3
+ i32.store $discard=, 0($2), $pop2
+BB10_4:
+ i32.const $push4=, 4
+ i32.store $discard=, 0($2), $pop4
+ return $3
+func_end10:
+ .size ifelse_earlyexits, func_end10-ifelse_earlyexits
+
+ .globl doublediamond_in_a_loop
+ .type doublediamond_in_a_loop,@function
+doublediamond_in_a_loop:
+ .param i32, i32, i32
+ .result i32
+BB11_1:
+ loop BB11_7
+ block BB11_6
+ block BB11_3
+ i32.const $push0=, 0
+ i32.store $discard=, 0($2), $pop0
+ br_if $0, BB11_3
+ i32.const $push4=, 1
+ i32.store $discard=, 0($2), $pop4
+ br BB11_6
+BB11_3:
+ block BB11_5
+ i32.const $push1=, 2
+ i32.store $discard=, 0($2), $pop1
+ br_if $1, BB11_5
+ i32.const $push3=, 3
+ i32.store $discard=, 0($2), $pop3
+ br BB11_6
+BB11_5:
+ i32.const $push2=, 4
+ i32.store $discard=, 0($2), $pop2
+BB11_6:
+ i32.const $push5=, 5
+ i32.store $discard=, 0($2), $pop5
+ br BB11_1
+BB11_7:
+func_end11:
+ .size doublediamond_in_a_loop, func_end11-doublediamond_in_a_loop
+
+ .globl test3
+ .type test3,@function
+test3:
+ .param i32
+ block BB12_5
+ i32.const $push0=, 0
+ br_if $pop0, BB12_5
+BB12_1:
+ loop BB12_4
+ br_if $0, BB12_4
+BB12_2:
+ loop BB12_3
+ i32.ne $push1=, $0, $0
+ br_if $pop1, BB12_2
+BB12_3:
+ call bar
+ br BB12_1
+BB12_4:
+ unreachable
+BB12_5:
+ return
+func_end12:
+ .size test3, func_end12-test3
+
+ .globl test4
+ .type test4,@function
+test4:
+ .param i32
+ block BB13_8
+ block BB13_7
+ block BB13_4
+ i32.const $push0=, 3
+ i32.gt_s $push1=, $0, $pop0
+ br_if $pop1, BB13_4
+ block BB13_3
+ i32.const $push8=, 0
+ i32.eq $push9=, $0, $pop8
+ br_if $pop9, BB13_3
+ i32.const $push6=, 2
+ i32.ne $push7=, $0, $pop6
+ br_if $pop7, BB13_7
+BB13_3:
+ return
+BB13_4:
+ i32.const $push2=, 4
+ i32.eq $push3=, $0, $pop2
+ br_if $pop3, BB13_8
+ i32.const $push4=, 622
+ i32.ne $push5=, $0, $pop4
+ br_if $pop5, BB13_7
+ return
+BB13_7:
+ return
+BB13_8:
+ return
+func_end13:
+ .size test4, func_end13-test4
+
+ .globl test5
+ .type test5,@function
+test5:
+ .param i32, i32
+ .local i32, i32
+BB14_1:
+ block BB14_4
+ loop BB14_3
+ i32.const $2=, 0
+ i32.store $3=, 0($2), $2
+ i32.const $2=, 1
+ i32.and $push0=, $0, $2
+ i32.const $push5=, 0
+ i32.eq $push6=, $pop0, $pop5
+ br_if $pop6, BB14_4
+ i32.store $push2=, 0($3), $2
+ i32.and $push3=, $1, $pop2
+ br_if $pop3, BB14_1
+BB14_3:
+ i32.const $push4=, 3
+ i32.store $discard=, 0($3), $pop4
+ return
+BB14_4:
+ i32.const $push1=, 2
+ i32.store $discard=, 0($3), $pop1
+ return
+func_end14:
+ .size test5, func_end14-test5
+
+ .globl test6
+ .type test6,@function
+test6:
+ .param i32, i32
+ .local i32, i32, i32
+BB15_1:
+ block BB15_6
+ block BB15_5
+ loop BB15_4
+ i32.const $2=, 0
+ i32.store $discard=, 0($2), $2
+ i32.const $3=, 1
+ i32.and $push0=, $0, $3
+ i32.const $push4=, 0
+ i32.eq $push5=, $pop0, $pop4
+ br_if $pop5, BB15_6
+ i32.store $discard=, 0($2), $3
+ i32.and $4=, $1, $3
+ i32.const $push6=, 0
+ i32.eq $push7=, $4, $pop6
+ br_if $pop7, BB15_5
+ i32.store $discard=, 0($2), $3
+ br_if $4, BB15_1
+BB15_4:
+ i32.const $push3=, 2
+ i32.store $discard=, 0($2), $pop3
+ return
+BB15_5:
+ i32.const $push1=, 3
+ i32.store $discard=, 0($2), $pop1
+BB15_6:
+ i32.const $push2=, 4
+ i32.store $discard=, 0($2), $pop2
+ return
+func_end15:
+ .size test6, func_end15-test6
+
+ .globl test7
+ .type test7,@function
+test7:
+ .param i32, i32
+ .local i32, i32
+ i32.const $3=, 0
+ i32.store $2=, 0($3), $3
+BB16_1:
+ loop BB16_5
+ block BB16_4
+ i32.const $push0=, 1
+ i32.store $3=, 0($2), $pop0
+ i32.and $push1=, $0, $3
+ br_if $pop1, BB16_4
+ i32.const $push2=, 2
+ i32.store $discard=, 0($2), $pop2
+ i32.and $push3=, $1, $3
+ br_if $pop3, BB16_1
+ i32.const $push4=, 4
+ i32.store $discard=, 0($2), $pop4
+ unreachable
+BB16_4:
+ i32.const $push5=, 3
+ i32.store $discard=, 0($2), $pop5
+ i32.and $push6=, $1, $3
+ br_if $pop6, BB16_1
+BB16_5:
+ i32.const $push7=, 5
+ i32.store $discard=, 0($2), $pop7
+ unreachable
+func_end16:
+ .size test7, func_end16-test7
+
+ .globl test8
+ .type test8,@function
+test8:
+ .result i32
+ .local i32
+ i32.const $0=, 0
+BB17_1:
+ loop BB17_4
+ block BB17_3
+ i32.const $push0=, 0
+ i32.eq $push1=, $0, $pop0
+ br_if $pop1, BB17_3
+ i32.const $push2=, 0
+ i32.eq $push3=, $0, $pop2
+ br_if $pop3, BB17_1
+BB17_3:
+ loop BB17_4
+ br_if $0, BB17_3
+ br BB17_1
+BB17_4:
+func_end17:
+ .size test8, func_end17-test8
+
+ .globl test9
+ .type test9,@function
+test9:
+ .local i32, i32
+ i32.const $1=, 0
+ i32.store $0=, 0($1), $1
+BB18_1:
+ loop BB18_5
+ i32.const $push0=, 1
+ i32.store $1=, 0($0), $pop0
+ i32.call $push1=, a
+ i32.and $push2=, $pop1, $1
+ i32.const $push13=, 0
+ i32.eq $push14=, $pop2, $pop13
+ br_if $pop14, BB18_5
+BB18_2:
+ loop BB18_5
+ block BB18_4
+ i32.const $push4=, 2
+ i32.store $discard=, 0($0), $pop4
+ i32.call $push5=, a
+ i32.and $push6=, $pop5, $1
+ i32.const $push15=, 0
+ i32.eq $push16=, $pop6, $pop15
+ br_if $pop16, BB18_4
+ i32.const $push10=, 3
+ i32.store $discard=, 0($0), $pop10
+ i32.call $push11=, a
+ i32.and $push12=, $pop11, $1
+ br_if $pop12, BB18_2
+ br BB18_1
+BB18_4:
+ i32.const $push7=, 4
+ i32.store $discard=, 0($0), $pop7
+ i32.call $push8=, a
+ i32.and $push9=, $pop8, $1
+ br_if $pop9, BB18_2
+ br BB18_1
+BB18_5:
+ i32.const $push3=, 5
+ i32.store $discard=, 0($0), $pop3
+ return
+func_end18:
+ .size test9, func_end18-test9
+
+ .globl test10
+ .type test10,@function
+test10:
+ .local i32, i32, i32, i32, i32
+ i32.const $0=, 2
+BB19_1:
+ loop BB19_7
+ copy_local $4=, $1
+ copy_local $3=, $0
+ i32.const $1=, 0
+ i32.const $0=, 3
+ i32.const $2=, 4
+ br_if $4, BB19_1
+BB19_2:
+ block BB19_6
+ loop BB19_5
+ copy_local $4=, $3
+ copy_local $3=, $2
+BB19_3:
+ loop BB19_5
+ copy_local $2=, $4
+ i32.const $push0=, 4
+ i32.gt_u $push1=, $2, $pop0
+ br_if $pop1, BB19_1
+ copy_local $4=, $3
+ tableswitch $2, BB19_3, BB19_3, BB19_5, BB19_1, BB19_2, BB19_6
+BB19_5:
+ return
+BB19_6:
+ i32.const $1=, 1
+ br BB19_1
+BB19_7:
+func_end19:
+ .size test10, func_end19-test10
+
+ .globl test11
+ .type test11,@function
+test11:
+ .local i32
+ i32.const $0=, 0
+ i32.store $discard=, 0($0), $0
+ block BB20_8
+ block BB20_7
+ block BB20_6
+ block BB20_4
+ br_if $0, BB20_4
+ block BB20_3
+ i32.const $push4=, 1
+ i32.store $discard=, 0($0), $pop4
+ br_if $0, BB20_3
+ i32.const $push5=, 2
+ i32.store $discard=, 0($0), $pop5
+ br_if $0, BB20_6
+BB20_3:
+ i32.const $push7=, 3
+ i32.store $discard=, 0($0), $pop7
+ return
+BB20_4:
+ i32.const $push0=, 4
+ i32.store $discard=, 0($0), $pop0
+ br_if $0, BB20_8
+ i32.const $push1=, 5
+ i32.store $discard=, 0($0), $pop1
+ i32.const $push8=, 0
+ i32.eq $push9=, $0, $pop8
+ br_if $pop9, BB20_7
+BB20_6:
+ i32.const $push6=, 7
+ i32.store $discard=, 0($0), $pop6
+ return
+BB20_7:
+ i32.const $push2=, 6
+ i32.store $discard=, 0($0), $pop2
+ return
+BB20_8:
+ i32.const $push3=, 8
+ i32.store $discard=, 0($0), $pop3
+ return
+func_end20:
+ .size test11, func_end20-test11
+
+ .globl test12
+ .type test12,@function
+test12:
+ .param i32
+ .local i32
+BB21_1:
+ loop BB21_8
+ i32.load8_u $1=, 0($0)
+ block BB21_7
+ block BB21_6
+ block BB21_4
+ i32.const $push0=, 103
+ i32.gt_s $push1=, $1, $pop0
+ br_if $pop1, BB21_4
+ i32.const $push6=, 42
+ i32.eq $push7=, $1, $pop6
+ br_if $pop7, BB21_7
+ i32.const $push8=, 76
+ i32.eq $push9=, $1, $pop8
+ br_if $pop9, BB21_7
+ br BB21_6
+BB21_4:
+ i32.const $push2=, 108
+ i32.eq $push3=, $1, $pop2
+ br_if $pop3, BB21_7
+ i32.const $push4=, 104
+ i32.eq $push5=, $1, $pop4
+ br_if $pop5, BB21_7
+BB21_6:
+ return
+BB21_7:
+ i32.const $push10=, 1
+ i32.add $0=, $0, $pop10
+ br BB21_1
+BB21_8:
+func_end21:
+ .size test12, func_end21-test12
+
+ .globl test13
+ .type test13,@function
+test13:
+ .local i32
+ block BB22_2
+ i32.const $push0=, 0
+ i32.const $push3=, 0
+ i32.eq $push4=, $pop0, $pop3
+ br_if $pop4, BB22_2
+ return
+BB22_2:
+ i32.const $0=, 0
+ block BB22_4
+ br_if $0, BB22_4
+ i32.const $0=, 0
+BB22_4:
+ block BB22_5
+ i32.const $push1=, 1
+ i32.and $push2=, $0, $pop1
+ i32.const $push5=, 0
+ i32.eq $push6=, $pop2, $pop5
+ br_if $pop6, BB22_5
+BB22_5:
+ unreachable
+func_end22:
+ .size test13, func_end22-test13
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/comparisons_f32.s b/test/llvm_autogenerated/comparisons_f32.s
new file mode 100644
index 000000000..e1b8cf1a1
--- /dev/null
+++ b/test/llvm_autogenerated/comparisons_f32.s
@@ -0,0 +1,172 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/comparisons_f32.ll"
+ .globl ord_f32
+ .type ord_f32,@function
+ord_f32:
+ .param f32, f32
+ .result i32
+ f32.eq $push1=, $0, $0
+ f32.eq $push0=, $1, $1
+ i32.and $push2=, $pop1, $pop0
+ return $pop2
+func_end0:
+ .size ord_f32, func_end0-ord_f32
+
+ .globl uno_f32
+ .type uno_f32,@function
+uno_f32:
+ .param f32, f32
+ .result i32
+ f32.ne $push1=, $0, $0
+ f32.ne $push0=, $1, $1
+ i32.or $push2=, $pop1, $pop0
+ return $pop2
+func_end1:
+ .size uno_f32, func_end1-uno_f32
+
+ .globl oeq_f32
+ .type oeq_f32,@function
+oeq_f32:
+ .param f32, f32
+ .result i32
+ f32.eq $push0=, $0, $1
+ return $pop0
+func_end2:
+ .size oeq_f32, func_end2-oeq_f32
+
+ .globl une_f32
+ .type une_f32,@function
+une_f32:
+ .param f32, f32
+ .result i32
+ f32.ne $push0=, $0, $1
+ return $pop0
+func_end3:
+ .size une_f32, func_end3-une_f32
+
+ .globl olt_f32
+ .type olt_f32,@function
+olt_f32:
+ .param f32, f32
+ .result i32
+ f32.lt $push0=, $0, $1
+ return $pop0
+func_end4:
+ .size olt_f32, func_end4-olt_f32
+
+ .globl ole_f32
+ .type ole_f32,@function
+ole_f32:
+ .param f32, f32
+ .result i32
+ f32.le $push0=, $0, $1
+ return $pop0
+func_end5:
+ .size ole_f32, func_end5-ole_f32
+
+ .globl ogt_f32
+ .type ogt_f32,@function
+ogt_f32:
+ .param f32, f32
+ .result i32
+ f32.gt $push0=, $0, $1
+ return $pop0
+func_end6:
+ .size ogt_f32, func_end6-ogt_f32
+
+ .globl oge_f32
+ .type oge_f32,@function
+oge_f32:
+ .param f32, f32
+ .result i32
+ f32.ge $push0=, $0, $1
+ return $pop0
+func_end7:
+ .size oge_f32, func_end7-oge_f32
+
+ .globl ueq_f32
+ .type ueq_f32,@function
+ueq_f32:
+ .param f32, f32
+ .result i32
+ f32.eq $push0=, $0, $1
+ f32.ne $push2=, $0, $0
+ f32.ne $push1=, $1, $1
+ i32.or $push3=, $pop2, $pop1
+ i32.or $push4=, $pop0, $pop3
+ return $pop4
+func_end8:
+ .size ueq_f32, func_end8-ueq_f32
+
+ .globl one_f32
+ .type one_f32,@function
+one_f32:
+ .param f32, f32
+ .result i32
+ f32.ne $push0=, $0, $1
+ f32.eq $push2=, $0, $0
+ f32.eq $push1=, $1, $1
+ i32.and $push3=, $pop2, $pop1
+ i32.and $push4=, $pop0, $pop3
+ return $pop4
+func_end9:
+ .size one_f32, func_end9-one_f32
+
+ .globl ult_f32
+ .type ult_f32,@function
+ult_f32:
+ .param f32, f32
+ .result i32
+ f32.lt $push0=, $0, $1
+ f32.ne $push2=, $0, $0
+ f32.ne $push1=, $1, $1
+ i32.or $push3=, $pop2, $pop1
+ i32.or $push4=, $pop0, $pop3
+ return $pop4
+func_end10:
+ .size ult_f32, func_end10-ult_f32
+
+ .globl ule_f32
+ .type ule_f32,@function
+ule_f32:
+ .param f32, f32
+ .result i32
+ f32.le $push0=, $0, $1
+ f32.ne $push2=, $0, $0
+ f32.ne $push1=, $1, $1
+ i32.or $push3=, $pop2, $pop1
+ i32.or $push4=, $pop0, $pop3
+ return $pop4
+func_end11:
+ .size ule_f32, func_end11-ule_f32
+
+ .globl ugt_f32
+ .type ugt_f32,@function
+ugt_f32:
+ .param f32, f32
+ .result i32
+ f32.gt $push0=, $0, $1
+ f32.ne $push2=, $0, $0
+ f32.ne $push1=, $1, $1
+ i32.or $push3=, $pop2, $pop1
+ i32.or $push4=, $pop0, $pop3
+ return $pop4
+func_end12:
+ .size ugt_f32, func_end12-ugt_f32
+
+ .globl uge_f32
+ .type uge_f32,@function
+uge_f32:
+ .param f32, f32
+ .result i32
+ f32.ge $push0=, $0, $1
+ f32.ne $push2=, $0, $0
+ f32.ne $push1=, $1, $1
+ i32.or $push3=, $pop2, $pop1
+ i32.or $push4=, $pop0, $pop3
+ return $pop4
+func_end13:
+ .size uge_f32, func_end13-uge_f32
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/comparisons_f64.s b/test/llvm_autogenerated/comparisons_f64.s
new file mode 100644
index 000000000..16aa8a399
--- /dev/null
+++ b/test/llvm_autogenerated/comparisons_f64.s
@@ -0,0 +1,172 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/comparisons_f64.ll"
+ .globl ord_f64
+ .type ord_f64,@function
+ord_f64:
+ .param f64, f64
+ .result i32
+ f64.eq $push1=, $0, $0
+ f64.eq $push0=, $1, $1
+ i32.and $push2=, $pop1, $pop0
+ return $pop2
+func_end0:
+ .size ord_f64, func_end0-ord_f64
+
+ .globl uno_f64
+ .type uno_f64,@function
+uno_f64:
+ .param f64, f64
+ .result i32
+ f64.ne $push1=, $0, $0
+ f64.ne $push0=, $1, $1
+ i32.or $push2=, $pop1, $pop0
+ return $pop2
+func_end1:
+ .size uno_f64, func_end1-uno_f64
+
+ .globl oeq_f64
+ .type oeq_f64,@function
+oeq_f64:
+ .param f64, f64
+ .result i32
+ f64.eq $push0=, $0, $1
+ return $pop0
+func_end2:
+ .size oeq_f64, func_end2-oeq_f64
+
+ .globl une_f64
+ .type une_f64,@function
+une_f64:
+ .param f64, f64
+ .result i32
+ f64.ne $push0=, $0, $1
+ return $pop0
+func_end3:
+ .size une_f64, func_end3-une_f64
+
+ .globl olt_f64
+ .type olt_f64,@function
+olt_f64:
+ .param f64, f64
+ .result i32
+ f64.lt $push0=, $0, $1
+ return $pop0
+func_end4:
+ .size olt_f64, func_end4-olt_f64
+
+ .globl ole_f64
+ .type ole_f64,@function
+ole_f64:
+ .param f64, f64
+ .result i32
+ f64.le $push0=, $0, $1
+ return $pop0
+func_end5:
+ .size ole_f64, func_end5-ole_f64
+
+ .globl ogt_f64
+ .type ogt_f64,@function
+ogt_f64:
+ .param f64, f64
+ .result i32
+ f64.gt $push0=, $0, $1
+ return $pop0
+func_end6:
+ .size ogt_f64, func_end6-ogt_f64
+
+ .globl oge_f64
+ .type oge_f64,@function
+oge_f64:
+ .param f64, f64
+ .result i32
+ f64.ge $push0=, $0, $1
+ return $pop0
+func_end7:
+ .size oge_f64, func_end7-oge_f64
+
+ .globl ueq_f64
+ .type ueq_f64,@function
+ueq_f64:
+ .param f64, f64
+ .result i32
+ f64.eq $push0=, $0, $1
+ f64.ne $push2=, $0, $0
+ f64.ne $push1=, $1, $1
+ i32.or $push3=, $pop2, $pop1
+ i32.or $push4=, $pop0, $pop3
+ return $pop4
+func_end8:
+ .size ueq_f64, func_end8-ueq_f64
+
+ .globl one_f64
+ .type one_f64,@function
+one_f64:
+ .param f64, f64
+ .result i32
+ f64.ne $push0=, $0, $1
+ f64.eq $push2=, $0, $0
+ f64.eq $push1=, $1, $1
+ i32.and $push3=, $pop2, $pop1
+ i32.and $push4=, $pop0, $pop3
+ return $pop4
+func_end9:
+ .size one_f64, func_end9-one_f64
+
+ .globl ult_f64
+ .type ult_f64,@function
+ult_f64:
+ .param f64, f64
+ .result i32
+ f64.lt $push0=, $0, $1
+ f64.ne $push2=, $0, $0
+ f64.ne $push1=, $1, $1
+ i32.or $push3=, $pop2, $pop1
+ i32.or $push4=, $pop0, $pop3
+ return $pop4
+func_end10:
+ .size ult_f64, func_end10-ult_f64
+
+ .globl ule_f64
+ .type ule_f64,@function
+ule_f64:
+ .param f64, f64
+ .result i32
+ f64.le $push0=, $0, $1
+ f64.ne $push2=, $0, $0
+ f64.ne $push1=, $1, $1
+ i32.or $push3=, $pop2, $pop1
+ i32.or $push4=, $pop0, $pop3
+ return $pop4
+func_end11:
+ .size ule_f64, func_end11-ule_f64
+
+ .globl ugt_f64
+ .type ugt_f64,@function
+ugt_f64:
+ .param f64, f64
+ .result i32
+ f64.gt $push0=, $0, $1
+ f64.ne $push2=, $0, $0
+ f64.ne $push1=, $1, $1
+ i32.or $push3=, $pop2, $pop1
+ i32.or $push4=, $pop0, $pop3
+ return $pop4
+func_end12:
+ .size ugt_f64, func_end12-ugt_f64
+
+ .globl uge_f64
+ .type uge_f64,@function
+uge_f64:
+ .param f64, f64
+ .result i32
+ f64.ge $push0=, $0, $1
+ f64.ne $push2=, $0, $0
+ f64.ne $push1=, $1, $1
+ i32.or $push3=, $pop2, $pop1
+ i32.or $push4=, $pop0, $pop3
+ return $pop4
+func_end13:
+ .size uge_f64, func_end13-uge_f64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/comparisons_i32.s b/test/llvm_autogenerated/comparisons_i32.s
new file mode 100644
index 000000000..538b4cfd6
--- /dev/null
+++ b/test/llvm_autogenerated/comparisons_i32.s
@@ -0,0 +1,104 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/comparisons_i32.ll"
+ .globl eq_i32
+ .type eq_i32,@function
+eq_i32:
+ .param i32, i32
+ .result i32
+ i32.eq $push0=, $0, $1
+ return $pop0
+func_end0:
+ .size eq_i32, func_end0-eq_i32
+
+ .globl ne_i32
+ .type ne_i32,@function
+ne_i32:
+ .param i32, i32
+ .result i32
+ i32.ne $push0=, $0, $1
+ return $pop0
+func_end1:
+ .size ne_i32, func_end1-ne_i32
+
+ .globl slt_i32
+ .type slt_i32,@function
+slt_i32:
+ .param i32, i32
+ .result i32
+ i32.lt_s $push0=, $0, $1
+ return $pop0
+func_end2:
+ .size slt_i32, func_end2-slt_i32
+
+ .globl sle_i32
+ .type sle_i32,@function
+sle_i32:
+ .param i32, i32
+ .result i32
+ i32.le_s $push0=, $0, $1
+ return $pop0
+func_end3:
+ .size sle_i32, func_end3-sle_i32
+
+ .globl ult_i32
+ .type ult_i32,@function
+ult_i32:
+ .param i32, i32
+ .result i32
+ i32.lt_u $push0=, $0, $1
+ return $pop0
+func_end4:
+ .size ult_i32, func_end4-ult_i32
+
+ .globl ule_i32
+ .type ule_i32,@function
+ule_i32:
+ .param i32, i32
+ .result i32
+ i32.le_u $push0=, $0, $1
+ return $pop0
+func_end5:
+ .size ule_i32, func_end5-ule_i32
+
+ .globl sgt_i32
+ .type sgt_i32,@function
+sgt_i32:
+ .param i32, i32
+ .result i32
+ i32.gt_s $push0=, $0, $1
+ return $pop0
+func_end6:
+ .size sgt_i32, func_end6-sgt_i32
+
+ .globl sge_i32
+ .type sge_i32,@function
+sge_i32:
+ .param i32, i32
+ .result i32
+ i32.ge_s $push0=, $0, $1
+ return $pop0
+func_end7:
+ .size sge_i32, func_end7-sge_i32
+
+ .globl ugt_i32
+ .type ugt_i32,@function
+ugt_i32:
+ .param i32, i32
+ .result i32
+ i32.gt_u $push0=, $0, $1
+ return $pop0
+func_end8:
+ .size ugt_i32, func_end8-ugt_i32
+
+ .globl uge_i32
+ .type uge_i32,@function
+uge_i32:
+ .param i32, i32
+ .result i32
+ i32.ge_u $push0=, $0, $1
+ return $pop0
+func_end9:
+ .size uge_i32, func_end9-uge_i32
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/comparisons_i64.s b/test/llvm_autogenerated/comparisons_i64.s
new file mode 100644
index 000000000..d7d0fd773
--- /dev/null
+++ b/test/llvm_autogenerated/comparisons_i64.s
@@ -0,0 +1,104 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/comparisons_i64.ll"
+ .globl eq_i64
+ .type eq_i64,@function
+eq_i64:
+ .param i64, i64
+ .result i32
+ i64.eq $push0=, $0, $1
+ return $pop0
+func_end0:
+ .size eq_i64, func_end0-eq_i64
+
+ .globl ne_i64
+ .type ne_i64,@function
+ne_i64:
+ .param i64, i64
+ .result i32
+ i64.ne $push0=, $0, $1
+ return $pop0
+func_end1:
+ .size ne_i64, func_end1-ne_i64
+
+ .globl slt_i64
+ .type slt_i64,@function
+slt_i64:
+ .param i64, i64
+ .result i32
+ i64.lt_s $push0=, $0, $1
+ return $pop0
+func_end2:
+ .size slt_i64, func_end2-slt_i64
+
+ .globl sle_i64
+ .type sle_i64,@function
+sle_i64:
+ .param i64, i64
+ .result i32
+ i64.le_s $push0=, $0, $1
+ return $pop0
+func_end3:
+ .size sle_i64, func_end3-sle_i64
+
+ .globl ult_i64
+ .type ult_i64,@function
+ult_i64:
+ .param i64, i64
+ .result i32
+ i64.lt_u $push0=, $0, $1
+ return $pop0
+func_end4:
+ .size ult_i64, func_end4-ult_i64
+
+ .globl ule_i64
+ .type ule_i64,@function
+ule_i64:
+ .param i64, i64
+ .result i32
+ i64.le_u $push0=, $0, $1
+ return $pop0
+func_end5:
+ .size ule_i64, func_end5-ule_i64
+
+ .globl sgt_i64
+ .type sgt_i64,@function
+sgt_i64:
+ .param i64, i64
+ .result i32
+ i64.gt_s $push0=, $0, $1
+ return $pop0
+func_end6:
+ .size sgt_i64, func_end6-sgt_i64
+
+ .globl sge_i64
+ .type sge_i64,@function
+sge_i64:
+ .param i64, i64
+ .result i32
+ i64.ge_s $push0=, $0, $1
+ return $pop0
+func_end7:
+ .size sge_i64, func_end7-sge_i64
+
+ .globl ugt_i64
+ .type ugt_i64,@function
+ugt_i64:
+ .param i64, i64
+ .result i32
+ i64.gt_u $push0=, $0, $1
+ return $pop0
+func_end8:
+ .size ugt_i64, func_end8-ugt_i64
+
+ .globl uge_i64
+ .type uge_i64,@function
+uge_i64:
+ .param i64, i64
+ .result i32
+ i64.ge_u $push0=, $0, $1
+ return $pop0
+func_end9:
+ .size uge_i64, func_end9-uge_i64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/conv.s b/test/llvm_autogenerated/conv.s
new file mode 100644
index 000000000..de7a7fd88
--- /dev/null
+++ b/test/llvm_autogenerated/conv.s
@@ -0,0 +1,266 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/conv.ll"
+ .globl i32_wrap_i64
+ .type i32_wrap_i64,@function
+i32_wrap_i64:
+ .param i64
+ .result i32
+ i32.wrap/i64 $push0=, $0
+ return $pop0
+func_end0:
+ .size i32_wrap_i64, func_end0-i32_wrap_i64
+
+ .globl i64_extend_s_i32
+ .type i64_extend_s_i32,@function
+i64_extend_s_i32:
+ .param i32
+ .result i64
+ i64.extend_s/i32 $push0=, $0
+ return $pop0
+func_end1:
+ .size i64_extend_s_i32, func_end1-i64_extend_s_i32
+
+ .globl i64_extend_u_i32
+ .type i64_extend_u_i32,@function
+i64_extend_u_i32:
+ .param i32
+ .result i64
+ i64.extend_u/i32 $push0=, $0
+ return $pop0
+func_end2:
+ .size i64_extend_u_i32, func_end2-i64_extend_u_i32
+
+ .globl i32_trunc_s_f32
+ .type i32_trunc_s_f32,@function
+i32_trunc_s_f32:
+ .param f32
+ .result i32
+ i32.trunc_s/f32 $push0=, $0
+ return $pop0
+func_end3:
+ .size i32_trunc_s_f32, func_end3-i32_trunc_s_f32
+
+ .globl i32_trunc_u_f32
+ .type i32_trunc_u_f32,@function
+i32_trunc_u_f32:
+ .param f32
+ .result i32
+ i32.trunc_u/f32 $push0=, $0
+ return $pop0
+func_end4:
+ .size i32_trunc_u_f32, func_end4-i32_trunc_u_f32
+
+ .globl i32_trunc_s_f64
+ .type i32_trunc_s_f64,@function
+i32_trunc_s_f64:
+ .param f64
+ .result i32
+ i32.trunc_s/f64 $push0=, $0
+ return $pop0
+func_end5:
+ .size i32_trunc_s_f64, func_end5-i32_trunc_s_f64
+
+ .globl i32_trunc_u_f64
+ .type i32_trunc_u_f64,@function
+i32_trunc_u_f64:
+ .param f64
+ .result i32
+ i32.trunc_u/f64 $push0=, $0
+ return $pop0
+func_end6:
+ .size i32_trunc_u_f64, func_end6-i32_trunc_u_f64
+
+ .globl i64_trunc_s_f32
+ .type i64_trunc_s_f32,@function
+i64_trunc_s_f32:
+ .param f32
+ .result i64
+ i64.trunc_s/f32 $push0=, $0
+ return $pop0
+func_end7:
+ .size i64_trunc_s_f32, func_end7-i64_trunc_s_f32
+
+ .globl i64_trunc_u_f32
+ .type i64_trunc_u_f32,@function
+i64_trunc_u_f32:
+ .param f32
+ .result i64
+ i64.trunc_u/f32 $push0=, $0
+ return $pop0
+func_end8:
+ .size i64_trunc_u_f32, func_end8-i64_trunc_u_f32
+
+ .globl i64_trunc_s_f64
+ .type i64_trunc_s_f64,@function
+i64_trunc_s_f64:
+ .param f64
+ .result i64
+ i64.trunc_s/f64 $push0=, $0
+ return $pop0
+func_end9:
+ .size i64_trunc_s_f64, func_end9-i64_trunc_s_f64
+
+ .globl i64_trunc_u_f64
+ .type i64_trunc_u_f64,@function
+i64_trunc_u_f64:
+ .param f64
+ .result i64
+ i64.trunc_u/f64 $push0=, $0
+ return $pop0
+func_end10:
+ .size i64_trunc_u_f64, func_end10-i64_trunc_u_f64
+
+ .globl f32_convert_s_i32
+ .type f32_convert_s_i32,@function
+f32_convert_s_i32:
+ .param i32
+ .result f32
+ f32.convert_s/i32 $push0=, $0
+ return $pop0
+func_end11:
+ .size f32_convert_s_i32, func_end11-f32_convert_s_i32
+
+ .globl f32_convert_u_i32
+ .type f32_convert_u_i32,@function
+f32_convert_u_i32:
+ .param i32
+ .result f32
+ f32.convert_u/i32 $push0=, $0
+ return $pop0
+func_end12:
+ .size f32_convert_u_i32, func_end12-f32_convert_u_i32
+
+ .globl f64_convert_s_i32
+ .type f64_convert_s_i32,@function
+f64_convert_s_i32:
+ .param i32
+ .result f64
+ f64.convert_s/i32 $push0=, $0
+ return $pop0
+func_end13:
+ .size f64_convert_s_i32, func_end13-f64_convert_s_i32
+
+ .globl f64_convert_u_i32
+ .type f64_convert_u_i32,@function
+f64_convert_u_i32:
+ .param i32
+ .result f64
+ f64.convert_u/i32 $push0=, $0
+ return $pop0
+func_end14:
+ .size f64_convert_u_i32, func_end14-f64_convert_u_i32
+
+ .globl f32_convert_s_i64
+ .type f32_convert_s_i64,@function
+f32_convert_s_i64:
+ .param i64
+ .result f32
+ f32.convert_s/i64 $push0=, $0
+ return $pop0
+func_end15:
+ .size f32_convert_s_i64, func_end15-f32_convert_s_i64
+
+ .globl f32_convert_u_i64
+ .type f32_convert_u_i64,@function
+f32_convert_u_i64:
+ .param i64
+ .result f32
+ f32.convert_u/i64 $push0=, $0
+ return $pop0
+func_end16:
+ .size f32_convert_u_i64, func_end16-f32_convert_u_i64
+
+ .globl f64_convert_s_i64
+ .type f64_convert_s_i64,@function
+f64_convert_s_i64:
+ .param i64
+ .result f64
+ f64.convert_s/i64 $push0=, $0
+ return $pop0
+func_end17:
+ .size f64_convert_s_i64, func_end17-f64_convert_s_i64
+
+ .globl f64_convert_u_i64
+ .type f64_convert_u_i64,@function
+f64_convert_u_i64:
+ .param i64
+ .result f64
+ f64.convert_u/i64 $push0=, $0
+ return $pop0
+func_end18:
+ .size f64_convert_u_i64, func_end18-f64_convert_u_i64
+
+ .globl f64_promote_f32
+ .type f64_promote_f32,@function
+f64_promote_f32:
+ .param f32
+ .result f64
+ f64.promote/f32 $push0=, $0
+ return $pop0
+func_end19:
+ .size f64_promote_f32, func_end19-f64_promote_f32
+
+ .globl f32_demote_f64
+ .type f32_demote_f64,@function
+f32_demote_f64:
+ .param f64
+ .result f32
+ f32.demote/f64 $push0=, $0
+ return $pop0
+func_end20:
+ .size f32_demote_f64, func_end20-f32_demote_f64
+
+ .globl anyext
+ .type anyext,@function
+anyext:
+ .param i32
+ .result i64
+ i64.extend_u/i32 $push0=, $0
+ i64.const $push1=, 32
+ i64.shl $push2=, $pop0, $pop1
+ return $pop2
+func_end21:
+ .size anyext, func_end21-anyext
+
+ .globl bitcast_i32_to_float
+ .type bitcast_i32_to_float,@function
+bitcast_i32_to_float:
+ .param i32
+ .result f32
+ f32.reinterpret/i32 $push0=, $0
+ return $pop0
+func_end22:
+ .size bitcast_i32_to_float, func_end22-bitcast_i32_to_float
+
+ .globl bitcast_float_to_i32
+ .type bitcast_float_to_i32,@function
+bitcast_float_to_i32:
+ .param f32
+ .result i32
+ i32.reinterpret/f32 $push0=, $0
+ return $pop0
+func_end23:
+ .size bitcast_float_to_i32, func_end23-bitcast_float_to_i32
+
+ .globl bitcast_i64_to_double
+ .type bitcast_i64_to_double,@function
+bitcast_i64_to_double:
+ .param i64
+ .result f64
+ f64.reinterpret/i64 $push0=, $0
+ return $pop0
+func_end24:
+ .size bitcast_i64_to_double, func_end24-bitcast_i64_to_double
+
+ .globl bitcast_double_to_i64
+ .type bitcast_double_to_i64,@function
+bitcast_double_to_i64:
+ .param f64
+ .result i64
+ i64.reinterpret/f64 $push0=, $0
+ return $pop0
+func_end25:
+ .size bitcast_double_to_i64, func_end25-bitcast_double_to_i64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/copysign-casts.s b/test/llvm_autogenerated/copysign-casts.s
new file mode 100644
index 000000000..41c1c7680
--- /dev/null
+++ b/test/llvm_autogenerated/copysign-casts.s
@@ -0,0 +1,26 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/copysign-casts.ll"
+ .globl fold_promote
+ .type fold_promote,@function
+fold_promote:
+ .param f64, f32
+ .result f64
+ f64.promote/f32 $push0=, $1
+ f64.copysign $push1=, $0, $pop0
+ return $pop1
+func_end0:
+ .size fold_promote, func_end0-fold_promote
+
+ .globl fold_demote
+ .type fold_demote,@function
+fold_demote:
+ .param f32, f64
+ .result f32
+ f32.demote/f64 $push0=, $1
+ f32.copysign $push1=, $0, $pop0
+ return $pop1
+func_end1:
+ .size fold_demote, func_end1-fold_demote
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/cpus.s b/test/llvm_autogenerated/cpus.s
new file mode 100644
index 000000000..6ec9ec13c
--- /dev/null
+++ b/test/llvm_autogenerated/cpus.s
@@ -0,0 +1,13 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/cpus.ll"
+ .globl f
+ .type f,@function
+f:
+ .param i32
+ .result i32
+ return $0
+func_end0:
+ .size f, func_end0-f
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/dead-vreg.s b/test/llvm_autogenerated/dead-vreg.s
new file mode 100644
index 000000000..3e9a1aa03
--- /dev/null
+++ b/test/llvm_autogenerated/dead-vreg.s
@@ -0,0 +1,44 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/dead-vreg.ll"
+ .globl foo
+ .type foo,@function
+foo:
+ .param i32, i32, i32
+ .local i32, i32, i32, i32, i32, i32, i32
+ i32.const $4=, 1
+ block BB0_5
+ i32.lt_s $push0=, $2, $4
+ br_if $pop0, BB0_5
+ i32.const $5=, 0
+ i32.const $push1=, 2
+ i32.shl $3=, $1, $pop1
+ copy_local $6=, $5
+BB0_2:
+ loop BB0_5
+ copy_local $7=, $5
+ copy_local $8=, $0
+ copy_local $9=, $1
+ block BB0_4
+ i32.lt_s $push2=, $1, $4
+ br_if $pop2, BB0_4
+BB0_3:
+ loop BB0_4
+ i32.const $push3=, -1
+ i32.add $9=, $9, $pop3
+ i32.store $discard=, 0($8), $7
+ i32.const $push4=, 4
+ i32.add $8=, $8, $pop4
+ i32.add $7=, $7, $6
+ br_if $9, BB0_3
+BB0_4:
+ i32.add $6=, $6, $4
+ i32.add $0=, $0, $3
+ i32.ne $push5=, $6, $2
+ br_if $pop5, BB0_2
+BB0_5:
+ return
+func_end0:
+ .size foo, func_end0-foo
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/f32.s b/test/llvm_autogenerated/f32.s
new file mode 100644
index 000000000..c9415abff
--- /dev/null
+++ b/test/llvm_autogenerated/f32.s
@@ -0,0 +1,166 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/f32.ll"
+ .globl fadd32
+ .type fadd32,@function
+fadd32:
+ .param f32, f32
+ .result f32
+ f32.add $push0=, $0, $1
+ return $pop0
+func_end0:
+ .size fadd32, func_end0-fadd32
+
+ .globl fsub32
+ .type fsub32,@function
+fsub32:
+ .param f32, f32
+ .result f32
+ f32.sub $push0=, $0, $1
+ return $pop0
+func_end1:
+ .size fsub32, func_end1-fsub32
+
+ .globl fmul32
+ .type fmul32,@function
+fmul32:
+ .param f32, f32
+ .result f32
+ f32.mul $push0=, $0, $1
+ return $pop0
+func_end2:
+ .size fmul32, func_end2-fmul32
+
+ .globl fdiv32
+ .type fdiv32,@function
+fdiv32:
+ .param f32, f32
+ .result f32
+ f32.div $push0=, $0, $1
+ return $pop0
+func_end3:
+ .size fdiv32, func_end3-fdiv32
+
+ .globl fabs32
+ .type fabs32,@function
+fabs32:
+ .param f32
+ .result f32
+ f32.abs $push0=, $0
+ return $pop0
+func_end4:
+ .size fabs32, func_end4-fabs32
+
+ .globl fneg32
+ .type fneg32,@function
+fneg32:
+ .param f32
+ .result f32
+ f32.neg $push0=, $0
+ return $pop0
+func_end5:
+ .size fneg32, func_end5-fneg32
+
+ .globl copysign32
+ .type copysign32,@function
+copysign32:
+ .param f32, f32
+ .result f32
+ f32.copysign $push0=, $0, $1
+ return $pop0
+func_end6:
+ .size copysign32, func_end6-copysign32
+
+ .globl sqrt32
+ .type sqrt32,@function
+sqrt32:
+ .param f32
+ .result f32
+ f32.sqrt $push0=, $0
+ return $pop0
+func_end7:
+ .size sqrt32, func_end7-sqrt32
+
+ .globl ceil32
+ .type ceil32,@function
+ceil32:
+ .param f32
+ .result f32
+ f32.ceil $push0=, $0
+ return $pop0
+func_end8:
+ .size ceil32, func_end8-ceil32
+
+ .globl floor32
+ .type floor32,@function
+floor32:
+ .param f32
+ .result f32
+ f32.floor $push0=, $0
+ return $pop0
+func_end9:
+ .size floor32, func_end9-floor32
+
+ .globl trunc32
+ .type trunc32,@function
+trunc32:
+ .param f32
+ .result f32
+ f32.trunc $push0=, $0
+ return $pop0
+func_end10:
+ .size trunc32, func_end10-trunc32
+
+ .globl nearest32
+ .type nearest32,@function
+nearest32:
+ .param f32
+ .result f32
+ f32.nearest $push0=, $0
+ return $pop0
+func_end11:
+ .size nearest32, func_end11-nearest32
+
+ .globl nearest32_via_rint
+ .type nearest32_via_rint,@function
+nearest32_via_rint:
+ .param f32
+ .result f32
+ f32.nearest $push0=, $0
+ return $pop0
+func_end12:
+ .size nearest32_via_rint, func_end12-nearest32_via_rint
+
+ .globl fmin32
+ .type fmin32,@function
+fmin32:
+ .param f32
+ .result f32
+ f32.const $push0=, 0x0p0
+ f32.min $push1=, $0, $pop0
+ return $pop1
+func_end13:
+ .size fmin32, func_end13-fmin32
+
+ .globl fmax32
+ .type fmax32,@function
+fmax32:
+ .param f32
+ .result f32
+ f32.const $push0=, 0x0p0
+ f32.max $push1=, $0, $pop0
+ return $pop1
+func_end14:
+ .size fmax32, func_end14-fmax32
+
+ .globl fma32
+ .type fma32,@function
+fma32:
+ .param f32, f32, f32
+ .result f32
+ f32.call $push0=, fmaf, $0, $1, $2
+ return $pop0
+func_end15:
+ .size fma32, func_end15-fma32
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/f64.s b/test/llvm_autogenerated/f64.s
new file mode 100644
index 000000000..f1f7ad4a3
--- /dev/null
+++ b/test/llvm_autogenerated/f64.s
@@ -0,0 +1,166 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/f64.ll"
+ .globl fadd64
+ .type fadd64,@function
+fadd64:
+ .param f64, f64
+ .result f64
+ f64.add $push0=, $0, $1
+ return $pop0
+func_end0:
+ .size fadd64, func_end0-fadd64
+
+ .globl fsub64
+ .type fsub64,@function
+fsub64:
+ .param f64, f64
+ .result f64
+ f64.sub $push0=, $0, $1
+ return $pop0
+func_end1:
+ .size fsub64, func_end1-fsub64
+
+ .globl fmul64
+ .type fmul64,@function
+fmul64:
+ .param f64, f64
+ .result f64
+ f64.mul $push0=, $0, $1
+ return $pop0
+func_end2:
+ .size fmul64, func_end2-fmul64
+
+ .globl fdiv64
+ .type fdiv64,@function
+fdiv64:
+ .param f64, f64
+ .result f64
+ f64.div $push0=, $0, $1
+ return $pop0
+func_end3:
+ .size fdiv64, func_end3-fdiv64
+
+ .globl fabs64
+ .type fabs64,@function
+fabs64:
+ .param f64
+ .result f64
+ f64.abs $push0=, $0
+ return $pop0
+func_end4:
+ .size fabs64, func_end4-fabs64
+
+ .globl fneg64
+ .type fneg64,@function
+fneg64:
+ .param f64
+ .result f64
+ f64.neg $push0=, $0
+ return $pop0
+func_end5:
+ .size fneg64, func_end5-fneg64
+
+ .globl copysign64
+ .type copysign64,@function
+copysign64:
+ .param f64, f64
+ .result f64
+ f64.copysign $push0=, $0, $1
+ return $pop0
+func_end6:
+ .size copysign64, func_end6-copysign64
+
+ .globl sqrt64
+ .type sqrt64,@function
+sqrt64:
+ .param f64
+ .result f64
+ f64.sqrt $push0=, $0
+ return $pop0
+func_end7:
+ .size sqrt64, func_end7-sqrt64
+
+ .globl ceil64
+ .type ceil64,@function
+ceil64:
+ .param f64
+ .result f64
+ f64.ceil $push0=, $0
+ return $pop0
+func_end8:
+ .size ceil64, func_end8-ceil64
+
+ .globl floor64
+ .type floor64,@function
+floor64:
+ .param f64
+ .result f64
+ f64.floor $push0=, $0
+ return $pop0
+func_end9:
+ .size floor64, func_end9-floor64
+
+ .globl trunc64
+ .type trunc64,@function
+trunc64:
+ .param f64
+ .result f64
+ f64.trunc $push0=, $0
+ return $pop0
+func_end10:
+ .size trunc64, func_end10-trunc64
+
+ .globl nearest64
+ .type nearest64,@function
+nearest64:
+ .param f64
+ .result f64
+ f64.nearest $push0=, $0
+ return $pop0
+func_end11:
+ .size nearest64, func_end11-nearest64
+
+ .globl nearest64_via_rint
+ .type nearest64_via_rint,@function
+nearest64_via_rint:
+ .param f64
+ .result f64
+ f64.nearest $push0=, $0
+ return $pop0
+func_end12:
+ .size nearest64_via_rint, func_end12-nearest64_via_rint
+
+ .globl fmin64
+ .type fmin64,@function
+fmin64:
+ .param f64
+ .result f64
+ f64.const $push0=, 0x0p0
+ f64.min $push1=, $0, $pop0
+ return $pop1
+func_end13:
+ .size fmin64, func_end13-fmin64
+
+ .globl fmax64
+ .type fmax64,@function
+fmax64:
+ .param f64
+ .result f64
+ f64.const $push0=, 0x0p0
+ f64.max $push1=, $0, $pop0
+ return $pop1
+func_end14:
+ .size fmax64, func_end14-fmax64
+
+ .globl fma64
+ .type fma64,@function
+fma64:
+ .param f64, f64, f64
+ .result f64
+ f64.call $push0=, fma, $0, $1, $2
+ return $pop0
+func_end15:
+ .size fma64, func_end15-fma64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/fast-isel.s b/test/llvm_autogenerated/fast-isel.s
new file mode 100644
index 000000000..9c609102c
--- /dev/null
+++ b/test/llvm_autogenerated/fast-isel.s
@@ -0,0 +1,22 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/fast-isel.ll"
+ .globl immediate_f32
+ .type immediate_f32,@function
+immediate_f32:
+ .result f32
+ f32.const $push0=, 0x1.4p1
+ return $pop0
+func_end0:
+ .size immediate_f32, func_end0-immediate_f32
+
+ .globl immediate_f64
+ .type immediate_f64,@function
+immediate_f64:
+ .result f64
+ f64.const $push0=, 0x1.4p1
+ return $pop0
+func_end1:
+ .size immediate_f64, func_end1-immediate_f64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/frem.s b/test/llvm_autogenerated/frem.s
new file mode 100644
index 000000000..ee9849225
--- /dev/null
+++ b/test/llvm_autogenerated/frem.s
@@ -0,0 +1,24 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/frem.ll"
+ .globl frem32
+ .type frem32,@function
+frem32:
+ .param f32, f32
+ .result f32
+ f32.call $push0=, fmodf, $0, $1
+ return $pop0
+func_end0:
+ .size frem32, func_end0-frem32
+
+ .globl frem64
+ .type frem64,@function
+frem64:
+ .param f64, f64
+ .result f64
+ f64.call $push0=, fmod, $0, $1
+ return $pop0
+func_end1:
+ .size frem64, func_end1-frem64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/func.s b/test/llvm_autogenerated/func.s
new file mode 100644
index 000000000..5c0f7cb97
--- /dev/null
+++ b/test/llvm_autogenerated/func.s
@@ -0,0 +1,65 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/func.ll"
+ .globl f0
+ .type f0,@function
+f0:
+ return
+func_end0:
+ .size f0, func_end0-f0
+
+ .globl f1
+ .type f1,@function
+f1:
+ .result i32
+ i32.const $push0=, 0
+ return $pop0
+func_end1:
+ .size f1, func_end1-f1
+
+ .globl f2
+ .type f2,@function
+f2:
+ .param i32, f32
+ .result i32
+ i32.const $push0=, 0
+ return $pop0
+func_end2:
+ .size f2, func_end2-f2
+
+ .globl f3
+ .type f3,@function
+f3:
+ .param i32, f32
+ return
+func_end3:
+ .size f3, func_end3-f3
+
+ .globl f4
+ .type f4,@function
+f4:
+ .param i32
+ .result i32
+ .local i32
+ i32.const $1=, 1
+ block BB4_2
+ i32.and $push0=, $0, $1
+ i32.const $push2=, 0
+ i32.eq $push3=, $pop0, $pop2
+ br_if $pop3, BB4_2
+ i32.const $push1=, 0
+ return $pop1
+BB4_2:
+ return $1
+func_end4:
+ .size f4, func_end4-f4
+
+ .globl f5
+ .type f5,@function
+f5:
+ .result f32
+ unreachable
+func_end5:
+ .size f5, func_end5-f5
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/global.s b/test/llvm_autogenerated/global.s
new file mode 100644
index 000000000..fc3f3cd2b
--- /dev/null
+++ b/test/llvm_autogenerated/global.s
@@ -0,0 +1,149 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/global.ll"
+ .globl foo
+ .type foo,@function
+foo:
+ .result i32
+ i32.const $push0=, 0
+ i32.load $push1=, answer($pop0)
+ return $pop1
+func_end0:
+ .size foo, func_end0-foo
+
+ .globl call_memcpy
+ .type call_memcpy,@function
+call_memcpy:
+ .param i32, i32, i32
+ .result i32
+ call memcpy, $0, $1, $2
+ return $0
+func_end1:
+ .size call_memcpy, func_end1-call_memcpy
+
+ .type g,@object
+ .data
+ .align 2
+g:
+ .int32 1337
+ .size g, 4
+
+ .type ud,@object
+ .align 2
+ud:
+ .zero 4
+ .size ud, 4
+
+ .type nil,@object
+ .lcomm nil,4,2
+ .type z,@object
+ .lcomm z,4,2
+ .type one,@object
+ .align 2
+one:
+ .int32 1
+ .size one, 4
+
+ .type answer,@object
+ .align 2
+answer:
+ .int32 42
+ .size answer, 4
+
+ .type u32max,@object
+ .align 2
+u32max:
+ .int32 4294967295
+ .size u32max, 4
+
+ .type ud64,@object
+ .align 3
+ud64:
+ .zero 8
+ .size ud64, 8
+
+ .type nil64,@object
+ .lcomm nil64,8,3
+ .type z64,@object
+ .lcomm z64,8,3
+ .type twoP32,@object
+ .align 3
+twoP32:
+ .int64 4294967296
+ .size twoP32, 8
+
+ .type u64max,@object
+ .align 3
+u64max:
+ .int64 -1
+ .size u64max, 8
+
+ .type f32ud,@object
+ .align 2
+f32ud:
+ .zero 4
+ .size f32ud, 4
+
+ .type f32nil,@object
+ .lcomm f32nil,4,2
+ .type f32z,@object
+ .lcomm f32z,4,2
+ .type f32nz,@object
+ .align 2
+f32nz:
+ .int32 2147483648
+ .size f32nz, 4
+
+ .type f32two,@object
+ .align 2
+f32two:
+ .int32 1073741824
+ .size f32two, 4
+
+ .type f64ud,@object
+ .align 3
+f64ud:
+ .zero 8
+ .size f64ud, 8
+
+ .type f64nil,@object
+ .lcomm f64nil,8,3
+ .type f64z,@object
+ .lcomm f64z,8,3
+ .type f64nz,@object
+ .align 3
+f64nz:
+ .int64 -9223372036854775808
+ .size f64nz, 8
+
+ .type f64two,@object
+ .align 3
+f64two:
+ .int64 4611686018427387904
+ .size f64two, 8
+
+ .type arr,@object
+ .bss
+ .globl arr
+ .align 4
+arr:
+ .zero 512
+ .size arr, 512
+
+ .type ptr,@object
+ .data
+ .globl ptr
+ .align 2
+ptr:
+ .int32 arr+80
+ .size ptr, 4
+
+ .type rom,@object
+ .section .rodata,"a",@progbits
+ .globl rom
+ .align 4
+rom:
+ .zero 512
+ .size rom, 512
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/globl.s b/test/llvm_autogenerated/globl.s
new file mode 100644
index 000000000..1e6bda335
--- /dev/null
+++ b/test/llvm_autogenerated/globl.s
@@ -0,0 +1,11 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/globl.ll"
+ .globl foo
+ .type foo,@function
+foo:
+ return
+func_end0:
+ .size foo, func_end0-foo
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/i32.s b/test/llvm_autogenerated/i32.s
new file mode 100644
index 000000000..4d8e693c2
--- /dev/null
+++ b/test/llvm_autogenerated/i32.s
@@ -0,0 +1,184 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/i32.ll"
+ .globl add32
+ .type add32,@function
+add32:
+ .param i32, i32
+ .result i32
+ i32.add $push0=, $0, $1
+ return $pop0
+func_end0:
+ .size add32, func_end0-add32
+
+ .globl sub32
+ .type sub32,@function
+sub32:
+ .param i32, i32
+ .result i32
+ i32.sub $push0=, $0, $1
+ return $pop0
+func_end1:
+ .size sub32, func_end1-sub32
+
+ .globl mul32
+ .type mul32,@function
+mul32:
+ .param i32, i32
+ .result i32
+ i32.mul $push0=, $0, $1
+ return $pop0
+func_end2:
+ .size mul32, func_end2-mul32
+
+ .globl sdiv32
+ .type sdiv32,@function
+sdiv32:
+ .param i32, i32
+ .result i32
+ i32.div_s $push0=, $0, $1
+ return $pop0
+func_end3:
+ .size sdiv32, func_end3-sdiv32
+
+ .globl udiv32
+ .type udiv32,@function
+udiv32:
+ .param i32, i32
+ .result i32
+ i32.div_u $push0=, $0, $1
+ return $pop0
+func_end4:
+ .size udiv32, func_end4-udiv32
+
+ .globl srem32
+ .type srem32,@function
+srem32:
+ .param i32, i32
+ .result i32
+ i32.rem_s $push0=, $0, $1
+ return $pop0
+func_end5:
+ .size srem32, func_end5-srem32
+
+ .globl urem32
+ .type urem32,@function
+urem32:
+ .param i32, i32
+ .result i32
+ i32.rem_u $push0=, $0, $1
+ return $pop0
+func_end6:
+ .size urem32, func_end6-urem32
+
+ .globl and32
+ .type and32,@function
+and32:
+ .param i32, i32
+ .result i32
+ i32.and $push0=, $0, $1
+ return $pop0
+func_end7:
+ .size and32, func_end7-and32
+
+ .globl or32
+ .type or32,@function
+or32:
+ .param i32, i32
+ .result i32
+ i32.or $push0=, $0, $1
+ return $pop0
+func_end8:
+ .size or32, func_end8-or32
+
+ .globl xor32
+ .type xor32,@function
+xor32:
+ .param i32, i32
+ .result i32
+ i32.xor $push0=, $0, $1
+ return $pop0
+func_end9:
+ .size xor32, func_end9-xor32
+
+ .globl shl32
+ .type shl32,@function
+shl32:
+ .param i32, i32
+ .result i32
+ i32.shl $push0=, $0, $1
+ return $pop0
+func_end10:
+ .size shl32, func_end10-shl32
+
+ .globl shr32
+ .type shr32,@function
+shr32:
+ .param i32, i32
+ .result i32
+ i32.shr_u $push0=, $0, $1
+ return $pop0
+func_end11:
+ .size shr32, func_end11-shr32
+
+ .globl sar32
+ .type sar32,@function
+sar32:
+ .param i32, i32
+ .result i32
+ i32.shr_s $push0=, $0, $1
+ return $pop0
+func_end12:
+ .size sar32, func_end12-sar32
+
+ .globl clz32
+ .type clz32,@function
+clz32:
+ .param i32
+ .result i32
+ i32.clz $push0=, $0
+ return $pop0
+func_end13:
+ .size clz32, func_end13-clz32
+
+ .globl clz32_zero_undef
+ .type clz32_zero_undef,@function
+clz32_zero_undef:
+ .param i32
+ .result i32
+ i32.clz $push0=, $0
+ return $pop0
+func_end14:
+ .size clz32_zero_undef, func_end14-clz32_zero_undef
+
+ .globl ctz32
+ .type ctz32,@function
+ctz32:
+ .param i32
+ .result i32
+ i32.ctz $push0=, $0
+ return $pop0
+func_end15:
+ .size ctz32, func_end15-ctz32
+
+ .globl ctz32_zero_undef
+ .type ctz32_zero_undef,@function
+ctz32_zero_undef:
+ .param i32
+ .result i32
+ i32.ctz $push0=, $0
+ return $pop0
+func_end16:
+ .size ctz32_zero_undef, func_end16-ctz32_zero_undef
+
+ .globl popcnt32
+ .type popcnt32,@function
+popcnt32:
+ .param i32
+ .result i32
+ i32.popcnt $push0=, $0
+ return $pop0
+func_end17:
+ .size popcnt32, func_end17-popcnt32
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/i64.s b/test/llvm_autogenerated/i64.s
new file mode 100644
index 000000000..ef97c0bb3
--- /dev/null
+++ b/test/llvm_autogenerated/i64.s
@@ -0,0 +1,184 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/i64.ll"
+ .globl add64
+ .type add64,@function
+add64:
+ .param i64, i64
+ .result i64
+ i64.add $push0=, $0, $1
+ return $pop0
+func_end0:
+ .size add64, func_end0-add64
+
+ .globl sub64
+ .type sub64,@function
+sub64:
+ .param i64, i64
+ .result i64
+ i64.sub $push0=, $0, $1
+ return $pop0
+func_end1:
+ .size sub64, func_end1-sub64
+
+ .globl mul64
+ .type mul64,@function
+mul64:
+ .param i64, i64
+ .result i64
+ i64.mul $push0=, $0, $1
+ return $pop0
+func_end2:
+ .size mul64, func_end2-mul64
+
+ .globl sdiv64
+ .type sdiv64,@function
+sdiv64:
+ .param i64, i64
+ .result i64
+ i64.div_s $push0=, $0, $1
+ return $pop0
+func_end3:
+ .size sdiv64, func_end3-sdiv64
+
+ .globl udiv64
+ .type udiv64,@function
+udiv64:
+ .param i64, i64
+ .result i64
+ i64.div_u $push0=, $0, $1
+ return $pop0
+func_end4:
+ .size udiv64, func_end4-udiv64
+
+ .globl srem64
+ .type srem64,@function
+srem64:
+ .param i64, i64
+ .result i64
+ i64.rem_s $push0=, $0, $1
+ return $pop0
+func_end5:
+ .size srem64, func_end5-srem64
+
+ .globl urem64
+ .type urem64,@function
+urem64:
+ .param i64, i64
+ .result i64
+ i64.rem_u $push0=, $0, $1
+ return $pop0
+func_end6:
+ .size urem64, func_end6-urem64
+
+ .globl and64
+ .type and64,@function
+and64:
+ .param i64, i64
+ .result i64
+ i64.and $push0=, $0, $1
+ return $pop0
+func_end7:
+ .size and64, func_end7-and64
+
+ .globl or64
+ .type or64,@function
+or64:
+ .param i64, i64
+ .result i64
+ i64.or $push0=, $0, $1
+ return $pop0
+func_end8:
+ .size or64, func_end8-or64
+
+ .globl xor64
+ .type xor64,@function
+xor64:
+ .param i64, i64
+ .result i64
+ i64.xor $push0=, $0, $1
+ return $pop0
+func_end9:
+ .size xor64, func_end9-xor64
+
+ .globl shl64
+ .type shl64,@function
+shl64:
+ .param i64, i64
+ .result i64
+ i64.shl $push0=, $0, $1
+ return $pop0
+func_end10:
+ .size shl64, func_end10-shl64
+
+ .globl shr64
+ .type shr64,@function
+shr64:
+ .param i64, i64
+ .result i64
+ i64.shr_u $push0=, $0, $1
+ return $pop0
+func_end11:
+ .size shr64, func_end11-shr64
+
+ .globl sar64
+ .type sar64,@function
+sar64:
+ .param i64, i64
+ .result i64
+ i64.shr_s $push0=, $0, $1
+ return $pop0
+func_end12:
+ .size sar64, func_end12-sar64
+
+ .globl clz64
+ .type clz64,@function
+clz64:
+ .param i64
+ .result i64
+ i64.clz $push0=, $0
+ return $pop0
+func_end13:
+ .size clz64, func_end13-clz64
+
+ .globl clz64_zero_undef
+ .type clz64_zero_undef,@function
+clz64_zero_undef:
+ .param i64
+ .result i64
+ i64.clz $push0=, $0
+ return $pop0
+func_end14:
+ .size clz64_zero_undef, func_end14-clz64_zero_undef
+
+ .globl ctz64
+ .type ctz64,@function
+ctz64:
+ .param i64
+ .result i64
+ i64.ctz $push0=, $0
+ return $pop0
+func_end15:
+ .size ctz64, func_end15-ctz64
+
+ .globl ctz64_zero_undef
+ .type ctz64_zero_undef,@function
+ctz64_zero_undef:
+ .param i64
+ .result i64
+ i64.ctz $push0=, $0
+ return $pop0
+func_end16:
+ .size ctz64_zero_undef, func_end16-ctz64_zero_undef
+
+ .globl popcnt64
+ .type popcnt64,@function
+popcnt64:
+ .param i64
+ .result i64
+ i64.popcnt $push0=, $0
+ return $pop0
+func_end17:
+ .size popcnt64, func_end17-popcnt64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/ident.s b/test/llvm_autogenerated/ident.s
new file mode 100644
index 000000000..46a08c7e7
--- /dev/null
+++ b/test/llvm_autogenerated/ident.s
@@ -0,0 +1,5 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/ident.ll"
+
+ .ident "hello world"
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/immediates.s b/test/llvm_autogenerated/immediates.s
new file mode 100644
index 000000000..1c6b2bc7a
--- /dev/null
+++ b/test/llvm_autogenerated/immediates.s
@@ -0,0 +1,220 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/immediates.ll"
+ .globl zero_i32
+ .type zero_i32,@function
+zero_i32:
+ .result i32
+ i32.const $push0=, 0
+ return $pop0
+func_end0:
+ .size zero_i32, func_end0-zero_i32
+
+ .globl one_i32
+ .type one_i32,@function
+one_i32:
+ .result i32
+ i32.const $push0=, 1
+ return $pop0
+func_end1:
+ .size one_i32, func_end1-one_i32
+
+ .globl max_i32
+ .type max_i32,@function
+max_i32:
+ .result i32
+ i32.const $push0=, 2147483647
+ return $pop0
+func_end2:
+ .size max_i32, func_end2-max_i32
+
+ .globl min_i32
+ .type min_i32,@function
+min_i32:
+ .result i32
+ i32.const $push0=, -2147483648
+ return $pop0
+func_end3:
+ .size min_i32, func_end3-min_i32
+
+ .globl zero_i64
+ .type zero_i64,@function
+zero_i64:
+ .result i64
+ i64.const $push0=, 0
+ return $pop0
+func_end4:
+ .size zero_i64, func_end4-zero_i64
+
+ .globl one_i64
+ .type one_i64,@function
+one_i64:
+ .result i64
+ i64.const $push0=, 1
+ return $pop0
+func_end5:
+ .size one_i64, func_end5-one_i64
+
+ .globl max_i64
+ .type max_i64,@function
+max_i64:
+ .result i64
+ i64.const $push0=, 9223372036854775807
+ return $pop0
+func_end6:
+ .size max_i64, func_end6-max_i64
+
+ .globl min_i64
+ .type min_i64,@function
+min_i64:
+ .result i64
+ i64.const $push0=, -9223372036854775808
+ return $pop0
+func_end7:
+ .size min_i64, func_end7-min_i64
+
+ .globl negzero_f32
+ .type negzero_f32,@function
+negzero_f32:
+ .result f32
+ f32.const $push0=, -0x0p0
+ return $pop0
+func_end8:
+ .size negzero_f32, func_end8-negzero_f32
+
+ .globl zero_f32
+ .type zero_f32,@function
+zero_f32:
+ .result f32
+ f32.const $push0=, 0x0p0
+ return $pop0
+func_end9:
+ .size zero_f32, func_end9-zero_f32
+
+ .globl one_f32
+ .type one_f32,@function
+one_f32:
+ .result f32
+ f32.const $push0=, 0x1p0
+ return $pop0
+func_end10:
+ .size one_f32, func_end10-one_f32
+
+ .globl two_f32
+ .type two_f32,@function
+two_f32:
+ .result f32
+ f32.const $push0=, 0x1p1
+ return $pop0
+func_end11:
+ .size two_f32, func_end11-two_f32
+
+ .globl nan_f32
+ .type nan_f32,@function
+nan_f32:
+ .result f32
+ f32.const $push0=, nan
+ return $pop0
+func_end12:
+ .size nan_f32, func_end12-nan_f32
+
+ .globl negnan_f32
+ .type negnan_f32,@function
+negnan_f32:
+ .result f32
+ f32.const $push0=, -nan
+ return $pop0
+func_end13:
+ .size negnan_f32, func_end13-negnan_f32
+
+ .globl inf_f32
+ .type inf_f32,@function
+inf_f32:
+ .result f32
+ f32.const $push0=, infinity
+ return $pop0
+func_end14:
+ .size inf_f32, func_end14-inf_f32
+
+ .globl neginf_f32
+ .type neginf_f32,@function
+neginf_f32:
+ .result f32
+ f32.const $push0=, -infinity
+ return $pop0
+func_end15:
+ .size neginf_f32, func_end15-neginf_f32
+
+ .globl negzero_f64
+ .type negzero_f64,@function
+negzero_f64:
+ .result f64
+ f64.const $push0=, -0x0p0
+ return $pop0
+func_end16:
+ .size negzero_f64, func_end16-negzero_f64
+
+ .globl zero_f64
+ .type zero_f64,@function
+zero_f64:
+ .result f64
+ f64.const $push0=, 0x0p0
+ return $pop0
+func_end17:
+ .size zero_f64, func_end17-zero_f64
+
+ .globl one_f64
+ .type one_f64,@function
+one_f64:
+ .result f64
+ f64.const $push0=, 0x1p0
+ return $pop0
+func_end18:
+ .size one_f64, func_end18-one_f64
+
+ .globl two_f64
+ .type two_f64,@function
+two_f64:
+ .result f64
+ f64.const $push0=, 0x1p1
+ return $pop0
+func_end19:
+ .size two_f64, func_end19-two_f64
+
+ .globl nan_f64
+ .type nan_f64,@function
+nan_f64:
+ .result f64
+ f64.const $push0=, nan
+ return $pop0
+func_end20:
+ .size nan_f64, func_end20-nan_f64
+
+ .globl negnan_f64
+ .type negnan_f64,@function
+negnan_f64:
+ .result f64
+ f64.const $push0=, -nan
+ return $pop0
+func_end21:
+ .size negnan_f64, func_end21-negnan_f64
+
+ .globl inf_f64
+ .type inf_f64,@function
+inf_f64:
+ .result f64
+ f64.const $push0=, infinity
+ return $pop0
+func_end22:
+ .size inf_f64, func_end22-inf_f64
+
+ .globl neginf_f64
+ .type neginf_f64,@function
+neginf_f64:
+ .result f64
+ f64.const $push0=, -infinity
+ return $pop0
+func_end23:
+ .size neginf_f64, func_end23-neginf_f64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/inline-asm.s b/test/llvm_autogenerated/inline-asm.s
new file mode 100644
index 000000000..10a43371c
--- /dev/null
+++ b/test/llvm_autogenerated/inline-asm.s
@@ -0,0 +1,103 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/inline-asm.ll"
+ .globl foo
+ .type foo,@function
+foo:
+ .param i32
+ .result i32
+ #APP
+ # $0 = aaa($0)
+ #NO_APP
+ return $0
+func_end0:
+ .size foo, func_end0-foo
+
+ .globl bar
+ .type bar,@function
+bar:
+ .param i32, i32
+ #APP
+ # 0($1) = bbb(0($0))
+ #NO_APP
+ return
+func_end1:
+ .size bar, func_end1-bar
+
+ .globl imm
+ .type imm,@function
+imm:
+ .result i32
+ .local i32
+ #APP
+ # $0 = ccc(42)
+ #NO_APP
+ return $0
+func_end2:
+ .size imm, func_end2-imm
+
+ .globl foo_i64
+ .type foo_i64,@function
+foo_i64:
+ .param i64
+ .result i64
+ #APP
+ # $0 = aaa($0)
+ #NO_APP
+ return $0
+func_end3:
+ .size foo_i64, func_end3-foo_i64
+
+ .globl X_i16
+ .type X_i16,@function
+X_i16:
+ .param i32
+ .local i32
+ #APP
+ foo $1
+ #NO_APP
+ i32.store16 $discard=, 0($0), $1
+ return
+func_end4:
+ .size X_i16, func_end4-X_i16
+
+ .globl X_ptr
+ .type X_ptr,@function
+X_ptr:
+ .param i32
+ .local i32
+ #APP
+ foo $1
+ #NO_APP
+ i32.store $discard=, 0($0), $1
+ return
+func_end5:
+ .size X_ptr, func_end5-X_ptr
+
+ .globl funcname
+ .type funcname,@function
+funcname:
+ #APP
+ foo funcname
+ #NO_APP
+ return
+func_end6:
+ .size funcname, func_end6-funcname
+
+ .globl varname
+ .type varname,@function
+varname:
+ #APP
+ foo gv+37
+ #NO_APP
+ return
+func_end7:
+ .size varname, func_end7-varname
+
+ .type gv,@object
+ .bss
+ .globl gv
+gv:
+ .size gv, 0
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/legalize.s b/test/llvm_autogenerated/legalize.s
new file mode 100644
index 000000000..74f1963df
--- /dev/null
+++ b/test/llvm_autogenerated/legalize.s
@@ -0,0 +1,919 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/legalize.ll"
+ .globl shl_i3
+ .type shl_i3,@function
+shl_i3:
+ .param i32, i32, i32
+ .result i32
+ i32.const $push0=, 7
+ i32.and $push1=, $1, $pop0
+ i32.shl $push2=, $0, $pop1
+ return $pop2
+func_end0:
+ .size shl_i3, func_end0-shl_i3
+
+ .globl shl_i53
+ .type shl_i53,@function
+shl_i53:
+ .param i64, i64, i32
+ .result i64
+ i64.const $push0=, 9007199254740991
+ i64.and $push1=, $1, $pop0
+ i64.shl $push2=, $0, $pop1
+ return $pop2
+func_end1:
+ .size shl_i53, func_end1-shl_i53
+
+ .globl sext_in_reg_i32_i64
+ .type sext_in_reg_i32_i64,@function
+sext_in_reg_i32_i64:
+ .param i64
+ .result i64
+ .local i64
+ i64.const $1=, 32
+ i64.shl $push0=, $0, $1
+ i64.shr_s $push1=, $pop0, $1
+ return $pop1
+func_end2:
+ .size sext_in_reg_i32_i64, func_end2-sext_in_reg_i32_i64
+
+ .globl fpext_f32_f64
+ .type fpext_f32_f64,@function
+fpext_f32_f64:
+ .param i32
+ .result f64
+ f32.load $push0=, 0($0)
+ f64.promote/f32 $push1=, $pop0
+ return $pop1
+func_end3:
+ .size fpext_f32_f64, func_end3-fpext_f32_f64
+
+ .globl fpconv_f64_f32
+ .type fpconv_f64_f32,@function
+fpconv_f64_f32:
+ .param i32
+ .result f32
+ f64.load $push0=, 0($0)
+ f32.demote/f64 $push1=, $pop0
+ return $pop1
+func_end4:
+ .size fpconv_f64_f32, func_end4-fpconv_f64_f32
+
+ .globl bigshift
+ .type bigshift,@function
+bigshift:
+ .param i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64
+ .local i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i64, i32, i32, i64, i64, i64, i32, i32, i64, i32, i32, i64, i64, i64, i32, i32, i64, i64, i64, i32, i32, i64, i32, i32, i64, i32, i32, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i64, i64, i64, i32, i64, i64, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32
+ i32.const $181=, __stack_pointer
+ i32.load $181=, 0($181)
+ i32.const $182=, 1024
+ i32.sub $279=, $181, $182
+ i32.const $182=, __stack_pointer
+ i32.store $279=, 0($182), $279
+ i64.const $push0=, 896
+ i64.sub $push1=, $pop0, $17
+ i32.const $184=, 480
+ i32.add $184=, $279, $184
+ call __lshrti3, $184, $1, $2, $pop1
+ i64.const $push2=, -768
+ i64.add $33=, $17, $pop2
+ i32.const $185=, 464
+ i32.add $185=, $279, $185
+ call __ashlti3, $185, $3, $4, $33
+ i64.const $push3=, -896
+ i64.add $push4=, $17, $pop3
+ i32.const $186=, 496
+ i32.add $186=, $279, $186
+ call __ashlti3, $186, $1, $2, $pop4
+ i64.const $push5=, 640
+ i64.sub $34=, $pop5, $17
+ i32.const $187=, 352
+ i32.add $187=, $279, $187
+ call __lshrti3, $187, $5, $6, $34
+ i64.const $push6=, -512
+ i64.add $35=, $17, $pop6
+ i32.const $188=, 336
+ i32.add $188=, $279, $188
+ call __ashlti3, $188, $7, $8, $35
+ i64.const $push7=, -640
+ i64.add $36=, $17, $pop7
+ i32.const $189=, 368
+ i32.add $189=, $279, $189
+ call __ashlti3, $189, $5, $6, $36
+ i64.const $push8=, 768
+ i64.sub $37=, $pop8, $17
+ i32.const $190=, 432
+ i32.add $190=, $279, $190
+ call __lshrti3, $190, $3, $4, $37
+ i64.const $38=, 384
+ i64.sub $39=, $38, $17
+ i32.const $191=, 864
+ i32.add $191=, $279, $191
+ call __lshrti3, $191, $9, $10, $39
+ i64.const $push9=, -256
+ i64.add $40=, $17, $pop9
+ i32.const $192=, 848
+ i32.add $192=, $279, $192
+ call __ashlti3, $192, $11, $12, $40
+ i64.const $push10=, -384
+ i64.add $41=, $17, $pop10
+ i32.const $193=, 880
+ i32.add $193=, $279, $193
+ call __ashlti3, $193, $9, $10, $41
+ i32.const $194=, 1008
+ i32.add $194=, $279, $194
+ call __ashlti3, $194, $15, $16, $17
+ i64.const $42=, 128
+ i64.sub $51=, $42, $17
+ i32.const $195=, 960
+ i32.add $195=, $279, $195
+ call __lshrti3, $195, $13, $14, $51
+ i64.const $push11=, -128
+ i64.add $43=, $17, $pop11
+ i32.const $196=, 976
+ i32.add $196=, $279, $196
+ call __ashlti3, $196, $13, $14, $43
+ i64.const $44=, 256
+ i64.sub $45=, $44, $17
+ i32.const $197=, 816
+ i32.add $197=, $279, $197
+ call __lshrti3, $197, $11, $12, $45
+ i64.const $46=, 512
+ i64.sub $47=, $46, $17
+ i32.const $198=, 240
+ i32.add $198=, $279, $198
+ call __lshrti3, $198, $7, $8, $47
+ i32.const $199=, 912
+ i32.add $199=, $279, $199
+ call __ashlti3, $199, $11, $12, $17
+ i32.const $200=, 928
+ i32.add $200=, $279, $200
+ call __lshrti3, $200, $9, $10, $51
+ i32.const $201=, 944
+ i32.add $201=, $279, $201
+ call __ashlti3, $201, $9, $10, $43
+ i64.sub $48=, $44, $47
+ i32.const $202=, 80
+ i32.add $202=, $279, $202
+ call __ashlti3, $202, $7, $8, $48
+ i64.sub $push12=, $42, $48
+ i32.const $203=, 96
+ i32.add $203=, $279, $203
+ call __lshrti3, $203, $5, $6, $pop12
+ i64.sub $49=, $42, $47
+ i32.const $204=, 112
+ i32.add $204=, $279, $204
+ call __ashlti3, $204, $5, $6, $49
+ i32.const $205=, 48
+ i32.add $205=, $279, $205
+ call __lshrti3, $205, $3, $4, $47
+ i32.const $206=, 176
+ i32.add $206=, $279, $206
+ call __lshrti3, $206, $7, $8, $45
+ i32.const $207=, 288
+ i32.add $207=, $279, $207
+ call __lshrti3, $207, $1, $2, $34
+ i32.const $208=, 272
+ i32.add $208=, $279, $208
+ call __ashlti3, $208, $3, $4, $35
+ i32.const $209=, 304
+ i32.add $209=, $279, $209
+ call __ashlti3, $209, $1, $2, $36
+ i32.const $210=, 128
+ i32.add $210=, $279, $210
+ call __lshrti3, $210, $5, $6, $45
+ i64.sub $push13=, $38, $47
+ i32.const $211=, 144
+ i32.add $211=, $279, $211
+ call __ashlti3, $211, $7, $8, $pop13
+ i32.const $212=, 160
+ i32.add $212=, $279, $212
+ call __lshrti3, $212, $7, $8, $51
+ i32.const $213=, 0
+ i32.add $213=, $279, $213
+ call __lshrti3, $213, $1, $2, $47
+ i32.const $214=, 16
+ i32.add $214=, $279, $214
+ call __ashlti3, $214, $3, $4, $49
+ i32.const $215=, 32
+ i32.add $215=, $279, $215
+ call __lshrti3, $215, $3, $4, $39
+ i32.const $216=, 64
+ i32.add $216=, $279, $216
+ call __ashlti3, $216, $5, $6, $48
+ i32.const $217=, 896
+ i32.add $217=, $279, $217
+ call __ashlti3, $217, $9, $10, $17
+ i32.const $218=, 256
+ i32.add $218=, $279, $218
+ call __ashlti3, $218, $1, $2, $35
+ i32.const $219=, 192
+ i32.add $219=, $279, $219
+ call __lshrti3, $219, $5, $6, $47
+ i32.const $220=, 208
+ i32.add $220=, $279, $220
+ call __ashlti3, $220, $7, $8, $49
+ i32.const $221=, 224
+ i32.add $221=, $279, $221
+ call __lshrti3, $221, $7, $8, $39
+ i32.const $222=, 768
+ i32.add $222=, $279, $222
+ call __lshrti3, $222, $9, $10, $45
+ i64.sub $49=, $42, $45
+ i32.const $223=, 784
+ i32.add $223=, $279, $223
+ call __ashlti3, $223, $11, $12, $49
+ i32.const $224=, 800
+ i32.add $224=, $279, $224
+ call __lshrti3, $224, $11, $12, $51
+ i32.const $225=, 992
+ i32.add $225=, $279, $225
+ call __ashlti3, $225, $13, $14, $17
+ i32.const $226=, 832
+ i32.add $226=, $279, $226
+ call __ashlti3, $226, $9, $10, $40
+ i32.const $227=, 384
+ i32.add $227=, $279, $227
+ call __lshrti3, $227, $1, $2, $37
+ i64.sub $push14=, $42, $37
+ i32.const $228=, 400
+ i32.add $228=, $279, $228
+ call __ashlti3, $228, $3, $4, $pop14
+ i32.const $229=, 416
+ i32.add $229=, $279, $229
+ call __lshrti3, $229, $3, $4, $34
+ i32.const $230=, 320
+ i32.add $230=, $279, $230
+ call __ashlti3, $230, $5, $6, $35
+ i32.const $231=, 448
+ i32.add $231=, $279, $231
+ call __ashlti3, $231, $1, $2, $33
+ i32.const $232=, 736
+ i32.add $232=, $279, $232
+ call __lshrti3, $232, $1, $2, $39
+ i32.const $233=, 720
+ i32.add $233=, $279, $233
+ call __ashlti3, $233, $3, $4, $40
+ i32.const $234=, 752
+ i32.add $234=, $279, $234
+ call __ashlti3, $234, $1, $2, $41
+ i32.const $235=, 592
+ i32.add $235=, $279, $235
+ call __ashlti3, $235, $7, $8, $17
+ i32.const $236=, 608
+ i32.add $236=, $279, $236
+ call __lshrti3, $236, $5, $6, $51
+ i32.const $237=, 624
+ i32.add $237=, $279, $237
+ call __ashlti3, $237, $5, $6, $43
+ i32.const $238=, 688
+ i32.add $238=, $279, $238
+ call __lshrti3, $238, $3, $4, $45
+ i32.const $239=, 640
+ i32.add $239=, $279, $239
+ call __lshrti3, $239, $1, $2, $45
+ i32.const $240=, 656
+ i32.add $240=, $279, $240
+ call __ashlti3, $240, $3, $4, $49
+ i32.const $241=, 672
+ i32.add $241=, $279, $241
+ call __lshrti3, $241, $3, $4, $51
+ i32.const $242=, 576
+ i32.add $242=, $279, $242
+ call __ashlti3, $242, $5, $6, $17
+ i32.const $243=, 704
+ i32.add $243=, $279, $243
+ call __ashlti3, $243, $1, $2, $40
+ i32.const $244=, 528
+ i32.add $244=, $279, $244
+ call __ashlti3, $244, $3, $4, $17
+ i32.const $245=, 544
+ i32.add $245=, $279, $245
+ call __lshrti3, $245, $1, $2, $51
+ i32.const $246=, 560
+ i32.add $246=, $279, $246
+ call __ashlti3, $246, $1, $2, $43
+ i32.const $247=, 512
+ i32.add $247=, $279, $247
+ call __ashlti3, $247, $1, $2, $17
+ i32.const $78=, 8
+ i32.const $248=, 480
+ i32.add $248=, $279, $248
+ i32.add $push40=, $248, $78
+ i64.load $39=, 0($pop40)
+ i32.const $249=, 464
+ i32.add $249=, $279, $249
+ i32.add $push41=, $249, $78
+ i64.load $43=, 0($pop41)
+ i64.load $34=, 480($279)
+ i64.load $49=, 464($279)
+ i64.load $36=, 496($279)
+ i32.const $250=, 496
+ i32.add $250=, $279, $250
+ i32.add $push43=, $250, $78
+ i64.load $38=, 0($pop43)
+ i64.lt_u $50=, $33, $42
+ i64.const $51=, 0
+ i64.eq $52=, $33, $51
+ i32.const $251=, 352
+ i32.add $251=, $279, $251
+ i32.add $push46=, $251, $78
+ i64.load $33=, 0($pop46)
+ i32.const $252=, 336
+ i32.add $252=, $279, $252
+ i32.add $push47=, $252, $78
+ i64.load $41=, 0($pop47)
+ i32.const $253=, 368
+ i32.add $253=, $279, $253
+ i32.add $push49=, $253, $78
+ i64.load $79=, 0($pop49)
+ i32.const $254=, 432
+ i32.add $254=, $279, $254
+ i32.add $push52=, $254, $78
+ i64.load $80=, 0($pop52)
+ i32.const $255=, 864
+ i32.add $255=, $279, $255
+ i32.add $push57=, $255, $78
+ i64.load $81=, 0($pop57)
+ i32.const $256=, 848
+ i32.add $256=, $279, $256
+ i32.add $push58=, $256, $78
+ i64.load $82=, 0($pop58)
+ i32.const $257=, 880
+ i32.add $257=, $279, $257
+ i32.add $push60=, $257, $78
+ i64.load $83=, 0($pop60)
+ i32.const $258=, 1008
+ i32.add $258=, $279, $258
+ i32.add $push63=, $258, $78
+ i64.load $84=, 0($pop63)
+ i32.const $259=, 960
+ i32.add $259=, $279, $259
+ i32.add $push64=, $259, $78
+ i64.load $85=, 0($pop64)
+ i32.const $260=, 976
+ i32.add $260=, $279, $260
+ i32.add $push66=, $260, $78
+ i64.load $86=, 0($pop66)
+ i32.const $261=, 816
+ i32.add $261=, $279, $261
+ i32.add $push69=, $261, $78
+ i64.load $87=, 0($pop69)
+ i32.const $262=, 240
+ i32.add $262=, $279, $262
+ i32.add $push74=, $262, $78
+ i64.load $88=, 0($pop74)
+ i32.const $263=, 912
+ i32.add $263=, $279, $263
+ i32.add $push99=, $263, $78
+ i64.load $100=, 0($pop99)
+ i32.const $264=, 928
+ i32.add $264=, $279, $264
+ i32.add $push100=, $264, $78
+ i64.load $101=, 0($pop100)
+ i32.const $265=, 944
+ i32.add $265=, $279, $265
+ i32.add $push102=, $265, $78
+ i64.load $102=, 0($pop102)
+ i32.const $266=, 80
+ i32.add $266=, $279, $266
+ i32.add $push106=, $266, $78
+ i64.load $103=, 0($pop106)
+ i32.const $267=, 96
+ i32.add $267=, $279, $267
+ i32.add $push107=, $267, $78
+ i64.load $104=, 0($pop107)
+ i64.load $90=, 80($279)
+ i64.load $91=, 96($279)
+ i64.load $92=, 112($279)
+ i32.const $268=, 112
+ i32.add $268=, $279, $268
+ i32.add $push109=, $268, $78
+ i64.load $105=, 0($pop109)
+ i64.lt_u $89=, $48, $42
+ i64.eq $93=, $48, $51
+ i32.const $269=, 48
+ i32.add $269=, $279, $269
+ i32.add $push112=, $269, $78
+ i64.load $48=, 0($pop112)
+ i32.const $270=, 176
+ i32.add $270=, $279, $270
+ i32.add $push115=, $270, $78
+ i64.load $106=, 0($pop115)
+ i32.const $271=, 288
+ i32.add $271=, $279, $271
+ i32.add $push120=, $271, $78
+ i64.load $107=, 0($pop120)
+ i32.const $272=, 272
+ i32.add $272=, $279, $272
+ i32.add $push121=, $272, $78
+ i64.load $108=, 0($pop121)
+ i32.const $273=, 304
+ i32.add $273=, $279, $273
+ i32.add $push123=, $273, $78
+ i64.load $109=, 0($pop123)
+ i32.const $274=, 128
+ i32.add $274=, $279, $274
+ i32.add $push146=, $274, $78
+ i64.load $119=, 0($pop146)
+ i32.const $275=, 144
+ i32.add $275=, $279, $275
+ i32.add $push147=, $275, $78
+ i64.load $120=, 0($pop147)
+ i32.const $276=, 160
+ i32.add $276=, $279, $276
+ i32.add $push149=, $276, $78
+ i64.load $121=, 0($pop149)
+ i32.const $277=, 0
+ i32.add $277=, $279, $277
+ i32.add $push152=, $277, $78
+ i64.load $122=, 0($pop152)
+ i32.const $278=, 16
+ i32.add $278=, $279, $278
+ i32.add $push153=, $278, $78
+ i64.load $123=, 0($pop153)
+ i64.load $117=, 64($279)
+ i32.const $279=, 64
+ i32.add $279=, $279, $279
+ i32.add $push158=, $279, $78
+ i64.load $125=, 0($pop158)
+ i32.const $280=, 32
+ i32.add $280=, $279, $280
+ i32.add $push155=, $280, $78
+ i64.load $124=, 0($pop155)
+ i32.const $281=, 896
+ i32.add $281=, $279, $281
+ i32.add $push163=, $281, $78
+ i64.load $126=, 0($pop163)
+ i32.const $282=, 256
+ i32.add $282=, $279, $282
+ i32.add $push167=, $282, $78
+ i64.load $127=, 0($pop167)
+ i32.const $283=, 192
+ i32.add $283=, $279, $283
+ i32.add $push195=, $283, $78
+ i64.load $142=, 0($pop195)
+ i32.const $284=, 208
+ i32.add $284=, $279, $284
+ i32.add $push196=, $284, $78
+ i64.load $143=, 0($pop196)
+ i64.load $114=, 0($279)
+ i64.load $115=, 16($279)
+ i64.load $116=, 32($279)
+ i32.const $285=, 224
+ i32.add $285=, $279, $285
+ i32.add $push198=, $285, $78
+ i64.load $144=, 0($pop198)
+ i64.lt_u $74=, $47, $42
+ i64.load $128=, 192($279)
+ i64.load $129=, 208($279)
+ i64.load $130=, 224($279)
+ i64.load $75=, 240($279)
+ i64.load $94=, 48($279)
+ i64.load $95=, 176($279)
+ i64.lt_u $71=, $45, $42
+ i64.lt_u $76=, $47, $44
+ i64.load $110=, 128($279)
+ i64.load $111=, 144($279)
+ i64.load $112=, 160($279)
+ i64.eq $96=, $47, $51
+ i64.eq $113=, $45, $51
+ i32.const $286=, 768
+ i32.add $286=, $279, $286
+ i32.add $push202=, $286, $78
+ i64.load $47=, 0($pop202)
+ i32.const $287=, 784
+ i32.add $287=, $279, $287
+ i32.add $push203=, $287, $78
+ i64.load $45=, 0($pop203)
+ i32.const $288=, 800
+ i32.add $288=, $279, $288
+ i32.add $push205=, $288, $78
+ i64.load $145=, 0($pop205)
+ i32.const $289=, 992
+ i32.add $289=, $279, $289
+ i32.add $push208=, $289, $78
+ i64.load $146=, 0($pop208)
+ i32.const $290=, 832
+ i32.add $290=, $279, $290
+ i32.add $push211=, $290, $78
+ i64.load $147=, 0($pop211)
+ i32.const $291=, 384
+ i32.add $291=, $279, $291
+ i32.add $push216=, $291, $78
+ i64.load $148=, 0($pop216)
+ i32.const $292=, 400
+ i32.add $292=, $279, $292
+ i32.add $push217=, $292, $78
+ i64.load $149=, 0($pop217)
+ i64.load $136=, 384($279)
+ i64.load $137=, 400($279)
+ i32.const $293=, 416
+ i32.add $293=, $279, $293
+ i32.add $push219=, $293, $78
+ i64.load $150=, 0($pop219)
+ i64.load $138=, 416($279)
+ i64.load $59=, 432($279)
+ i64.lt_u $58=, $37, $42
+ i64.eq $139=, $37, $51
+ i32.const $294=, 320
+ i32.add $294=, $279, $294
+ i32.add $push222=, $294, $78
+ i64.load $37=, 0($pop222)
+ i64.load $54=, 352($279)
+ i64.load $55=, 336($279)
+ i64.load $56=, 368($279)
+ i32.const $295=, 448
+ i32.add $295=, $279, $295
+ i32.add $push225=, $295, $78
+ i64.load $151=, 0($pop225)
+ i64.lt_u $53=, $35, $42
+ i64.load $97=, 288($279)
+ i64.load $98=, 272($279)
+ i64.load $99=, 304($279)
+ i64.load $118=, 256($279)
+ i64.load $140=, 320($279)
+ i64.load $141=, 448($279)
+ i64.eq $57=, $35, $51
+ i64.lt_u $60=, $35, $44
+ i32.const $296=, 736
+ i32.add $296=, $279, $296
+ i32.add $push242=, $296, $78
+ i64.load $35=, 0($pop242)
+ i32.const $297=, 720
+ i32.add $297=, $279, $297
+ i32.add $push243=, $297, $78
+ i64.load $159=, 0($pop243)
+ i64.load $62=, 864($279)
+ i64.load $63=, 848($279)
+ i64.load $64=, 880($279)
+ i32.const $298=, 752
+ i32.add $298=, $279, $298
+ i32.add $push245=, $298, $78
+ i64.load $160=, 0($pop245)
+ i64.lt_u $61=, $40, $42
+ i64.load $152=, 736($279)
+ i64.load $153=, 720($279)
+ i64.load $154=, 752($279)
+ i64.eq $65=, $40, $51
+ i32.const $299=, 592
+ i32.add $299=, $279, $299
+ i32.add $push248=, $299, $78
+ i64.load $40=, 0($pop248)
+ i32.const $300=, 608
+ i32.add $300=, $279, $300
+ i32.add $push249=, $300, $78
+ i64.load $161=, 0($pop249)
+ i32.const $301=, 624
+ i32.add $301=, $279, $301
+ i32.add $push251=, $301, $78
+ i64.load $162=, 0($pop251)
+ i32.const $302=, 688
+ i32.add $302=, $279, $302
+ i32.add $push254=, $302, $78
+ i64.load $163=, 0($pop254)
+ i32.const $303=, 640
+ i32.add $303=, $279, $303
+ i32.add $push269=, $303, $78
+ i64.load $169=, 0($pop269)
+ i32.const $304=, 656
+ i32.add $304=, $279, $304
+ i32.add $push270=, $304, $78
+ i64.load $170=, 0($pop270)
+ i64.load $131=, 768($279)
+ i64.load $132=, 784($279)
+ i64.load $133=, 800($279)
+ i32.const $305=, 672
+ i32.add $305=, $279, $305
+ i32.add $push272=, $305, $78
+ i64.load $171=, 0($pop272)
+ i64.load $164=, 640($279)
+ i64.load $165=, 656($279)
+ i64.load $166=, 672($279)
+ i64.load $72=, 816($279)
+ i64.load $158=, 688($279)
+ i32.const $306=, 576
+ i32.add $306=, $279, $306
+ i32.add $push275=, $306, $78
+ i64.load $172=, 0($pop275)
+ i64.load $135=, 832($279)
+ i64.load $168=, 704($279)
+ i32.const $307=, 704
+ i32.add $307=, $279, $307
+ i32.add $push278=, $307, $78
+ i64.load $173=, 0($pop278)
+ i32.const $308=, 528
+ i32.add $308=, $279, $308
+ i32.add $push288=, $308, $78
+ i64.load $177=, 0($pop288)
+ i32.const $309=, 544
+ i32.add $309=, $279, $309
+ i32.add $push289=, $309, $78
+ i64.load $178=, 0($pop289)
+ i32.const $310=, 560
+ i32.add $310=, $279, $310
+ i32.add $push291=, $310, $78
+ i64.load $179=, 0($pop291)
+ i64.load $67=, 1008($279)
+ i64.load $68=, 960($279)
+ i64.load $69=, 976($279)
+ i64.lt_u $66=, $17, $42
+ i64.eq $70=, $17, $51
+ i64.lt_u $73=, $17, $44
+ i64.lt_u $77=, $17, $46
+ i64.load $17=, 912($279)
+ i64.load $42=, 928($279)
+ i64.load $44=, 944($279)
+ i64.load $46=, 896($279)
+ i64.load $134=, 992($279)
+ i64.load $155=, 592($279)
+ i64.load $156=, 608($279)
+ i64.load $157=, 624($279)
+ i64.load $167=, 576($279)
+ i64.load $174=, 528($279)
+ i64.load $175=, 544($279)
+ i64.load $176=, 560($279)
+ i64.load $180=, 512($279)
+ i32.add $push304=, $0, $78
+ i32.const $311=, 512
+ i32.add $311=, $279, $311
+ i32.add $push299=, $311, $78
+ i64.load $push300=, 0($pop299)
+ i64.select $push301=, $66, $pop300, $51
+ i64.select $push302=, $73, $pop301, $51
+ i64.select $push303=, $77, $pop302, $51
+ i64.store $discard=, 0($pop304), $pop303
+ i64.select $push296=, $66, $180, $51
+ i64.select $push297=, $73, $pop296, $51
+ i64.select $push298=, $77, $pop297, $51
+ i64.store $discard=, 0($0), $pop298
+ i32.const $push305=, 24
+ i32.add $push306=, $0, $pop305
+ i64.or $push290=, $177, $178
+ i64.select $push292=, $66, $pop290, $179
+ i64.select $push293=, $70, $4, $pop292
+ i64.select $push294=, $73, $pop293, $51
+ i64.select $push295=, $77, $pop294, $51
+ i64.store $discard=, 0($pop306), $pop295
+ i32.const $push307=, 16
+ i32.add $push308=, $0, $pop307
+ i64.or $push283=, $174, $175
+ i64.select $push284=, $66, $pop283, $176
+ i64.select $push285=, $70, $3, $pop284
+ i64.select $push286=, $73, $pop285, $51
+ i64.select $push287=, $77, $pop286, $51
+ i64.store $discard=, 0($pop308), $pop287
+ i32.const $push309=, 56
+ i32.add $push310=, $0, $pop309
+ i64.or $push250=, $40, $161
+ i64.select $push252=, $66, $pop250, $162
+ i64.select $push253=, $70, $8, $pop252
+ i64.select $push255=, $71, $163, $51
+ i64.or $push256=, $pop253, $pop255
+ i64.or $push244=, $159, $35
+ i64.select $push246=, $61, $pop244, $160
+ i64.select $push247=, $65, $4, $pop246
+ i64.select $push257=, $73, $pop256, $pop247
+ i64.select $push258=, $70, $8, $pop257
+ i64.select $push259=, $77, $pop258, $51
+ i64.store $discard=, 0($pop310), $pop259
+ i32.const $push311=, 48
+ i32.add $push312=, $0, $pop311
+ i64.or $push234=, $155, $156
+ i64.select $push235=, $66, $pop234, $157
+ i64.select $push236=, $70, $7, $pop235
+ i64.select $push237=, $71, $158, $51
+ i64.or $push238=, $pop236, $pop237
+ i64.or $push231=, $153, $152
+ i64.select $push232=, $61, $pop231, $154
+ i64.select $push233=, $65, $3, $pop232
+ i64.select $push239=, $73, $pop238, $pop233
+ i64.select $push240=, $70, $7, $pop239
+ i64.select $push241=, $77, $pop240, $51
+ i64.store $discard=, 0($pop312), $pop241
+ i32.const $push313=, 40
+ i32.add $push314=, $0, $pop313
+ i64.select $push276=, $66, $172, $51
+ i64.or $push271=, $169, $170
+ i64.select $push273=, $71, $pop271, $171
+ i64.select $push274=, $113, $2, $pop273
+ i64.or $push277=, $pop276, $pop274
+ i64.select $push279=, $61, $173, $51
+ i64.select $push280=, $73, $pop277, $pop279
+ i64.select $push281=, $70, $6, $pop280
+ i64.select $push282=, $77, $pop281, $51
+ i64.store $discard=, 0($pop314), $pop282
+ i32.const $push315=, 32
+ i32.add $push316=, $0, $pop315
+ i64.select $push263=, $66, $167, $51
+ i64.or $push260=, $164, $165
+ i64.select $push261=, $71, $pop260, $166
+ i64.select $push262=, $113, $1, $pop261
+ i64.or $push264=, $pop263, $pop262
+ i64.select $push265=, $61, $168, $51
+ i64.select $push266=, $73, $pop264, $pop265
+ i64.select $push267=, $70, $5, $pop266
+ i64.select $push268=, $77, $pop267, $51
+ i64.store $discard=, 0($pop316), $pop268
+ i32.const $push317=, 120
+ i32.add $push318=, $0, $pop317
+ i64.or $push65=, $84, $85
+ i64.select $push67=, $66, $pop65, $86
+ i64.select $push68=, $70, $16, $pop67
+ i64.select $push70=, $71, $87, $51
+ i64.or $push71=, $pop68, $pop70
+ i64.or $push59=, $82, $81
+ i64.select $push61=, $61, $pop59, $83
+ i64.select $push62=, $65, $12, $pop61
+ i64.select $push72=, $73, $pop71, $pop62
+ i64.select $push73=, $70, $16, $pop72
+ i64.select $push75=, $74, $88, $51
+ i64.select $push76=, $76, $pop75, $51
+ i64.or $push77=, $pop73, $pop76
+ i64.or $push48=, $41, $33
+ i64.select $push50=, $53, $pop48, $79
+ i64.select $push51=, $57, $8, $pop50
+ i64.select $push53=, $58, $80, $51
+ i64.or $push54=, $pop51, $pop53
+ i64.or $push42=, $43, $39
+ i64.select $push44=, $50, $pop42, $38
+ i64.select $push45=, $52, $4, $pop44
+ i64.select $push55=, $60, $pop54, $pop45
+ i64.select $push56=, $57, $8, $pop55
+ i64.select $push78=, $77, $pop77, $pop56
+ i64.select $push79=, $70, $16, $pop78
+ i64.store $discard=, 0($pop318), $pop79
+ i32.const $push319=, 112
+ i32.add $push320=, $0, $pop319
+ i64.or $push28=, $67, $68
+ i64.select $push29=, $66, $pop28, $69
+ i64.select $push30=, $70, $15, $pop29
+ i64.select $push31=, $71, $72, $51
+ i64.or $push32=, $pop30, $pop31
+ i64.or $push25=, $63, $62
+ i64.select $push26=, $61, $pop25, $64
+ i64.select $push27=, $65, $11, $pop26
+ i64.select $push33=, $73, $pop32, $pop27
+ i64.select $push34=, $70, $15, $pop33
+ i64.select $push35=, $74, $75, $51
+ i64.select $push36=, $76, $pop35, $51
+ i64.or $push37=, $pop34, $pop36
+ i64.or $push18=, $55, $54
+ i64.select $push19=, $53, $pop18, $56
+ i64.select $push20=, $57, $7, $pop19
+ i64.select $push21=, $58, $59, $51
+ i64.or $push22=, $pop20, $pop21
+ i64.or $push15=, $49, $34
+ i64.select $push16=, $50, $pop15, $36
+ i64.select $push17=, $52, $3, $pop16
+ i64.select $push23=, $60, $pop22, $pop17
+ i64.select $push24=, $57, $7, $pop23
+ i64.select $push38=, $77, $pop37, $pop24
+ i64.select $push39=, $70, $15, $pop38
+ i64.store $discard=, 0($pop320), $pop39
+ i32.const $push321=, 104
+ i32.add $push322=, $0, $pop321
+ i64.select $push209=, $66, $146, $51
+ i64.or $push204=, $47, $45
+ i64.select $push206=, $71, $pop204, $145
+ i64.select $push207=, $113, $10, $pop206
+ i64.or $push210=, $pop209, $pop207
+ i64.select $push212=, $61, $147, $51
+ i64.select $push213=, $73, $pop210, $pop212
+ i64.select $push214=, $70, $14, $pop213
+ i64.or $push197=, $142, $143
+ i64.select $push199=, $74, $pop197, $144
+ i64.select $push200=, $96, $6, $pop199
+ i64.select $push201=, $76, $pop200, $51
+ i64.or $push215=, $pop214, $pop201
+ i64.select $push223=, $53, $37, $51
+ i64.or $push218=, $148, $149
+ i64.select $push220=, $58, $pop218, $150
+ i64.select $push221=, $139, $2, $pop220
+ i64.or $push224=, $pop223, $pop221
+ i64.select $push226=, $50, $151, $51
+ i64.select $push227=, $60, $pop224, $pop226
+ i64.select $push228=, $57, $6, $pop227
+ i64.select $push229=, $77, $pop215, $pop228
+ i64.select $push230=, $70, $14, $pop229
+ i64.store $discard=, 0($pop322), $pop230
+ i32.const $push323=, 96
+ i32.add $push324=, $0, $pop323
+ i64.select $push179=, $66, $134, $51
+ i64.or $push176=, $131, $132
+ i64.select $push177=, $71, $pop176, $133
+ i64.select $push178=, $113, $9, $pop177
+ i64.or $push180=, $pop179, $pop178
+ i64.select $push181=, $61, $135, $51
+ i64.select $push182=, $73, $pop180, $pop181
+ i64.select $push183=, $70, $13, $pop182
+ i64.or $push172=, $128, $129
+ i64.select $push173=, $74, $pop172, $130
+ i64.select $push174=, $96, $5, $pop173
+ i64.select $push175=, $76, $pop174, $51
+ i64.or $push184=, $pop183, $pop175
+ i64.select $push188=, $53, $140, $51
+ i64.or $push185=, $136, $137
+ i64.select $push186=, $58, $pop185, $138
+ i64.select $push187=, $139, $1, $pop186
+ i64.or $push189=, $pop188, $pop187
+ i64.select $push190=, $50, $141, $51
+ i64.select $push191=, $60, $pop189, $pop190
+ i64.select $push192=, $57, $5, $pop191
+ i64.select $push193=, $77, $pop184, $pop192
+ i64.select $push194=, $70, $13, $pop193
+ i64.store $discard=, 0($pop324), $pop194
+ i32.const $push325=, 72
+ i32.add $push326=, $0, $pop325
+ i64.select $push164=, $66, $126, $51
+ i64.select $push165=, $73, $pop164, $51
+ i64.or $push154=, $122, $123
+ i64.select $push156=, $74, $pop154, $124
+ i64.select $push157=, $96, $2, $pop156
+ i64.select $push159=, $89, $125, $51
+ i64.or $push160=, $pop157, $pop159
+ i64.or $push148=, $119, $120
+ i64.select $push150=, $71, $pop148, $121
+ i64.select $push151=, $113, $6, $pop150
+ i64.select $push161=, $76, $pop160, $pop151
+ i64.select $push162=, $96, $2, $pop161
+ i64.or $push166=, $pop165, $pop162
+ i64.select $push168=, $53, $127, $51
+ i64.select $push169=, $60, $pop168, $51
+ i64.select $push170=, $77, $pop166, $pop169
+ i64.select $push171=, $70, $10, $pop170
+ i64.store $discard=, 0($pop326), $pop171
+ i32.const $push327=, 64
+ i32.add $push328=, $0, $pop327
+ i64.select $push139=, $66, $46, $51
+ i64.select $push140=, $73, $pop139, $51
+ i64.or $push132=, $114, $115
+ i64.select $push133=, $74, $pop132, $116
+ i64.select $push134=, $96, $1, $pop133
+ i64.select $push135=, $89, $117, $51
+ i64.or $push136=, $pop134, $pop135
+ i64.or $push129=, $110, $111
+ i64.select $push130=, $71, $pop129, $112
+ i64.select $push131=, $113, $5, $pop130
+ i64.select $push137=, $76, $pop136, $pop131
+ i64.select $push138=, $96, $1, $pop137
+ i64.or $push141=, $pop140, $pop138
+ i64.select $push142=, $53, $118, $51
+ i64.select $push143=, $60, $pop142, $51
+ i64.select $push144=, $77, $pop141, $pop143
+ i64.select $push145=, $70, $9, $pop144
+ i64.store $discard=, 0($pop328), $pop145
+ i32.const $push329=, 88
+ i32.add $push330=, $0, $pop329
+ i64.or $push101=, $100, $101
+ i64.select $push103=, $66, $pop101, $102
+ i64.select $push104=, $70, $12, $pop103
+ i64.select $push105=, $73, $pop104, $51
+ i64.select $push113=, $74, $48, $51
+ i64.or $push108=, $103, $104
+ i64.select $push110=, $89, $pop108, $105
+ i64.select $push111=, $93, $8, $pop110
+ i64.or $push114=, $pop113, $pop111
+ i64.select $push116=, $71, $106, $51
+ i64.select $push117=, $76, $pop114, $pop116
+ i64.select $push118=, $96, $4, $pop117
+ i64.or $push119=, $pop105, $pop118
+ i64.or $push122=, $108, $107
+ i64.select $push124=, $53, $pop122, $109
+ i64.select $push125=, $57, $4, $pop124
+ i64.select $push126=, $60, $pop125, $51
+ i64.select $push127=, $77, $pop119, $pop126
+ i64.select $push128=, $70, $12, $pop127
+ i64.store $discard=, 0($pop330), $pop128
+ i32.const $push331=, 80
+ i32.add $push332=, $0, $pop331
+ i64.or $push80=, $17, $42
+ i64.select $push81=, $66, $pop80, $44
+ i64.select $push82=, $70, $11, $pop81
+ i64.select $push83=, $73, $pop82, $51
+ i64.select $push87=, $74, $94, $51
+ i64.or $push84=, $90, $91
+ i64.select $push85=, $89, $pop84, $92
+ i64.select $push86=, $93, $7, $pop85
+ i64.or $push88=, $pop87, $pop86
+ i64.select $push89=, $71, $95, $51
+ i64.select $push90=, $76, $pop88, $pop89
+ i64.select $push91=, $96, $3, $pop90
+ i64.or $push92=, $pop83, $pop91
+ i64.or $push93=, $98, $97
+ i64.select $push94=, $53, $pop93, $99
+ i64.select $push95=, $57, $3, $pop94
+ i64.select $push96=, $60, $pop95, $51
+ i64.select $push97=, $77, $pop92, $pop96
+ i64.select $push98=, $70, $11, $pop97
+ i64.store $discard=, 0($pop332), $pop98
+ i32.const $183=, 1024
+ i32.add $279=, $279, $183
+ i32.const $183=, __stack_pointer
+ i32.store $279=, 0($183), $279
+ return
+func_end5:
+ .size bigshift, func_end5-bigshift
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/load-ext.s b/test/llvm_autogenerated/load-ext.s
new file mode 100644
index 000000000..959bdfa55
--- /dev/null
+++ b/test/llvm_autogenerated/load-ext.s
@@ -0,0 +1,104 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/load-ext.ll"
+ .globl sext_i8_i32
+ .type sext_i8_i32,@function
+sext_i8_i32:
+ .param i32
+ .result i32
+ i32.load8_s $push0=, 0($0)
+ return $pop0
+func_end0:
+ .size sext_i8_i32, func_end0-sext_i8_i32
+
+ .globl zext_i8_i32
+ .type zext_i8_i32,@function
+zext_i8_i32:
+ .param i32
+ .result i32
+ i32.load8_u $push0=, 0($0)
+ return $pop0
+func_end1:
+ .size zext_i8_i32, func_end1-zext_i8_i32
+
+ .globl sext_i16_i32
+ .type sext_i16_i32,@function
+sext_i16_i32:
+ .param i32
+ .result i32
+ i32.load16_s $push0=, 0($0)
+ return $pop0
+func_end2:
+ .size sext_i16_i32, func_end2-sext_i16_i32
+
+ .globl zext_i16_i32
+ .type zext_i16_i32,@function
+zext_i16_i32:
+ .param i32
+ .result i32
+ i32.load16_u $push0=, 0($0)
+ return $pop0
+func_end3:
+ .size zext_i16_i32, func_end3-zext_i16_i32
+
+ .globl sext_i8_i64
+ .type sext_i8_i64,@function
+sext_i8_i64:
+ .param i32
+ .result i64
+ i64.load8_s $push0=, 0($0)
+ return $pop0
+func_end4:
+ .size sext_i8_i64, func_end4-sext_i8_i64
+
+ .globl zext_i8_i64
+ .type zext_i8_i64,@function
+zext_i8_i64:
+ .param i32
+ .result i64
+ i64.load8_u $push0=, 0($0)
+ return $pop0
+func_end5:
+ .size zext_i8_i64, func_end5-zext_i8_i64
+
+ .globl sext_i16_i64
+ .type sext_i16_i64,@function
+sext_i16_i64:
+ .param i32
+ .result i64
+ i64.load16_s $push0=, 0($0)
+ return $pop0
+func_end6:
+ .size sext_i16_i64, func_end6-sext_i16_i64
+
+ .globl zext_i16_i64
+ .type zext_i16_i64,@function
+zext_i16_i64:
+ .param i32
+ .result i64
+ i64.load16_u $push0=, 0($0)
+ return $pop0
+func_end7:
+ .size zext_i16_i64, func_end7-zext_i16_i64
+
+ .globl sext_i32_i64
+ .type sext_i32_i64,@function
+sext_i32_i64:
+ .param i32
+ .result i64
+ i64.load32_s $push0=, 0($0)
+ return $pop0
+func_end8:
+ .size sext_i32_i64, func_end8-sext_i32_i64
+
+ .globl zext_i32_i64
+ .type zext_i32_i64,@function
+zext_i32_i64:
+ .param i32
+ .result i64
+ i64.load32_u $push0=, 0($0)
+ return $pop0
+func_end9:
+ .size zext_i32_i64, func_end9-zext_i32_i64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/load-store-i1.s b/test/llvm_autogenerated/load-store-i1.s
new file mode 100644
index 000000000..bfa013f88
--- /dev/null
+++ b/test/llvm_autogenerated/load-store-i1.s
@@ -0,0 +1,74 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/load-store-i1.ll"
+ .globl load_u_i1_i32
+ .type load_u_i1_i32,@function
+load_u_i1_i32:
+ .param i32
+ .result i32
+ i32.load8_u $push0=, 0($0)
+ return $pop0
+func_end0:
+ .size load_u_i1_i32, func_end0-load_u_i1_i32
+
+ .globl load_s_i1_i32
+ .type load_s_i1_i32,@function
+load_s_i1_i32:
+ .param i32
+ .result i32
+ .local i32
+ i32.const $1=, 31
+ i32.load8_u $push0=, 0($0)
+ i32.shl $push1=, $pop0, $1
+ i32.shr_s $push2=, $pop1, $1
+ return $pop2
+func_end1:
+ .size load_s_i1_i32, func_end1-load_s_i1_i32
+
+ .globl load_u_i1_i64
+ .type load_u_i1_i64,@function
+load_u_i1_i64:
+ .param i32
+ .result i64
+ i64.load8_u $push0=, 0($0)
+ return $pop0
+func_end2:
+ .size load_u_i1_i64, func_end2-load_u_i1_i64
+
+ .globl load_s_i1_i64
+ .type load_s_i1_i64,@function
+load_s_i1_i64:
+ .param i32
+ .result i64
+ .local i64
+ i64.const $1=, 63
+ i64.load8_u $push0=, 0($0)
+ i64.shl $push1=, $pop0, $1
+ i64.shr_s $push2=, $pop1, $1
+ return $pop2
+func_end3:
+ .size load_s_i1_i64, func_end3-load_s_i1_i64
+
+ .globl store_i32_i1
+ .type store_i32_i1,@function
+store_i32_i1:
+ .param i32, i32
+ i32.const $push0=, 1
+ i32.and $push1=, $1, $pop0
+ i32.store8 $discard=, 0($0), $pop1
+ return
+func_end4:
+ .size store_i32_i1, func_end4-store_i32_i1
+
+ .globl store_i64_i1
+ .type store_i64_i1,@function
+store_i64_i1:
+ .param i32, i64
+ i64.const $push0=, 1
+ i64.and $push1=, $1, $pop0
+ i64.store8 $discard=, 0($0), $pop1
+ return
+func_end5:
+ .size store_i64_i1, func_end5-store_i64_i1
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/load.s b/test/llvm_autogenerated/load.s
new file mode 100644
index 000000000..ba00e78b6
--- /dev/null
+++ b/test/llvm_autogenerated/load.s
@@ -0,0 +1,44 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/load.ll"
+ .globl ldi32
+ .type ldi32,@function
+ldi32:
+ .param i32
+ .result i32
+ i32.load $push0=, 0($0)
+ return $pop0
+func_end0:
+ .size ldi32, func_end0-ldi32
+
+ .globl ldi64
+ .type ldi64,@function
+ldi64:
+ .param i32
+ .result i64
+ i64.load $push0=, 0($0)
+ return $pop0
+func_end1:
+ .size ldi64, func_end1-ldi64
+
+ .globl ldf32
+ .type ldf32,@function
+ldf32:
+ .param i32
+ .result f32
+ f32.load $push0=, 0($0)
+ return $pop0
+func_end2:
+ .size ldf32, func_end2-ldf32
+
+ .globl ldf64
+ .type ldf64,@function
+ldf64:
+ .param i32
+ .result f64
+ f64.load $push0=, 0($0)
+ return $pop0
+func_end3:
+ .size ldf64, func_end3-ldf64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/memory-addr32.s b/test/llvm_autogenerated/memory-addr32.s
new file mode 100644
index 000000000..3489a999e
--- /dev/null
+++ b/test/llvm_autogenerated/memory-addr32.s
@@ -0,0 +1,22 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/memory-addr32.ll"
+ .globl memory_size
+ .type memory_size,@function
+memory_size:
+ .result i32
+ memory_size $push0=
+ return $pop0
+func_end0:
+ .size memory_size, func_end0-memory_size
+
+ .globl grow_memory
+ .type grow_memory,@function
+grow_memory:
+ .param i32
+ grow_memory $0
+ return
+func_end1:
+ .size grow_memory, func_end1-grow_memory
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/memory-addr64.s b/test/llvm_autogenerated/memory-addr64.s
new file mode 100644
index 000000000..3eabbc3ec
--- /dev/null
+++ b/test/llvm_autogenerated/memory-addr64.s
@@ -0,0 +1,22 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/memory-addr64.ll"
+ .globl memory_size
+ .type memory_size,@function
+memory_size:
+ .result i64
+ memory_size $push0=
+ return $pop0
+func_end0:
+ .size memory_size, func_end0-memory_size
+
+ .globl grow_memory
+ .type grow_memory,@function
+grow_memory:
+ .param i64
+ grow_memory $0
+ return
+func_end1:
+ .size grow_memory, func_end1-grow_memory
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/offset-folding.s b/test/llvm_autogenerated/offset-folding.s
new file mode 100644
index 000000000..9b757b1ea
--- /dev/null
+++ b/test/llvm_autogenerated/offset-folding.s
@@ -0,0 +1,54 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/offset-folding.ll"
+ .globl test0
+ .type test0,@function
+test0:
+ .result i32
+ i32.const $push0=, x+188
+ return $pop0
+func_end0:
+ .size test0, func_end0-test0
+
+ .globl test1
+ .type test1,@function
+test1:
+ .result i32
+ i32.const $push0=, y+188
+ return $pop0
+func_end1:
+ .size test1, func_end1-test1
+
+ .globl test2
+ .type test2,@function
+test2:
+ .result i32
+ i32.const $push0=, x
+ return $pop0
+func_end2:
+ .size test2, func_end2-test2
+
+ .globl test3
+ .type test3,@function
+test3:
+ .result i32
+ i32.const $push0=, y
+ return $pop0
+func_end3:
+ .size test3, func_end3-test3
+
+ .type x,@object
+ .bss
+ .globl x
+ .align 2
+x:
+ .size x, 0
+
+ .type y,@object
+ .globl y
+ .align 4
+y:
+ .zero 200
+ .size y, 200
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/offset.s b/test/llvm_autogenerated/offset.s
new file mode 100644
index 000000000..7222c2118
--- /dev/null
+++ b/test/llvm_autogenerated/offset.s
@@ -0,0 +1,366 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/offset.ll"
+ .globl load_i32_with_folded_offset
+ .type load_i32_with_folded_offset,@function
+load_i32_with_folded_offset:
+ .param i32
+ .result i32
+ i32.load $push0=, 24($0)
+ return $pop0
+func_end0:
+ .size load_i32_with_folded_offset, func_end0-load_i32_with_folded_offset
+
+ .globl load_i32_with_folded_gep_offset
+ .type load_i32_with_folded_gep_offset,@function
+load_i32_with_folded_gep_offset:
+ .param i32
+ .result i32
+ i32.load $push0=, 24($0)
+ return $pop0
+func_end1:
+ .size load_i32_with_folded_gep_offset, func_end1-load_i32_with_folded_gep_offset
+
+ .globl load_i32_with_unfolded_gep_negative_offset
+ .type load_i32_with_unfolded_gep_negative_offset,@function
+load_i32_with_unfolded_gep_negative_offset:
+ .param i32
+ .result i32
+ i32.const $push0=, -24
+ i32.add $push1=, $0, $pop0
+ i32.load $push2=, 0($pop1)
+ return $pop2
+func_end2:
+ .size load_i32_with_unfolded_gep_negative_offset, func_end2-load_i32_with_unfolded_gep_negative_offset
+
+ .globl load_i32_with_unfolded_offset
+ .type load_i32_with_unfolded_offset,@function
+load_i32_with_unfolded_offset:
+ .param i32
+ .result i32
+ i32.const $push0=, 24
+ i32.add $push1=, $0, $pop0
+ i32.load $push2=, 0($pop1)
+ return $pop2
+func_end3:
+ .size load_i32_with_unfolded_offset, func_end3-load_i32_with_unfolded_offset
+
+ .globl load_i32_with_unfolded_gep_offset
+ .type load_i32_with_unfolded_gep_offset,@function
+load_i32_with_unfolded_gep_offset:
+ .param i32
+ .result i32
+ i32.const $push0=, 24
+ i32.add $push1=, $0, $pop0
+ i32.load $push2=, 0($pop1)
+ return $pop2
+func_end4:
+ .size load_i32_with_unfolded_gep_offset, func_end4-load_i32_with_unfolded_gep_offset
+
+ .globl load_i64_with_folded_offset
+ .type load_i64_with_folded_offset,@function
+load_i64_with_folded_offset:
+ .param i32
+ .result i64
+ i64.load $push0=, 24($0)
+ return $pop0
+func_end5:
+ .size load_i64_with_folded_offset, func_end5-load_i64_with_folded_offset
+
+ .globl load_i64_with_folded_gep_offset
+ .type load_i64_with_folded_gep_offset,@function
+load_i64_with_folded_gep_offset:
+ .param i32
+ .result i64
+ i64.load $push0=, 24($0)
+ return $pop0
+func_end6:
+ .size load_i64_with_folded_gep_offset, func_end6-load_i64_with_folded_gep_offset
+
+ .globl load_i64_with_unfolded_gep_negative_offset
+ .type load_i64_with_unfolded_gep_negative_offset,@function
+load_i64_with_unfolded_gep_negative_offset:
+ .param i32
+ .result i64
+ i32.const $push0=, -24
+ i32.add $push1=, $0, $pop0
+ i64.load $push2=, 0($pop1)
+ return $pop2
+func_end7:
+ .size load_i64_with_unfolded_gep_negative_offset, func_end7-load_i64_with_unfolded_gep_negative_offset
+
+ .globl load_i64_with_unfolded_offset
+ .type load_i64_with_unfolded_offset,@function
+load_i64_with_unfolded_offset:
+ .param i32
+ .result i64
+ i32.const $push0=, 24
+ i32.add $push1=, $0, $pop0
+ i64.load $push2=, 0($pop1)
+ return $pop2
+func_end8:
+ .size load_i64_with_unfolded_offset, func_end8-load_i64_with_unfolded_offset
+
+ .globl load_i64_with_unfolded_gep_offset
+ .type load_i64_with_unfolded_gep_offset,@function
+load_i64_with_unfolded_gep_offset:
+ .param i32
+ .result i64
+ i32.const $push0=, 24
+ i32.add $push1=, $0, $pop0
+ i64.load $push2=, 0($pop1)
+ return $pop2
+func_end9:
+ .size load_i64_with_unfolded_gep_offset, func_end9-load_i64_with_unfolded_gep_offset
+
+ .globl store_i32_with_folded_offset
+ .type store_i32_with_folded_offset,@function
+store_i32_with_folded_offset:
+ .param i32
+ i32.const $push0=, 0
+ i32.store $discard=, 24($0), $pop0
+ return
+func_end10:
+ .size store_i32_with_folded_offset, func_end10-store_i32_with_folded_offset
+
+ .globl store_i32_with_folded_gep_offset
+ .type store_i32_with_folded_gep_offset,@function
+store_i32_with_folded_gep_offset:
+ .param i32
+ i32.const $push0=, 0
+ i32.store $discard=, 24($0), $pop0
+ return
+func_end11:
+ .size store_i32_with_folded_gep_offset, func_end11-store_i32_with_folded_gep_offset
+
+ .globl store_i32_with_unfolded_gep_negative_offset
+ .type store_i32_with_unfolded_gep_negative_offset,@function
+store_i32_with_unfolded_gep_negative_offset:
+ .param i32
+ i32.const $push0=, -24
+ i32.add $push1=, $0, $pop0
+ i32.const $push2=, 0
+ i32.store $discard=, 0($pop1), $pop2
+ return
+func_end12:
+ .size store_i32_with_unfolded_gep_negative_offset, func_end12-store_i32_with_unfolded_gep_negative_offset
+
+ .globl store_i32_with_unfolded_offset
+ .type store_i32_with_unfolded_offset,@function
+store_i32_with_unfolded_offset:
+ .param i32
+ i32.const $push0=, 24
+ i32.add $push1=, $0, $pop0
+ i32.const $push2=, 0
+ i32.store $discard=, 0($pop1), $pop2
+ return
+func_end13:
+ .size store_i32_with_unfolded_offset, func_end13-store_i32_with_unfolded_offset
+
+ .globl store_i32_with_unfolded_gep_offset
+ .type store_i32_with_unfolded_gep_offset,@function
+store_i32_with_unfolded_gep_offset:
+ .param i32
+ i32.const $push0=, 24
+ i32.add $push1=, $0, $pop0
+ i32.const $push2=, 0
+ i32.store $discard=, 0($pop1), $pop2
+ return
+func_end14:
+ .size store_i32_with_unfolded_gep_offset, func_end14-store_i32_with_unfolded_gep_offset
+
+ .globl store_i64_with_folded_offset
+ .type store_i64_with_folded_offset,@function
+store_i64_with_folded_offset:
+ .param i32
+ i64.const $push0=, 0
+ i64.store $discard=, 24($0), $pop0
+ return
+func_end15:
+ .size store_i64_with_folded_offset, func_end15-store_i64_with_folded_offset
+
+ .globl store_i64_with_folded_gep_offset
+ .type store_i64_with_folded_gep_offset,@function
+store_i64_with_folded_gep_offset:
+ .param i32
+ i64.const $push0=, 0
+ i64.store $discard=, 24($0), $pop0
+ return
+func_end16:
+ .size store_i64_with_folded_gep_offset, func_end16-store_i64_with_folded_gep_offset
+
+ .globl store_i64_with_unfolded_gep_negative_offset
+ .type store_i64_with_unfolded_gep_negative_offset,@function
+store_i64_with_unfolded_gep_negative_offset:
+ .param i32
+ i32.const $push0=, -24
+ i32.add $push1=, $0, $pop0
+ i64.const $push2=, 0
+ i64.store $discard=, 0($pop1), $pop2
+ return
+func_end17:
+ .size store_i64_with_unfolded_gep_negative_offset, func_end17-store_i64_with_unfolded_gep_negative_offset
+
+ .globl store_i64_with_unfolded_offset
+ .type store_i64_with_unfolded_offset,@function
+store_i64_with_unfolded_offset:
+ .param i32
+ i32.const $push0=, 24
+ i32.add $push1=, $0, $pop0
+ i64.const $push2=, 0
+ i64.store $discard=, 0($pop1), $pop2
+ return
+func_end18:
+ .size store_i64_with_unfolded_offset, func_end18-store_i64_with_unfolded_offset
+
+ .globl store_i64_with_unfolded_gep_offset
+ .type store_i64_with_unfolded_gep_offset,@function
+store_i64_with_unfolded_gep_offset:
+ .param i32
+ i32.const $push0=, 24
+ i32.add $push1=, $0, $pop0
+ i64.const $push2=, 0
+ i64.store $discard=, 0($pop1), $pop2
+ return
+func_end19:
+ .size store_i64_with_unfolded_gep_offset, func_end19-store_i64_with_unfolded_gep_offset
+
+ .globl load_i32_from_numeric_address
+ .type load_i32_from_numeric_address,@function
+load_i32_from_numeric_address:
+ .result i32
+ i32.const $push0=, 0
+ i32.load $push1=, 42($pop0)
+ return $pop1
+func_end20:
+ .size load_i32_from_numeric_address, func_end20-load_i32_from_numeric_address
+
+ .globl load_i32_from_global_address
+ .type load_i32_from_global_address,@function
+load_i32_from_global_address:
+ .result i32
+ i32.const $push0=, 0
+ i32.load $push1=, gv($pop0)
+ return $pop1
+func_end21:
+ .size load_i32_from_global_address, func_end21-load_i32_from_global_address
+
+ .globl store_i32_to_numeric_address
+ .type store_i32_to_numeric_address,@function
+store_i32_to_numeric_address:
+ .local i32
+ i32.const $0=, 0
+ i32.store $discard=, 42($0), $0
+ return
+func_end22:
+ .size store_i32_to_numeric_address, func_end22-store_i32_to_numeric_address
+
+ .globl store_i32_to_global_address
+ .type store_i32_to_global_address,@function
+store_i32_to_global_address:
+ .local i32
+ i32.const $0=, 0
+ i32.store $discard=, gv($0), $0
+ return
+func_end23:
+ .size store_i32_to_global_address, func_end23-store_i32_to_global_address
+
+ .globl load_i8_s_with_folded_offset
+ .type load_i8_s_with_folded_offset,@function
+load_i8_s_with_folded_offset:
+ .param i32
+ .result i32
+ i32.load8_s $push0=, 24($0)
+ return $pop0
+func_end24:
+ .size load_i8_s_with_folded_offset, func_end24-load_i8_s_with_folded_offset
+
+ .globl load_i8_s_with_folded_gep_offset
+ .type load_i8_s_with_folded_gep_offset,@function
+load_i8_s_with_folded_gep_offset:
+ .param i32
+ .result i32
+ i32.load8_s $push0=, 24($0)
+ return $pop0
+func_end25:
+ .size load_i8_s_with_folded_gep_offset, func_end25-load_i8_s_with_folded_gep_offset
+
+ .globl load_i8_u_with_folded_offset
+ .type load_i8_u_with_folded_offset,@function
+load_i8_u_with_folded_offset:
+ .param i32
+ .result i32
+ i32.load8_u $push0=, 24($0)
+ return $pop0
+func_end26:
+ .size load_i8_u_with_folded_offset, func_end26-load_i8_u_with_folded_offset
+
+ .globl load_i8_u_with_folded_gep_offset
+ .type load_i8_u_with_folded_gep_offset,@function
+load_i8_u_with_folded_gep_offset:
+ .param i32
+ .result i32
+ i32.load8_u $push0=, 24($0)
+ return $pop0
+func_end27:
+ .size load_i8_u_with_folded_gep_offset, func_end27-load_i8_u_with_folded_gep_offset
+
+ .globl store_i8_with_folded_offset
+ .type store_i8_with_folded_offset,@function
+store_i8_with_folded_offset:
+ .param i32
+ i32.const $push0=, 0
+ i32.store8 $discard=, 24($0), $pop0
+ return
+func_end28:
+ .size store_i8_with_folded_offset, func_end28-store_i8_with_folded_offset
+
+ .globl store_i8_with_folded_gep_offset
+ .type store_i8_with_folded_gep_offset,@function
+store_i8_with_folded_gep_offset:
+ .param i32
+ i32.const $push0=, 0
+ i32.store8 $discard=, 24($0), $pop0
+ return
+func_end29:
+ .size store_i8_with_folded_gep_offset, func_end29-store_i8_with_folded_gep_offset
+
+ .globl aggregate_load_store
+ .type aggregate_load_store,@function
+aggregate_load_store:
+ .param i32, i32
+ .local i32, i32, i32
+ i32.load $2=, 0($0)
+ i32.load $3=, 4($0)
+ i32.load $4=, 8($0)
+ i32.load $push0=, 12($0)
+ i32.store $discard=, 12($1), $pop0
+ i32.store $discard=, 8($1), $4
+ i32.store $discard=, 4($1), $3
+ i32.store $discard=, 0($1), $2
+ return
+func_end30:
+ .size aggregate_load_store, func_end30-aggregate_load_store
+
+ .globl aggregate_return
+ .type aggregate_return,@function
+aggregate_return:
+ .param i32
+ i32.const $push0=, 0
+ i32.store $push1=, 12($0), $pop0
+ i32.store $push2=, 8($0), $pop1
+ i32.store $push3=, 4($0), $pop2
+ i32.store $discard=, 0($0), $pop3
+ return
+func_end31:
+ .size aggregate_return, func_end31-aggregate_return
+
+ .type gv,@object
+ .bss
+ .globl gv
+ .align 2
+gv:
+ .int32 0
+ .size gv, 4
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/phi.s b/test/llvm_autogenerated/phi.s
new file mode 100644
index 000000000..150336118
--- /dev/null
+++ b/test/llvm_autogenerated/phi.s
@@ -0,0 +1,43 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/phi.ll"
+ .globl test0
+ .type test0,@function
+test0:
+ .param i32
+ .result i32
+ block BB0_2
+ i32.const $push0=, -1
+ i32.gt_s $push1=, $0, $pop0
+ br_if $pop1, BB0_2
+ i32.const $push2=, 3
+ i32.div_s $0=, $0, $pop2
+BB0_2:
+ return $0
+func_end0:
+ .size test0, func_end0-test0
+
+ .globl test1
+ .type test1,@function
+test1:
+ .param i32
+ .result i32
+ .local i32, i32, i32, i32, i32
+ i32.const $2=, 1
+ i32.const $3=, 0
+ copy_local $4=, $2
+ copy_local $5=, $3
+BB1_1:
+ loop BB1_2
+ copy_local $1=, $4
+ copy_local $4=, $3
+ i32.add $5=, $5, $2
+ copy_local $3=, $1
+ i32.lt_s $push0=, $5, $0
+ br_if $pop0, BB1_1
+BB1_2:
+ return $4
+func_end1:
+ .size test1, func_end1-test1
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/reg-stackify.s b/test/llvm_autogenerated/reg-stackify.s
new file mode 100644
index 000000000..ba37b4fe2
--- /dev/null
+++ b/test/llvm_autogenerated/reg-stackify.s
@@ -0,0 +1,92 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/reg-stackify.ll"
+ .globl no0
+ .type no0,@function
+no0:
+ .param i32, i32
+ .result i32
+ i32.load $1=, 0($1)
+ i32.const $push0=, 0
+ i32.store $discard=, 0($0), $pop0
+ return $1
+func_end0:
+ .size no0, func_end0-no0
+
+ .globl no1
+ .type no1,@function
+no1:
+ .param i32, i32
+ .result i32
+ i32.load $1=, 0($1)
+ i32.const $push0=, 0
+ i32.store $discard=, 0($0), $pop0
+ return $1
+func_end1:
+ .size no1, func_end1-no1
+
+ .globl yes0
+ .type yes0,@function
+yes0:
+ .param i32, i32
+ .result i32
+ i32.const $push1=, 0
+ i32.store $discard=, 0($0), $pop1
+ i32.load $push0=, 0($1)
+ return $pop0
+func_end2:
+ .size yes0, func_end2-yes0
+
+ .globl yes1
+ .type yes1,@function
+yes1:
+ .param i32
+ .result i32
+ i32.load $push0=, 0($0)
+ return $pop0
+func_end3:
+ .size yes1, func_end3-yes1
+
+ .globl stack_uses
+ .type stack_uses,@function
+stack_uses:
+ .param i32, i32, i32, i32
+ .result i32
+ .local i32, i32
+ i32.const $5=, 2
+ i32.const $4=, 1
+ block BB4_2
+ i32.lt_s $push0=, $0, $4
+ i32.lt_s $push1=, $1, $5
+ i32.xor $push4=, $pop0, $pop1
+ i32.lt_s $push2=, $2, $4
+ i32.lt_s $push3=, $3, $5
+ i32.xor $push5=, $pop2, $pop3
+ i32.xor $push6=, $pop4, $pop5
+ i32.ne $push7=, $pop6, $4
+ br_if $pop7, BB4_2
+ i32.const $push8=, 0
+ return $pop8
+BB4_2:
+ return $4
+func_end4:
+ .size stack_uses, func_end4-stack_uses
+
+ .globl multiple_uses
+ .type multiple_uses,@function
+multiple_uses:
+ .param i32, i32, i32
+ .local i32
+ i32.load $3=, 0($2)
+ block BB5_3
+ i32.ge_u $push0=, $3, $1
+ br_if $pop0, BB5_3
+ i32.lt_u $push1=, $3, $0
+ br_if $pop1, BB5_3
+ i32.store $discard=, 0($2), $3
+BB5_3:
+ return
+func_end5:
+ .size multiple_uses, func_end5-multiple_uses
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/return-int32.s b/test/llvm_autogenerated/return-int32.s
new file mode 100644
index 000000000..53d8a51fe
--- /dev/null
+++ b/test/llvm_autogenerated/return-int32.s
@@ -0,0 +1,13 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/return-int32.ll"
+ .globl return_i32
+ .type return_i32,@function
+return_i32:
+ .param i32
+ .result i32
+ return $0
+func_end0:
+ .size return_i32, func_end0-return_i32
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/return-void.s b/test/llvm_autogenerated/return-void.s
new file mode 100644
index 000000000..269b6cd6c
--- /dev/null
+++ b/test/llvm_autogenerated/return-void.s
@@ -0,0 +1,11 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/return-void.ll"
+ .globl return_void
+ .type return_void,@function
+return_void:
+ return
+func_end0:
+ .size return_void, func_end0-return_void
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/returned.s b/test/llvm_autogenerated/returned.s
new file mode 100644
index 000000000..d1ffd41b7
--- /dev/null
+++ b/test/llvm_autogenerated/returned.s
@@ -0,0 +1,42 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/returned.ll"
+ .globl _Z3foov
+ .type _Z3foov,@function
+_Z3foov:
+ .result i32
+ i32.const $push0=, 1
+ i32.call $push1=, _Znwm, $pop0
+ i32.call $push2=, _ZN5AppleC1Ev, $pop1
+ return $pop2
+func_end0:
+ .size _Z3foov, func_end0-_Z3foov
+
+ .globl _Z3barPvS_l
+ .type _Z3barPvS_l,@function
+_Z3barPvS_l:
+ .param i32, i32, i32
+ .result i32
+ i32.call $push0=, memcpy, $0, $1, $2
+ return $pop0
+func_end1:
+ .size _Z3barPvS_l, func_end1-_Z3barPvS_l
+
+ .globl test_constant_arg
+ .type test_constant_arg,@function
+test_constant_arg:
+ i32.const $push0=, global
+ i32.call $discard=, returns_arg, $pop0
+ return
+func_end2:
+ .size test_constant_arg, func_end2-test_constant_arg
+
+ .type addr,@object
+ .data
+ .globl addr
+ .align 2
+addr:
+ .int32 global
+ .size addr, 4
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/select.s b/test/llvm_autogenerated/select.s
new file mode 100644
index 000000000..1b2f3a490
--- /dev/null
+++ b/test/llvm_autogenerated/select.s
@@ -0,0 +1,124 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/select.ll"
+ .globl select_i32_bool
+ .type select_i32_bool,@function
+select_i32_bool:
+ .param i32, i32, i32
+ .result i32
+ i32.select $push0=, $0, $1, $2
+ return $pop0
+func_end0:
+ .size select_i32_bool, func_end0-select_i32_bool
+
+ .globl select_i32_eq
+ .type select_i32_eq,@function
+select_i32_eq:
+ .param i32, i32, i32
+ .result i32
+ i32.select $push0=, $0, $2, $1
+ return $pop0
+func_end1:
+ .size select_i32_eq, func_end1-select_i32_eq
+
+ .globl select_i32_ne
+ .type select_i32_ne,@function
+select_i32_ne:
+ .param i32, i32, i32
+ .result i32
+ i32.select $push0=, $0, $1, $2
+ return $pop0
+func_end2:
+ .size select_i32_ne, func_end2-select_i32_ne
+
+ .globl select_i64_bool
+ .type select_i64_bool,@function
+select_i64_bool:
+ .param i32, i64, i64
+ .result i64
+ i64.select $push0=, $0, $1, $2
+ return $pop0
+func_end3:
+ .size select_i64_bool, func_end3-select_i64_bool
+
+ .globl select_i64_eq
+ .type select_i64_eq,@function
+select_i64_eq:
+ .param i32, i64, i64
+ .result i64
+ i64.select $push0=, $0, $2, $1
+ return $pop0
+func_end4:
+ .size select_i64_eq, func_end4-select_i64_eq
+
+ .globl select_i64_ne
+ .type select_i64_ne,@function
+select_i64_ne:
+ .param i32, i64, i64
+ .result i64
+ i64.select $push0=, $0, $1, $2
+ return $pop0
+func_end5:
+ .size select_i64_ne, func_end5-select_i64_ne
+
+ .globl select_f32_bool
+ .type select_f32_bool,@function
+select_f32_bool:
+ .param i32, f32, f32
+ .result f32
+ f32.select $push0=, $0, $1, $2
+ return $pop0
+func_end6:
+ .size select_f32_bool, func_end6-select_f32_bool
+
+ .globl select_f32_eq
+ .type select_f32_eq,@function
+select_f32_eq:
+ .param i32, f32, f32
+ .result f32
+ f32.select $push0=, $0, $2, $1
+ return $pop0
+func_end7:
+ .size select_f32_eq, func_end7-select_f32_eq
+
+ .globl select_f32_ne
+ .type select_f32_ne,@function
+select_f32_ne:
+ .param i32, f32, f32
+ .result f32
+ f32.select $push0=, $0, $1, $2
+ return $pop0
+func_end8:
+ .size select_f32_ne, func_end8-select_f32_ne
+
+ .globl select_f64_bool
+ .type select_f64_bool,@function
+select_f64_bool:
+ .param i32, f64, f64
+ .result f64
+ f64.select $push0=, $0, $1, $2
+ return $pop0
+func_end9:
+ .size select_f64_bool, func_end9-select_f64_bool
+
+ .globl select_f64_eq
+ .type select_f64_eq,@function
+select_f64_eq:
+ .param i32, f64, f64
+ .result f64
+ f64.select $push0=, $0, $2, $1
+ return $pop0
+func_end10:
+ .size select_f64_eq, func_end10-select_f64_eq
+
+ .globl select_f64_ne
+ .type select_f64_ne,@function
+select_f64_ne:
+ .param i32, f64, f64
+ .result f64
+ f64.select $push0=, $0, $1, $2
+ return $pop0
+func_end11:
+ .size select_f64_ne, func_end11-select_f64_ne
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/signext-zeroext.s b/test/llvm_autogenerated/signext-zeroext.s
new file mode 100644
index 000000000..966b02387
--- /dev/null
+++ b/test/llvm_autogenerated/signext-zeroext.s
@@ -0,0 +1,56 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/signext-zeroext.ll"
+ .globl z2s_func
+ .type z2s_func,@function
+z2s_func:
+ .param i32
+ .result i32
+ .local i32
+ i32.const $1=, 24
+ i32.shl $push0=, $0, $1
+ i32.shr_s $push1=, $pop0, $1
+ return $pop1
+func_end0:
+ .size z2s_func, func_end0-z2s_func
+
+ .globl s2z_func
+ .type s2z_func,@function
+s2z_func:
+ .param i32
+ .result i32
+ i32.const $push0=, 255
+ i32.and $push1=, $0, $pop0
+ return $pop1
+func_end1:
+ .size s2z_func, func_end1-s2z_func
+
+ .globl z2s_call
+ .type z2s_call,@function
+z2s_call:
+ .param i32
+ .result i32
+ i32.const $push0=, 255
+ i32.and $push1=, $0, $pop0
+ i32.call $push2=, z2s_func, $pop1
+ return $pop2
+func_end2:
+ .size z2s_call, func_end2-z2s_call
+
+ .globl s2z_call
+ .type s2z_call,@function
+s2z_call:
+ .param i32
+ .result i32
+ .local i32
+ i32.const $1=, 24
+ i32.shl $push0=, $0, $1
+ i32.shr_s $push1=, $pop0, $1
+ i32.call $push2=, s2z_func, $pop1
+ i32.shl $push3=, $pop2, $1
+ i32.shr_s $push4=, $pop3, $1
+ return $pop4
+func_end3:
+ .size s2z_call, func_end3-s2z_call
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/store-results.s b/test/llvm_autogenerated/store-results.s
new file mode 100644
index 000000000..7241f76c1
--- /dev/null
+++ b/test/llvm_autogenerated/store-results.s
@@ -0,0 +1,61 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/store-results.ll"
+ .globl single_block
+ .type single_block,@function
+single_block:
+ .param i32
+ .result i32
+ i32.const $push0=, 0
+ i32.store $push1=, 0($0), $pop0
+ return $pop1
+func_end0:
+ .size single_block, func_end0-single_block
+
+ .globl foo
+ .type foo,@function
+foo:
+ .local i32, i32
+ i32.const $0=, 0
+ copy_local $1=, $0
+BB1_1:
+ loop BB1_2
+ i32.const $push0=, 1
+ i32.add $1=, $1, $pop0
+ i32.store $discard=, pos($0), $0
+ i32.const $push1=, 256
+ i32.ne $push2=, $1, $pop1
+ br_if $pop2, BB1_1
+BB1_2:
+ return
+func_end1:
+ .size foo, func_end1-foo
+
+ .globl bar
+ .type bar,@function
+bar:
+ .local i32, f32
+ f32.const $1=, 0x0p0
+ i32.const $0=, 0
+BB2_1:
+ loop BB2_2
+ i32.store $discard=, pos($0), $0
+ f32.const $push0=, 0x1p0
+ f32.add $1=, $1, $pop0
+ f32.const $push1=, 0x1p8
+ f32.ne $push2=, $1, $pop1
+ br_if $pop2, BB2_1
+BB2_2:
+ return
+func_end2:
+ .size bar, func_end2-bar
+
+ .type pos,@object
+ .bss
+ .globl pos
+ .align 2
+pos:
+ .zero 12
+ .size pos, 12
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/store-trunc.s b/test/llvm_autogenerated/store-trunc.s
new file mode 100644
index 000000000..2940a2a71
--- /dev/null
+++ b/test/llvm_autogenerated/store-trunc.s
@@ -0,0 +1,49 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/store-trunc.ll"
+ .globl trunc_i8_i32
+ .type trunc_i8_i32,@function
+trunc_i8_i32:
+ .param i32, i32
+ i32.store8 $discard=, 0($0), $1
+ return
+func_end0:
+ .size trunc_i8_i32, func_end0-trunc_i8_i32
+
+ .globl trunc_i16_i32
+ .type trunc_i16_i32,@function
+trunc_i16_i32:
+ .param i32, i32
+ i32.store16 $discard=, 0($0), $1
+ return
+func_end1:
+ .size trunc_i16_i32, func_end1-trunc_i16_i32
+
+ .globl trunc_i8_i64
+ .type trunc_i8_i64,@function
+trunc_i8_i64:
+ .param i32, i64
+ i64.store8 $discard=, 0($0), $1
+ return
+func_end2:
+ .size trunc_i8_i64, func_end2-trunc_i8_i64
+
+ .globl trunc_i16_i64
+ .type trunc_i16_i64,@function
+trunc_i16_i64:
+ .param i32, i64
+ i64.store16 $discard=, 0($0), $1
+ return
+func_end3:
+ .size trunc_i16_i64, func_end3-trunc_i16_i64
+
+ .globl trunc_i32_i64
+ .type trunc_i32_i64,@function
+trunc_i32_i64:
+ .param i32, i64
+ i64.store32 $discard=, 0($0), $1
+ return
+func_end4:
+ .size trunc_i32_i64, func_end4-trunc_i32_i64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/store.s b/test/llvm_autogenerated/store.s
new file mode 100644
index 000000000..ab5b90af0
--- /dev/null
+++ b/test/llvm_autogenerated/store.s
@@ -0,0 +1,40 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/store.ll"
+ .globl sti32
+ .type sti32,@function
+sti32:
+ .param i32, i32
+ i32.store $discard=, 0($0), $1
+ return
+func_end0:
+ .size sti32, func_end0-sti32
+
+ .globl sti64
+ .type sti64,@function
+sti64:
+ .param i32, i64
+ i64.store $discard=, 0($0), $1
+ return
+func_end1:
+ .size sti64, func_end1-sti64
+
+ .globl stf32
+ .type stf32,@function
+stf32:
+ .param i32, f32
+ f32.store $discard=, 0($0), $1
+ return
+func_end2:
+ .size stf32, func_end2-stf32
+
+ .globl stf64
+ .type stf64,@function
+stf64:
+ .param i32, f64
+ f64.store $discard=, 0($0), $1
+ return
+func_end3:
+ .size stf64, func_end3-stf64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/switch.s b/test/llvm_autogenerated/switch.s
new file mode 100644
index 000000000..38cadc71b
--- /dev/null
+++ b/test/llvm_autogenerated/switch.s
@@ -0,0 +1,79 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/switch.ll"
+ .globl bar32
+ .type bar32,@function
+bar32:
+ .param i32
+ block BB0_8
+ i32.const $push0=, 23
+ i32.gt_u $push1=, $0, $pop0
+ br_if $pop1, BB0_8
+ block BB0_7
+ block BB0_6
+ block BB0_5
+ block BB0_4
+ block BB0_3
+ block BB0_2
+ tableswitch $0, BB0_2, BB0_2, BB0_2, BB0_2, BB0_2, BB0_2, BB0_2, BB0_2, BB0_3, BB0_3, BB0_3, BB0_3, BB0_3, BB0_3, BB0_3, BB0_3, BB0_4, BB0_4, BB0_4, BB0_4, BB0_4, BB0_4, BB0_5, BB0_6, BB0_7
+BB0_2:
+ call foo0
+ br BB0_8
+BB0_3:
+ call foo1
+ br BB0_8
+BB0_4:
+ call foo2
+ br BB0_8
+BB0_5:
+ call foo3
+ br BB0_8
+BB0_6:
+ call foo4
+ br BB0_8
+BB0_7:
+ call foo5
+BB0_8:
+ return
+func_end0:
+ .size bar32, func_end0-bar32
+
+ .globl bar64
+ .type bar64,@function
+bar64:
+ .param i64
+ block BB1_8
+ i64.const $push1=, 23
+ i64.gt_u $push2=, $0, $pop1
+ br_if $pop2, BB1_8
+ block BB1_7
+ block BB1_6
+ block BB1_5
+ block BB1_4
+ block BB1_3
+ block BB1_2
+ i32.wrap/i64 $push0=, $0
+ tableswitch $pop0, BB1_2, BB1_2, BB1_2, BB1_2, BB1_2, BB1_2, BB1_2, BB1_2, BB1_3, BB1_3, BB1_3, BB1_3, BB1_3, BB1_3, BB1_3, BB1_3, BB1_4, BB1_4, BB1_4, BB1_4, BB1_4, BB1_4, BB1_5, BB1_6, BB1_7
+BB1_2:
+ call foo0
+ br BB1_8
+BB1_3:
+ call foo1
+ br BB1_8
+BB1_4:
+ call foo2
+ br BB1_8
+BB1_5:
+ call foo3
+ br BB1_8
+BB1_6:
+ call foo4
+ br BB1_8
+BB1_7:
+ call foo5
+BB1_8:
+ return
+func_end1:
+ .size bar64, func_end1-bar64
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/unreachable.s b/test/llvm_autogenerated/unreachable.s
new file mode 100644
index 000000000..4ca6e5585
--- /dev/null
+++ b/test/llvm_autogenerated/unreachable.s
@@ -0,0 +1,29 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/unreachable.ll"
+ .globl f1
+ .type f1,@function
+f1:
+ .result i32
+ call abort
+ unreachable
+func_end0:
+ .size f1, func_end0-f1
+
+ .globl f2
+ .type f2,@function
+f2:
+ unreachable
+ return
+func_end1:
+ .size f2, func_end1-f2
+
+ .globl f3
+ .type f3,@function
+f3:
+ unreachable
+ return
+func_end2:
+ .size f3, func_end2-f3
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/unused-argument.s b/test/llvm_autogenerated/unused-argument.s
new file mode 100644
index 000000000..b0024df5a
--- /dev/null
+++ b/test/llvm_autogenerated/unused-argument.s
@@ -0,0 +1,30 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/unused-argument.ll"
+ .globl unused_first
+ .type unused_first,@function
+unused_first:
+ .param i32, i32
+ .result i32
+ return $1
+func_end0:
+ .size unused_first, func_end0-unused_first
+
+ .globl unused_second
+ .type unused_second,@function
+unused_second:
+ .param i32, i32
+ .result i32
+ return $0
+func_end1:
+ .size unused_second, func_end1-unused_second
+
+ .globl call_something
+ .type call_something,@function
+call_something:
+ i32.call $discard=, return_something
+ return
+func_end2:
+ .size call_something, func_end2-call_something
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/userstack.s b/test/llvm_autogenerated/userstack.s
new file mode 100644
index 000000000..de7af37f2
--- /dev/null
+++ b/test/llvm_autogenerated/userstack.s
@@ -0,0 +1,79 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/userstack.ll"
+ .globl alloca32
+ .type alloca32,@function
+alloca32:
+ .local i32, i32, i32, i32
+ i32.const $0=, __stack_pointer
+ i32.load $0=, 0($0)
+ i32.const $1=, 16
+ i32.sub $3=, $0, $1
+ i32.const $1=, __stack_pointer
+ i32.store $3=, 0($1), $3
+ i32.const $push0=, 0
+ i32.store $discard=, 12($3), $pop0
+ i32.const $2=, 16
+ i32.add $3=, $3, $2
+ i32.const $2=, __stack_pointer
+ i32.store $3=, 0($2), $3
+ return
+func_end0:
+ .size alloca32, func_end0-alloca32
+
+ .globl alloca3264
+ .type alloca3264,@function
+alloca3264:
+ .local i32, i32, i32, i32
+ i32.const $0=, __stack_pointer
+ i32.load $0=, 0($0)
+ i32.const $1=, 16
+ i32.sub $3=, $0, $1
+ i32.const $1=, __stack_pointer
+ i32.store $3=, 0($1), $3
+ i32.const $push0=, 0
+ i32.store $discard=, 12($3), $pop0
+ i64.const $push1=, 0
+ i64.store $discard=, 0($3), $pop1
+ i32.const $2=, 16
+ i32.add $3=, $3, $2
+ i32.const $2=, __stack_pointer
+ i32.store $3=, 0($2), $3
+ return
+func_end1:
+ .size alloca3264, func_end1-alloca3264
+
+ .globl allocarray
+ .type allocarray,@function
+allocarray:
+ .local i32, i32, i32, i32, i32, i32
+ i32.const $1=, __stack_pointer
+ i32.load $1=, 0($1)
+ i32.const $2=, 32
+ i32.sub $5=, $1, $2
+ i32.const $2=, __stack_pointer
+ i32.store $5=, 0($2), $5
+ i32.const $push0=, 1
+ i32.store $0=, 12($5), $pop0
+ i32.const $push1=, 4
+ i32.const $4=, 12
+ i32.add $4=, $5, $4
+ i32.add $push2=, $4, $pop1
+ i32.store $discard=, 0($pop2), $0
+ i32.const $3=, 32
+ i32.add $5=, $5, $3
+ i32.const $3=, __stack_pointer
+ i32.store $5=, 0($3), $5
+ return
+func_end2:
+ .size allocarray, func_end2-allocarray
+
+ .globl dynamic_alloca
+ .type dynamic_alloca,@function
+dynamic_alloca:
+ .param i32
+ return
+func_end3:
+ .size dynamic_alloca, func_end3-dynamic_alloca
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/varargs.s b/test/llvm_autogenerated/varargs.s
new file mode 100644
index 000000000..4a1316816
--- /dev/null
+++ b/test/llvm_autogenerated/varargs.s
@@ -0,0 +1,96 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/varargs.ll"
+ .globl end
+ .type end,@function
+end:
+ .param i32
+ return
+func_end0:
+ .size end, func_end0-end
+
+ .globl copy
+ .type copy,@function
+copy:
+ .param i32, i32
+ i32.load $push0=, 0($1)
+ i32.store $discard=, 0($0), $pop0
+ return
+func_end1:
+ .size copy, func_end1-copy
+
+ .globl arg_i8
+ .type arg_i8,@function
+arg_i8:
+ .param i32
+ .result i32
+ .local i32
+ i32.load $1=, 0($0)
+ i32.const $push0=, 4
+ i32.add $push1=, $1, $pop0
+ i32.store $discard=, 0($0), $pop1
+ i32.load $push2=, 0($1)
+ return $pop2
+func_end2:
+ .size arg_i8, func_end2-arg_i8
+
+ .globl arg_i32
+ .type arg_i32,@function
+arg_i32:
+ .param i32
+ .result i32
+ .local i32
+ i32.load $push0=, 0($0)
+ i32.const $push1=, 3
+ i32.add $push2=, $pop0, $pop1
+ i32.const $push3=, -4
+ i32.and $1=, $pop2, $pop3
+ i32.const $push4=, 4
+ i32.add $push5=, $1, $pop4
+ i32.store $discard=, 0($0), $pop5
+ i32.load $push6=, 0($1)
+ return $pop6
+func_end3:
+ .size arg_i32, func_end3-arg_i32
+
+ .globl arg_i128
+ .type arg_i128,@function
+arg_i128:
+ .param i32, i32
+ .local i32, i32, i32, i64
+ i32.load $push0=, 0($1)
+ i32.const $push1=, 7
+ i32.add $push2=, $pop0, $pop1
+ i32.const $push3=, -8
+ i32.and $2=, $pop2, $pop3
+ i32.const $3=, 8
+ i32.add $push4=, $2, $3
+ i32.store $4=, 0($1), $pop4
+ i64.load $5=, 0($2)
+ i32.const $push5=, 16
+ i32.add $push6=, $2, $pop5
+ i32.store $discard=, 0($1), $pop6
+ i32.add $push8=, $0, $3
+ i64.load $push7=, 0($4)
+ i64.store $discard=, 0($pop8), $pop7
+ i64.store $discard=, 0($0), $5
+ return
+func_end4:
+ .size arg_i128, func_end4-arg_i128
+
+ .globl caller_none
+ .type caller_none,@function
+caller_none:
+ call callee
+ return
+func_end5:
+ .size caller_none, func_end5-caller_none
+
+ .globl caller_some
+ .type caller_some,@function
+caller_some:
+ return
+func_end6:
+ .size caller_some, func_end6-caller_some
+
+
+ .section ".note.GNU-stack","",@progbits
diff --git a/test/llvm_autogenerated/vtable.s b/test/llvm_autogenerated/vtable.s
new file mode 100644
index 000000000..cc56a884b
--- /dev/null
+++ b/test/llvm_autogenerated/vtable.s
@@ -0,0 +1,206 @@
+ .text
+ .file "/s/llvm/llvm/test/CodeGen/WebAssembly/vtable.ll"
+ .globl _ZN1A3fooEv
+ .type _ZN1A3fooEv,@function
+_ZN1A3fooEv:
+ .param i32
+ i32.const $push0=, 0
+ i32.const $push1=, 2
+ i32.store $discard=, g($pop0), $pop1
+ return
+func_end0:
+ .size _ZN1A3fooEv, func_end0-_ZN1A3fooEv
+
+ .globl _ZN1B3fooEv
+ .type _ZN1B3fooEv,@function
+_ZN1B3fooEv:
+ .param i32
+ i32.const $push0=, 0
+ i32.const $push1=, 4
+ i32.store $discard=, g($pop0), $pop1
+ return
+func_end1:
+ .size _ZN1B3fooEv, func_end1-_ZN1B3fooEv
+
+ .globl _ZN1C3fooEv
+ .type _ZN1C3fooEv,@function
+_ZN1C3fooEv:
+ .param i32
+ i32.const $push0=, 0
+ i32.const $push1=, 6
+ i32.store $discard=, g($pop0), $pop1
+ return
+func_end2:
+ .size _ZN1C3fooEv, func_end2-_ZN1C3fooEv
+
+ .globl _ZN1D3fooEv
+ .type _ZN1D3fooEv,@function
+_ZN1D3fooEv:
+ .param i32
+ i32.const $push0=, 0
+ i32.const $push1=, 8
+ i32.store $discard=, g($pop0), $pop1
+ return
+func_end3:
+ .size _ZN1D3fooEv, func_end3-_ZN1D3fooEv
+
+ .weak _ZN1AD0Ev
+ .type _ZN1AD0Ev,@function
+_ZN1AD0Ev:
+ .param i32
+ call _ZdlPv, $0
+ return
+func_end4:
+ .size _ZN1AD0Ev, func_end4-_ZN1AD0Ev
+
+ .weak _ZN1BD0Ev
+ .type _ZN1BD0Ev,@function
+_ZN1BD0Ev:
+ .param i32
+ call _ZdlPv, $0
+ return
+func_end5:
+ .size _ZN1BD0Ev, func_end5-_ZN1BD0Ev
+
+ .weak _ZN1CD0Ev
+ .type _ZN1CD0Ev,@function
+_ZN1CD0Ev:
+ .param i32
+ call _ZdlPv, $0
+ return
+func_end6:
+ .size _ZN1CD0Ev, func_end6-_ZN1CD0Ev
+
+ .weak _ZN1AD2Ev
+ .type _ZN1AD2Ev,@function
+_ZN1AD2Ev:
+ .param i32
+ .result i32
+ return $0
+func_end7:
+ .size _ZN1AD2Ev, func_end7-_ZN1AD2Ev
+
+ .weak _ZN1DD0Ev
+ .type _ZN1DD0Ev,@function
+_ZN1DD0Ev:
+ .param i32
+ call _ZdlPv, $0
+ return
+func_end8:
+ .size _ZN1DD0Ev, func_end8-_ZN1DD0Ev
+
+ .type _ZTS1A,@object
+ .section .rodata,"a",@progbits
+ .globl _ZTS1A
+_ZTS1A:
+ .asciz "1A"
+ .size _ZTS1A, 3
+
+ .type _ZTS1B,@object
+ .globl _ZTS1B
+_ZTS1B:
+ .asciz "1B"
+ .size _ZTS1B, 3
+
+ .type _ZTS1C,@object
+ .globl _ZTS1C
+_ZTS1C:
+ .asciz "1C"
+ .size _ZTS1C, 3
+
+ .type _ZTS1D,@object
+ .globl _ZTS1D
+_ZTS1D:
+ .asciz "1D"
+ .size _ZTS1D, 3
+
+ .type _ZTV1A,@object
+ .section .data.rel.ro,"aw",@progbits
+ .globl _ZTV1A
+ .align 2
+_ZTV1A:
+ .int32 0
+ .int32 _ZTI1A
+ .int32 _ZN1AD2Ev
+ .int32 _ZN1AD0Ev
+ .int32 _ZN1A3fooEv
+ .size _ZTV1A, 20
+
+ .type _ZTV1B,@object
+ .globl _ZTV1B
+ .align 2
+_ZTV1B:
+ .int32 0
+ .int32 _ZTI1B
+ .int32 _ZN1AD2Ev
+ .int32 _ZN1BD0Ev
+ .int32 _ZN1B3fooEv
+ .size _ZTV1B, 20
+
+ .type _ZTV1C,@object
+ .globl _ZTV1C
+ .align 2
+_ZTV1C:
+ .int32 0
+ .int32 _ZTI1C
+ .int32 _ZN1AD2Ev
+ .int32 _ZN1CD0Ev
+ .int32 _ZN1C3fooEv
+ .size _ZTV1C, 20
+
+ .type _ZTV1D,@object
+ .globl _ZTV1D
+ .align 2
+_ZTV1D:
+ .int32 0
+ .int32 _ZTI1D
+ .int32 _ZN1AD2Ev
+ .int32 _ZN1DD0Ev
+ .int32 _ZN1D3fooEv
+ .size _ZTV1D, 20
+
+ .type _ZTI1A,@object
+ .globl _ZTI1A
+ .align 3
+_ZTI1A:
+ .int32 _ZTVN10__cxxabiv117__class_type_infoE+8
+ .int32 _ZTS1A
+ .size _ZTI1A, 8
+
+ .type _ZTI1B,@object
+ .globl _ZTI1B
+ .align 3
+_ZTI1B:
+ .int32 _ZTVN10__cxxabiv120__si_class_type_infoE+8
+ .int32 _ZTS1B
+ .int32 _ZTI1A
+ .size _ZTI1B, 12
+
+ .type _ZTI1C,@object
+ .globl _ZTI1C
+ .align 3
+_ZTI1C:
+ .int32 _ZTVN10__cxxabiv120__si_class_type_infoE+8
+ .int32 _ZTS1C
+ .int32 _ZTI1A
+ .size _ZTI1C, 12
+
+ .type _ZTI1D,@object
+ .globl _ZTI1D
+ .align 3
+_ZTI1D:
+ .int32 _ZTVN10__cxxabiv120__si_class_type_infoE+8
+ .int32 _ZTS1D
+ .int32 _ZTI1B
+ .size _ZTI1D, 12
+
+ .type g,@object
+ .bss
+ .globl g
+ .align 2
+g:
+ .int32 0
+ .size g, 4
+
+
+ .section ".note.GNU-stack","",@progbits