blob: 2269aedc4d20228b06aefae22b8f0c96ef7c3ac1 [file] [log] [blame] [edit]
;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.
;; RUN: wasm-opt %s -all --remove-relaxed-simd -S -o - | filecheck %s
(module
;; CHECK: (import "" "" (func $effect (type $1) (result v128)))
(import "" "" (func $effect (result v128)))
;; CHECK: (func $unary (type $0) (param $0 v128)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (v128.not
;; CHECK-NEXT: (local.get $0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $unary (param v128)
(drop (i32x4.relaxed_trunc_f32x4_s (local.get 0)))
(drop (i32x4.relaxed_trunc_f32x4_u (local.get 0)))
(drop (i32x4.relaxed_trunc_f64x2_s_zero (local.get 0)))
(drop (i32x4.relaxed_trunc_f64x2_u_zero (local.get 0)))
;; Normal SIMD instruction
(drop (v128.not (local.get 0)))
)
;; CHECK: (func $binary (type $2) (param $0 v128) (param $1 v128)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (v128.xor
;; CHECK-NEXT: (local.get $0)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $binary (param v128 v128)
(drop (i8x16.relaxed_swizzle (local.get 0) (local.get 1)))
(drop (f32x4.relaxed_min (local.get 0) (local.get 1)))
(drop (f32x4.relaxed_max (local.get 0) (local.get 1)))
(drop (f64x2.relaxed_min (local.get 0) (local.get 1)))
(drop (f64x2.relaxed_max (local.get 0) (local.get 1)))
(drop (i16x8.relaxed_q15mulr_s (local.get 0) (local.get 1)))
(drop (i16x8.dot_i8x16_i7x16_s (local.get 0) (local.get 1)))
;; Normal SIMD instruction
(drop (v128.xor (local.get 0) (local.get 1)))
)
;; CHECK: (func $ternary (type $3) (param $0 v128) (param $1 v128) (param $2 v128)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (v128.bitselect
;; CHECK-NEXT: (local.get $0)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: (local.get $2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $ternary (param v128 v128 v128)
(drop (i32x4.dot_i8x16_i7x16_add_s (local.get 0) (local.get 1) (local.get 2)))
(drop (f16x8.relaxed_madd (local.get 0) (local.get 1) (local.get 2)))
(drop (f16x8.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2)))
(drop (f32x4.relaxed_madd (local.get 0) (local.get 1) (local.get 2)))
(drop (f32x4.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2)))
(drop (f64x2.relaxed_madd (local.get 0) (local.get 1) (local.get 2)))
(drop (f64x2.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2)))
;; Normal SIMD instruction
(drop (v128.bitselect (local.get 0) (local.get 1) (local.get 2)))
)
;; CHECK: (func $refinalize (type $0) (param $0 v128)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block $l
;; CHECK-NEXT: (block
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $refinalize (param v128)
(drop
;; This block should become unreachable.
(block $l (result v128)
(i32x4.relaxed_trunc_f32x4_s (local.get 0))
)
)
)
;; CHECK: (func $effects (type $0) (param $0 v128)
;; CHECK-NEXT: (local $1 v128)
;; CHECK-NEXT: (local $2 v128)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (local.set $1
;; CHECK-NEXT: (call $effect)
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.set $2
;; CHECK-NEXT: (block (result v128)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (call $effect)
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $effects (param v128)
(drop
(f16x8.relaxed_madd
(call $effect)
(local.get 0)
(block (result v128)
(drop
(call $effect)
)
(local.get 0)
)
)
)
)
)