;;; TOOL: run-interp
;;; ARGS*: --enable-simd
(module
  ;; i8x16 eq
  (func (export "i8x16_eq_0") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    i8x16.eq)
  (func (export "i8x16_eq_1") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x77000004
    v128.const i32x4 0x05000001 0x0e002002 0x44000003 0x00000004
    i8x16.eq)

  ;; i16x8 eq
  (func (export "i16x8_eq_0") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    i16x8.eq)
  (func (export "i16x8_eq_1") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x77000004
    v128.const i32x4 0x05000001 0x0e002002 0x44000003 0x00000004
    i16x8.eq)

  ;; i32x4 eq
  (func (export "i32x4_eq_0") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    i32x4.eq)
  (func (export "i32x4_eq_1") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x77000004
    v128.const i32x4 0x05000001 0x0e002002 0x44000003 0x00000004
    i32x4.eq)

  ;; f32x4 eq
  ;; For Floating num:
  ;; +0.0 = 0x00000000, -0.0 = 0x80000000, 0xffc00000 is a NaN
  ;; 1.5 = 0x449a5000, 1.0 = 0x3f800000
  (func (export "f32x4_eq_0") (result v128)
    v128.const i32x4 0x00000000 0xffc00000 0x449a5000 0x449a5000
    v128.const i32x4 0x80000000 0xffc00000 0x449a5000 0x3f800000
    f32x4.eq)

  ;; f64x2 eq
  ;; For Double num:
  ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000
  ;; fff8000000000000 is a NaN
  ;; 1.5 = 3ff8000000000000, 1.0 = 0x3ff0000000000000
  (func (export "f64x2_eq_0") (result v128)
    v128.const i32x4 0x00000000 0x00000000 0x00000000 0xfff80000
    v128.const i32x4 0x00000000 0x80000000 0x00000000 0xfff80000
    f64x2.eq)
  (func (export "f64x2_eq_1") (result v128)
    v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff80000
    v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff00000
    f64x2.eq)

  ;; i8x16 ne
  (func (export "i8x16_ne_0") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    i8x16.ne)
  (func (export "i8x16_ne_1") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x77000004
    v128.const i32x4 0x05000001 0x0e002002 0x44000003 0x00000004
    i8x16.ne)

  ;; i16x8 ne
  (func (export "i16x8_ne_0") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    i16x8.ne)
  (func (export "i16x8_ne_1") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x77000004
    v128.const i32x4 0x05000001 0x0e002002 0x44000003 0x00000004
    i16x8.ne)

  ;; i32x4 ne
  (func (export "i32x4_ne_0") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x00000004
    i32x4.ne)
  (func (export "i32x4_ne_1") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00000003 0x77000004
    v128.const i32x4 0x05000001 0x0e002002 0x44000003 0x00000004
    i32x4.ne)

  ;; f32x4 ne
  ;; For Floating num:
  ;; +0.0 = 0x00000000, -0.0 = 0x80000000, 0xffc00000 is a NaN
  ;; 1.5 = 0x449a5000, 1.0 = 0x3f800000
  (func (export "f32x4_ne_0") (result v128)
    v128.const i32x4 0x00000000 0xffc00000 0x449a5000 0x449a5000
    v128.const i32x4 0x80000000 0xffc00000 0x449a5000 0x3f800000
    f32x4.ne)

  ;; f64x2 ne
  ;; For Double num:
  ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000
  ;; fff8000000000000 is a NaN
  ;; 1.5 = 3ff8000000000000, 1.0 = 0x3ff0000000000000
  (func (export "f64x2_ne_0") (result v128)
    v128.const i32x4 0x00000000 0x00000000 0x00000000 0xfff80000
    v128.const i32x4 0x00000000 0x80000000 0x00000000 0xfff80000
    f64x2.ne)
  (func (export "f64x2_ne_1") (result v128)
    v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff80000
    v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff00000
    f64x2.ne)

  ;; i8x16 lt (sign and unsigned)
  (func (export "i8x16_lt_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i8x16.lt_s)
  (func (export "i8x16_lt_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i8x16.lt_u)

  ;; i16x8 lt (sign and unsigned)
  (func (export "i16x8_lt_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i16x8.lt_s)
  (func (export "i16x8_lt_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i16x8.lt_u)

  ;; i32x4 lt (sign and unsigned)
  (func (export "i32x4_lt_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i32x4.lt_s)
  (func (export "i32x4_lt_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i32x4.lt_u)

  ;; f32x4 lt
  ;; For Floating num:
  ;; +0.0 = 0x00000000, -0.0 = 0x80000000, 0xffc00000 is a NaN
  ;; 1.5 = 0x449a5000, 1.0 = 0x3f800000
  (func (export "f32x4_lt_0") (result v128)
    v128.const i32x4 0x00000000 0xffc00000 0x449a5000 0x449a5000
    v128.const i32x4 0x80000000 0xffc00000 0xffc00000 0x3f800000
    f32x4.lt)

  ;; f64x2 lt
  ;; For Double num:
  ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000
  ;; fff8000000000000 is a NaN
  ;; 1.5 = 3ff8000000000000, 1.0 = 0x3ff0000000000000
  (func (export "f64x2_lt_0") (result v128)
    v128.const i32x4 0x00000000 0x00000000 0x00000000 0xfff80000
    v128.const i32x4 0x00000000 0x80000000 0x00000000 0xfff80000
    f64x2.lt)
  (func (export "f64x2_lt_1") (result v128)
    v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff80000
    v128.const i32x4 0x00000000 0xfff80000 0x00000000 0x3ff00000
    f64x2.lt)

  ;; i8x16 le (sign and unsigned)
  (func (export "i8x16_le_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i8x16.le_s)
  (func (export "i8x16_le_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i8x16.le_u)

  ;; i16x8 le (sign and unsigned)
  (func (export "i16x8_le_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i16x8.le_s)
  (func (export "i16x8_le_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i16x8.le_u)

  ;; i32x4 le (sign and unsigned)
  (func (export "i32x4_le_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i32x4.le_s)
  (func (export "i32x4_le_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i32x4.le_u)

  ;; f32x4 le
  ;; For Floating num:
  ;; +0.0 = 0x00000000, -0.0 = 0x80000000, 0xffc00000 is a NaN
  ;; 1.5 = 0x449a5000, 1.0 = 0x3f800000
  (func (export "f32x4_le_0") (result v128)
    v128.const i32x4 0x00000000 0xffc00000 0x449a5000 0x449a5000
    v128.const i32x4 0x80000000 0xffc00000 0xffc00000 0x3f800000
    f32x4.le)

  ;; f64x2 le
  ;; For Double num:
  ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000
  ;; fff8000000000000 is a NaN
  ;; 1.5 = 3ff8000000000000, 1.0 = 0x3ff0000000000000
  (func (export "f64x2_le_0") (result v128)
    v128.const i32x4 0x00000000 0x00000000 0x00000000 0xfff80000
    v128.const i32x4 0x00000000 0x80000000 0x00000000 0xfff80000
    f64x2.le)
  (func (export "f64x2_le_1") (result v128)
    v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff80000
    v128.const i32x4 0x00000000 0xfff80000 0x00000000 0x3ff00000
    f64x2.le)

  ;; i8x16 gt (sign and unsigned)
  (func (export "i8x16_gt_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i8x16.gt_s)
  (func (export "i8x16_gt_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i8x16.gt_u)

  ;; i16x8 gt (sign and unsigned)
  (func (export "i16x8_gt_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i16x8.gt_s)
  (func (export "i16x8_gt_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i16x8.gt_u)

  ;; i32x4 gt (sign and unsigned)
  (func (export "i32x4_gt_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i32x4.gt_s)
  (func (export "i32x4_gt_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i32x4.gt_u)

  ;; f32x4 gt
  ;; For Floating num:
  ;; +0.0 = 0x00000000, -0.0 = 0x80000000, 0xffc00000 is a NaN
  ;; 1.5 = 0x449a5000, 1.0 = 0x3f800000
  (func (export "f32x4_gt_0") (result v128)
    v128.const i32x4 0x00000000 0xffc00000 0x449a5000 0x449a5000
    v128.const i32x4 0x80000000 0xffc00000 0xffc00000 0x3f800000
    f32x4.gt)

  ;; f64x2 gt
  ;; For Double num:
  ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000
  ;; fff8000000000000 is a NaN
  ;; 1.5 = 3ff8000000000000, 1.0 = 0x3ff0000000000000
  (func (export "f64x2_gt_0") (result v128)
    v128.const i32x4 0x00000000 0x00000000 0x00000000 0xfff80000
    v128.const i32x4 0x00000000 0x80000000 0x00000000 0xfff80000
    f64x2.gt)
  (func (export "f64x2_gt_1") (result v128)
    v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff80000
    v128.const i32x4 0x00000000 0xfff80000 0x00000000 0x3ff00000
    f64x2.gt)

  ;; i8x16 ge (sign and unsigned)
  (func (export "i8x16_ge_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i8x16.ge_s)
  (func (export "i8x16_ge_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i8x16.ge_u)

  ;; i16x8 ge (sign and unsigned)
  (func (export "i16x8_ge_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i16x8.ge_s)
  (func (export "i16x8_ge_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i16x8.ge_u)

  ;; i32x4 ge (sign and unsigned)
  (func (export "i32x4_ge_s") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i32x4.ge_s)
  (func (export "i32x4_ge_u") (result v128)
    v128.const i32x4 0xff000001 0xe0000002 0x00008003 0x00000004
    v128.const i32x4 0x02000001 0xe000ff02 0x00000003 0x00008104
    i32x4.ge_u)

  ;; f32x4 ge
  ;; For Floating num:
  ;; +0.0 = 0x00000000, -0.0 = 0x80000000, 0xffc00000 is a NaN
  ;; 1.5 = 0x449a5000, 1.0 = 0x3f800000
  (func (export "f32x4_ge_0") (result v128)
    v128.const i32x4 0x00000000 0xffc00000 0x449a5000 0x449a5000
    v128.const i32x4 0x80000000 0xffc00000 0xffc00000 0x3f800000
    f32x4.ge)

  ;; f64x2 ge
  ;; For Double num:
  ;; +0.0 = 0x0000000000000000, -0.0 = 0x8000000000000000
  ;; fff8000000000000 is a NaN
  ;; 1.5 = 3ff8000000000000, 1.0 = 0x3ff0000000000000
  (func (export "f64x2_ge_0") (result v128)
    v128.const i32x4 0x00000000 0x00000000 0x00000000 0xfff80000
    v128.const i32x4 0x00000000 0x80000000 0x00000000 0xfff80000
    f64x2.ge)
  (func (export "f64x2_ge_1") (result v128)
    v128.const i32x4 0x00000000 0x3ff80000 0x00000000 0x3ff80000
    v128.const i32x4 0x00000000 0xfff80000 0x00000000 0x3ff00000
    f64x2.ge)
)
(;; STDOUT ;;;
i8x16_eq_0() => v128 i32x4:0xffffffff 0xffffffff 0xffffffff 0xffffffff
i8x16_eq_1() => v128 i32x4:0x00ffffff 0x00ff00ff 0x00ffffff 0x00ffffff
i16x8_eq_0() => v128 i32x4:0xffffffff 0xffffffff 0xffffffff 0xffffffff
i16x8_eq_1() => v128 i32x4:0x0000ffff 0x00000000 0x0000ffff 0x0000ffff
i32x4_eq_0() => v128 i32x4:0xffffffff 0xffffffff 0xffffffff 0xffffffff
i32x4_eq_1() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000
f32x4_eq_0() => v128 i32x4:0xffffffff 0x00000000 0xffffffff 0x00000000
f64x2_eq_0() => v128 i32x4:0xffffffff 0xffffffff 0x00000000 0x00000000
f64x2_eq_1() => v128 i32x4:0xffffffff 0xffffffff 0x00000000 0x00000000
i8x16_ne_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000
i8x16_ne_1() => v128 i32x4:0xff000000 0xff00ff00 0xff000000 0xff000000
i16x8_ne_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000
i16x8_ne_1() => v128 i32x4:0xffff0000 0xffffffff 0xffff0000 0xffff0000
i32x4_ne_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000
i32x4_ne_1() => v128 i32x4:0xffffffff 0xffffffff 0xffffffff 0xffffffff
f32x4_ne_0() => v128 i32x4:0x00000000 0xffffffff 0x00000000 0xffffffff
f64x2_ne_0() => v128 i32x4:0x00000000 0x00000000 0xffffffff 0xffffffff
f64x2_ne_1() => v128 i32x4:0x00000000 0x00000000 0xffffffff 0xffffffff
i8x16_lt_s() => v128 i32x4:0xff000000 0x00000000 0x0000ff00 0x00000000
i8x16_lt_u() => v128 i32x4:0x00000000 0x0000ff00 0x00000000 0x0000ff00
i16x8_lt_s() => v128 i32x4:0xffff0000 0x00000000 0x0000ffff 0x00000000
i16x8_lt_u() => v128 i32x4:0x00000000 0x0000ffff 0x00000000 0x0000ffff
i32x4_lt_s() => v128 i32x4:0xffffffff 0xffffffff 0x00000000 0xffffffff
i32x4_lt_u() => v128 i32x4:0x00000000 0xffffffff 0x00000000 0xffffffff
f32x4_lt_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000
f64x2_lt_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000
f64x2_lt_1() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000
i8x16_le_s() => v128 i32x4:0xffffffff 0xffff00ff 0xffffffff 0xffff00ff
i8x16_le_u() => v128 i32x4:0x00ffffff 0xffffffff 0xffff00ff 0xffffffff
i16x8_le_s() => v128 i32x4:0xffffffff 0xffff0000 0xffffffff 0xffff0000
i16x8_le_u() => v128 i32x4:0x0000ffff 0xffffffff 0xffff0000 0xffffffff
i32x4_le_s() => v128 i32x4:0xffffffff 0xffffffff 0x00000000 0xffffffff
i32x4_le_u() => v128 i32x4:0x00000000 0xffffffff 0x00000000 0xffffffff
f32x4_le_0() => v128 i32x4:0xffffffff 0x00000000 0x00000000 0x00000000
f64x2_le_0() => v128 i32x4:0xffffffff 0xffffffff 0x00000000 0x00000000
f64x2_le_1() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000
i8x16_gt_s() => v128 i32x4:0x00000000 0x0000ff00 0x00000000 0x0000ff00
i8x16_gt_u() => v128 i32x4:0xff000000 0x00000000 0x0000ff00 0x00000000
i16x8_gt_s() => v128 i32x4:0x00000000 0x0000ffff 0x00000000 0x0000ffff
i16x8_gt_u() => v128 i32x4:0xffff0000 0x00000000 0x0000ffff 0x00000000
i32x4_gt_s() => v128 i32x4:0x00000000 0x00000000 0xffffffff 0x00000000
i32x4_gt_u() => v128 i32x4:0xffffffff 0x00000000 0xffffffff 0x00000000
f32x4_gt_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0xffffffff
f64x2_gt_0() => v128 i32x4:0x00000000 0x00000000 0x00000000 0x00000000
f64x2_gt_1() => v128 i32x4:0x00000000 0x00000000 0xffffffff 0xffffffff
i8x16_ge_s() => v128 i32x4:0x00ffffff 0xffffffff 0xffff00ff 0xffffffff
i8x16_ge_u() => v128 i32x4:0xffffffff 0xffff00ff 0xffffffff 0xffff00ff
i16x8_ge_s() => v128 i32x4:0x0000ffff 0xffffffff 0xffff0000 0xffffffff
i16x8_ge_u() => v128 i32x4:0xffffffff 0xffff0000 0xffffffff 0xffff0000
i32x4_ge_s() => v128 i32x4:0x00000000 0x00000000 0xffffffff 0x00000000
i32x4_ge_u() => v128 i32x4:0xffffffff 0x00000000 0xffffffff 0x00000000
f32x4_ge_0() => v128 i32x4:0xffffffff 0x00000000 0x00000000 0xffffffff
f64x2_ge_0() => v128 i32x4:0xffffffff 0xffffffff 0x00000000 0x00000000
f64x2_ge_1() => v128 i32x4:0x00000000 0x00000000 0xffffffff 0xffffffff
;;; STDOUT ;;)
