Codebase Browser
chromium
;; 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;;";