| ;; expected = R"---(;; This is a polyglot C++/WAT file. |
| ;; Comment lines are ignored and not expected in the disassembler output. |
| (module |
| (memory $memory0 0) |
| ;; Function with SIMD type and constant. |
| (func $func0 (result v128) |
| ;; We always print v128 constants as hexadecimal 4*i32. |
| v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 |
| ) |
| (func $func1 |
| ;; SIMD load and stores. |
| i32.const 0 |
| v128.load |
| drop |
| i32.const 0 |
| ;; Non-default memargs. |
| v128.load8x8_s offset=3 |
| drop |
| i32.const 0 |
| v128.load8x8_u align=2 |
| drop |
| i32.const 0 |
| v128.load16x4_s offset=3 align=4 |
| drop |
| i32.const 0 |
| v128.load16x4_u |
| drop |
| i32.const 0 |
| v128.load32x2_s |
| drop |
| i32.const 0 |
| v128.load32x2_u |
| drop |
| i32.const 0 |
| v128.load8_splat |
| drop |
| i32.const 0 |
| v128.load16_splat |
| drop |
| i32.const 0 |
| v128.load32_splat |
| drop |
| i32.const 0 |
| v128.load64_splat |
| drop |
| i32.const 0 |
| v128.load32_zero |
| drop |
| i32.const 0 |
| v128.load64_zero |
| drop |
| i32.const 0 |
| ;; Call function instead of repeating large immediate(s) all the time. |
| call $func0 |
| v128.store |
| i32.const 0 |
| call $func0 |
| v128.load8_lane 0 |
| drop |
| i32.const 0 |
| call $func0 |
| v128.load16_lane 1 |
| drop |
| i32.const 0 |
| call $func0 |
| v128.load32_lane 3 |
| drop |
| i32.const 0 |
| call $func0 |
| v128.load64_lane 0 |
| drop |
| i32.const 0 |
| call $func0 |
| v128.store16_lane 0 |
| i32.const 0 |
| call $func0 |
| v128.store32_lane 1 |
| i32.const 0 |
| call $func0 |
| v128.store64_lane 0 |
| ;; Other SIMD instructions. |
| call $func0 |
| call $func0 |
| i8x16.shuffle 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 |
| call $func0 |
| i8x16.swizzle |
| drop |
| ;; splat |
| i32.const 0 |
| i8x16.splat |
| drop |
| i32.const 0 |
| i16x8.splat |
| drop |
| i32.const 0 |
| i32x4.splat |
| drop |
| i64.const 0 |
| i64x2.splat |
| drop |
| f32.const 0.0 |
| f32x4.splat |
| drop |
| f64.const 0.0 |
| f64x2.splat |
| drop |
| ;; extract_lane and replace_lane |
| call $func0 |
| i8x16.extract_lane_s 0 |
| drop |
| call $func0 |
| i8x16.extract_lane_u 0 |
| drop |
| call $func0 |
| i16x8.extract_lane_s 0 |
| drop |
| call $func0 |
| i16x8.extract_lane_u 0 |
| drop |
| call $func0 |
| i32x4.extract_lane 0 |
| drop |
| call $func0 |
| i64x2.extract_lane 0 |
| drop |
| call $func0 |
| f32x4.extract_lane 0 |
| drop |
| call $func0 |
| f64x2.extract_lane 0 |
| drop |
| call $func0 |
| i32.const 0 |
| i8x16.replace_lane 0 |
| i32.const 0 |
| i16x8.replace_lane 0 |
| i32.const 0 |
| i32x4.replace_lane 0 |
| i64.const 0 |
| i64x2.replace_lane 0 |
| f32.const 0.0 |
| f32x4.replace_lane 0 |
| f64.const 0.0 |
| f64x2.replace_lane 0 |
| ;; Comparisons: i8 |
| call $func0 |
| i8x16.eq |
| call $func0 |
| i8x16.ne |
| call $func0 |
| i8x16.lt_s |
| call $func0 |
| i8x16.lt_u |
| call $func0 |
| i8x16.gt_s |
| call $func0 |
| i8x16.gt_u |
| call $func0 |
| i8x16.le_s |
| call $func0 |
| i8x16.le_u |
| call $func0 |
| i8x16.ge_s |
| call $func0 |
| i8x16.ge_u |
| ;; Comparisons: i16 |
| call $func0 |
| i16x8.eq |
| call $func0 |
| i16x8.ne |
| call $func0 |
| i16x8.lt_s |
| call $func0 |
| i16x8.lt_u |
| call $func0 |
| i16x8.gt_s |
| call $func0 |
| i16x8.gt_u |
| call $func0 |
| i16x8.le_s |
| call $func0 |
| i16x8.le_u |
| call $func0 |
| i16x8.ge_s |
| call $func0 |
| i16x8.ge_u |
| ;; Comparisons: i32 |
| call $func0 |
| i32x4.eq |
| call $func0 |
| i32x4.ne |
| call $func0 |
| i32x4.lt_s |
| call $func0 |
| i32x4.lt_u |
| call $func0 |
| i32x4.gt_s |
| call $func0 |
| i32x4.gt_u |
| call $func0 |
| i32x4.le_s |
| call $func0 |
| i32x4.le_u |
| call $func0 |
| i32x4.ge_s |
| call $func0 |
| i32x4.ge_u |
| ;; Comparisons: i64 |
| call $func0 |
| i64x2.eq |
| call $func0 |
| i64x2.ne |
| call $func0 |
| i64x2.lt_s |
| call $func0 |
| i64x2.gt_s |
| call $func0 |
| i64x2.le_s |
| call $func0 |
| i64x2.ge_s |
| ;; Comparisons: f32 |
| call $func0 |
| f32x4.eq |
| call $func0 |
| f32x4.ne |
| call $func0 |
| f32x4.lt |
| call $func0 |
| f32x4.gt |
| call $func0 |
| f32x4.le |
| call $func0 |
| f32x4.ge |
| ;; Comparisons: f64 |
| call $func0 |
| f64x2.eq |
| call $func0 |
| f64x2.ne |
| call $func0 |
| f64x2.lt |
| call $func0 |
| f64x2.gt |
| call $func0 |
| f64x2.le |
| call $func0 |
| f64x2.ge |
| ;; Bitwise operations. |
| v128.not |
| call $func0 |
| v128.and |
| call $func0 |
| v128.andnot |
| call $func0 |
| v128.or |
| call $func0 |
| v128.xor |
| call $func0 |
| call $func0 |
| v128.bitselect |
| v128.any_true |
| drop |
| ;; Floating-point demotion and promotions. |
| call $func0 |
| f32x4.demote_f64x2_zero |
| f64x2.promote_low_f32x4 |
| ;; i8 operations. |
| i8x16.abs |
| i8x16.neg |
| i8x16.popcnt |
| i8x16.all_true |
| drop |
| call $func0 |
| i8x16.bitmask |
| drop |
| call $func0 |
| call $func0 |
| i8x16.narrow_i16x8_s |
| call $func0 |
| i8x16.narrow_i16x8_u |
| i32.const 0 |
| i8x16.shl |
| i32.const 0 |
| i8x16.shr_s |
| i32.const 0 |
| i8x16.shr_u |
| call $func0 |
| i8x16.add |
| call $func0 |
| i8x16.add_sat_s |
| call $func0 |
| i8x16.add_sat_u |
| call $func0 |
| i8x16.sub |
| call $func0 |
| i8x16.sub_sat_s |
| call $func0 |
| i8x16.sub_sat_u |
| call $func0 |
| i8x16.min_s |
| call $func0 |
| i8x16.min_u |
| call $func0 |
| i8x16.max_s |
| call $func0 |
| i8x16.max_u |
| call $func0 |
| i8x16.avgr_u |
| ;; i16 operations. |
| i16x8.abs |
| i16x8.neg |
| call $func0 |
| i16x8.q15mulr_sat_s |
| i16x8.all_true |
| drop |
| call $func0 |
| i16x8.bitmask |
| drop |
| call $func0 |
| call $func0 |
| i16x8.narrow_i32x4_s |
| call $func0 |
| i16x8.narrow_i32x4_u |
| i16x8.extend_low_i8x16_s |
| i16x8.extend_high_i8x16_s |
| i16x8.extend_low_i8x16_u |
| i16x8.extend_high_i8x16_u |
| i32.const 0 |
| i16x8.shl |
| i32.const 0 |
| i16x8.shr_s |
| i32.const 0 |
| i16x8.shr_u |
| call $func0 |
| i16x8.add |
| call $func0 |
| i16x8.add_sat_s |
| call $func0 |
| i16x8.add_sat_u |
| call $func0 |
| i16x8.sub |
| call $func0 |
| i16x8.sub_sat_s |
| call $func0 |
| i16x8.sub_sat_u |
| call $func0 |
| i16x8.mul |
| call $func0 |
| i16x8.min_s |
| call $func0 |
| i16x8.min_u |
| call $func0 |
| i16x8.max_s |
| call $func0 |
| i16x8.max_u |
| call $func0 |
| i16x8.avgr_u |
| ;; i32 operations. |
| i32x4.abs |
| i32x4.neg |
| i32x4.all_true |
| drop |
| call $func0 |
| i32x4.bitmask |
| drop |
| call $func0 |
| i32x4.extend_low_i16x8_s |
| i32x4.extend_high_i16x8_s |
| i32x4.extend_low_i16x8_u |
| i32x4.extend_high_i16x8_u |
| i32.const 0 |
| i32x4.shl |
| i32.const 0 |
| i32x4.shr_s |
| i32.const 0 |
| i32x4.shr_u |
| call $func0 |
| i32x4.add |
| call $func0 |
| i32x4.sub |
| call $func0 |
| i32x4.mul |
| call $func0 |
| i32x4.min_s |
| call $func0 |
| i32x4.min_u |
| call $func0 |
| i32x4.max_s |
| call $func0 |
| i32x4.max_u |
| call $func0 |
| i32x4.dot_i16x8_s |
| ;; i64 operations. |
| i64x2.abs |
| i64x2.neg |
| i64x2.all_true |
| drop |
| call $func0 |
| i64x2.bitmask |
| drop |
| call $func0 |
| i64x2.extend_low_i32x4_s |
| i64x2.extend_high_i32x4_s |
| i64x2.extend_low_i32x4_u |
| i64x2.extend_high_i32x4_u |
| i32.const 0 |
| i64x2.shl |
| i32.const 0 |
| i64x2.shr_s |
| i32.const 0 |
| i64x2.shr_u |
| call $func0 |
| i64x2.add |
| call $func0 |
| i64x2.sub |
| call $func0 |
| i64x2.mul |
| ;; f32 operations. |
| f32x4.ceil |
| f32x4.floor |
| f32x4.trunc |
| f32x4.nearest |
| f32x4.abs |
| f32x4.neg |
| f32x4.sqrt |
| call $func0 |
| f32x4.add |
| call $func0 |
| f32x4.sub |
| call $func0 |
| f32x4.mul |
| call $func0 |
| f32x4.div |
| call $func0 |
| f32x4.min |
| call $func0 |
| f32x4.max |
| call $func0 |
| f32x4.pmin |
| call $func0 |
| f32x4.pmax |
| ;; f64 operations. |
| f64x2.ceil |
| f64x2.floor |
| f64x2.trunc |
| f64x2.nearest |
| f64x2.abs |
| f64x2.neg |
| f64x2.sqrt |
| call $func0 |
| f64x2.add |
| call $func0 |
| f64x2.sub |
| call $func0 |
| f64x2.mul |
| call $func0 |
| f64x2.div |
| call $func0 |
| f64x2.min |
| call $func0 |
| f64x2.max |
| call $func0 |
| f64x2.pmin |
| call $func0 |
| f64x2.pmax |
| ;; Extended integer arithmetic. |
| i16x8.extadd_pairwise_i8x16_s |
| i16x8.extadd_pairwise_i8x16_u |
| i32x4.extadd_pairwise_i16x8_s |
| i32x4.extadd_pairwise_i16x8_u |
| call $func0 |
| i16x8.extmul_low_i8x16_s |
| call $func0 |
| i16x8.extmul_high_i8x16_s |
| call $func0 |
| i16x8.extmul_low_i8x16_u |
| call $func0 |
| i16x8.extmul_high_i8x16_u |
| call $func0 |
| i32x4.extmul_low_i16x8_s |
| call $func0 |
| i32x4.extmul_high_i16x8_s |
| call $func0 |
| i32x4.extmul_low_i16x8_u |
| call $func0 |
| i32x4.extmul_high_i16x8_u |
| call $func0 |
| i64x2.extmul_low_i32x4_s |
| call $func0 |
| i64x2.extmul_high_i32x4_s |
| call $func0 |
| i64x2.extmul_low_i32x4_u |
| call $func0 |
| i64x2.extmul_high_i32x4_u |
| ;; Conversions. |
| i32x4.trunc_sat_f32x4_s |
| i32x4.trunc_sat_f32x4_u |
| f32x4.convert_i32x4_s |
| f32x4.convert_i32x4_u |
| i32x4.trunc_sat_f64x2_s_zero |
| i32x4.trunc_sat_f64x2_u_zero |
| f64x2.convert_low_i32x4_s |
| f64x2.convert_low_i32x4_u |
| drop |
| ) |
| ) |
| ;;)---"; |