| ;; 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) |
| ) |
| ) |
| ) |
| ) |
| ) |