blob: f777e9dc6748c314f0bad7eb39a4b9bb4bcd0e04 [file] [log] [blame] [edit]
;;; TOOL: run-interp
(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_sat_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_sat_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_sat_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_sat_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_sat_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_sat_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_sat_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_sat_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)
;; i8x16.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
i8x16.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
i8x16.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
i8x16.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 ;;)