;;; TOOL: run-interp ;;; ARGS*: --enable-simd (module ;; i8x16 add (func (export "i8x16_add_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i8x16.add) (func (export "i8x16_add_1") (result v128) v128.const i32x4 0x00ff0001 0x04000002 0x00000003 0x00000004 v128.const i32x4 0x00020001 0xfe000002 0x00000003 0x00000004 i8x16.add) ;; i16x8 add (func (export "i16x8_add_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i16x8.add) (func (export "i16x8_add_1") (result v128) v128.const i32x4 0x00ffffff 0x0400ffff 0x00000003 0x00000004 v128.const i32x4 0x00020001 0xfe000002 0x00000003 0x00000004 i16x8.add) ;; i32x4 add (func (export "i32x4_add_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i32x4.add) (func (export "i32x4_add_1") (result v128) v128.const i32x4 0xffffffff 0x0400ffff 0x00000003 0x00000004 v128.const i32x4 0x00020001 0xfe000002 0x00000003 0x00000004 i32x4.add) ;; i64x2 add (func (export "i64x2_add_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i64x2.add) (func (export "i64x2_add_1") (result v128) v128.const i32x4 0x00000000 0x0400ffff 0x00000003 0x00000004 v128.const i32x4 0x00020001 0xfe000002 0x00000003 0x00000004 i64x2.add) ;; i8x16 sub (func (export "i8x16_sub_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i8x16.sub) (func (export "i8x16_sub_1") (result v128) v128.const i32x4 0x00ff0001 0x00040002 0x00000003 0x00000004 v128.const i32x4 0x00020001 0x00fe0002 0x00000003 0x00000004 i8x16.sub) ;; i16x8 sub (func (export "i16x8_sub_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i16x8.sub) (func (export "i16x8_sub_1") (result v128) v128.const i32x4 0x00ff0001 0x00040002 0x00000003 0x00000004 v128.const i32x4 0x00020001 0x00fe0002 0x00000003 0x00000004 i16x8.sub) ;; i32x4 sub (func (export "i32x4_sub_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i32x4.sub) (func (export "i32x4_sub_1") (result v128) v128.const i32x4 0x00ff0001 0x00040002 0x00000003 0x00000004 v128.const i32x4 0x00020001 0x00fe0002 0x00000003 0x00000004 i32x4.sub) ;; i64x2 sub (func (export "i64x2_sub_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i64x2.sub) (func (export "i64x2_sub_1") (result v128) v128.const i32x4 0x00ff0001 0x00040002 0x00000003 0x00000004 v128.const i32x4 0x00020001 0x00fe0002 0x00000003 0x00000004 i64x2.sub) ;; i16x8 mul (func (export "i16x8_mul_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i16x8.mul) (func (export "i16x8_mul_1") (result v128) v128.const i32x4 0x00ff0001 0x00040002 0x00000003 0x00000004 v128.const i32x4 0x00020001 0x00fe0002 0x00000003 0x00000004 i16x8.mul) ;; i32x4 mul (func (export "i32x4_mul_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i32x4.mul) (func (export "i32x4_mul_1") (result v128) v128.const i32x4 0x00ff0001 0x00040002 0x00000003 0x00000004 v128.const i32x4 0x00020001 0x00fe0002 0x00000003 0x00000004 i32x4.mul) ;; i64x2 mul (func (export "i64x2_mul_0") (result v128) v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004 i64x2.mul) (func (export "i64x2_mul_1") (result v128) v128.const i32x4 0x00ff0001 0x00040002 0x00000003 0x00000004 v128.const i32x4 0x00020001 0x00fe0002 0x00000003 0x00000004 i64x2.mul) ;; i8x16 saturating add (signed and unsigned) (func (export "i8x16_add_saturate_signed_0") (result v128) v128.const i32x4 0x00000001 0x0000007f 0x00000003 0x00000080 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x000000ff i8x16.add_saturate_s) (func (export "i8x16_add_saturate_unsigned_0") (result v128) v128.const i32x4 0x00ff0001 0x04000002 0x00000003 0x00000004 v128.const i32x4 0x00020001 0xfe000002 0x00000003 0x00000004 i8x16.add_saturate_u) ;; i16x8 saturating add (signed and unsigned) (func (export "i16x8_add_saturate_signed_0") (result v128) v128.const i32x4 0x00000001 0x00007fff 0x00000003 0x00008000 v128.const i32x4 0x00000001 0x00000002 0x00000003 0x0000fffe i16x8.add_saturate_s) (func (export "i16x8_add_saturate_unsigned_0") (result v128) v128.const i32x4 0x00ffffff 0x0400ffff 0x00000003 0x00000004 v128.const i32x4 0x00020001 0xfe000002 0x00000003 0x00000004 i16x8.add_saturate_u) ;; i8x16 saturating sub (signed and unsigned) (func (export "i8x16_sub_saturate_signed_0") (result v128) v128.const i32x4 0x00000001 0x0000007f 0x000000fe 0x00000080 v128.const i32x4 0x00000001 0x000000fe 0x0000007f 0x000000ff i8x16.sub_saturate_s) (func (export "i8x16_sub_saturate_unsigned_0") (result v128) v128.const i32x4 0x00ff0001 0x0400007f 0x0000fffe 0x00000004 v128.const i32x4 0x00020001 0xfe00fffe 0x0000007f 0x00000004 i8x16.sub_saturate_u) ;; i16x8 saturating sub (signed and unsigned) (func (export "i16x8_sub_saturate_signed_0") (result v128) v128.const i32x4 0x00000001 0x00007fff 0x0000fffe 0x00008000 v128.const i32x4 0x00000001 0x0000fffe 0x00007fff 0x0000fffe i16x8.sub_saturate_s) (func (export "i16x8_sub_saturate_unsigned_0") (result v128) v128.const i32x4 0x00ffffff 0x0400ffff 0x00000003 0x00000004 v128.const i32x4 0x00020001 0xfe000002 0x00000003 0x00000004 i16x8.sub_saturate_u) ;; v128 and (func (export "v128_and_0") (result v128) v128.const i32x4 0x00ff0001 0x00040002 0x44000003 0x00000004 v128.const i32x4 0x00020001 0x00fe0002 0x00000003 0x55000004 v128.and) ;; v128 or (func (export "v128_or_0") (result v128) v128.const i32x4 0x00ff0001 0x00040002 0x44000003 0x00000004 v128.const i32x4 0x00020001 0x00fe0002 0x00000003 0x55000004 v128.or) ;; v128 xor (func (export "v128_xor_0") (result v128) v128.const i32x4 0x00ff0001 0x00040002 0x44000003 0x00000004 v128.const i32x4 0x00020001 0x00fe0002 0x00000003 0x55000004 v128.xor) ;; f32x4 min ;; For Floating num: ;; +0.0 = 0x00000000, -0.0 = 0x80000000 ;; 0xffc00000 is a NaN, 0x7fc00000 is a NaN. ;; 1234.5 = 0x449a5000, 1.0 = 0x3f800000 ;; -1234.5 = 0xc49a5000, -1.0 = 0xbf800000 ;; test is: [-0.0, NaN, 1234.5, -1.0] ;; [ 0.0, 1.0, 1234.5, 1.0] ;; expect is: [-0.0, NaN, 1234.5, -1.0] (func (export "f32x4_min_0") (result v128) v128.const i32x4 0x80000000 0xffc00000 0x449a5000 0xbf800000 v128.const i32x4 0x00000000 0x3f800000 0x449a5000 0x3f800000 f32x4.min) ;; f64x2 min ;; For Double num: ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000 ;; 0xfff8000000000000 is a NaN, 0x7ff8000000000000 is a NaN. ;; 1234.5 = 0x40934a0000000000, 1.0 = 0x3ff0000000000000 ;; -1234.5 = 0xc0934a0000000000, -1.0 = 0xbff0000000000000 ;; tests are: [ 0.0, NaN] ;; [-1234.5, 1.0] ;; expects are: [-1234.5, NaN] (func (export "f64x2_min_0") (result v128) v128.const i32x4 0x00000000 0x00000000 0x00000000 0xfff80000 v128.const i32x4 0x00000000 0xc0934a00 0x00000000 0x3ff00000 f64x2.min) ;; f32x4 max ;; For Floating num: ;; +0.0 = 0x00000000, -0.0 = 0x80000000 ;; 0xffc00000 is a NaN, 0x7fc00000 is a NaN. ;; 1234.5 = 0x449a5000, 1.0 = 0x3f800000 ;; -1234.5 = 0xc49a5000, -1.0 = 0xbf800000 ;; test is: [-0.0, NaN, 1234.5, -1.0] ;; [ 0.0, 1.0, 1234.5, 1.0] ;; expect is: [ 0.0, NaN, 1234.5, 1.0] (func (export "f32x4_max_0") (result v128) v128.const i32x4 0x80000000 0xffc00000 0x449a5000 0xbf800000 v128.const i32x4 0x00000000 0x3f800000 0x449a5000 0x3f800000 f32x4.max) ;; f64x2 max ;; For Double num: ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000 ;; 0xfff8000000000000 is a NaN, 0x7ff8000000000000 is a NaN. ;; 1234.5 = 0x40934a0000000000, 1.0 = 0x3ff0000000000000 ;; -1234.5 = 0xc0934a0000000000, -1.0 = 0xbff0000000000000 ;; tests are: [ 0.0, NaN] ;; [-1234.5, 1.0] ;; expects are: [ 0.0, NaN] (func (export "f64x2_max_0") (result v128) v128.const i32x4 0x00000000 0x00000000 0x00000000 0xfff80000 v128.const i32x4 0x00000000 0xc0934a00 0x00000000 0x3ff00000 f64x2.max) ;; f32x4 add ;; For Floating num: ;; +0.0 = 0x00000000, -0.0 = 0x80000000 ;; 0xffc00000 is a NaN ;; 1234.5 = 0x449a5000, 1.0 = 0x3f800000 ;; -1234.5 = 0xc49a5000, 1.5 = 0x3fc00000 ;; 1235.5 = 0x449a7000, -1233.0 = 0xc49a2000 ;; test is: [-0.0, NaN, 1234.5, -1234.5] ;; [ 0.0, 1.0, 1.0, 1.5] ;; expect is: [ 0.0, NaN, 1235.5, -1233.0] (func (export "f32x4_add_0") (result v128) v128.const i32x4 0x80000000 0xffc00000 0x449a5000 0xc49a5000 v128.const i32x4 0x00000000 0x3f800000 0x3f800000 0x3fc00000 f32x4.add) ;; f64x2 add ;; For Double num: ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000 ;; 0xfff8000000000000 is a NaN ;; -1233.0 = 0xc093440000000000, 1.0 = 0x3ff0000000000000 ;; -1234.5 = 0xc0934a0000000000, 1.5 = 0x3ff8000000000000 ;; tests are: [ 1.5, NaN] ;; [-1234.5, 1.0] ;; expects are: [-1233.0, NaN] (func (export "f64x2_add_0") (result v128) v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0xfff80000 v128.const i32x4 0x00000000 0xc0934a00 0x00000000 0x3ff00000 f64x2.add) ;; f32x4 sub ;; For Floating num: ;; +0.0 = 0x00000000, -0.0 = 0x80000000 ;; 0xffc00000 is a NaN. ;; 1234.5 = 0x449a5000, 1.0 = 0x3f800000 ;; -1234.5 = 0xc49a5000, 1.5 = 0x3fc00000 ;; 1233.5 = 0x449a3000, -1236.0 = 0xc49a8000 ;; test is: [-0.0, NaN, 1234.5, -1234.5] ;; [ 0.0, 1.0, 1.0, 1.5] ;; expect is: [-0.0, NaN, 1233.5, -1236.0] (func (export "f32x4_sub_0") (result v128) v128.const i32x4 0x80000000 0xffc00000 0x449a5000 0xc49a5000 v128.const i32x4 0x00000000 0x3f800000 0x3f800000 0x3fc00000 f32x4.sub) ;; f64x2 sub ;; For Double num: ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000 ;; 0xfff8000000000000 is a NaN. ;; 1236.0 = 0x4093500000000000, 1.0 = 0x3ff0000000000000 ;; -1234.5 = 0xc0934a0000000000, 1.5 = 0x3ff8000000000000 ;; tests are: [ 1.5, NaN] ;; [-1234.5, 1.0] ;; expects are: [ 1236.0, NaN] (func (export "f64x2_sub_0") (result v128) v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0xfff80000 v128.const i32x4 0x00000000 0xc0934a00 0x00000000 0x3ff00000 f64x2.sub) ;; f32x4 div ;; For Floating num: ;; +0.0 = 0x00000000, -0.0 = 0x80000000 ;; 0xffc00000 is a NaN, 0x7fc00000 is a NaN. ;; 1.0 = 0x3f800000, 1.5 = 0x3fc00000 ;; -3.0 = 0xc0400000, -2.0 = 0xc0000000 ;; test is: [-0.0, NaN, 1.5, -3.0] ;; [ 0.0, 1.0, 1.0, 1.5] ;; expect is: [ NaN, NaN, 1.5, -2.0] (func (export "f32x4_div_0") (result v128) v128.const i32x4 0x80000000 0xffc00000 0x3fc00000 0xc0400000 v128.const i32x4 0x00000000 0x3f800000 0x3f800000 0x3fc00000 f32x4.div) ;; f64x2 div ;; For Double num: ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000 ;; 0xfff8000000000000 is a NaN. ;; -3.0 = 0xc008000000000000, 1.0 = 0x3ff0000000000000 ;; -2.0 = 0xc000000000000000, 1.5 = 0x3ff8000000000000 ;; tests are: [ 1.5, -3.0] ;; [ 1.0, 1.5] ;; expects are: [ 1.5, -2.0] (func (export "f64x2_div_0") (result v128) v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0xc0080000 v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x3ff80000 f64x2.div) ;; f32x4 mul ;; For Floating num: ;; +0.0 = 0x00000000, -0.0 = 0x80000000 ;; 0xffc00000 is a NaN. ;; 1.0 = 0x3f800000, 1.5 = 0x3fc00000 ;; -3.0 = 0xc0400000, -4.5 = 0xc0900000 ;; test is: [-0.0, NaN, 1.5, -3.0] ;; [ 0.0, 1.0, 1.0, 1.5] ;; expect is: [-0.0, NaN, 1.5, -4.5] (func (export "f32x4_mul_0") (result v128) v128.const i32x4 0x80000000 0xffc00000 0x3fc00000 0xc0400000 v128.const i32x4 0x00000000 0x3f800000 0x3f800000 0x3fc00000 f32x4.mul) ;; f64x2 mul ;; For Double num: ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000 ;; 0xfff8000000000000 is a NaN. ;; -3.0 = 0xc008000000000000, 1.0 = 0x3ff0000000000000 ;; -4.5 = 0xc012000000000000, 1.5 = 0x3ff8000000000000 ;; tests are: [ 1.5, -3.0] ;; [ 1.0, 1.5] ;; expects are: [ 1.5, -4.5] (func (export "f64x2_mul_0") (result v128) v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0xc0080000 v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x3ff80000 f64x2.mul) ;; v8x16.swizzle (func (export "v8x16_swizzle_0") (result v128) v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d v128.const i8x16 0 4 8 12 5 9 13 1 10 14 6 2 15 3 7 11 v8x16.swizzle) (func (export "v8x16_swizzle_1") (result v128) v128.const i32x4 0x11223344 0x55667788 0x99aabbcc 0xddeeff00 v128.const i8x16 0 0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 v8x16.swizzle) (func (export "v8x16_swizzle_2") (result v128) v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff v128.const i8x16 -1 16 31 255 -128 127 32 63 64 127 128 -2 -3 -4 -5 -6 v8x16.swizzle) ) (;; STDOUT ;;; i8x16_add_0() => v128 i32x4:0x00000002 0x00000004 0x00000006 0x00000008 i8x16_add_1() => v128 i32x4:0x00010002 0x02000004 0x00000006 0x00000008 i16x8_add_0() => v128 i32x4:0x00000002 0x00000004 0x00000006 0x00000008 i16x8_add_1() => v128 i32x4:0x01010000 0x02000001 0x00000006 0x00000008 i32x4_add_0() => v128 i32x4:0x00000002 0x00000004 0x00000006 0x00000008 i32x4_add_1() => v128 i32x4:0x00020000 0x02010001 0x00000006 0x00000008 i64x2_add_0() => v128 i32x4:0x00000002 0x00000004 0x00000006 0x00000008 i64x2_add_1() => v128 i32x4:0x00020001 0x02010001 0x00000006 0x00000008 i8x16_sub_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000 i8x16_sub_1() => v128 i32x4:0x00fd0000 0x00060000 0x00000000 0x00000000 i16x8_sub_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000 i16x8_sub_1() => v128 i32x4:0x00fd0000 0xff060000 0x00000000 0x00000000 i32x4_sub_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000 i32x4_sub_1() => v128 i32x4:0x00fd0000 0xff060000 0x00000000 0x00000000 i64x2_sub_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000 i64x2_sub_1() => v128 i32x4:0x00fd0000 0xff060000 0x00000000 0x00000000 i16x8_mul_0() => v128 i32x4:0x00000001 0x00000004 0x00000009 0x00000010 i16x8_mul_1() => v128 i32x4:0x01fe0001 0x03f80004 0x00000009 0x00000010 i32x4_mul_0() => v128 i32x4:0x00000001 0x00000004 0x00000009 0x00000010 i32x4_mul_1() => v128 i32x4:0x01010001 0x02040004 0x00000009 0x00000010 i64x2_mul_0() => v128 i32x4:0x00000001 0x00000004 0x00000009 0x00000018 i64x2_mul_1() => v128 i32x4:0x01010001 0x03040202 0x00000009 0x00000018 i8x16_add_saturate_signed_0() => v128 i32x4:0x00000002 0x0000007f 0x00000006 0x00000080 i8x16_add_saturate_unsigned_0() => v128 i32x4:0x00ff0002 0xff000004 0x00000006 0x00000008 i16x8_add_saturate_signed_0() => v128 i32x4:0x00000002 0x00007fff 0x00000006 0x00008000 i16x8_add_saturate_unsigned_0() => v128 i32x4:0x0101ffff 0xffffffff 0x00000006 0x00000008 i8x16_sub_saturate_signed_0() => v128 i32x4:0x00000000 0x0000007f 0x00000080 0x00000081 i8x16_sub_saturate_unsigned_0() => v128 i32x4:0x00fd0000 0x00000000 0x0000ff7f 0x00000000 i16x8_sub_saturate_signed_0() => v128 i32x4:0x00000000 0x00007fff 0x00008000 0x00008002 i16x8_sub_saturate_unsigned_0() => v128 i32x4:0x00fdfffe 0x0000fffd 0x00000000 0x00000000 v128_and_0() => v128 i32x4:0x00020001 0x00040002 0x00000003 0x00000004 v128_or_0() => v128 i32x4:0x00ff0001 0x00fe0002 0x44000003 0x55000004 v128_xor_0() => v128 i32x4:0x00fd0000 0x00fa0000 0x44000000 0x55000000 f32x4_min_0() => v128 i32x4:0x80000000 0x7fc00000 0x449a5000 0xbf800000 f64x2_min_0() => v128 i32x4:0x00000000 0xc0934a00 0x00000000 0x7ff80000 f32x4_max_0() => v128 i32x4:0x00000000 0x7fc00000 0x449a5000 0x3f800000 f64x2_max_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x7ff80000 f32x4_add_0() => v128 i32x4:0x00000000 0x7fc00000 0x449a7000 0xc49a2000 f64x2_add_0() => v128 i32x4:0x00000000 0xc0934400 0x00000000 0x7ff80000 f32x4_sub_0() => v128 i32x4:0x80000000 0x7fc00000 0x449a3000 0xc49a8000 f64x2_sub_0() => v128 i32x4:0x00000000 0x40935000 0x00000000 0x7ff80000 f32x4_div_0() => v128 i32x4:0x7fc00000 0x7fc00000 0x3fc00000 0xc0000000 f64x2_div_0() => v128 i32x4:0x00000000 0x3ff80000 0x00000000 0xc0000000 f32x4_mul_0() => v128 i32x4:0x80000000 0x7fc00000 0x3fc00000 0xc0900000 f64x2_mul_0() => v128 i32x4:0x00000000 0x3ff80000 0x00000000 0xc0120000 v8x16_swizzle_0() => v128 i32x4:0x0d090501 0x020e0a06 0x03070f0b 0x0c080410 v8x16_swizzle_1() => v128 i32x4:0x44444444 0x44444444 0x88888888 0x88888888 v8x16_swizzle_2() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000 ;;; STDOUT ;;)