chromium/v8/test/unittests/wasm/wasm-disassembler-unittest-simd.wat.inc

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