# RUN: llvm-mc -triple=wasm32-unknown-unknown < %s | FileCheck %s .text .type test0,@function test0: # Test all types: .param i32, i64 .local f32, f64 #, i8x16, i16x8, i32x4, f32x4 # Explicit getlocal/setlocal: get_local $push0=, 2 set_local 2, $pop0= # Implicit locals & immediates: i32.const $0=, -1 f64.const $3=, 0x1.999999999999ap1 # Indirect addressing: get_local $push1=, 0 f64.store 0($pop1), $3 # Loops, conditionals, binary ops, calls etc: block i32.const $push2=, 1 get_local $push7=, 0 i32.ge_s $push0=, $pop2, $pop7 br_if 0, $pop0 # 0: down to label0 .LBB0_1: loop # label1: call $drop=, something1@FUNCTION i64.const $push10=, 1234 i32.call $push8=, something2@FUNCTION, $pop10 i32.const $push11=, 0 call_indirect $pop11 i32.const $push5=, 1 i32.add $push4=, $pop8, $pop5 tee_local $push3=, 0, $pop4 get_local $push9=, 0 i32.lt_s $push1=, $pop3, $pop9 br_if 0, $pop1 # 0: up to label1 .LBB0_2: end_loop end_block # label0: end_function # CHECK: .text # CHECK-LABEL: test0: # CHECK-NEXT: .param i32, i64 # CHECK-NEXT: .local f32, f64 # CHECK-NEXT: get_local $push0=, 2 # CHECK-NEXT: set_local 2, $pop0 # CHECK-NEXT: i32.const $0=, -1 # CHECK-NEXT: f64.const $3=, 0x1.999999999999ap1 # CHECK-NEXT: get_local $push1=, 0 # CHECK-NEXT: f64.store 0($pop1):p2align=0, $3 # CHECK-NEXT: block # CHECK-NEXT: i32.const $push2=, 1 # CHECK-NEXT: get_local $push7=, 0 # CHECK-NEXT: i32.ge_s $push0=, $pop2, $pop7 # CHECK-NEXT: br_if 0, $pop0 # 0: down to label0 # CHECK-NEXT: .LBB0_1: # CHECK-NEXT: loop # label1: # CHECK-NEXT: call something1@FUNCTION # CHECK-NEXT: i64.const $push10=, 1234 # CHECK-NEXT: i32.call $push8=, something2@FUNCTION # CHECK-NEXT: i32.const $push11=, 0 # CHECK-NEXT: call_indirect # CHECK-NEXT: i32.const $push5=, 1 # CHECK-NEXT: i32.add $push4=, $pop8, $pop5 # CHECK-NEXT: tee_local $push3=, 0, $pop4 # CHECK-NEXT: get_local $push9=, 0 # CHECK-NEXT: i32.lt_s $push1=, $pop3, $pop9 # CHECK-NEXT: br_if 0, $pop1 # 0: up to label1 # CHECK-NEXT: .LBB0_2: # CHECK-NEXT: end_loop # CHECK-NEXT: end_block # label0: # CHECK-NEXT: end_function