Skip to content

Commit 17f55c3

Browse files
authored
[interpreter] Add i64x2 signed comparisons (WebAssembly#454)
These instructions were merged in WebAssembly#412. The binary opcodes are temporary, they will be fixed up when we finalize the opcodes.
1 parent ef343cb commit 17f55c3

File tree

8 files changed

+512
-8
lines changed

8 files changed

+512
-8
lines changed

interpreter/binary/decode.ml

+4
Original file line numberDiff line numberDiff line change
@@ -336,10 +336,12 @@ let simd_prefix s =
336336
| 0x71l -> i8x16_sub
337337
| 0x72l -> i8x16_sub_sat_s
338338
| 0x73l -> i8x16_sub_sat_u
339+
| 0x74l -> i64x2_lt_s
339340
| 0x76l -> i8x16_min_s
340341
| 0x77l -> i8x16_min_u
341342
| 0x78l -> i8x16_max_s
342343
| 0x79l -> i8x16_max_u
344+
| 0x7al -> i64x2_gt_s
343345
| 0x7bl -> i8x16_avgr_u
344346
| 0x7cl -> i8x16_popcnt
345347
| 0x80l -> i16x8_abs
@@ -422,6 +424,7 @@ let simd_prefix s =
422424
| 0xdfl -> f64x2_nearest
423425
| 0xe0l -> f32x4_abs
424426
| 0xe1l -> f32x4_neg
427+
| 0xe2l -> i64x2_ge_s
425428
| 0xe3l -> f32x4_sqrt
426429
| 0xe4l -> f32x4_add
427430
| 0xe5l -> f32x4_sub
@@ -433,6 +436,7 @@ let simd_prefix s =
433436
| 0xebl -> f32x4_pmax
434437
| 0xecl -> f64x2_abs
435438
| 0xedl -> f64x2_neg
439+
| 0xeel -> i64x2_le_s
436440
| 0xefl -> f64x2_sqrt
437441
| 0xf0l -> f64x2_add
438442
| 0xf1l -> f64x2_sub

interpreter/binary/encode.ml

+4
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,10 @@ let encode m =
503503
| Binary (V128 V128Op.(I64x2 Mul)) -> simd_op 0xd5l
504504
| Binary (V128 V128Op.(I64x2 Eq)) -> simd_op 0xc0l
505505
| Binary (V128 V128Op.(I64x2 Ne)) -> simd_op 0xd0l
506+
| Binary (V128 V128Op.(I64x2 LtS)) -> simd_op 0x74l
507+
| Binary (V128 V128Op.(I64x2 GtS)) -> simd_op 0x7al
508+
| Binary (V128 V128Op.(I64x2 LeS)) -> simd_op 0xeel
509+
| Binary (V128 V128Op.(I64x2 GeS)) -> simd_op 0xe2l
506510
| Binary (V128 V128Op.(I64x2 ExtMulLowS)) -> simd_op 0xd2l
507511
| Binary (V128 V128Op.(I64x2 ExtMulHighS)) -> simd_op 0xd3l
508512
| Binary (V128 V128Op.(I64x2 ExtMulLowU)) -> simd_op 0xd6l

interpreter/exec/eval_simd.ml

+4
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ module SimdOp (SXX : Simd.S) (Value : ValueType with type t = SXX.t) = struct
130130
| I32x4 DotI16x8S -> SXX.I32x4_convert.dot_i16x8_s
131131
| I64x2 Eq -> SXX.I64x2.eq
132132
| I64x2 Ne -> SXX.I64x2.ne
133+
| I64x2 LtS -> SXX.I64x2.lt_s
134+
| I64x2 LeS -> SXX.I64x2.le_s
135+
| I64x2 GtS -> SXX.I64x2.gt_s
136+
| I64x2 GeS -> SXX.I64x2.ge_s
133137
| I32x4 ExtMulLowS -> SXX.I32x4_convert.extmul_low_s
134138
| I32x4 ExtMulHighS -> SXX.I32x4_convert.extmul_high_s
135139
| I32x4 ExtMulLowU -> SXX.I32x4_convert.extmul_low_u

interpreter/syntax/operators.ml

+4
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,10 @@ let i64x2_widen_low_i32x4_u = Unary (V128 V128Op.(I64x2 WidenLowU))
394394
let i64x2_widen_high_i32x4_u = Unary (V128 V128Op.(I64x2 WidenHighU))
395395
let i64x2_eq = Binary (V128 V128Op.(I64x2 Eq))
396396
let i64x2_ne = Binary (V128 V128Op.(I64x2 Ne))
397+
let i64x2_lt_s = Binary (V128 V128Op.(I64x2 LtS))
398+
let i64x2_le_s = Binary (V128 V128Op.(I64x2 LeS))
399+
let i64x2_gt_s = Binary (V128 V128Op.(I64x2 GtS))
400+
let i64x2_ge_s = Binary (V128 V128Op.(I64x2 GeS))
397401
let i64x2_neg = Unary (V128 V128Op.(I64x2 Neg))
398402
let i64x2_bitmask = SimdBitmask Simd.I64x2
399403
let i64x2_add = Binary (V128 V128Op.(I64x2 Add))

interpreter/text/arrange.ml

+4
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,10 @@ struct
276276
| I32x4 GeU -> "i32x4.ge_u"
277277
| I64x2 Eq -> "i64x2.eq"
278278
| I64x2 Ne -> "i64x2.ne"
279+
| I64x2 LtS -> "i64x2.lt_s"
280+
| I64x2 GtS -> "i64x2.gt_s"
281+
| I64x2 LeS -> "i64x2.le_s"
282+
| I64x2 GeS -> "i64x2.ge_s"
279283
| I8x16 NarrowS -> "i8x16.narrow_i16x8_s"
280284
| I8x16 NarrowU -> "i8x16.narrow_i16x8_u"
281285
| I8x16 Add -> "i8x16.add"

interpreter/text/lexer.mll

+4-8
Original file line numberDiff line numberDiff line change
@@ -462,26 +462,22 @@ rule token = parse
462462
| (simd_shape as s)".ne"
463463
{ BINARY (simdop s i8x16_ne i16x8_ne i32x4_ne i64x2_ne f32x4_ne f64x2_ne) }
464464
| (simd_int_shape as s)".lt_s"
465-
{ except ["i64x2"] s lexbuf;
466-
BINARY (simd_int_op s i8x16_lt_s i16x8_lt_s i32x4_lt_s unreachable) }
465+
{ BINARY (simd_int_op s i8x16_lt_s i16x8_lt_s i32x4_lt_s i64x2_lt_s) }
467466
| (simd_int_shape as s)".lt_u"
468467
{ except ["i64x2"] s lexbuf;
469468
BINARY (simd_int_op s i8x16_lt_u i16x8_lt_u i32x4_lt_u unreachable) }
470469
| (simd_int_shape as s)".le_s"
471-
{ except ["i64x2"] s lexbuf;
472-
BINARY (simd_int_op s i8x16_le_s i16x8_le_s i32x4_le_s unreachable) }
470+
{ BINARY (simd_int_op s i8x16_le_s i16x8_le_s i32x4_le_s i64x2_le_s) }
473471
| (simd_int_shape as s)".le_u"
474472
{ except ["i64x2"] s lexbuf;
475473
BINARY (simd_int_op s i8x16_le_u i16x8_le_u i32x4_le_u unreachable) }
476474
| (simd_int_shape as s)".gt_s"
477-
{ except ["i64x2"] s lexbuf;
478-
BINARY (simd_int_op s i8x16_gt_s i16x8_gt_s i32x4_gt_s unreachable) }
475+
{ BINARY (simd_int_op s i8x16_gt_s i16x8_gt_s i32x4_gt_s i64x2_gt_s) }
479476
| (simd_int_shape as s)".gt_u"
480477
{ except ["i64x2"] s lexbuf;
481478
BINARY (simd_int_op s i8x16_gt_u i16x8_gt_u i32x4_gt_u unreachable) }
482479
| (simd_int_shape as s)".ge_s"
483-
{ except ["i64x2"] s lexbuf;
484-
BINARY (simd_int_op s i8x16_ge_s i16x8_ge_s i32x4_ge_s unreachable) }
480+
{ BINARY (simd_int_op s i8x16_ge_s i16x8_ge_s i32x4_ge_s i64x2_ge_s) }
485481
| (simd_int_shape as s)".ge_u"
486482
{ except ["i64x2"] s lexbuf;
487483
BINARY (simd_int_op s i8x16_ge_u i16x8_ge_u i32x4_ge_u unreachable) }

test/core/simd/meta/simd_i64x2_cmp.py

+180
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ class Simdi64x2CmpCase(SimdCmpCase):
1616
(module
1717
(func (export "eq") (param $x v128) (param $y v128) (result v128) ({lane_type}.eq (local.get $x) (local.get $y)))
1818
(func (export "ne") (param $x v128) (param $y v128) (result v128) ({lane_type}.ne (local.get $x) (local.get $y)))
19+
(func (export "lt_s") (param $x v128) (param $y v128) (result v128) ({lane_type}.lt_s (local.get $x) (local.get $y)))
20+
(func (export "le_s") (param $x v128) (param $y v128) (result v128) ({lane_type}.le_s (local.get $x) (local.get $y)))
21+
(func (export "gt_s") (param $x v128) (param $y v128) (result v128) ({lane_type}.gt_s (local.get $x) (local.get $y)))
22+
(func (export "ge_s") (param $x v128) (param $y v128) (result v128) ({lane_type}.ge_s (local.get $x) (local.get $y)))
1923
)
2024
2125
{normal_case}
@@ -24,6 +28,10 @@ class Simdi64x2CmpCase(SimdCmpCase):
2428
2529
(assert_invalid (module (func (result v128) ({lane_type}.eq (i32.const 0) (f32.const 0)))) "type mismatch")
2630
(assert_invalid (module (func (result v128) ({lane_type}.ne (i32.const 0) (f32.const 0)))) "type mismatch")
31+
(assert_invalid (module (func (result v128) ({lane_type}.ge_s (i32.const 0) (f32.const 0)))) "type mismatch")
32+
(assert_invalid (module (func (result v128) ({lane_type}.gt_s (i32.const 0) (f32.const 0)))) "type mismatch")
33+
(assert_invalid (module (func (result v128) ({lane_type}.le_s (i32.const 0) (f32.const 0)))) "type mismatch")
34+
(assert_invalid (module (func (result v128) ({lane_type}.lt_s (i32.const 0) (f32.const 0)))) "type mismatch")
2735
"""
2836

2937
def get_case_data(self):
@@ -57,6 +65,178 @@ def get_case_data(self):
5765
case_data.append(['ne', [['0x03020100', '0x11100904', '0x1A0B0A12', '0xFFABAA1B'],
5866
['0x03020100', '0x11100904', '0x1A0B0A12', '0xFFABAA1B']], '0', forms])
5967

68+
# lt_s
69+
# i64x2.lt_s (i64x2) (i64x2)
70+
case_data.append(['#', 'lt_s'])
71+
case_data.append(['#', 'i64x2.lt_s (i64x2) (i64x2)'])
72+
73+
# hex vs hex
74+
case_data.append(['#', 'hex vs hex'])
75+
case_data.append(['lt_s', ['0xFFFFFFFFFFFFFFFF', '0xFFFFFFFFFFFFFFFF'], '0', ['i64x2', 'i64x2', 'i64x2']])
76+
case_data.append(['lt_s', ['0x0000000000000000', '0x0000000000000000'], '0', ['i64x2', 'i64x2', 'i64x2']])
77+
case_data.append(['lt_s', ['0xF0F0F0F0F0F0F0F0', '0xF0F0F0F0F0F0F0F0'], '0', ['i64x2', 'i64x2', 'i64x2']])
78+
case_data.append(['lt_s', ['0x0F0F0F0F0F0F0F0F', '0x0F0F0F0F0F0F0F0F'], '0', ['i64x2', 'i64x2', 'i64x2']])
79+
case_data.append(['lt_s', [['0xFFFFFFFFFFFFFFFF', '0x0000000000000000'], ['0xFFFFFFFFFFFFFFFF', '0x0000000000000000']], '0', ['i64x2', 'i64x2', 'i64x2']])
80+
case_data.append(['lt_s', [['0x0000000000000000', '0xFFFFFFFFFFFFFFFF'], ['0x0000000000000000', '0xFFFFFFFFFFFFFFFF']], '0', ['i64x2', 'i64x2', 'i64x2']])
81+
case_data.append(['lt_s', [['0x0302010011100904', '0x1A0B0A12FFABAA1B'],
82+
['0x0302010011100904', '0x1A0B0A12FFABAA1B']], '0', ['i64x2', 'i64x2', 'i64x2']])
83+
84+
# hex vs dec
85+
case_data.append(['#', 'hex vs dec'])
86+
case_data.append(['lt_s', ['0xFFFFFFFFFFFFFFFF', '18446744073709551615'], '0', ['i64x2', 'i64x2', 'i64x2']])
87+
case_data.append(['lt_s', ['0xFFFFFFFFFFFFFFFF', '-1'], '0', ['i64x2', 'i64x2', 'i64x2']])
88+
case_data.append(['lt_s', ['0x8080808080808080', '9259542123273814144'], '0', ['i64x2', 'i64x2', 'i64x2']])
89+
case_data.append(['lt_s', ['0x8080808080808080', '-9187201950435737472'], '0', ['i64x2', 'i64x2', 'i64x2']])
90+
case_data.append(['lt_s', [['0x8382818000FFFEFD', '0x7F020100FFFEFD80'],
91+
['-8970465120996032771', '9151878496576798080']], '0', ['i64x2', 'i64x2', 'i64x2']])
92+
93+
# dec vs dec
94+
case_data.append(['#', 'dec vs dec'])
95+
case_data.append(['lt_s', ['-1', '-1'], '0', ['i64x2', 'i64x2', 'i64x2']])
96+
case_data.append(['lt_s', ['0', '0'], '0', ['i64x2', 'i64x2', 'i64x2']])
97+
case_data.append(['lt_s', ['18446744073709551615', '18446744073709551615'], '0', ['i64x2', 'i64x2', 'i64x2']])
98+
case_data.append(['lt_s', ['18446744073709551615', '-1'], '0', ['i64x2', 'i64x2', 'i64x2']])
99+
case_data.append(['lt_s', [['18446744073709551615', '0'], ['18446744073709551615', '0']], '0', ['i64x2', 'i64x2', 'i64x2']])
100+
case_data.append(['lt_s', [['0', '18446744073709551615'], ['0', '18446744073709551615']], '0', ['i64x2', 'i64x2', 'i64x2']])
101+
case_data.append(['lt_s', [['-9223372036854775807', '18446744073709551615'],
102+
['9223372036854775809', '-1']], '0', ['i64x2', 'i64x2', 'i64x2']])
103+
104+
# hex vs float
105+
case_data.append(['#', 'hex vs float'])
106+
case_data.append(['lt_s', [['0xc060000000000000', '0xc05fc00000000000'],
107+
['-128.0', '-127.0']], '0', ['i64x2', 'f64x2', 'i64x2']])
108+
case_data.append(['lt_s', [['0x3ff0000000000000', '0x405fc00000000000'],
109+
['1.0', '127.0']], '0', ['i64x2', 'f64x2', 'i64x2']])
110+
111+
# le_s
112+
# i64x2.le_s (i64x2) (i64x2)
113+
case_data.append(['#', 'le_s'])
114+
case_data.append(['#', 'i64x2.le_s (i64x2) (i64x2)'])
115+
116+
# hex vs hex
117+
case_data.append(['#', 'hex vs hex'])
118+
case_data.append(['le_s', ['0xFFFFFFFFFFFFFFFF', '0xFFFFFFFFFFFFFFFF'], '-1', ['i64x2', 'i64x2', 'i64x2']])
119+
case_data.append(['le_s', ['0x0000000000000000', '0x0000000000000000'], '-1', ['i64x2', 'i64x2', 'i64x2']])
120+
case_data.append(['le_s', ['0xF0F0F0F0F0F0F0F0', '0xF0F0F0F0F0F0F0F0'], '-1', ['i64x2', 'i64x2', 'i64x2']])
121+
case_data.append(['le_s', ['0x0F0F0F0F0F0F0F0F', '0x0F0F0F0F0F0F0F0F'], '-1', ['i64x2', 'i64x2', 'i64x2']])
122+
case_data.append(['le_s', [['0xFFFFFFFFFFFFFFFF', '0x0000000000000000'], ['0xFFFFFFFFFFFFFFFF', '0x0000000000000000']], '-1', ['i64x2', 'i64x2', 'i64x2']])
123+
case_data.append(['le_s', [['0x0000000000000000', '0xFFFFFFFFFFFFFFFF'], ['0x0000000000000000', '0xFFFFFFFFFFFFFFFF']], '-1', ['i64x2', 'i64x2', 'i64x2']])
124+
case_data.append(['le_s', [['0x0302010011100904', '0x1A0B0A12FFABAA1B'],
125+
['0x0302010011100904', '0x1A0B0A12FFABAA1B']], '-1', ['i64x2', 'i64x2', 'i64x2']])
126+
127+
# hex vs dec
128+
case_data.append(['#', 'hex vs dec'])
129+
case_data.append(['le_s', ['0xFFFFFFFFFFFFFFFF', '18446744073709551615'], '-1', ['i64x2', 'i64x2', 'i64x2']])
130+
case_data.append(['le_s', ['0xFFFFFFFFFFFFFFFF', '-1'], '-1', ['i64x2', 'i64x2', 'i64x2']])
131+
case_data.append(['le_s', ['0x8080808080808080', '9259542123273814144'], '-1', ['i64x2', 'i64x2', 'i64x2']])
132+
case_data.append(['le_s', ['0x8080808080808080', '-9187201950435737472'], '-1', ['i64x2', 'i64x2', 'i64x2']])
133+
case_data.append(['le_s', [['0x8382818000FFFEFD', '0x7F020100FFFEFD80'],
134+
['-8970465120996032771', '9151878496576798080']], '-1', ['i64x2', 'i64x2', 'i64x2']])
135+
136+
# dec vs dec
137+
case_data.append(['#', 'dec vs dec'])
138+
case_data.append(['le_s', ['-1', '-1'], '-1', ['i64x2', 'i64x2', 'i64x2']])
139+
case_data.append(['le_s', ['0', '0'], '-1', ['i64x2', 'i64x2', 'i64x2']])
140+
case_data.append(['le_s', ['18446744073709551615', '18446744073709551615'], '-1', ['i64x2', 'i64x2', 'i64x2']])
141+
case_data.append(['le_s', ['18446744073709551615', '-1'], '-1', ['i64x2', 'i64x2', 'i64x2']])
142+
case_data.append(['le_s', [['18446744073709551615', '0'], ['18446744073709551615', '0']], '-1', ['i64x2', 'i64x2', 'i64x2']])
143+
case_data.append(['le_s', [['0', '18446744073709551615'], ['0', '18446744073709551615']], '-1', ['i64x2', 'i64x2', 'i64x2']])
144+
case_data.append(['le_s', [['-9223372036854775807', '18446744073709551615'],
145+
['9223372036854775809', '-1']], '-1', ['i64x2', 'i64x2', 'i64x2']])
146+
147+
# hex vs float
148+
case_data.append(['#', 'hex vs float'])
149+
case_data.append(['le_s', [['0xc060000000000000', '0xc05fc00000000000'],
150+
['-128.0', '-127.0']], '-1', ['i64x2', 'f64x2', 'i64x2']])
151+
case_data.append(['le_s', [['0x3ff0000000000000', '0x405fc00000000000'],
152+
['1.0', '127.0']], '-1', ['i64x2', 'f64x2', 'i64x2']])
153+
154+
# gt_s
155+
# i64x2.gt_s (i64x2) (i64x2)
156+
case_data.append(['#', 'gt_s'])
157+
case_data.append(['#', 'i64x2.gt_s (i64x2) (i64x2)'])
158+
159+
# hex vs hex
160+
case_data.append(['#', 'hex vs hex'])
161+
case_data.append(['gt_s', ['0xFFFFFFFFFFFFFFFF', '0xFFFFFFFFFFFFFFFF'], '0', ['i64x2', 'i64x2', 'i64x2']])
162+
case_data.append(['gt_s', ['0x0000000000000000', '0x0000000000000000'], '0', ['i64x2', 'i64x2', 'i64x2']])
163+
case_data.append(['gt_s', ['0xF0F0F0F0F0F0F0F0', '0xF0F0F0F0F0F0F0F0'], '0', ['i64x2', 'i64x2', 'i64x2']])
164+
case_data.append(['gt_s', ['0x0F0F0F0F0F0F0F0F', '0x0F0F0F0F0F0F0F0F'], '0', ['i64x2', 'i64x2', 'i64x2']])
165+
case_data.append(['gt_s', [['0xFFFFFFFFFFFFFFFF', '0x0000000000000000'], ['0xFFFFFFFFFFFFFFFF', '0x0000000000000000']], '0', ['i64x2', 'i64x2', 'i64x2']])
166+
case_data.append(['gt_s', [['0x0000000000000000', '0xFFFFFFFFFFFFFFFF'], ['0x0000000000000000', '0xFFFFFFFFFFFFFFFF']], '0', ['i64x2', 'i64x2', 'i64x2']])
167+
case_data.append(['gt_s', [['0x0302010011100904', '0x1A0B0A12FFABAA1B'],
168+
['0x0302010011100904', '0x1A0B0A12FFABAA1B']], '0', ['i64x2', 'i64x2', 'i64x2']])
169+
170+
# hex vs dec
171+
case_data.append(['#', 'hex vs dec'])
172+
case_data.append(['gt_s', ['0xFFFFFFFFFFFFFFFF', '18446744073709551615'], '0', ['i64x2', 'i64x2', 'i64x2']])
173+
case_data.append(['gt_s', ['0xFFFFFFFFFFFFFFFF', '-1'], '0', ['i64x2', 'i64x2', 'i64x2']])
174+
case_data.append(['gt_s', ['0x8080808080808080', '9259542123273814144'], '0', ['i64x2', 'i64x2', 'i64x2']])
175+
case_data.append(['gt_s', ['0x8080808080808080', '-9187201950435737472'], '0', ['i64x2', 'i64x2', 'i64x2']])
176+
case_data.append(['gt_s', [['0x8382818000FFFEFD', '0x7F020100FFFEFD80'],
177+
['-8970465120996032771', '9151878496576798080']], '0', ['i64x2', 'i64x2', 'i64x2']])
178+
179+
# dec vs dec
180+
case_data.append(['#', 'dec vs dec'])
181+
case_data.append(['gt_s', ['-1', '-1'], '0', ['i64x2', 'i64x2', 'i64x2']])
182+
case_data.append(['gt_s', ['0', '0'], '0', ['i64x2', 'i64x2', 'i64x2']])
183+
case_data.append(['gt_s', ['18446744073709551615', '18446744073709551615'], '0', ['i64x2', 'i64x2', 'i64x2']])
184+
case_data.append(['gt_s', ['18446744073709551615', '-1'], '0', ['i64x2', 'i64x2', 'i64x2']])
185+
case_data.append(['gt_s', [['18446744073709551615', '0'], ['18446744073709551615', '0']], '0', ['i64x2', 'i64x2', 'i64x2']])
186+
case_data.append(['gt_s', [['0', '18446744073709551615'], ['0', '18446744073709551615']], '0', ['i64x2', 'i64x2', 'i64x2']])
187+
case_data.append(['gt_s', [['-9223372036854775807', '18446744073709551615'],
188+
['9223372036854775809', '-1']], '0', ['i64x2', 'i64x2', 'i64x2']])
189+
190+
# hex vs float
191+
case_data.append(['#', 'hex vs float'])
192+
case_data.append(['gt_s', [['0xc060000000000000', '0xc05fc00000000000'],
193+
['-128.0', '-127.0']], '0', ['i64x2', 'f64x2', 'i64x2']])
194+
case_data.append(['gt_s', [['0x3ff0000000000000', '0x405fc00000000000'],
195+
['1.0', '127.0']], '0', ['i64x2', 'f64x2', 'i64x2']])
196+
197+
# ge_s
198+
# i64x2.ge_s (i64x2) (i64x2)
199+
case_data.append(['#', 'ge_s'])
200+
case_data.append(['#', 'i64x2.ge_s (i64x2) (i64x2)'])
201+
202+
# hex vs hex
203+
case_data.append(['#', 'hex vs hex'])
204+
case_data.append(['ge_s', ['0xFFFFFFFFFFFFFFFF', '0xFFFFFFFFFFFFFFFF'], '-1', ['i64x2', 'i64x2', 'i64x2']])
205+
case_data.append(['ge_s', ['0x0000000000000000', '0x0000000000000000'], '-1', ['i64x2', 'i64x2', 'i64x2']])
206+
case_data.append(['ge_s', ['0xF0F0F0F0F0F0F0F0', '0xF0F0F0F0F0F0F0F0'], '-1', ['i64x2', 'i64x2', 'i64x2']])
207+
case_data.append(['ge_s', ['0x0F0F0F0F0F0F0F0F', '0x0F0F0F0F0F0F0F0F'], '-1', ['i64x2', 'i64x2', 'i64x2']])
208+
case_data.append(['ge_s', [['0xFFFFFFFFFFFFFFFF', '0x0000000000000000'], ['0xFFFFFFFFFFFFFFFF', '0x0000000000000000']], '-1', ['i64x2', 'i64x2', 'i64x2']])
209+
case_data.append(['ge_s', [['0x0000000000000000', '0xFFFFFFFFFFFFFFFF'], ['0x0000000000000000', '0xFFFFFFFFFFFFFFFF']], '-1', ['i64x2', 'i64x2', 'i64x2']])
210+
case_data.append(['ge_s', [['0x0302010011100904', '0x1A0B0A12FFABAA1B'],
211+
['0x0302010011100904', '0x1A0B0A12FFABAA1B']], '-1', ['i64x2', 'i64x2', 'i64x2']])
212+
213+
# hex vs dec
214+
case_data.append(['#', 'hex vs dec'])
215+
case_data.append(['ge_s', ['0xFFFFFFFFFFFFFFFF', '18446744073709551615'], '-1', ['i64x2', 'i64x2', 'i64x2']])
216+
case_data.append(['ge_s', ['0xFFFFFFFFFFFFFFFF', '-1'], '-1', ['i64x2', 'i64x2', 'i64x2']])
217+
case_data.append(['ge_s', ['0x8080808080808080', '9259542123273814144'], '-1', ['i64x2', 'i64x2', 'i64x2']])
218+
case_data.append(['ge_s', ['0x8080808080808080', '-9187201950435737472'], '-1', ['i64x2', 'i64x2', 'i64x2']])
219+
case_data.append(['ge_s', [['0x8382818000FFFEFD', '0x7F020100FFFEFD80'],
220+
['-8970465120996032771', '9151878496576798080']], '-1', ['i64x2', 'i64x2', 'i64x2']])
221+
222+
# dec vs dec
223+
case_data.append(['#', 'dec vs dec'])
224+
case_data.append(['ge_s', ['-1', '-1'], '-1', ['i64x2', 'i64x2', 'i64x2']])
225+
case_data.append(['ge_s', ['0', '0'], '-1', ['i64x2', 'i64x2', 'i64x2']])
226+
case_data.append(['ge_s', ['18446744073709551615', '18446744073709551615'], '-1', ['i64x2', 'i64x2', 'i64x2']])
227+
case_data.append(['ge_s', ['18446744073709551615', '-1'], '-1', ['i64x2', 'i64x2', 'i64x2']])
228+
case_data.append(['ge_s', [['18446744073709551615', '0'], ['18446744073709551615', '0']], '-1', ['i64x2', 'i64x2', 'i64x2']])
229+
case_data.append(['ge_s', [['0', '18446744073709551615'], ['0', '18446744073709551615']], '-1', ['i64x2', 'i64x2', 'i64x2']])
230+
case_data.append(['ge_s', [['-9223372036854775807', '18446744073709551615'],
231+
['9223372036854775809', '-1']], '-1', ['i64x2', 'i64x2', 'i64x2']])
232+
233+
# hex vs float
234+
case_data.append(['#', 'hex vs float'])
235+
case_data.append(['ge_s', [['0xc060000000000000', '0xc05fc00000000000'],
236+
['-128.0', '-127.0']], '-1', ['i64x2', 'f64x2', 'i64x2']])
237+
case_data.append(['ge_s', [['0x3ff0000000000000', '0x405fc00000000000'],
238+
['1.0', '127.0']], '-1', ['i64x2', 'f64x2', 'i64x2']])
239+
60240
return case_data
61241

62242

0 commit comments

Comments
 (0)