• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Code generated by gen/cmpConstGen.go. DO NOT EDIT.
2
3package main
4
5import (
6	"reflect"
7	"runtime"
8	"testing"
9)
10
11// results show the expected result for the elements left of, equal to and right of the index.
12type result struct{ l, e, r bool }
13
14var (
15	eq = result{l: false, e: true, r: false}
16	ne = result{l: true, e: false, r: true}
17	lt = result{l: true, e: false, r: false}
18	le = result{l: true, e: true, r: false}
19	gt = result{l: false, e: false, r: true}
20	ge = result{l: false, e: true, r: true}
21)
22
23// uint64 tests
24var uint64_vals = []uint64{
25	0,
26	1,
27	126,
28	127,
29	128,
30	254,
31	255,
32	256,
33	32766,
34	32767,
35	32768,
36	65534,
37	65535,
38	65536,
39	2147483646,
40	2147483647,
41	2147483648,
42	4278190080,
43	4294967294,
44	4294967295,
45	4294967296,
46	1095216660480,
47	9223372036854775806,
48	9223372036854775807,
49	9223372036854775808,
50	18374686479671623680,
51	18446744073709551614,
52	18446744073709551615,
53}
54
55func lt_0_uint64(x uint64) bool                    { return x < 0 }
56func le_0_uint64(x uint64) bool                    { return x <= 0 }
57func gt_0_uint64(x uint64) bool                    { return x > 0 }
58func ge_0_uint64(x uint64) bool                    { return x >= 0 }
59func eq_0_uint64(x uint64) bool                    { return x == 0 }
60func ne_0_uint64(x uint64) bool                    { return x != 0 }
61func lt_1_uint64(x uint64) bool                    { return x < 1 }
62func le_1_uint64(x uint64) bool                    { return x <= 1 }
63func gt_1_uint64(x uint64) bool                    { return x > 1 }
64func ge_1_uint64(x uint64) bool                    { return x >= 1 }
65func eq_1_uint64(x uint64) bool                    { return x == 1 }
66func ne_1_uint64(x uint64) bool                    { return x != 1 }
67func lt_126_uint64(x uint64) bool                  { return x < 126 }
68func le_126_uint64(x uint64) bool                  { return x <= 126 }
69func gt_126_uint64(x uint64) bool                  { return x > 126 }
70func ge_126_uint64(x uint64) bool                  { return x >= 126 }
71func eq_126_uint64(x uint64) bool                  { return x == 126 }
72func ne_126_uint64(x uint64) bool                  { return x != 126 }
73func lt_127_uint64(x uint64) bool                  { return x < 127 }
74func le_127_uint64(x uint64) bool                  { return x <= 127 }
75func gt_127_uint64(x uint64) bool                  { return x > 127 }
76func ge_127_uint64(x uint64) bool                  { return x >= 127 }
77func eq_127_uint64(x uint64) bool                  { return x == 127 }
78func ne_127_uint64(x uint64) bool                  { return x != 127 }
79func lt_128_uint64(x uint64) bool                  { return x < 128 }
80func le_128_uint64(x uint64) bool                  { return x <= 128 }
81func gt_128_uint64(x uint64) bool                  { return x > 128 }
82func ge_128_uint64(x uint64) bool                  { return x >= 128 }
83func eq_128_uint64(x uint64) bool                  { return x == 128 }
84func ne_128_uint64(x uint64) bool                  { return x != 128 }
85func lt_254_uint64(x uint64) bool                  { return x < 254 }
86func le_254_uint64(x uint64) bool                  { return x <= 254 }
87func gt_254_uint64(x uint64) bool                  { return x > 254 }
88func ge_254_uint64(x uint64) bool                  { return x >= 254 }
89func eq_254_uint64(x uint64) bool                  { return x == 254 }
90func ne_254_uint64(x uint64) bool                  { return x != 254 }
91func lt_255_uint64(x uint64) bool                  { return x < 255 }
92func le_255_uint64(x uint64) bool                  { return x <= 255 }
93func gt_255_uint64(x uint64) bool                  { return x > 255 }
94func ge_255_uint64(x uint64) bool                  { return x >= 255 }
95func eq_255_uint64(x uint64) bool                  { return x == 255 }
96func ne_255_uint64(x uint64) bool                  { return x != 255 }
97func lt_256_uint64(x uint64) bool                  { return x < 256 }
98func le_256_uint64(x uint64) bool                  { return x <= 256 }
99func gt_256_uint64(x uint64) bool                  { return x > 256 }
100func ge_256_uint64(x uint64) bool                  { return x >= 256 }
101func eq_256_uint64(x uint64) bool                  { return x == 256 }
102func ne_256_uint64(x uint64) bool                  { return x != 256 }
103func lt_32766_uint64(x uint64) bool                { return x < 32766 }
104func le_32766_uint64(x uint64) bool                { return x <= 32766 }
105func gt_32766_uint64(x uint64) bool                { return x > 32766 }
106func ge_32766_uint64(x uint64) bool                { return x >= 32766 }
107func eq_32766_uint64(x uint64) bool                { return x == 32766 }
108func ne_32766_uint64(x uint64) bool                { return x != 32766 }
109func lt_32767_uint64(x uint64) bool                { return x < 32767 }
110func le_32767_uint64(x uint64) bool                { return x <= 32767 }
111func gt_32767_uint64(x uint64) bool                { return x > 32767 }
112func ge_32767_uint64(x uint64) bool                { return x >= 32767 }
113func eq_32767_uint64(x uint64) bool                { return x == 32767 }
114func ne_32767_uint64(x uint64) bool                { return x != 32767 }
115func lt_32768_uint64(x uint64) bool                { return x < 32768 }
116func le_32768_uint64(x uint64) bool                { return x <= 32768 }
117func gt_32768_uint64(x uint64) bool                { return x > 32768 }
118func ge_32768_uint64(x uint64) bool                { return x >= 32768 }
119func eq_32768_uint64(x uint64) bool                { return x == 32768 }
120func ne_32768_uint64(x uint64) bool                { return x != 32768 }
121func lt_65534_uint64(x uint64) bool                { return x < 65534 }
122func le_65534_uint64(x uint64) bool                { return x <= 65534 }
123func gt_65534_uint64(x uint64) bool                { return x > 65534 }
124func ge_65534_uint64(x uint64) bool                { return x >= 65534 }
125func eq_65534_uint64(x uint64) bool                { return x == 65534 }
126func ne_65534_uint64(x uint64) bool                { return x != 65534 }
127func lt_65535_uint64(x uint64) bool                { return x < 65535 }
128func le_65535_uint64(x uint64) bool                { return x <= 65535 }
129func gt_65535_uint64(x uint64) bool                { return x > 65535 }
130func ge_65535_uint64(x uint64) bool                { return x >= 65535 }
131func eq_65535_uint64(x uint64) bool                { return x == 65535 }
132func ne_65535_uint64(x uint64) bool                { return x != 65535 }
133func lt_65536_uint64(x uint64) bool                { return x < 65536 }
134func le_65536_uint64(x uint64) bool                { return x <= 65536 }
135func gt_65536_uint64(x uint64) bool                { return x > 65536 }
136func ge_65536_uint64(x uint64) bool                { return x >= 65536 }
137func eq_65536_uint64(x uint64) bool                { return x == 65536 }
138func ne_65536_uint64(x uint64) bool                { return x != 65536 }
139func lt_2147483646_uint64(x uint64) bool           { return x < 2147483646 }
140func le_2147483646_uint64(x uint64) bool           { return x <= 2147483646 }
141func gt_2147483646_uint64(x uint64) bool           { return x > 2147483646 }
142func ge_2147483646_uint64(x uint64) bool           { return x >= 2147483646 }
143func eq_2147483646_uint64(x uint64) bool           { return x == 2147483646 }
144func ne_2147483646_uint64(x uint64) bool           { return x != 2147483646 }
145func lt_2147483647_uint64(x uint64) bool           { return x < 2147483647 }
146func le_2147483647_uint64(x uint64) bool           { return x <= 2147483647 }
147func gt_2147483647_uint64(x uint64) bool           { return x > 2147483647 }
148func ge_2147483647_uint64(x uint64) bool           { return x >= 2147483647 }
149func eq_2147483647_uint64(x uint64) bool           { return x == 2147483647 }
150func ne_2147483647_uint64(x uint64) bool           { return x != 2147483647 }
151func lt_2147483648_uint64(x uint64) bool           { return x < 2147483648 }
152func le_2147483648_uint64(x uint64) bool           { return x <= 2147483648 }
153func gt_2147483648_uint64(x uint64) bool           { return x > 2147483648 }
154func ge_2147483648_uint64(x uint64) bool           { return x >= 2147483648 }
155func eq_2147483648_uint64(x uint64) bool           { return x == 2147483648 }
156func ne_2147483648_uint64(x uint64) bool           { return x != 2147483648 }
157func lt_4278190080_uint64(x uint64) bool           { return x < 4278190080 }
158func le_4278190080_uint64(x uint64) bool           { return x <= 4278190080 }
159func gt_4278190080_uint64(x uint64) bool           { return x > 4278190080 }
160func ge_4278190080_uint64(x uint64) bool           { return x >= 4278190080 }
161func eq_4278190080_uint64(x uint64) bool           { return x == 4278190080 }
162func ne_4278190080_uint64(x uint64) bool           { return x != 4278190080 }
163func lt_4294967294_uint64(x uint64) bool           { return x < 4294967294 }
164func le_4294967294_uint64(x uint64) bool           { return x <= 4294967294 }
165func gt_4294967294_uint64(x uint64) bool           { return x > 4294967294 }
166func ge_4294967294_uint64(x uint64) bool           { return x >= 4294967294 }
167func eq_4294967294_uint64(x uint64) bool           { return x == 4294967294 }
168func ne_4294967294_uint64(x uint64) bool           { return x != 4294967294 }
169func lt_4294967295_uint64(x uint64) bool           { return x < 4294967295 }
170func le_4294967295_uint64(x uint64) bool           { return x <= 4294967295 }
171func gt_4294967295_uint64(x uint64) bool           { return x > 4294967295 }
172func ge_4294967295_uint64(x uint64) bool           { return x >= 4294967295 }
173func eq_4294967295_uint64(x uint64) bool           { return x == 4294967295 }
174func ne_4294967295_uint64(x uint64) bool           { return x != 4294967295 }
175func lt_4294967296_uint64(x uint64) bool           { return x < 4294967296 }
176func le_4294967296_uint64(x uint64) bool           { return x <= 4294967296 }
177func gt_4294967296_uint64(x uint64) bool           { return x > 4294967296 }
178func ge_4294967296_uint64(x uint64) bool           { return x >= 4294967296 }
179func eq_4294967296_uint64(x uint64) bool           { return x == 4294967296 }
180func ne_4294967296_uint64(x uint64) bool           { return x != 4294967296 }
181func lt_1095216660480_uint64(x uint64) bool        { return x < 1095216660480 }
182func le_1095216660480_uint64(x uint64) bool        { return x <= 1095216660480 }
183func gt_1095216660480_uint64(x uint64) bool        { return x > 1095216660480 }
184func ge_1095216660480_uint64(x uint64) bool        { return x >= 1095216660480 }
185func eq_1095216660480_uint64(x uint64) bool        { return x == 1095216660480 }
186func ne_1095216660480_uint64(x uint64) bool        { return x != 1095216660480 }
187func lt_9223372036854775806_uint64(x uint64) bool  { return x < 9223372036854775806 }
188func le_9223372036854775806_uint64(x uint64) bool  { return x <= 9223372036854775806 }
189func gt_9223372036854775806_uint64(x uint64) bool  { return x > 9223372036854775806 }
190func ge_9223372036854775806_uint64(x uint64) bool  { return x >= 9223372036854775806 }
191func eq_9223372036854775806_uint64(x uint64) bool  { return x == 9223372036854775806 }
192func ne_9223372036854775806_uint64(x uint64) bool  { return x != 9223372036854775806 }
193func lt_9223372036854775807_uint64(x uint64) bool  { return x < 9223372036854775807 }
194func le_9223372036854775807_uint64(x uint64) bool  { return x <= 9223372036854775807 }
195func gt_9223372036854775807_uint64(x uint64) bool  { return x > 9223372036854775807 }
196func ge_9223372036854775807_uint64(x uint64) bool  { return x >= 9223372036854775807 }
197func eq_9223372036854775807_uint64(x uint64) bool  { return x == 9223372036854775807 }
198func ne_9223372036854775807_uint64(x uint64) bool  { return x != 9223372036854775807 }
199func lt_9223372036854775808_uint64(x uint64) bool  { return x < 9223372036854775808 }
200func le_9223372036854775808_uint64(x uint64) bool  { return x <= 9223372036854775808 }
201func gt_9223372036854775808_uint64(x uint64) bool  { return x > 9223372036854775808 }
202func ge_9223372036854775808_uint64(x uint64) bool  { return x >= 9223372036854775808 }
203func eq_9223372036854775808_uint64(x uint64) bool  { return x == 9223372036854775808 }
204func ne_9223372036854775808_uint64(x uint64) bool  { return x != 9223372036854775808 }
205func lt_18374686479671623680_uint64(x uint64) bool { return x < 18374686479671623680 }
206func le_18374686479671623680_uint64(x uint64) bool { return x <= 18374686479671623680 }
207func gt_18374686479671623680_uint64(x uint64) bool { return x > 18374686479671623680 }
208func ge_18374686479671623680_uint64(x uint64) bool { return x >= 18374686479671623680 }
209func eq_18374686479671623680_uint64(x uint64) bool { return x == 18374686479671623680 }
210func ne_18374686479671623680_uint64(x uint64) bool { return x != 18374686479671623680 }
211func lt_18446744073709551614_uint64(x uint64) bool { return x < 18446744073709551614 }
212func le_18446744073709551614_uint64(x uint64) bool { return x <= 18446744073709551614 }
213func gt_18446744073709551614_uint64(x uint64) bool { return x > 18446744073709551614 }
214func ge_18446744073709551614_uint64(x uint64) bool { return x >= 18446744073709551614 }
215func eq_18446744073709551614_uint64(x uint64) bool { return x == 18446744073709551614 }
216func ne_18446744073709551614_uint64(x uint64) bool { return x != 18446744073709551614 }
217func lt_18446744073709551615_uint64(x uint64) bool { return x < 18446744073709551615 }
218func le_18446744073709551615_uint64(x uint64) bool { return x <= 18446744073709551615 }
219func gt_18446744073709551615_uint64(x uint64) bool { return x > 18446744073709551615 }
220func ge_18446744073709551615_uint64(x uint64) bool { return x >= 18446744073709551615 }
221func eq_18446744073709551615_uint64(x uint64) bool { return x == 18446744073709551615 }
222func ne_18446744073709551615_uint64(x uint64) bool { return x != 18446744073709551615 }
223
224var uint64_tests = []struct {
225	idx int    // index of the constant used
226	exp result // expected results
227	fn  func(uint64) bool
228}{
229	{idx: 0, exp: lt, fn: lt_0_uint64},
230	{idx: 0, exp: le, fn: le_0_uint64},
231	{idx: 0, exp: gt, fn: gt_0_uint64},
232	{idx: 0, exp: ge, fn: ge_0_uint64},
233	{idx: 0, exp: eq, fn: eq_0_uint64},
234	{idx: 0, exp: ne, fn: ne_0_uint64},
235	{idx: 1, exp: lt, fn: lt_1_uint64},
236	{idx: 1, exp: le, fn: le_1_uint64},
237	{idx: 1, exp: gt, fn: gt_1_uint64},
238	{idx: 1, exp: ge, fn: ge_1_uint64},
239	{idx: 1, exp: eq, fn: eq_1_uint64},
240	{idx: 1, exp: ne, fn: ne_1_uint64},
241	{idx: 2, exp: lt, fn: lt_126_uint64},
242	{idx: 2, exp: le, fn: le_126_uint64},
243	{idx: 2, exp: gt, fn: gt_126_uint64},
244	{idx: 2, exp: ge, fn: ge_126_uint64},
245	{idx: 2, exp: eq, fn: eq_126_uint64},
246	{idx: 2, exp: ne, fn: ne_126_uint64},
247	{idx: 3, exp: lt, fn: lt_127_uint64},
248	{idx: 3, exp: le, fn: le_127_uint64},
249	{idx: 3, exp: gt, fn: gt_127_uint64},
250	{idx: 3, exp: ge, fn: ge_127_uint64},
251	{idx: 3, exp: eq, fn: eq_127_uint64},
252	{idx: 3, exp: ne, fn: ne_127_uint64},
253	{idx: 4, exp: lt, fn: lt_128_uint64},
254	{idx: 4, exp: le, fn: le_128_uint64},
255	{idx: 4, exp: gt, fn: gt_128_uint64},
256	{idx: 4, exp: ge, fn: ge_128_uint64},
257	{idx: 4, exp: eq, fn: eq_128_uint64},
258	{idx: 4, exp: ne, fn: ne_128_uint64},
259	{idx: 5, exp: lt, fn: lt_254_uint64},
260	{idx: 5, exp: le, fn: le_254_uint64},
261	{idx: 5, exp: gt, fn: gt_254_uint64},
262	{idx: 5, exp: ge, fn: ge_254_uint64},
263	{idx: 5, exp: eq, fn: eq_254_uint64},
264	{idx: 5, exp: ne, fn: ne_254_uint64},
265	{idx: 6, exp: lt, fn: lt_255_uint64},
266	{idx: 6, exp: le, fn: le_255_uint64},
267	{idx: 6, exp: gt, fn: gt_255_uint64},
268	{idx: 6, exp: ge, fn: ge_255_uint64},
269	{idx: 6, exp: eq, fn: eq_255_uint64},
270	{idx: 6, exp: ne, fn: ne_255_uint64},
271	{idx: 7, exp: lt, fn: lt_256_uint64},
272	{idx: 7, exp: le, fn: le_256_uint64},
273	{idx: 7, exp: gt, fn: gt_256_uint64},
274	{idx: 7, exp: ge, fn: ge_256_uint64},
275	{idx: 7, exp: eq, fn: eq_256_uint64},
276	{idx: 7, exp: ne, fn: ne_256_uint64},
277	{idx: 8, exp: lt, fn: lt_32766_uint64},
278	{idx: 8, exp: le, fn: le_32766_uint64},
279	{idx: 8, exp: gt, fn: gt_32766_uint64},
280	{idx: 8, exp: ge, fn: ge_32766_uint64},
281	{idx: 8, exp: eq, fn: eq_32766_uint64},
282	{idx: 8, exp: ne, fn: ne_32766_uint64},
283	{idx: 9, exp: lt, fn: lt_32767_uint64},
284	{idx: 9, exp: le, fn: le_32767_uint64},
285	{idx: 9, exp: gt, fn: gt_32767_uint64},
286	{idx: 9, exp: ge, fn: ge_32767_uint64},
287	{idx: 9, exp: eq, fn: eq_32767_uint64},
288	{idx: 9, exp: ne, fn: ne_32767_uint64},
289	{idx: 10, exp: lt, fn: lt_32768_uint64},
290	{idx: 10, exp: le, fn: le_32768_uint64},
291	{idx: 10, exp: gt, fn: gt_32768_uint64},
292	{idx: 10, exp: ge, fn: ge_32768_uint64},
293	{idx: 10, exp: eq, fn: eq_32768_uint64},
294	{idx: 10, exp: ne, fn: ne_32768_uint64},
295	{idx: 11, exp: lt, fn: lt_65534_uint64},
296	{idx: 11, exp: le, fn: le_65534_uint64},
297	{idx: 11, exp: gt, fn: gt_65534_uint64},
298	{idx: 11, exp: ge, fn: ge_65534_uint64},
299	{idx: 11, exp: eq, fn: eq_65534_uint64},
300	{idx: 11, exp: ne, fn: ne_65534_uint64},
301	{idx: 12, exp: lt, fn: lt_65535_uint64},
302	{idx: 12, exp: le, fn: le_65535_uint64},
303	{idx: 12, exp: gt, fn: gt_65535_uint64},
304	{idx: 12, exp: ge, fn: ge_65535_uint64},
305	{idx: 12, exp: eq, fn: eq_65535_uint64},
306	{idx: 12, exp: ne, fn: ne_65535_uint64},
307	{idx: 13, exp: lt, fn: lt_65536_uint64},
308	{idx: 13, exp: le, fn: le_65536_uint64},
309	{idx: 13, exp: gt, fn: gt_65536_uint64},
310	{idx: 13, exp: ge, fn: ge_65536_uint64},
311	{idx: 13, exp: eq, fn: eq_65536_uint64},
312	{idx: 13, exp: ne, fn: ne_65536_uint64},
313	{idx: 14, exp: lt, fn: lt_2147483646_uint64},
314	{idx: 14, exp: le, fn: le_2147483646_uint64},
315	{idx: 14, exp: gt, fn: gt_2147483646_uint64},
316	{idx: 14, exp: ge, fn: ge_2147483646_uint64},
317	{idx: 14, exp: eq, fn: eq_2147483646_uint64},
318	{idx: 14, exp: ne, fn: ne_2147483646_uint64},
319	{idx: 15, exp: lt, fn: lt_2147483647_uint64},
320	{idx: 15, exp: le, fn: le_2147483647_uint64},
321	{idx: 15, exp: gt, fn: gt_2147483647_uint64},
322	{idx: 15, exp: ge, fn: ge_2147483647_uint64},
323	{idx: 15, exp: eq, fn: eq_2147483647_uint64},
324	{idx: 15, exp: ne, fn: ne_2147483647_uint64},
325	{idx: 16, exp: lt, fn: lt_2147483648_uint64},
326	{idx: 16, exp: le, fn: le_2147483648_uint64},
327	{idx: 16, exp: gt, fn: gt_2147483648_uint64},
328	{idx: 16, exp: ge, fn: ge_2147483648_uint64},
329	{idx: 16, exp: eq, fn: eq_2147483648_uint64},
330	{idx: 16, exp: ne, fn: ne_2147483648_uint64},
331	{idx: 17, exp: lt, fn: lt_4278190080_uint64},
332	{idx: 17, exp: le, fn: le_4278190080_uint64},
333	{idx: 17, exp: gt, fn: gt_4278190080_uint64},
334	{idx: 17, exp: ge, fn: ge_4278190080_uint64},
335	{idx: 17, exp: eq, fn: eq_4278190080_uint64},
336	{idx: 17, exp: ne, fn: ne_4278190080_uint64},
337	{idx: 18, exp: lt, fn: lt_4294967294_uint64},
338	{idx: 18, exp: le, fn: le_4294967294_uint64},
339	{idx: 18, exp: gt, fn: gt_4294967294_uint64},
340	{idx: 18, exp: ge, fn: ge_4294967294_uint64},
341	{idx: 18, exp: eq, fn: eq_4294967294_uint64},
342	{idx: 18, exp: ne, fn: ne_4294967294_uint64},
343	{idx: 19, exp: lt, fn: lt_4294967295_uint64},
344	{idx: 19, exp: le, fn: le_4294967295_uint64},
345	{idx: 19, exp: gt, fn: gt_4294967295_uint64},
346	{idx: 19, exp: ge, fn: ge_4294967295_uint64},
347	{idx: 19, exp: eq, fn: eq_4294967295_uint64},
348	{idx: 19, exp: ne, fn: ne_4294967295_uint64},
349	{idx: 20, exp: lt, fn: lt_4294967296_uint64},
350	{idx: 20, exp: le, fn: le_4294967296_uint64},
351	{idx: 20, exp: gt, fn: gt_4294967296_uint64},
352	{idx: 20, exp: ge, fn: ge_4294967296_uint64},
353	{idx: 20, exp: eq, fn: eq_4294967296_uint64},
354	{idx: 20, exp: ne, fn: ne_4294967296_uint64},
355	{idx: 21, exp: lt, fn: lt_1095216660480_uint64},
356	{idx: 21, exp: le, fn: le_1095216660480_uint64},
357	{idx: 21, exp: gt, fn: gt_1095216660480_uint64},
358	{idx: 21, exp: ge, fn: ge_1095216660480_uint64},
359	{idx: 21, exp: eq, fn: eq_1095216660480_uint64},
360	{idx: 21, exp: ne, fn: ne_1095216660480_uint64},
361	{idx: 22, exp: lt, fn: lt_9223372036854775806_uint64},
362	{idx: 22, exp: le, fn: le_9223372036854775806_uint64},
363	{idx: 22, exp: gt, fn: gt_9223372036854775806_uint64},
364	{idx: 22, exp: ge, fn: ge_9223372036854775806_uint64},
365	{idx: 22, exp: eq, fn: eq_9223372036854775806_uint64},
366	{idx: 22, exp: ne, fn: ne_9223372036854775806_uint64},
367	{idx: 23, exp: lt, fn: lt_9223372036854775807_uint64},
368	{idx: 23, exp: le, fn: le_9223372036854775807_uint64},
369	{idx: 23, exp: gt, fn: gt_9223372036854775807_uint64},
370	{idx: 23, exp: ge, fn: ge_9223372036854775807_uint64},
371	{idx: 23, exp: eq, fn: eq_9223372036854775807_uint64},
372	{idx: 23, exp: ne, fn: ne_9223372036854775807_uint64},
373	{idx: 24, exp: lt, fn: lt_9223372036854775808_uint64},
374	{idx: 24, exp: le, fn: le_9223372036854775808_uint64},
375	{idx: 24, exp: gt, fn: gt_9223372036854775808_uint64},
376	{idx: 24, exp: ge, fn: ge_9223372036854775808_uint64},
377	{idx: 24, exp: eq, fn: eq_9223372036854775808_uint64},
378	{idx: 24, exp: ne, fn: ne_9223372036854775808_uint64},
379	{idx: 25, exp: lt, fn: lt_18374686479671623680_uint64},
380	{idx: 25, exp: le, fn: le_18374686479671623680_uint64},
381	{idx: 25, exp: gt, fn: gt_18374686479671623680_uint64},
382	{idx: 25, exp: ge, fn: ge_18374686479671623680_uint64},
383	{idx: 25, exp: eq, fn: eq_18374686479671623680_uint64},
384	{idx: 25, exp: ne, fn: ne_18374686479671623680_uint64},
385	{idx: 26, exp: lt, fn: lt_18446744073709551614_uint64},
386	{idx: 26, exp: le, fn: le_18446744073709551614_uint64},
387	{idx: 26, exp: gt, fn: gt_18446744073709551614_uint64},
388	{idx: 26, exp: ge, fn: ge_18446744073709551614_uint64},
389	{idx: 26, exp: eq, fn: eq_18446744073709551614_uint64},
390	{idx: 26, exp: ne, fn: ne_18446744073709551614_uint64},
391	{idx: 27, exp: lt, fn: lt_18446744073709551615_uint64},
392	{idx: 27, exp: le, fn: le_18446744073709551615_uint64},
393	{idx: 27, exp: gt, fn: gt_18446744073709551615_uint64},
394	{idx: 27, exp: ge, fn: ge_18446744073709551615_uint64},
395	{idx: 27, exp: eq, fn: eq_18446744073709551615_uint64},
396	{idx: 27, exp: ne, fn: ne_18446744073709551615_uint64},
397}
398
399// uint32 tests
400var uint32_vals = []uint32{
401	0,
402	1,
403	126,
404	127,
405	128,
406	254,
407	255,
408	256,
409	32766,
410	32767,
411	32768,
412	65534,
413	65535,
414	65536,
415	2147483646,
416	2147483647,
417	2147483648,
418	4278190080,
419	4294967294,
420	4294967295,
421}
422
423func lt_0_uint32(x uint32) bool          { return x < 0 }
424func le_0_uint32(x uint32) bool          { return x <= 0 }
425func gt_0_uint32(x uint32) bool          { return x > 0 }
426func ge_0_uint32(x uint32) bool          { return x >= 0 }
427func eq_0_uint32(x uint32) bool          { return x == 0 }
428func ne_0_uint32(x uint32) bool          { return x != 0 }
429func lt_1_uint32(x uint32) bool          { return x < 1 }
430func le_1_uint32(x uint32) bool          { return x <= 1 }
431func gt_1_uint32(x uint32) bool          { return x > 1 }
432func ge_1_uint32(x uint32) bool          { return x >= 1 }
433func eq_1_uint32(x uint32) bool          { return x == 1 }
434func ne_1_uint32(x uint32) bool          { return x != 1 }
435func lt_126_uint32(x uint32) bool        { return x < 126 }
436func le_126_uint32(x uint32) bool        { return x <= 126 }
437func gt_126_uint32(x uint32) bool        { return x > 126 }
438func ge_126_uint32(x uint32) bool        { return x >= 126 }
439func eq_126_uint32(x uint32) bool        { return x == 126 }
440func ne_126_uint32(x uint32) bool        { return x != 126 }
441func lt_127_uint32(x uint32) bool        { return x < 127 }
442func le_127_uint32(x uint32) bool        { return x <= 127 }
443func gt_127_uint32(x uint32) bool        { return x > 127 }
444func ge_127_uint32(x uint32) bool        { return x >= 127 }
445func eq_127_uint32(x uint32) bool        { return x == 127 }
446func ne_127_uint32(x uint32) bool        { return x != 127 }
447func lt_128_uint32(x uint32) bool        { return x < 128 }
448func le_128_uint32(x uint32) bool        { return x <= 128 }
449func gt_128_uint32(x uint32) bool        { return x > 128 }
450func ge_128_uint32(x uint32) bool        { return x >= 128 }
451func eq_128_uint32(x uint32) bool        { return x == 128 }
452func ne_128_uint32(x uint32) bool        { return x != 128 }
453func lt_254_uint32(x uint32) bool        { return x < 254 }
454func le_254_uint32(x uint32) bool        { return x <= 254 }
455func gt_254_uint32(x uint32) bool        { return x > 254 }
456func ge_254_uint32(x uint32) bool        { return x >= 254 }
457func eq_254_uint32(x uint32) bool        { return x == 254 }
458func ne_254_uint32(x uint32) bool        { return x != 254 }
459func lt_255_uint32(x uint32) bool        { return x < 255 }
460func le_255_uint32(x uint32) bool        { return x <= 255 }
461func gt_255_uint32(x uint32) bool        { return x > 255 }
462func ge_255_uint32(x uint32) bool        { return x >= 255 }
463func eq_255_uint32(x uint32) bool        { return x == 255 }
464func ne_255_uint32(x uint32) bool        { return x != 255 }
465func lt_256_uint32(x uint32) bool        { return x < 256 }
466func le_256_uint32(x uint32) bool        { return x <= 256 }
467func gt_256_uint32(x uint32) bool        { return x > 256 }
468func ge_256_uint32(x uint32) bool        { return x >= 256 }
469func eq_256_uint32(x uint32) bool        { return x == 256 }
470func ne_256_uint32(x uint32) bool        { return x != 256 }
471func lt_32766_uint32(x uint32) bool      { return x < 32766 }
472func le_32766_uint32(x uint32) bool      { return x <= 32766 }
473func gt_32766_uint32(x uint32) bool      { return x > 32766 }
474func ge_32766_uint32(x uint32) bool      { return x >= 32766 }
475func eq_32766_uint32(x uint32) bool      { return x == 32766 }
476func ne_32766_uint32(x uint32) bool      { return x != 32766 }
477func lt_32767_uint32(x uint32) bool      { return x < 32767 }
478func le_32767_uint32(x uint32) bool      { return x <= 32767 }
479func gt_32767_uint32(x uint32) bool      { return x > 32767 }
480func ge_32767_uint32(x uint32) bool      { return x >= 32767 }
481func eq_32767_uint32(x uint32) bool      { return x == 32767 }
482func ne_32767_uint32(x uint32) bool      { return x != 32767 }
483func lt_32768_uint32(x uint32) bool      { return x < 32768 }
484func le_32768_uint32(x uint32) bool      { return x <= 32768 }
485func gt_32768_uint32(x uint32) bool      { return x > 32768 }
486func ge_32768_uint32(x uint32) bool      { return x >= 32768 }
487func eq_32768_uint32(x uint32) bool      { return x == 32768 }
488func ne_32768_uint32(x uint32) bool      { return x != 32768 }
489func lt_65534_uint32(x uint32) bool      { return x < 65534 }
490func le_65534_uint32(x uint32) bool      { return x <= 65534 }
491func gt_65534_uint32(x uint32) bool      { return x > 65534 }
492func ge_65534_uint32(x uint32) bool      { return x >= 65534 }
493func eq_65534_uint32(x uint32) bool      { return x == 65534 }
494func ne_65534_uint32(x uint32) bool      { return x != 65534 }
495func lt_65535_uint32(x uint32) bool      { return x < 65535 }
496func le_65535_uint32(x uint32) bool      { return x <= 65535 }
497func gt_65535_uint32(x uint32) bool      { return x > 65535 }
498func ge_65535_uint32(x uint32) bool      { return x >= 65535 }
499func eq_65535_uint32(x uint32) bool      { return x == 65535 }
500func ne_65535_uint32(x uint32) bool      { return x != 65535 }
501func lt_65536_uint32(x uint32) bool      { return x < 65536 }
502func le_65536_uint32(x uint32) bool      { return x <= 65536 }
503func gt_65536_uint32(x uint32) bool      { return x > 65536 }
504func ge_65536_uint32(x uint32) bool      { return x >= 65536 }
505func eq_65536_uint32(x uint32) bool      { return x == 65536 }
506func ne_65536_uint32(x uint32) bool      { return x != 65536 }
507func lt_2147483646_uint32(x uint32) bool { return x < 2147483646 }
508func le_2147483646_uint32(x uint32) bool { return x <= 2147483646 }
509func gt_2147483646_uint32(x uint32) bool { return x > 2147483646 }
510func ge_2147483646_uint32(x uint32) bool { return x >= 2147483646 }
511func eq_2147483646_uint32(x uint32) bool { return x == 2147483646 }
512func ne_2147483646_uint32(x uint32) bool { return x != 2147483646 }
513func lt_2147483647_uint32(x uint32) bool { return x < 2147483647 }
514func le_2147483647_uint32(x uint32) bool { return x <= 2147483647 }
515func gt_2147483647_uint32(x uint32) bool { return x > 2147483647 }
516func ge_2147483647_uint32(x uint32) bool { return x >= 2147483647 }
517func eq_2147483647_uint32(x uint32) bool { return x == 2147483647 }
518func ne_2147483647_uint32(x uint32) bool { return x != 2147483647 }
519func lt_2147483648_uint32(x uint32) bool { return x < 2147483648 }
520func le_2147483648_uint32(x uint32) bool { return x <= 2147483648 }
521func gt_2147483648_uint32(x uint32) bool { return x > 2147483648 }
522func ge_2147483648_uint32(x uint32) bool { return x >= 2147483648 }
523func eq_2147483648_uint32(x uint32) bool { return x == 2147483648 }
524func ne_2147483648_uint32(x uint32) bool { return x != 2147483648 }
525func lt_4278190080_uint32(x uint32) bool { return x < 4278190080 }
526func le_4278190080_uint32(x uint32) bool { return x <= 4278190080 }
527func gt_4278190080_uint32(x uint32) bool { return x > 4278190080 }
528func ge_4278190080_uint32(x uint32) bool { return x >= 4278190080 }
529func eq_4278190080_uint32(x uint32) bool { return x == 4278190080 }
530func ne_4278190080_uint32(x uint32) bool { return x != 4278190080 }
531func lt_4294967294_uint32(x uint32) bool { return x < 4294967294 }
532func le_4294967294_uint32(x uint32) bool { return x <= 4294967294 }
533func gt_4294967294_uint32(x uint32) bool { return x > 4294967294 }
534func ge_4294967294_uint32(x uint32) bool { return x >= 4294967294 }
535func eq_4294967294_uint32(x uint32) bool { return x == 4294967294 }
536func ne_4294967294_uint32(x uint32) bool { return x != 4294967294 }
537func lt_4294967295_uint32(x uint32) bool { return x < 4294967295 }
538func le_4294967295_uint32(x uint32) bool { return x <= 4294967295 }
539func gt_4294967295_uint32(x uint32) bool { return x > 4294967295 }
540func ge_4294967295_uint32(x uint32) bool { return x >= 4294967295 }
541func eq_4294967295_uint32(x uint32) bool { return x == 4294967295 }
542func ne_4294967295_uint32(x uint32) bool { return x != 4294967295 }
543
544var uint32_tests = []struct {
545	idx int    // index of the constant used
546	exp result // expected results
547	fn  func(uint32) bool
548}{
549	{idx: 0, exp: lt, fn: lt_0_uint32},
550	{idx: 0, exp: le, fn: le_0_uint32},
551	{idx: 0, exp: gt, fn: gt_0_uint32},
552	{idx: 0, exp: ge, fn: ge_0_uint32},
553	{idx: 0, exp: eq, fn: eq_0_uint32},
554	{idx: 0, exp: ne, fn: ne_0_uint32},
555	{idx: 1, exp: lt, fn: lt_1_uint32},
556	{idx: 1, exp: le, fn: le_1_uint32},
557	{idx: 1, exp: gt, fn: gt_1_uint32},
558	{idx: 1, exp: ge, fn: ge_1_uint32},
559	{idx: 1, exp: eq, fn: eq_1_uint32},
560	{idx: 1, exp: ne, fn: ne_1_uint32},
561	{idx: 2, exp: lt, fn: lt_126_uint32},
562	{idx: 2, exp: le, fn: le_126_uint32},
563	{idx: 2, exp: gt, fn: gt_126_uint32},
564	{idx: 2, exp: ge, fn: ge_126_uint32},
565	{idx: 2, exp: eq, fn: eq_126_uint32},
566	{idx: 2, exp: ne, fn: ne_126_uint32},
567	{idx: 3, exp: lt, fn: lt_127_uint32},
568	{idx: 3, exp: le, fn: le_127_uint32},
569	{idx: 3, exp: gt, fn: gt_127_uint32},
570	{idx: 3, exp: ge, fn: ge_127_uint32},
571	{idx: 3, exp: eq, fn: eq_127_uint32},
572	{idx: 3, exp: ne, fn: ne_127_uint32},
573	{idx: 4, exp: lt, fn: lt_128_uint32},
574	{idx: 4, exp: le, fn: le_128_uint32},
575	{idx: 4, exp: gt, fn: gt_128_uint32},
576	{idx: 4, exp: ge, fn: ge_128_uint32},
577	{idx: 4, exp: eq, fn: eq_128_uint32},
578	{idx: 4, exp: ne, fn: ne_128_uint32},
579	{idx: 5, exp: lt, fn: lt_254_uint32},
580	{idx: 5, exp: le, fn: le_254_uint32},
581	{idx: 5, exp: gt, fn: gt_254_uint32},
582	{idx: 5, exp: ge, fn: ge_254_uint32},
583	{idx: 5, exp: eq, fn: eq_254_uint32},
584	{idx: 5, exp: ne, fn: ne_254_uint32},
585	{idx: 6, exp: lt, fn: lt_255_uint32},
586	{idx: 6, exp: le, fn: le_255_uint32},
587	{idx: 6, exp: gt, fn: gt_255_uint32},
588	{idx: 6, exp: ge, fn: ge_255_uint32},
589	{idx: 6, exp: eq, fn: eq_255_uint32},
590	{idx: 6, exp: ne, fn: ne_255_uint32},
591	{idx: 7, exp: lt, fn: lt_256_uint32},
592	{idx: 7, exp: le, fn: le_256_uint32},
593	{idx: 7, exp: gt, fn: gt_256_uint32},
594	{idx: 7, exp: ge, fn: ge_256_uint32},
595	{idx: 7, exp: eq, fn: eq_256_uint32},
596	{idx: 7, exp: ne, fn: ne_256_uint32},
597	{idx: 8, exp: lt, fn: lt_32766_uint32},
598	{idx: 8, exp: le, fn: le_32766_uint32},
599	{idx: 8, exp: gt, fn: gt_32766_uint32},
600	{idx: 8, exp: ge, fn: ge_32766_uint32},
601	{idx: 8, exp: eq, fn: eq_32766_uint32},
602	{idx: 8, exp: ne, fn: ne_32766_uint32},
603	{idx: 9, exp: lt, fn: lt_32767_uint32},
604	{idx: 9, exp: le, fn: le_32767_uint32},
605	{idx: 9, exp: gt, fn: gt_32767_uint32},
606	{idx: 9, exp: ge, fn: ge_32767_uint32},
607	{idx: 9, exp: eq, fn: eq_32767_uint32},
608	{idx: 9, exp: ne, fn: ne_32767_uint32},
609	{idx: 10, exp: lt, fn: lt_32768_uint32},
610	{idx: 10, exp: le, fn: le_32768_uint32},
611	{idx: 10, exp: gt, fn: gt_32768_uint32},
612	{idx: 10, exp: ge, fn: ge_32768_uint32},
613	{idx: 10, exp: eq, fn: eq_32768_uint32},
614	{idx: 10, exp: ne, fn: ne_32768_uint32},
615	{idx: 11, exp: lt, fn: lt_65534_uint32},
616	{idx: 11, exp: le, fn: le_65534_uint32},
617	{idx: 11, exp: gt, fn: gt_65534_uint32},
618	{idx: 11, exp: ge, fn: ge_65534_uint32},
619	{idx: 11, exp: eq, fn: eq_65534_uint32},
620	{idx: 11, exp: ne, fn: ne_65534_uint32},
621	{idx: 12, exp: lt, fn: lt_65535_uint32},
622	{idx: 12, exp: le, fn: le_65535_uint32},
623	{idx: 12, exp: gt, fn: gt_65535_uint32},
624	{idx: 12, exp: ge, fn: ge_65535_uint32},
625	{idx: 12, exp: eq, fn: eq_65535_uint32},
626	{idx: 12, exp: ne, fn: ne_65535_uint32},
627	{idx: 13, exp: lt, fn: lt_65536_uint32},
628	{idx: 13, exp: le, fn: le_65536_uint32},
629	{idx: 13, exp: gt, fn: gt_65536_uint32},
630	{idx: 13, exp: ge, fn: ge_65536_uint32},
631	{idx: 13, exp: eq, fn: eq_65536_uint32},
632	{idx: 13, exp: ne, fn: ne_65536_uint32},
633	{idx: 14, exp: lt, fn: lt_2147483646_uint32},
634	{idx: 14, exp: le, fn: le_2147483646_uint32},
635	{idx: 14, exp: gt, fn: gt_2147483646_uint32},
636	{idx: 14, exp: ge, fn: ge_2147483646_uint32},
637	{idx: 14, exp: eq, fn: eq_2147483646_uint32},
638	{idx: 14, exp: ne, fn: ne_2147483646_uint32},
639	{idx: 15, exp: lt, fn: lt_2147483647_uint32},
640	{idx: 15, exp: le, fn: le_2147483647_uint32},
641	{idx: 15, exp: gt, fn: gt_2147483647_uint32},
642	{idx: 15, exp: ge, fn: ge_2147483647_uint32},
643	{idx: 15, exp: eq, fn: eq_2147483647_uint32},
644	{idx: 15, exp: ne, fn: ne_2147483647_uint32},
645	{idx: 16, exp: lt, fn: lt_2147483648_uint32},
646	{idx: 16, exp: le, fn: le_2147483648_uint32},
647	{idx: 16, exp: gt, fn: gt_2147483648_uint32},
648	{idx: 16, exp: ge, fn: ge_2147483648_uint32},
649	{idx: 16, exp: eq, fn: eq_2147483648_uint32},
650	{idx: 16, exp: ne, fn: ne_2147483648_uint32},
651	{idx: 17, exp: lt, fn: lt_4278190080_uint32},
652	{idx: 17, exp: le, fn: le_4278190080_uint32},
653	{idx: 17, exp: gt, fn: gt_4278190080_uint32},
654	{idx: 17, exp: ge, fn: ge_4278190080_uint32},
655	{idx: 17, exp: eq, fn: eq_4278190080_uint32},
656	{idx: 17, exp: ne, fn: ne_4278190080_uint32},
657	{idx: 18, exp: lt, fn: lt_4294967294_uint32},
658	{idx: 18, exp: le, fn: le_4294967294_uint32},
659	{idx: 18, exp: gt, fn: gt_4294967294_uint32},
660	{idx: 18, exp: ge, fn: ge_4294967294_uint32},
661	{idx: 18, exp: eq, fn: eq_4294967294_uint32},
662	{idx: 18, exp: ne, fn: ne_4294967294_uint32},
663	{idx: 19, exp: lt, fn: lt_4294967295_uint32},
664	{idx: 19, exp: le, fn: le_4294967295_uint32},
665	{idx: 19, exp: gt, fn: gt_4294967295_uint32},
666	{idx: 19, exp: ge, fn: ge_4294967295_uint32},
667	{idx: 19, exp: eq, fn: eq_4294967295_uint32},
668	{idx: 19, exp: ne, fn: ne_4294967295_uint32},
669}
670
671// uint16 tests
672var uint16_vals = []uint16{
673	0,
674	1,
675	126,
676	127,
677	128,
678	254,
679	255,
680	256,
681	32766,
682	32767,
683	32768,
684	65534,
685	65535,
686}
687
688func lt_0_uint16(x uint16) bool     { return x < 0 }
689func le_0_uint16(x uint16) bool     { return x <= 0 }
690func gt_0_uint16(x uint16) bool     { return x > 0 }
691func ge_0_uint16(x uint16) bool     { return x >= 0 }
692func eq_0_uint16(x uint16) bool     { return x == 0 }
693func ne_0_uint16(x uint16) bool     { return x != 0 }
694func lt_1_uint16(x uint16) bool     { return x < 1 }
695func le_1_uint16(x uint16) bool     { return x <= 1 }
696func gt_1_uint16(x uint16) bool     { return x > 1 }
697func ge_1_uint16(x uint16) bool     { return x >= 1 }
698func eq_1_uint16(x uint16) bool     { return x == 1 }
699func ne_1_uint16(x uint16) bool     { return x != 1 }
700func lt_126_uint16(x uint16) bool   { return x < 126 }
701func le_126_uint16(x uint16) bool   { return x <= 126 }
702func gt_126_uint16(x uint16) bool   { return x > 126 }
703func ge_126_uint16(x uint16) bool   { return x >= 126 }
704func eq_126_uint16(x uint16) bool   { return x == 126 }
705func ne_126_uint16(x uint16) bool   { return x != 126 }
706func lt_127_uint16(x uint16) bool   { return x < 127 }
707func le_127_uint16(x uint16) bool   { return x <= 127 }
708func gt_127_uint16(x uint16) bool   { return x > 127 }
709func ge_127_uint16(x uint16) bool   { return x >= 127 }
710func eq_127_uint16(x uint16) bool   { return x == 127 }
711func ne_127_uint16(x uint16) bool   { return x != 127 }
712func lt_128_uint16(x uint16) bool   { return x < 128 }
713func le_128_uint16(x uint16) bool   { return x <= 128 }
714func gt_128_uint16(x uint16) bool   { return x > 128 }
715func ge_128_uint16(x uint16) bool   { return x >= 128 }
716func eq_128_uint16(x uint16) bool   { return x == 128 }
717func ne_128_uint16(x uint16) bool   { return x != 128 }
718func lt_254_uint16(x uint16) bool   { return x < 254 }
719func le_254_uint16(x uint16) bool   { return x <= 254 }
720func gt_254_uint16(x uint16) bool   { return x > 254 }
721func ge_254_uint16(x uint16) bool   { return x >= 254 }
722func eq_254_uint16(x uint16) bool   { return x == 254 }
723func ne_254_uint16(x uint16) bool   { return x != 254 }
724func lt_255_uint16(x uint16) bool   { return x < 255 }
725func le_255_uint16(x uint16) bool   { return x <= 255 }
726func gt_255_uint16(x uint16) bool   { return x > 255 }
727func ge_255_uint16(x uint16) bool   { return x >= 255 }
728func eq_255_uint16(x uint16) bool   { return x == 255 }
729func ne_255_uint16(x uint16) bool   { return x != 255 }
730func lt_256_uint16(x uint16) bool   { return x < 256 }
731func le_256_uint16(x uint16) bool   { return x <= 256 }
732func gt_256_uint16(x uint16) bool   { return x > 256 }
733func ge_256_uint16(x uint16) bool   { return x >= 256 }
734func eq_256_uint16(x uint16) bool   { return x == 256 }
735func ne_256_uint16(x uint16) bool   { return x != 256 }
736func lt_32766_uint16(x uint16) bool { return x < 32766 }
737func le_32766_uint16(x uint16) bool { return x <= 32766 }
738func gt_32766_uint16(x uint16) bool { return x > 32766 }
739func ge_32766_uint16(x uint16) bool { return x >= 32766 }
740func eq_32766_uint16(x uint16) bool { return x == 32766 }
741func ne_32766_uint16(x uint16) bool { return x != 32766 }
742func lt_32767_uint16(x uint16) bool { return x < 32767 }
743func le_32767_uint16(x uint16) bool { return x <= 32767 }
744func gt_32767_uint16(x uint16) bool { return x > 32767 }
745func ge_32767_uint16(x uint16) bool { return x >= 32767 }
746func eq_32767_uint16(x uint16) bool { return x == 32767 }
747func ne_32767_uint16(x uint16) bool { return x != 32767 }
748func lt_32768_uint16(x uint16) bool { return x < 32768 }
749func le_32768_uint16(x uint16) bool { return x <= 32768 }
750func gt_32768_uint16(x uint16) bool { return x > 32768 }
751func ge_32768_uint16(x uint16) bool { return x >= 32768 }
752func eq_32768_uint16(x uint16) bool { return x == 32768 }
753func ne_32768_uint16(x uint16) bool { return x != 32768 }
754func lt_65534_uint16(x uint16) bool { return x < 65534 }
755func le_65534_uint16(x uint16) bool { return x <= 65534 }
756func gt_65534_uint16(x uint16) bool { return x > 65534 }
757func ge_65534_uint16(x uint16) bool { return x >= 65534 }
758func eq_65534_uint16(x uint16) bool { return x == 65534 }
759func ne_65534_uint16(x uint16) bool { return x != 65534 }
760func lt_65535_uint16(x uint16) bool { return x < 65535 }
761func le_65535_uint16(x uint16) bool { return x <= 65535 }
762func gt_65535_uint16(x uint16) bool { return x > 65535 }
763func ge_65535_uint16(x uint16) bool { return x >= 65535 }
764func eq_65535_uint16(x uint16) bool { return x == 65535 }
765func ne_65535_uint16(x uint16) bool { return x != 65535 }
766
767var uint16_tests = []struct {
768	idx int    // index of the constant used
769	exp result // expected results
770	fn  func(uint16) bool
771}{
772	{idx: 0, exp: lt, fn: lt_0_uint16},
773	{idx: 0, exp: le, fn: le_0_uint16},
774	{idx: 0, exp: gt, fn: gt_0_uint16},
775	{idx: 0, exp: ge, fn: ge_0_uint16},
776	{idx: 0, exp: eq, fn: eq_0_uint16},
777	{idx: 0, exp: ne, fn: ne_0_uint16},
778	{idx: 1, exp: lt, fn: lt_1_uint16},
779	{idx: 1, exp: le, fn: le_1_uint16},
780	{idx: 1, exp: gt, fn: gt_1_uint16},
781	{idx: 1, exp: ge, fn: ge_1_uint16},
782	{idx: 1, exp: eq, fn: eq_1_uint16},
783	{idx: 1, exp: ne, fn: ne_1_uint16},
784	{idx: 2, exp: lt, fn: lt_126_uint16},
785	{idx: 2, exp: le, fn: le_126_uint16},
786	{idx: 2, exp: gt, fn: gt_126_uint16},
787	{idx: 2, exp: ge, fn: ge_126_uint16},
788	{idx: 2, exp: eq, fn: eq_126_uint16},
789	{idx: 2, exp: ne, fn: ne_126_uint16},
790	{idx: 3, exp: lt, fn: lt_127_uint16},
791	{idx: 3, exp: le, fn: le_127_uint16},
792	{idx: 3, exp: gt, fn: gt_127_uint16},
793	{idx: 3, exp: ge, fn: ge_127_uint16},
794	{idx: 3, exp: eq, fn: eq_127_uint16},
795	{idx: 3, exp: ne, fn: ne_127_uint16},
796	{idx: 4, exp: lt, fn: lt_128_uint16},
797	{idx: 4, exp: le, fn: le_128_uint16},
798	{idx: 4, exp: gt, fn: gt_128_uint16},
799	{idx: 4, exp: ge, fn: ge_128_uint16},
800	{idx: 4, exp: eq, fn: eq_128_uint16},
801	{idx: 4, exp: ne, fn: ne_128_uint16},
802	{idx: 5, exp: lt, fn: lt_254_uint16},
803	{idx: 5, exp: le, fn: le_254_uint16},
804	{idx: 5, exp: gt, fn: gt_254_uint16},
805	{idx: 5, exp: ge, fn: ge_254_uint16},
806	{idx: 5, exp: eq, fn: eq_254_uint16},
807	{idx: 5, exp: ne, fn: ne_254_uint16},
808	{idx: 6, exp: lt, fn: lt_255_uint16},
809	{idx: 6, exp: le, fn: le_255_uint16},
810	{idx: 6, exp: gt, fn: gt_255_uint16},
811	{idx: 6, exp: ge, fn: ge_255_uint16},
812	{idx: 6, exp: eq, fn: eq_255_uint16},
813	{idx: 6, exp: ne, fn: ne_255_uint16},
814	{idx: 7, exp: lt, fn: lt_256_uint16},
815	{idx: 7, exp: le, fn: le_256_uint16},
816	{idx: 7, exp: gt, fn: gt_256_uint16},
817	{idx: 7, exp: ge, fn: ge_256_uint16},
818	{idx: 7, exp: eq, fn: eq_256_uint16},
819	{idx: 7, exp: ne, fn: ne_256_uint16},
820	{idx: 8, exp: lt, fn: lt_32766_uint16},
821	{idx: 8, exp: le, fn: le_32766_uint16},
822	{idx: 8, exp: gt, fn: gt_32766_uint16},
823	{idx: 8, exp: ge, fn: ge_32766_uint16},
824	{idx: 8, exp: eq, fn: eq_32766_uint16},
825	{idx: 8, exp: ne, fn: ne_32766_uint16},
826	{idx: 9, exp: lt, fn: lt_32767_uint16},
827	{idx: 9, exp: le, fn: le_32767_uint16},
828	{idx: 9, exp: gt, fn: gt_32767_uint16},
829	{idx: 9, exp: ge, fn: ge_32767_uint16},
830	{idx: 9, exp: eq, fn: eq_32767_uint16},
831	{idx: 9, exp: ne, fn: ne_32767_uint16},
832	{idx: 10, exp: lt, fn: lt_32768_uint16},
833	{idx: 10, exp: le, fn: le_32768_uint16},
834	{idx: 10, exp: gt, fn: gt_32768_uint16},
835	{idx: 10, exp: ge, fn: ge_32768_uint16},
836	{idx: 10, exp: eq, fn: eq_32768_uint16},
837	{idx: 10, exp: ne, fn: ne_32768_uint16},
838	{idx: 11, exp: lt, fn: lt_65534_uint16},
839	{idx: 11, exp: le, fn: le_65534_uint16},
840	{idx: 11, exp: gt, fn: gt_65534_uint16},
841	{idx: 11, exp: ge, fn: ge_65534_uint16},
842	{idx: 11, exp: eq, fn: eq_65534_uint16},
843	{idx: 11, exp: ne, fn: ne_65534_uint16},
844	{idx: 12, exp: lt, fn: lt_65535_uint16},
845	{idx: 12, exp: le, fn: le_65535_uint16},
846	{idx: 12, exp: gt, fn: gt_65535_uint16},
847	{idx: 12, exp: ge, fn: ge_65535_uint16},
848	{idx: 12, exp: eq, fn: eq_65535_uint16},
849	{idx: 12, exp: ne, fn: ne_65535_uint16},
850}
851
852// uint8 tests
853var uint8_vals = []uint8{
854	0,
855	1,
856	126,
857	127,
858	128,
859	254,
860	255,
861}
862
863func lt_0_uint8(x uint8) bool   { return x < 0 }
864func le_0_uint8(x uint8) bool   { return x <= 0 }
865func gt_0_uint8(x uint8) bool   { return x > 0 }
866func ge_0_uint8(x uint8) bool   { return x >= 0 }
867func eq_0_uint8(x uint8) bool   { return x == 0 }
868func ne_0_uint8(x uint8) bool   { return x != 0 }
869func lt_1_uint8(x uint8) bool   { return x < 1 }
870func le_1_uint8(x uint8) bool   { return x <= 1 }
871func gt_1_uint8(x uint8) bool   { return x > 1 }
872func ge_1_uint8(x uint8) bool   { return x >= 1 }
873func eq_1_uint8(x uint8) bool   { return x == 1 }
874func ne_1_uint8(x uint8) bool   { return x != 1 }
875func lt_126_uint8(x uint8) bool { return x < 126 }
876func le_126_uint8(x uint8) bool { return x <= 126 }
877func gt_126_uint8(x uint8) bool { return x > 126 }
878func ge_126_uint8(x uint8) bool { return x >= 126 }
879func eq_126_uint8(x uint8) bool { return x == 126 }
880func ne_126_uint8(x uint8) bool { return x != 126 }
881func lt_127_uint8(x uint8) bool { return x < 127 }
882func le_127_uint8(x uint8) bool { return x <= 127 }
883func gt_127_uint8(x uint8) bool { return x > 127 }
884func ge_127_uint8(x uint8) bool { return x >= 127 }
885func eq_127_uint8(x uint8) bool { return x == 127 }
886func ne_127_uint8(x uint8) bool { return x != 127 }
887func lt_128_uint8(x uint8) bool { return x < 128 }
888func le_128_uint8(x uint8) bool { return x <= 128 }
889func gt_128_uint8(x uint8) bool { return x > 128 }
890func ge_128_uint8(x uint8) bool { return x >= 128 }
891func eq_128_uint8(x uint8) bool { return x == 128 }
892func ne_128_uint8(x uint8) bool { return x != 128 }
893func lt_254_uint8(x uint8) bool { return x < 254 }
894func le_254_uint8(x uint8) bool { return x <= 254 }
895func gt_254_uint8(x uint8) bool { return x > 254 }
896func ge_254_uint8(x uint8) bool { return x >= 254 }
897func eq_254_uint8(x uint8) bool { return x == 254 }
898func ne_254_uint8(x uint8) bool { return x != 254 }
899func lt_255_uint8(x uint8) bool { return x < 255 }
900func le_255_uint8(x uint8) bool { return x <= 255 }
901func gt_255_uint8(x uint8) bool { return x > 255 }
902func ge_255_uint8(x uint8) bool { return x >= 255 }
903func eq_255_uint8(x uint8) bool { return x == 255 }
904func ne_255_uint8(x uint8) bool { return x != 255 }
905
906var uint8_tests = []struct {
907	idx int    // index of the constant used
908	exp result // expected results
909	fn  func(uint8) bool
910}{
911	{idx: 0, exp: lt, fn: lt_0_uint8},
912	{idx: 0, exp: le, fn: le_0_uint8},
913	{idx: 0, exp: gt, fn: gt_0_uint8},
914	{idx: 0, exp: ge, fn: ge_0_uint8},
915	{idx: 0, exp: eq, fn: eq_0_uint8},
916	{idx: 0, exp: ne, fn: ne_0_uint8},
917	{idx: 1, exp: lt, fn: lt_1_uint8},
918	{idx: 1, exp: le, fn: le_1_uint8},
919	{idx: 1, exp: gt, fn: gt_1_uint8},
920	{idx: 1, exp: ge, fn: ge_1_uint8},
921	{idx: 1, exp: eq, fn: eq_1_uint8},
922	{idx: 1, exp: ne, fn: ne_1_uint8},
923	{idx: 2, exp: lt, fn: lt_126_uint8},
924	{idx: 2, exp: le, fn: le_126_uint8},
925	{idx: 2, exp: gt, fn: gt_126_uint8},
926	{idx: 2, exp: ge, fn: ge_126_uint8},
927	{idx: 2, exp: eq, fn: eq_126_uint8},
928	{idx: 2, exp: ne, fn: ne_126_uint8},
929	{idx: 3, exp: lt, fn: lt_127_uint8},
930	{idx: 3, exp: le, fn: le_127_uint8},
931	{idx: 3, exp: gt, fn: gt_127_uint8},
932	{idx: 3, exp: ge, fn: ge_127_uint8},
933	{idx: 3, exp: eq, fn: eq_127_uint8},
934	{idx: 3, exp: ne, fn: ne_127_uint8},
935	{idx: 4, exp: lt, fn: lt_128_uint8},
936	{idx: 4, exp: le, fn: le_128_uint8},
937	{idx: 4, exp: gt, fn: gt_128_uint8},
938	{idx: 4, exp: ge, fn: ge_128_uint8},
939	{idx: 4, exp: eq, fn: eq_128_uint8},
940	{idx: 4, exp: ne, fn: ne_128_uint8},
941	{idx: 5, exp: lt, fn: lt_254_uint8},
942	{idx: 5, exp: le, fn: le_254_uint8},
943	{idx: 5, exp: gt, fn: gt_254_uint8},
944	{idx: 5, exp: ge, fn: ge_254_uint8},
945	{idx: 5, exp: eq, fn: eq_254_uint8},
946	{idx: 5, exp: ne, fn: ne_254_uint8},
947	{idx: 6, exp: lt, fn: lt_255_uint8},
948	{idx: 6, exp: le, fn: le_255_uint8},
949	{idx: 6, exp: gt, fn: gt_255_uint8},
950	{idx: 6, exp: ge, fn: ge_255_uint8},
951	{idx: 6, exp: eq, fn: eq_255_uint8},
952	{idx: 6, exp: ne, fn: ne_255_uint8},
953}
954
955// int64 tests
956var int64_vals = []int64{
957	-9223372036854775808,
958	-9223372036854775807,
959	-2147483649,
960	-2147483648,
961	-2147483647,
962	-32769,
963	-32768,
964	-32767,
965	-129,
966	-128,
967	-127,
968	-1,
969	0,
970	1,
971	126,
972	127,
973	128,
974	254,
975	255,
976	256,
977	32766,
978	32767,
979	32768,
980	65534,
981	65535,
982	65536,
983	2147483646,
984	2147483647,
985	2147483648,
986	4278190080,
987	4294967294,
988	4294967295,
989	4294967296,
990	1095216660480,
991	9223372036854775806,
992	9223372036854775807,
993}
994
995func lt_neg9223372036854775808_int64(x int64) bool { return x < -9223372036854775808 }
996func le_neg9223372036854775808_int64(x int64) bool { return x <= -9223372036854775808 }
997func gt_neg9223372036854775808_int64(x int64) bool { return x > -9223372036854775808 }
998func ge_neg9223372036854775808_int64(x int64) bool { return x >= -9223372036854775808 }
999func eq_neg9223372036854775808_int64(x int64) bool { return x == -9223372036854775808 }
1000func ne_neg9223372036854775808_int64(x int64) bool { return x != -9223372036854775808 }
1001func lt_neg9223372036854775807_int64(x int64) bool { return x < -9223372036854775807 }
1002func le_neg9223372036854775807_int64(x int64) bool { return x <= -9223372036854775807 }
1003func gt_neg9223372036854775807_int64(x int64) bool { return x > -9223372036854775807 }
1004func ge_neg9223372036854775807_int64(x int64) bool { return x >= -9223372036854775807 }
1005func eq_neg9223372036854775807_int64(x int64) bool { return x == -9223372036854775807 }
1006func ne_neg9223372036854775807_int64(x int64) bool { return x != -9223372036854775807 }
1007func lt_neg2147483649_int64(x int64) bool          { return x < -2147483649 }
1008func le_neg2147483649_int64(x int64) bool          { return x <= -2147483649 }
1009func gt_neg2147483649_int64(x int64) bool          { return x > -2147483649 }
1010func ge_neg2147483649_int64(x int64) bool          { return x >= -2147483649 }
1011func eq_neg2147483649_int64(x int64) bool          { return x == -2147483649 }
1012func ne_neg2147483649_int64(x int64) bool          { return x != -2147483649 }
1013func lt_neg2147483648_int64(x int64) bool          { return x < -2147483648 }
1014func le_neg2147483648_int64(x int64) bool          { return x <= -2147483648 }
1015func gt_neg2147483648_int64(x int64) bool          { return x > -2147483648 }
1016func ge_neg2147483648_int64(x int64) bool          { return x >= -2147483648 }
1017func eq_neg2147483648_int64(x int64) bool          { return x == -2147483648 }
1018func ne_neg2147483648_int64(x int64) bool          { return x != -2147483648 }
1019func lt_neg2147483647_int64(x int64) bool          { return x < -2147483647 }
1020func le_neg2147483647_int64(x int64) bool          { return x <= -2147483647 }
1021func gt_neg2147483647_int64(x int64) bool          { return x > -2147483647 }
1022func ge_neg2147483647_int64(x int64) bool          { return x >= -2147483647 }
1023func eq_neg2147483647_int64(x int64) bool          { return x == -2147483647 }
1024func ne_neg2147483647_int64(x int64) bool          { return x != -2147483647 }
1025func lt_neg32769_int64(x int64) bool               { return x < -32769 }
1026func le_neg32769_int64(x int64) bool               { return x <= -32769 }
1027func gt_neg32769_int64(x int64) bool               { return x > -32769 }
1028func ge_neg32769_int64(x int64) bool               { return x >= -32769 }
1029func eq_neg32769_int64(x int64) bool               { return x == -32769 }
1030func ne_neg32769_int64(x int64) bool               { return x != -32769 }
1031func lt_neg32768_int64(x int64) bool               { return x < -32768 }
1032func le_neg32768_int64(x int64) bool               { return x <= -32768 }
1033func gt_neg32768_int64(x int64) bool               { return x > -32768 }
1034func ge_neg32768_int64(x int64) bool               { return x >= -32768 }
1035func eq_neg32768_int64(x int64) bool               { return x == -32768 }
1036func ne_neg32768_int64(x int64) bool               { return x != -32768 }
1037func lt_neg32767_int64(x int64) bool               { return x < -32767 }
1038func le_neg32767_int64(x int64) bool               { return x <= -32767 }
1039func gt_neg32767_int64(x int64) bool               { return x > -32767 }
1040func ge_neg32767_int64(x int64) bool               { return x >= -32767 }
1041func eq_neg32767_int64(x int64) bool               { return x == -32767 }
1042func ne_neg32767_int64(x int64) bool               { return x != -32767 }
1043func lt_neg129_int64(x int64) bool                 { return x < -129 }
1044func le_neg129_int64(x int64) bool                 { return x <= -129 }
1045func gt_neg129_int64(x int64) bool                 { return x > -129 }
1046func ge_neg129_int64(x int64) bool                 { return x >= -129 }
1047func eq_neg129_int64(x int64) bool                 { return x == -129 }
1048func ne_neg129_int64(x int64) bool                 { return x != -129 }
1049func lt_neg128_int64(x int64) bool                 { return x < -128 }
1050func le_neg128_int64(x int64) bool                 { return x <= -128 }
1051func gt_neg128_int64(x int64) bool                 { return x > -128 }
1052func ge_neg128_int64(x int64) bool                 { return x >= -128 }
1053func eq_neg128_int64(x int64) bool                 { return x == -128 }
1054func ne_neg128_int64(x int64) bool                 { return x != -128 }
1055func lt_neg127_int64(x int64) bool                 { return x < -127 }
1056func le_neg127_int64(x int64) bool                 { return x <= -127 }
1057func gt_neg127_int64(x int64) bool                 { return x > -127 }
1058func ge_neg127_int64(x int64) bool                 { return x >= -127 }
1059func eq_neg127_int64(x int64) bool                 { return x == -127 }
1060func ne_neg127_int64(x int64) bool                 { return x != -127 }
1061func lt_neg1_int64(x int64) bool                   { return x < -1 }
1062func le_neg1_int64(x int64) bool                   { return x <= -1 }
1063func gt_neg1_int64(x int64) bool                   { return x > -1 }
1064func ge_neg1_int64(x int64) bool                   { return x >= -1 }
1065func eq_neg1_int64(x int64) bool                   { return x == -1 }
1066func ne_neg1_int64(x int64) bool                   { return x != -1 }
1067func lt_0_int64(x int64) bool                      { return x < 0 }
1068func le_0_int64(x int64) bool                      { return x <= 0 }
1069func gt_0_int64(x int64) bool                      { return x > 0 }
1070func ge_0_int64(x int64) bool                      { return x >= 0 }
1071func eq_0_int64(x int64) bool                      { return x == 0 }
1072func ne_0_int64(x int64) bool                      { return x != 0 }
1073func lt_1_int64(x int64) bool                      { return x < 1 }
1074func le_1_int64(x int64) bool                      { return x <= 1 }
1075func gt_1_int64(x int64) bool                      { return x > 1 }
1076func ge_1_int64(x int64) bool                      { return x >= 1 }
1077func eq_1_int64(x int64) bool                      { return x == 1 }
1078func ne_1_int64(x int64) bool                      { return x != 1 }
1079func lt_126_int64(x int64) bool                    { return x < 126 }
1080func le_126_int64(x int64) bool                    { return x <= 126 }
1081func gt_126_int64(x int64) bool                    { return x > 126 }
1082func ge_126_int64(x int64) bool                    { return x >= 126 }
1083func eq_126_int64(x int64) bool                    { return x == 126 }
1084func ne_126_int64(x int64) bool                    { return x != 126 }
1085func lt_127_int64(x int64) bool                    { return x < 127 }
1086func le_127_int64(x int64) bool                    { return x <= 127 }
1087func gt_127_int64(x int64) bool                    { return x > 127 }
1088func ge_127_int64(x int64) bool                    { return x >= 127 }
1089func eq_127_int64(x int64) bool                    { return x == 127 }
1090func ne_127_int64(x int64) bool                    { return x != 127 }
1091func lt_128_int64(x int64) bool                    { return x < 128 }
1092func le_128_int64(x int64) bool                    { return x <= 128 }
1093func gt_128_int64(x int64) bool                    { return x > 128 }
1094func ge_128_int64(x int64) bool                    { return x >= 128 }
1095func eq_128_int64(x int64) bool                    { return x == 128 }
1096func ne_128_int64(x int64) bool                    { return x != 128 }
1097func lt_254_int64(x int64) bool                    { return x < 254 }
1098func le_254_int64(x int64) bool                    { return x <= 254 }
1099func gt_254_int64(x int64) bool                    { return x > 254 }
1100func ge_254_int64(x int64) bool                    { return x >= 254 }
1101func eq_254_int64(x int64) bool                    { return x == 254 }
1102func ne_254_int64(x int64) bool                    { return x != 254 }
1103func lt_255_int64(x int64) bool                    { return x < 255 }
1104func le_255_int64(x int64) bool                    { return x <= 255 }
1105func gt_255_int64(x int64) bool                    { return x > 255 }
1106func ge_255_int64(x int64) bool                    { return x >= 255 }
1107func eq_255_int64(x int64) bool                    { return x == 255 }
1108func ne_255_int64(x int64) bool                    { return x != 255 }
1109func lt_256_int64(x int64) bool                    { return x < 256 }
1110func le_256_int64(x int64) bool                    { return x <= 256 }
1111func gt_256_int64(x int64) bool                    { return x > 256 }
1112func ge_256_int64(x int64) bool                    { return x >= 256 }
1113func eq_256_int64(x int64) bool                    { return x == 256 }
1114func ne_256_int64(x int64) bool                    { return x != 256 }
1115func lt_32766_int64(x int64) bool                  { return x < 32766 }
1116func le_32766_int64(x int64) bool                  { return x <= 32766 }
1117func gt_32766_int64(x int64) bool                  { return x > 32766 }
1118func ge_32766_int64(x int64) bool                  { return x >= 32766 }
1119func eq_32766_int64(x int64) bool                  { return x == 32766 }
1120func ne_32766_int64(x int64) bool                  { return x != 32766 }
1121func lt_32767_int64(x int64) bool                  { return x < 32767 }
1122func le_32767_int64(x int64) bool                  { return x <= 32767 }
1123func gt_32767_int64(x int64) bool                  { return x > 32767 }
1124func ge_32767_int64(x int64) bool                  { return x >= 32767 }
1125func eq_32767_int64(x int64) bool                  { return x == 32767 }
1126func ne_32767_int64(x int64) bool                  { return x != 32767 }
1127func lt_32768_int64(x int64) bool                  { return x < 32768 }
1128func le_32768_int64(x int64) bool                  { return x <= 32768 }
1129func gt_32768_int64(x int64) bool                  { return x > 32768 }
1130func ge_32768_int64(x int64) bool                  { return x >= 32768 }
1131func eq_32768_int64(x int64) bool                  { return x == 32768 }
1132func ne_32768_int64(x int64) bool                  { return x != 32768 }
1133func lt_65534_int64(x int64) bool                  { return x < 65534 }
1134func le_65534_int64(x int64) bool                  { return x <= 65534 }
1135func gt_65534_int64(x int64) bool                  { return x > 65534 }
1136func ge_65534_int64(x int64) bool                  { return x >= 65534 }
1137func eq_65534_int64(x int64) bool                  { return x == 65534 }
1138func ne_65534_int64(x int64) bool                  { return x != 65534 }
1139func lt_65535_int64(x int64) bool                  { return x < 65535 }
1140func le_65535_int64(x int64) bool                  { return x <= 65535 }
1141func gt_65535_int64(x int64) bool                  { return x > 65535 }
1142func ge_65535_int64(x int64) bool                  { return x >= 65535 }
1143func eq_65535_int64(x int64) bool                  { return x == 65535 }
1144func ne_65535_int64(x int64) bool                  { return x != 65535 }
1145func lt_65536_int64(x int64) bool                  { return x < 65536 }
1146func le_65536_int64(x int64) bool                  { return x <= 65536 }
1147func gt_65536_int64(x int64) bool                  { return x > 65536 }
1148func ge_65536_int64(x int64) bool                  { return x >= 65536 }
1149func eq_65536_int64(x int64) bool                  { return x == 65536 }
1150func ne_65536_int64(x int64) bool                  { return x != 65536 }
1151func lt_2147483646_int64(x int64) bool             { return x < 2147483646 }
1152func le_2147483646_int64(x int64) bool             { return x <= 2147483646 }
1153func gt_2147483646_int64(x int64) bool             { return x > 2147483646 }
1154func ge_2147483646_int64(x int64) bool             { return x >= 2147483646 }
1155func eq_2147483646_int64(x int64) bool             { return x == 2147483646 }
1156func ne_2147483646_int64(x int64) bool             { return x != 2147483646 }
1157func lt_2147483647_int64(x int64) bool             { return x < 2147483647 }
1158func le_2147483647_int64(x int64) bool             { return x <= 2147483647 }
1159func gt_2147483647_int64(x int64) bool             { return x > 2147483647 }
1160func ge_2147483647_int64(x int64) bool             { return x >= 2147483647 }
1161func eq_2147483647_int64(x int64) bool             { return x == 2147483647 }
1162func ne_2147483647_int64(x int64) bool             { return x != 2147483647 }
1163func lt_2147483648_int64(x int64) bool             { return x < 2147483648 }
1164func le_2147483648_int64(x int64) bool             { return x <= 2147483648 }
1165func gt_2147483648_int64(x int64) bool             { return x > 2147483648 }
1166func ge_2147483648_int64(x int64) bool             { return x >= 2147483648 }
1167func eq_2147483648_int64(x int64) bool             { return x == 2147483648 }
1168func ne_2147483648_int64(x int64) bool             { return x != 2147483648 }
1169func lt_4278190080_int64(x int64) bool             { return x < 4278190080 }
1170func le_4278190080_int64(x int64) bool             { return x <= 4278190080 }
1171func gt_4278190080_int64(x int64) bool             { return x > 4278190080 }
1172func ge_4278190080_int64(x int64) bool             { return x >= 4278190080 }
1173func eq_4278190080_int64(x int64) bool             { return x == 4278190080 }
1174func ne_4278190080_int64(x int64) bool             { return x != 4278190080 }
1175func lt_4294967294_int64(x int64) bool             { return x < 4294967294 }
1176func le_4294967294_int64(x int64) bool             { return x <= 4294967294 }
1177func gt_4294967294_int64(x int64) bool             { return x > 4294967294 }
1178func ge_4294967294_int64(x int64) bool             { return x >= 4294967294 }
1179func eq_4294967294_int64(x int64) bool             { return x == 4294967294 }
1180func ne_4294967294_int64(x int64) bool             { return x != 4294967294 }
1181func lt_4294967295_int64(x int64) bool             { return x < 4294967295 }
1182func le_4294967295_int64(x int64) bool             { return x <= 4294967295 }
1183func gt_4294967295_int64(x int64) bool             { return x > 4294967295 }
1184func ge_4294967295_int64(x int64) bool             { return x >= 4294967295 }
1185func eq_4294967295_int64(x int64) bool             { return x == 4294967295 }
1186func ne_4294967295_int64(x int64) bool             { return x != 4294967295 }
1187func lt_4294967296_int64(x int64) bool             { return x < 4294967296 }
1188func le_4294967296_int64(x int64) bool             { return x <= 4294967296 }
1189func gt_4294967296_int64(x int64) bool             { return x > 4294967296 }
1190func ge_4294967296_int64(x int64) bool             { return x >= 4294967296 }
1191func eq_4294967296_int64(x int64) bool             { return x == 4294967296 }
1192func ne_4294967296_int64(x int64) bool             { return x != 4294967296 }
1193func lt_1095216660480_int64(x int64) bool          { return x < 1095216660480 }
1194func le_1095216660480_int64(x int64) bool          { return x <= 1095216660480 }
1195func gt_1095216660480_int64(x int64) bool          { return x > 1095216660480 }
1196func ge_1095216660480_int64(x int64) bool          { return x >= 1095216660480 }
1197func eq_1095216660480_int64(x int64) bool          { return x == 1095216660480 }
1198func ne_1095216660480_int64(x int64) bool          { return x != 1095216660480 }
1199func lt_9223372036854775806_int64(x int64) bool    { return x < 9223372036854775806 }
1200func le_9223372036854775806_int64(x int64) bool    { return x <= 9223372036854775806 }
1201func gt_9223372036854775806_int64(x int64) bool    { return x > 9223372036854775806 }
1202func ge_9223372036854775806_int64(x int64) bool    { return x >= 9223372036854775806 }
1203func eq_9223372036854775806_int64(x int64) bool    { return x == 9223372036854775806 }
1204func ne_9223372036854775806_int64(x int64) bool    { return x != 9223372036854775806 }
1205func lt_9223372036854775807_int64(x int64) bool    { return x < 9223372036854775807 }
1206func le_9223372036854775807_int64(x int64) bool    { return x <= 9223372036854775807 }
1207func gt_9223372036854775807_int64(x int64) bool    { return x > 9223372036854775807 }
1208func ge_9223372036854775807_int64(x int64) bool    { return x >= 9223372036854775807 }
1209func eq_9223372036854775807_int64(x int64) bool    { return x == 9223372036854775807 }
1210func ne_9223372036854775807_int64(x int64) bool    { return x != 9223372036854775807 }
1211
1212var int64_tests = []struct {
1213	idx int    // index of the constant used
1214	exp result // expected results
1215	fn  func(int64) bool
1216}{
1217	{idx: 0, exp: lt, fn: lt_neg9223372036854775808_int64},
1218	{idx: 0, exp: le, fn: le_neg9223372036854775808_int64},
1219	{idx: 0, exp: gt, fn: gt_neg9223372036854775808_int64},
1220	{idx: 0, exp: ge, fn: ge_neg9223372036854775808_int64},
1221	{idx: 0, exp: eq, fn: eq_neg9223372036854775808_int64},
1222	{idx: 0, exp: ne, fn: ne_neg9223372036854775808_int64},
1223	{idx: 1, exp: lt, fn: lt_neg9223372036854775807_int64},
1224	{idx: 1, exp: le, fn: le_neg9223372036854775807_int64},
1225	{idx: 1, exp: gt, fn: gt_neg9223372036854775807_int64},
1226	{idx: 1, exp: ge, fn: ge_neg9223372036854775807_int64},
1227	{idx: 1, exp: eq, fn: eq_neg9223372036854775807_int64},
1228	{idx: 1, exp: ne, fn: ne_neg9223372036854775807_int64},
1229	{idx: 2, exp: lt, fn: lt_neg2147483649_int64},
1230	{idx: 2, exp: le, fn: le_neg2147483649_int64},
1231	{idx: 2, exp: gt, fn: gt_neg2147483649_int64},
1232	{idx: 2, exp: ge, fn: ge_neg2147483649_int64},
1233	{idx: 2, exp: eq, fn: eq_neg2147483649_int64},
1234	{idx: 2, exp: ne, fn: ne_neg2147483649_int64},
1235	{idx: 3, exp: lt, fn: lt_neg2147483648_int64},
1236	{idx: 3, exp: le, fn: le_neg2147483648_int64},
1237	{idx: 3, exp: gt, fn: gt_neg2147483648_int64},
1238	{idx: 3, exp: ge, fn: ge_neg2147483648_int64},
1239	{idx: 3, exp: eq, fn: eq_neg2147483648_int64},
1240	{idx: 3, exp: ne, fn: ne_neg2147483648_int64},
1241	{idx: 4, exp: lt, fn: lt_neg2147483647_int64},
1242	{idx: 4, exp: le, fn: le_neg2147483647_int64},
1243	{idx: 4, exp: gt, fn: gt_neg2147483647_int64},
1244	{idx: 4, exp: ge, fn: ge_neg2147483647_int64},
1245	{idx: 4, exp: eq, fn: eq_neg2147483647_int64},
1246	{idx: 4, exp: ne, fn: ne_neg2147483647_int64},
1247	{idx: 5, exp: lt, fn: lt_neg32769_int64},
1248	{idx: 5, exp: le, fn: le_neg32769_int64},
1249	{idx: 5, exp: gt, fn: gt_neg32769_int64},
1250	{idx: 5, exp: ge, fn: ge_neg32769_int64},
1251	{idx: 5, exp: eq, fn: eq_neg32769_int64},
1252	{idx: 5, exp: ne, fn: ne_neg32769_int64},
1253	{idx: 6, exp: lt, fn: lt_neg32768_int64},
1254	{idx: 6, exp: le, fn: le_neg32768_int64},
1255	{idx: 6, exp: gt, fn: gt_neg32768_int64},
1256	{idx: 6, exp: ge, fn: ge_neg32768_int64},
1257	{idx: 6, exp: eq, fn: eq_neg32768_int64},
1258	{idx: 6, exp: ne, fn: ne_neg32768_int64},
1259	{idx: 7, exp: lt, fn: lt_neg32767_int64},
1260	{idx: 7, exp: le, fn: le_neg32767_int64},
1261	{idx: 7, exp: gt, fn: gt_neg32767_int64},
1262	{idx: 7, exp: ge, fn: ge_neg32767_int64},
1263	{idx: 7, exp: eq, fn: eq_neg32767_int64},
1264	{idx: 7, exp: ne, fn: ne_neg32767_int64},
1265	{idx: 8, exp: lt, fn: lt_neg129_int64},
1266	{idx: 8, exp: le, fn: le_neg129_int64},
1267	{idx: 8, exp: gt, fn: gt_neg129_int64},
1268	{idx: 8, exp: ge, fn: ge_neg129_int64},
1269	{idx: 8, exp: eq, fn: eq_neg129_int64},
1270	{idx: 8, exp: ne, fn: ne_neg129_int64},
1271	{idx: 9, exp: lt, fn: lt_neg128_int64},
1272	{idx: 9, exp: le, fn: le_neg128_int64},
1273	{idx: 9, exp: gt, fn: gt_neg128_int64},
1274	{idx: 9, exp: ge, fn: ge_neg128_int64},
1275	{idx: 9, exp: eq, fn: eq_neg128_int64},
1276	{idx: 9, exp: ne, fn: ne_neg128_int64},
1277	{idx: 10, exp: lt, fn: lt_neg127_int64},
1278	{idx: 10, exp: le, fn: le_neg127_int64},
1279	{idx: 10, exp: gt, fn: gt_neg127_int64},
1280	{idx: 10, exp: ge, fn: ge_neg127_int64},
1281	{idx: 10, exp: eq, fn: eq_neg127_int64},
1282	{idx: 10, exp: ne, fn: ne_neg127_int64},
1283	{idx: 11, exp: lt, fn: lt_neg1_int64},
1284	{idx: 11, exp: le, fn: le_neg1_int64},
1285	{idx: 11, exp: gt, fn: gt_neg1_int64},
1286	{idx: 11, exp: ge, fn: ge_neg1_int64},
1287	{idx: 11, exp: eq, fn: eq_neg1_int64},
1288	{idx: 11, exp: ne, fn: ne_neg1_int64},
1289	{idx: 12, exp: lt, fn: lt_0_int64},
1290	{idx: 12, exp: le, fn: le_0_int64},
1291	{idx: 12, exp: gt, fn: gt_0_int64},
1292	{idx: 12, exp: ge, fn: ge_0_int64},
1293	{idx: 12, exp: eq, fn: eq_0_int64},
1294	{idx: 12, exp: ne, fn: ne_0_int64},
1295	{idx: 13, exp: lt, fn: lt_1_int64},
1296	{idx: 13, exp: le, fn: le_1_int64},
1297	{idx: 13, exp: gt, fn: gt_1_int64},
1298	{idx: 13, exp: ge, fn: ge_1_int64},
1299	{idx: 13, exp: eq, fn: eq_1_int64},
1300	{idx: 13, exp: ne, fn: ne_1_int64},
1301	{idx: 14, exp: lt, fn: lt_126_int64},
1302	{idx: 14, exp: le, fn: le_126_int64},
1303	{idx: 14, exp: gt, fn: gt_126_int64},
1304	{idx: 14, exp: ge, fn: ge_126_int64},
1305	{idx: 14, exp: eq, fn: eq_126_int64},
1306	{idx: 14, exp: ne, fn: ne_126_int64},
1307	{idx: 15, exp: lt, fn: lt_127_int64},
1308	{idx: 15, exp: le, fn: le_127_int64},
1309	{idx: 15, exp: gt, fn: gt_127_int64},
1310	{idx: 15, exp: ge, fn: ge_127_int64},
1311	{idx: 15, exp: eq, fn: eq_127_int64},
1312	{idx: 15, exp: ne, fn: ne_127_int64},
1313	{idx: 16, exp: lt, fn: lt_128_int64},
1314	{idx: 16, exp: le, fn: le_128_int64},
1315	{idx: 16, exp: gt, fn: gt_128_int64},
1316	{idx: 16, exp: ge, fn: ge_128_int64},
1317	{idx: 16, exp: eq, fn: eq_128_int64},
1318	{idx: 16, exp: ne, fn: ne_128_int64},
1319	{idx: 17, exp: lt, fn: lt_254_int64},
1320	{idx: 17, exp: le, fn: le_254_int64},
1321	{idx: 17, exp: gt, fn: gt_254_int64},
1322	{idx: 17, exp: ge, fn: ge_254_int64},
1323	{idx: 17, exp: eq, fn: eq_254_int64},
1324	{idx: 17, exp: ne, fn: ne_254_int64},
1325	{idx: 18, exp: lt, fn: lt_255_int64},
1326	{idx: 18, exp: le, fn: le_255_int64},
1327	{idx: 18, exp: gt, fn: gt_255_int64},
1328	{idx: 18, exp: ge, fn: ge_255_int64},
1329	{idx: 18, exp: eq, fn: eq_255_int64},
1330	{idx: 18, exp: ne, fn: ne_255_int64},
1331	{idx: 19, exp: lt, fn: lt_256_int64},
1332	{idx: 19, exp: le, fn: le_256_int64},
1333	{idx: 19, exp: gt, fn: gt_256_int64},
1334	{idx: 19, exp: ge, fn: ge_256_int64},
1335	{idx: 19, exp: eq, fn: eq_256_int64},
1336	{idx: 19, exp: ne, fn: ne_256_int64},
1337	{idx: 20, exp: lt, fn: lt_32766_int64},
1338	{idx: 20, exp: le, fn: le_32766_int64},
1339	{idx: 20, exp: gt, fn: gt_32766_int64},
1340	{idx: 20, exp: ge, fn: ge_32766_int64},
1341	{idx: 20, exp: eq, fn: eq_32766_int64},
1342	{idx: 20, exp: ne, fn: ne_32766_int64},
1343	{idx: 21, exp: lt, fn: lt_32767_int64},
1344	{idx: 21, exp: le, fn: le_32767_int64},
1345	{idx: 21, exp: gt, fn: gt_32767_int64},
1346	{idx: 21, exp: ge, fn: ge_32767_int64},
1347	{idx: 21, exp: eq, fn: eq_32767_int64},
1348	{idx: 21, exp: ne, fn: ne_32767_int64},
1349	{idx: 22, exp: lt, fn: lt_32768_int64},
1350	{idx: 22, exp: le, fn: le_32768_int64},
1351	{idx: 22, exp: gt, fn: gt_32768_int64},
1352	{idx: 22, exp: ge, fn: ge_32768_int64},
1353	{idx: 22, exp: eq, fn: eq_32768_int64},
1354	{idx: 22, exp: ne, fn: ne_32768_int64},
1355	{idx: 23, exp: lt, fn: lt_65534_int64},
1356	{idx: 23, exp: le, fn: le_65534_int64},
1357	{idx: 23, exp: gt, fn: gt_65534_int64},
1358	{idx: 23, exp: ge, fn: ge_65534_int64},
1359	{idx: 23, exp: eq, fn: eq_65534_int64},
1360	{idx: 23, exp: ne, fn: ne_65534_int64},
1361	{idx: 24, exp: lt, fn: lt_65535_int64},
1362	{idx: 24, exp: le, fn: le_65535_int64},
1363	{idx: 24, exp: gt, fn: gt_65535_int64},
1364	{idx: 24, exp: ge, fn: ge_65535_int64},
1365	{idx: 24, exp: eq, fn: eq_65535_int64},
1366	{idx: 24, exp: ne, fn: ne_65535_int64},
1367	{idx: 25, exp: lt, fn: lt_65536_int64},
1368	{idx: 25, exp: le, fn: le_65536_int64},
1369	{idx: 25, exp: gt, fn: gt_65536_int64},
1370	{idx: 25, exp: ge, fn: ge_65536_int64},
1371	{idx: 25, exp: eq, fn: eq_65536_int64},
1372	{idx: 25, exp: ne, fn: ne_65536_int64},
1373	{idx: 26, exp: lt, fn: lt_2147483646_int64},
1374	{idx: 26, exp: le, fn: le_2147483646_int64},
1375	{idx: 26, exp: gt, fn: gt_2147483646_int64},
1376	{idx: 26, exp: ge, fn: ge_2147483646_int64},
1377	{idx: 26, exp: eq, fn: eq_2147483646_int64},
1378	{idx: 26, exp: ne, fn: ne_2147483646_int64},
1379	{idx: 27, exp: lt, fn: lt_2147483647_int64},
1380	{idx: 27, exp: le, fn: le_2147483647_int64},
1381	{idx: 27, exp: gt, fn: gt_2147483647_int64},
1382	{idx: 27, exp: ge, fn: ge_2147483647_int64},
1383	{idx: 27, exp: eq, fn: eq_2147483647_int64},
1384	{idx: 27, exp: ne, fn: ne_2147483647_int64},
1385	{idx: 28, exp: lt, fn: lt_2147483648_int64},
1386	{idx: 28, exp: le, fn: le_2147483648_int64},
1387	{idx: 28, exp: gt, fn: gt_2147483648_int64},
1388	{idx: 28, exp: ge, fn: ge_2147483648_int64},
1389	{idx: 28, exp: eq, fn: eq_2147483648_int64},
1390	{idx: 28, exp: ne, fn: ne_2147483648_int64},
1391	{idx: 29, exp: lt, fn: lt_4278190080_int64},
1392	{idx: 29, exp: le, fn: le_4278190080_int64},
1393	{idx: 29, exp: gt, fn: gt_4278190080_int64},
1394	{idx: 29, exp: ge, fn: ge_4278190080_int64},
1395	{idx: 29, exp: eq, fn: eq_4278190080_int64},
1396	{idx: 29, exp: ne, fn: ne_4278190080_int64},
1397	{idx: 30, exp: lt, fn: lt_4294967294_int64},
1398	{idx: 30, exp: le, fn: le_4294967294_int64},
1399	{idx: 30, exp: gt, fn: gt_4294967294_int64},
1400	{idx: 30, exp: ge, fn: ge_4294967294_int64},
1401	{idx: 30, exp: eq, fn: eq_4294967294_int64},
1402	{idx: 30, exp: ne, fn: ne_4294967294_int64},
1403	{idx: 31, exp: lt, fn: lt_4294967295_int64},
1404	{idx: 31, exp: le, fn: le_4294967295_int64},
1405	{idx: 31, exp: gt, fn: gt_4294967295_int64},
1406	{idx: 31, exp: ge, fn: ge_4294967295_int64},
1407	{idx: 31, exp: eq, fn: eq_4294967295_int64},
1408	{idx: 31, exp: ne, fn: ne_4294967295_int64},
1409	{idx: 32, exp: lt, fn: lt_4294967296_int64},
1410	{idx: 32, exp: le, fn: le_4294967296_int64},
1411	{idx: 32, exp: gt, fn: gt_4294967296_int64},
1412	{idx: 32, exp: ge, fn: ge_4294967296_int64},
1413	{idx: 32, exp: eq, fn: eq_4294967296_int64},
1414	{idx: 32, exp: ne, fn: ne_4294967296_int64},
1415	{idx: 33, exp: lt, fn: lt_1095216660480_int64},
1416	{idx: 33, exp: le, fn: le_1095216660480_int64},
1417	{idx: 33, exp: gt, fn: gt_1095216660480_int64},
1418	{idx: 33, exp: ge, fn: ge_1095216660480_int64},
1419	{idx: 33, exp: eq, fn: eq_1095216660480_int64},
1420	{idx: 33, exp: ne, fn: ne_1095216660480_int64},
1421	{idx: 34, exp: lt, fn: lt_9223372036854775806_int64},
1422	{idx: 34, exp: le, fn: le_9223372036854775806_int64},
1423	{idx: 34, exp: gt, fn: gt_9223372036854775806_int64},
1424	{idx: 34, exp: ge, fn: ge_9223372036854775806_int64},
1425	{idx: 34, exp: eq, fn: eq_9223372036854775806_int64},
1426	{idx: 34, exp: ne, fn: ne_9223372036854775806_int64},
1427	{idx: 35, exp: lt, fn: lt_9223372036854775807_int64},
1428	{idx: 35, exp: le, fn: le_9223372036854775807_int64},
1429	{idx: 35, exp: gt, fn: gt_9223372036854775807_int64},
1430	{idx: 35, exp: ge, fn: ge_9223372036854775807_int64},
1431	{idx: 35, exp: eq, fn: eq_9223372036854775807_int64},
1432	{idx: 35, exp: ne, fn: ne_9223372036854775807_int64},
1433}
1434
1435// int32 tests
1436var int32_vals = []int32{
1437	-2147483648,
1438	-2147483647,
1439	-32769,
1440	-32768,
1441	-32767,
1442	-129,
1443	-128,
1444	-127,
1445	-1,
1446	0,
1447	1,
1448	126,
1449	127,
1450	128,
1451	254,
1452	255,
1453	256,
1454	32766,
1455	32767,
1456	32768,
1457	65534,
1458	65535,
1459	65536,
1460	2147483646,
1461	2147483647,
1462}
1463
1464func lt_neg2147483648_int32(x int32) bool { return x < -2147483648 }
1465func le_neg2147483648_int32(x int32) bool { return x <= -2147483648 }
1466func gt_neg2147483648_int32(x int32) bool { return x > -2147483648 }
1467func ge_neg2147483648_int32(x int32) bool { return x >= -2147483648 }
1468func eq_neg2147483648_int32(x int32) bool { return x == -2147483648 }
1469func ne_neg2147483648_int32(x int32) bool { return x != -2147483648 }
1470func lt_neg2147483647_int32(x int32) bool { return x < -2147483647 }
1471func le_neg2147483647_int32(x int32) bool { return x <= -2147483647 }
1472func gt_neg2147483647_int32(x int32) bool { return x > -2147483647 }
1473func ge_neg2147483647_int32(x int32) bool { return x >= -2147483647 }
1474func eq_neg2147483647_int32(x int32) bool { return x == -2147483647 }
1475func ne_neg2147483647_int32(x int32) bool { return x != -2147483647 }
1476func lt_neg32769_int32(x int32) bool      { return x < -32769 }
1477func le_neg32769_int32(x int32) bool      { return x <= -32769 }
1478func gt_neg32769_int32(x int32) bool      { return x > -32769 }
1479func ge_neg32769_int32(x int32) bool      { return x >= -32769 }
1480func eq_neg32769_int32(x int32) bool      { return x == -32769 }
1481func ne_neg32769_int32(x int32) bool      { return x != -32769 }
1482func lt_neg32768_int32(x int32) bool      { return x < -32768 }
1483func le_neg32768_int32(x int32) bool      { return x <= -32768 }
1484func gt_neg32768_int32(x int32) bool      { return x > -32768 }
1485func ge_neg32768_int32(x int32) bool      { return x >= -32768 }
1486func eq_neg32768_int32(x int32) bool      { return x == -32768 }
1487func ne_neg32768_int32(x int32) bool      { return x != -32768 }
1488func lt_neg32767_int32(x int32) bool      { return x < -32767 }
1489func le_neg32767_int32(x int32) bool      { return x <= -32767 }
1490func gt_neg32767_int32(x int32) bool      { return x > -32767 }
1491func ge_neg32767_int32(x int32) bool      { return x >= -32767 }
1492func eq_neg32767_int32(x int32) bool      { return x == -32767 }
1493func ne_neg32767_int32(x int32) bool      { return x != -32767 }
1494func lt_neg129_int32(x int32) bool        { return x < -129 }
1495func le_neg129_int32(x int32) bool        { return x <= -129 }
1496func gt_neg129_int32(x int32) bool        { return x > -129 }
1497func ge_neg129_int32(x int32) bool        { return x >= -129 }
1498func eq_neg129_int32(x int32) bool        { return x == -129 }
1499func ne_neg129_int32(x int32) bool        { return x != -129 }
1500func lt_neg128_int32(x int32) bool        { return x < -128 }
1501func le_neg128_int32(x int32) bool        { return x <= -128 }
1502func gt_neg128_int32(x int32) bool        { return x > -128 }
1503func ge_neg128_int32(x int32) bool        { return x >= -128 }
1504func eq_neg128_int32(x int32) bool        { return x == -128 }
1505func ne_neg128_int32(x int32) bool        { return x != -128 }
1506func lt_neg127_int32(x int32) bool        { return x < -127 }
1507func le_neg127_int32(x int32) bool        { return x <= -127 }
1508func gt_neg127_int32(x int32) bool        { return x > -127 }
1509func ge_neg127_int32(x int32) bool        { return x >= -127 }
1510func eq_neg127_int32(x int32) bool        { return x == -127 }
1511func ne_neg127_int32(x int32) bool        { return x != -127 }
1512func lt_neg1_int32(x int32) bool          { return x < -1 }
1513func le_neg1_int32(x int32) bool          { return x <= -1 }
1514func gt_neg1_int32(x int32) bool          { return x > -1 }
1515func ge_neg1_int32(x int32) bool          { return x >= -1 }
1516func eq_neg1_int32(x int32) bool          { return x == -1 }
1517func ne_neg1_int32(x int32) bool          { return x != -1 }
1518func lt_0_int32(x int32) bool             { return x < 0 }
1519func le_0_int32(x int32) bool             { return x <= 0 }
1520func gt_0_int32(x int32) bool             { return x > 0 }
1521func ge_0_int32(x int32) bool             { return x >= 0 }
1522func eq_0_int32(x int32) bool             { return x == 0 }
1523func ne_0_int32(x int32) bool             { return x != 0 }
1524func lt_1_int32(x int32) bool             { return x < 1 }
1525func le_1_int32(x int32) bool             { return x <= 1 }
1526func gt_1_int32(x int32) bool             { return x > 1 }
1527func ge_1_int32(x int32) bool             { return x >= 1 }
1528func eq_1_int32(x int32) bool             { return x == 1 }
1529func ne_1_int32(x int32) bool             { return x != 1 }
1530func lt_126_int32(x int32) bool           { return x < 126 }
1531func le_126_int32(x int32) bool           { return x <= 126 }
1532func gt_126_int32(x int32) bool           { return x > 126 }
1533func ge_126_int32(x int32) bool           { return x >= 126 }
1534func eq_126_int32(x int32) bool           { return x == 126 }
1535func ne_126_int32(x int32) bool           { return x != 126 }
1536func lt_127_int32(x int32) bool           { return x < 127 }
1537func le_127_int32(x int32) bool           { return x <= 127 }
1538func gt_127_int32(x int32) bool           { return x > 127 }
1539func ge_127_int32(x int32) bool           { return x >= 127 }
1540func eq_127_int32(x int32) bool           { return x == 127 }
1541func ne_127_int32(x int32) bool           { return x != 127 }
1542func lt_128_int32(x int32) bool           { return x < 128 }
1543func le_128_int32(x int32) bool           { return x <= 128 }
1544func gt_128_int32(x int32) bool           { return x > 128 }
1545func ge_128_int32(x int32) bool           { return x >= 128 }
1546func eq_128_int32(x int32) bool           { return x == 128 }
1547func ne_128_int32(x int32) bool           { return x != 128 }
1548func lt_254_int32(x int32) bool           { return x < 254 }
1549func le_254_int32(x int32) bool           { return x <= 254 }
1550func gt_254_int32(x int32) bool           { return x > 254 }
1551func ge_254_int32(x int32) bool           { return x >= 254 }
1552func eq_254_int32(x int32) bool           { return x == 254 }
1553func ne_254_int32(x int32) bool           { return x != 254 }
1554func lt_255_int32(x int32) bool           { return x < 255 }
1555func le_255_int32(x int32) bool           { return x <= 255 }
1556func gt_255_int32(x int32) bool           { return x > 255 }
1557func ge_255_int32(x int32) bool           { return x >= 255 }
1558func eq_255_int32(x int32) bool           { return x == 255 }
1559func ne_255_int32(x int32) bool           { return x != 255 }
1560func lt_256_int32(x int32) bool           { return x < 256 }
1561func le_256_int32(x int32) bool           { return x <= 256 }
1562func gt_256_int32(x int32) bool           { return x > 256 }
1563func ge_256_int32(x int32) bool           { return x >= 256 }
1564func eq_256_int32(x int32) bool           { return x == 256 }
1565func ne_256_int32(x int32) bool           { return x != 256 }
1566func lt_32766_int32(x int32) bool         { return x < 32766 }
1567func le_32766_int32(x int32) bool         { return x <= 32766 }
1568func gt_32766_int32(x int32) bool         { return x > 32766 }
1569func ge_32766_int32(x int32) bool         { return x >= 32766 }
1570func eq_32766_int32(x int32) bool         { return x == 32766 }
1571func ne_32766_int32(x int32) bool         { return x != 32766 }
1572func lt_32767_int32(x int32) bool         { return x < 32767 }
1573func le_32767_int32(x int32) bool         { return x <= 32767 }
1574func gt_32767_int32(x int32) bool         { return x > 32767 }
1575func ge_32767_int32(x int32) bool         { return x >= 32767 }
1576func eq_32767_int32(x int32) bool         { return x == 32767 }
1577func ne_32767_int32(x int32) bool         { return x != 32767 }
1578func lt_32768_int32(x int32) bool         { return x < 32768 }
1579func le_32768_int32(x int32) bool         { return x <= 32768 }
1580func gt_32768_int32(x int32) bool         { return x > 32768 }
1581func ge_32768_int32(x int32) bool         { return x >= 32768 }
1582func eq_32768_int32(x int32) bool         { return x == 32768 }
1583func ne_32768_int32(x int32) bool         { return x != 32768 }
1584func lt_65534_int32(x int32) bool         { return x < 65534 }
1585func le_65534_int32(x int32) bool         { return x <= 65534 }
1586func gt_65534_int32(x int32) bool         { return x > 65534 }
1587func ge_65534_int32(x int32) bool         { return x >= 65534 }
1588func eq_65534_int32(x int32) bool         { return x == 65534 }
1589func ne_65534_int32(x int32) bool         { return x != 65534 }
1590func lt_65535_int32(x int32) bool         { return x < 65535 }
1591func le_65535_int32(x int32) bool         { return x <= 65535 }
1592func gt_65535_int32(x int32) bool         { return x > 65535 }
1593func ge_65535_int32(x int32) bool         { return x >= 65535 }
1594func eq_65535_int32(x int32) bool         { return x == 65535 }
1595func ne_65535_int32(x int32) bool         { return x != 65535 }
1596func lt_65536_int32(x int32) bool         { return x < 65536 }
1597func le_65536_int32(x int32) bool         { return x <= 65536 }
1598func gt_65536_int32(x int32) bool         { return x > 65536 }
1599func ge_65536_int32(x int32) bool         { return x >= 65536 }
1600func eq_65536_int32(x int32) bool         { return x == 65536 }
1601func ne_65536_int32(x int32) bool         { return x != 65536 }
1602func lt_2147483646_int32(x int32) bool    { return x < 2147483646 }
1603func le_2147483646_int32(x int32) bool    { return x <= 2147483646 }
1604func gt_2147483646_int32(x int32) bool    { return x > 2147483646 }
1605func ge_2147483646_int32(x int32) bool    { return x >= 2147483646 }
1606func eq_2147483646_int32(x int32) bool    { return x == 2147483646 }
1607func ne_2147483646_int32(x int32) bool    { return x != 2147483646 }
1608func lt_2147483647_int32(x int32) bool    { return x < 2147483647 }
1609func le_2147483647_int32(x int32) bool    { return x <= 2147483647 }
1610func gt_2147483647_int32(x int32) bool    { return x > 2147483647 }
1611func ge_2147483647_int32(x int32) bool    { return x >= 2147483647 }
1612func eq_2147483647_int32(x int32) bool    { return x == 2147483647 }
1613func ne_2147483647_int32(x int32) bool    { return x != 2147483647 }
1614
1615var int32_tests = []struct {
1616	idx int    // index of the constant used
1617	exp result // expected results
1618	fn  func(int32) bool
1619}{
1620	{idx: 0, exp: lt, fn: lt_neg2147483648_int32},
1621	{idx: 0, exp: le, fn: le_neg2147483648_int32},
1622	{idx: 0, exp: gt, fn: gt_neg2147483648_int32},
1623	{idx: 0, exp: ge, fn: ge_neg2147483648_int32},
1624	{idx: 0, exp: eq, fn: eq_neg2147483648_int32},
1625	{idx: 0, exp: ne, fn: ne_neg2147483648_int32},
1626	{idx: 1, exp: lt, fn: lt_neg2147483647_int32},
1627	{idx: 1, exp: le, fn: le_neg2147483647_int32},
1628	{idx: 1, exp: gt, fn: gt_neg2147483647_int32},
1629	{idx: 1, exp: ge, fn: ge_neg2147483647_int32},
1630	{idx: 1, exp: eq, fn: eq_neg2147483647_int32},
1631	{idx: 1, exp: ne, fn: ne_neg2147483647_int32},
1632	{idx: 2, exp: lt, fn: lt_neg32769_int32},
1633	{idx: 2, exp: le, fn: le_neg32769_int32},
1634	{idx: 2, exp: gt, fn: gt_neg32769_int32},
1635	{idx: 2, exp: ge, fn: ge_neg32769_int32},
1636	{idx: 2, exp: eq, fn: eq_neg32769_int32},
1637	{idx: 2, exp: ne, fn: ne_neg32769_int32},
1638	{idx: 3, exp: lt, fn: lt_neg32768_int32},
1639	{idx: 3, exp: le, fn: le_neg32768_int32},
1640	{idx: 3, exp: gt, fn: gt_neg32768_int32},
1641	{idx: 3, exp: ge, fn: ge_neg32768_int32},
1642	{idx: 3, exp: eq, fn: eq_neg32768_int32},
1643	{idx: 3, exp: ne, fn: ne_neg32768_int32},
1644	{idx: 4, exp: lt, fn: lt_neg32767_int32},
1645	{idx: 4, exp: le, fn: le_neg32767_int32},
1646	{idx: 4, exp: gt, fn: gt_neg32767_int32},
1647	{idx: 4, exp: ge, fn: ge_neg32767_int32},
1648	{idx: 4, exp: eq, fn: eq_neg32767_int32},
1649	{idx: 4, exp: ne, fn: ne_neg32767_int32},
1650	{idx: 5, exp: lt, fn: lt_neg129_int32},
1651	{idx: 5, exp: le, fn: le_neg129_int32},
1652	{idx: 5, exp: gt, fn: gt_neg129_int32},
1653	{idx: 5, exp: ge, fn: ge_neg129_int32},
1654	{idx: 5, exp: eq, fn: eq_neg129_int32},
1655	{idx: 5, exp: ne, fn: ne_neg129_int32},
1656	{idx: 6, exp: lt, fn: lt_neg128_int32},
1657	{idx: 6, exp: le, fn: le_neg128_int32},
1658	{idx: 6, exp: gt, fn: gt_neg128_int32},
1659	{idx: 6, exp: ge, fn: ge_neg128_int32},
1660	{idx: 6, exp: eq, fn: eq_neg128_int32},
1661	{idx: 6, exp: ne, fn: ne_neg128_int32},
1662	{idx: 7, exp: lt, fn: lt_neg127_int32},
1663	{idx: 7, exp: le, fn: le_neg127_int32},
1664	{idx: 7, exp: gt, fn: gt_neg127_int32},
1665	{idx: 7, exp: ge, fn: ge_neg127_int32},
1666	{idx: 7, exp: eq, fn: eq_neg127_int32},
1667	{idx: 7, exp: ne, fn: ne_neg127_int32},
1668	{idx: 8, exp: lt, fn: lt_neg1_int32},
1669	{idx: 8, exp: le, fn: le_neg1_int32},
1670	{idx: 8, exp: gt, fn: gt_neg1_int32},
1671	{idx: 8, exp: ge, fn: ge_neg1_int32},
1672	{idx: 8, exp: eq, fn: eq_neg1_int32},
1673	{idx: 8, exp: ne, fn: ne_neg1_int32},
1674	{idx: 9, exp: lt, fn: lt_0_int32},
1675	{idx: 9, exp: le, fn: le_0_int32},
1676	{idx: 9, exp: gt, fn: gt_0_int32},
1677	{idx: 9, exp: ge, fn: ge_0_int32},
1678	{idx: 9, exp: eq, fn: eq_0_int32},
1679	{idx: 9, exp: ne, fn: ne_0_int32},
1680	{idx: 10, exp: lt, fn: lt_1_int32},
1681	{idx: 10, exp: le, fn: le_1_int32},
1682	{idx: 10, exp: gt, fn: gt_1_int32},
1683	{idx: 10, exp: ge, fn: ge_1_int32},
1684	{idx: 10, exp: eq, fn: eq_1_int32},
1685	{idx: 10, exp: ne, fn: ne_1_int32},
1686	{idx: 11, exp: lt, fn: lt_126_int32},
1687	{idx: 11, exp: le, fn: le_126_int32},
1688	{idx: 11, exp: gt, fn: gt_126_int32},
1689	{idx: 11, exp: ge, fn: ge_126_int32},
1690	{idx: 11, exp: eq, fn: eq_126_int32},
1691	{idx: 11, exp: ne, fn: ne_126_int32},
1692	{idx: 12, exp: lt, fn: lt_127_int32},
1693	{idx: 12, exp: le, fn: le_127_int32},
1694	{idx: 12, exp: gt, fn: gt_127_int32},
1695	{idx: 12, exp: ge, fn: ge_127_int32},
1696	{idx: 12, exp: eq, fn: eq_127_int32},
1697	{idx: 12, exp: ne, fn: ne_127_int32},
1698	{idx: 13, exp: lt, fn: lt_128_int32},
1699	{idx: 13, exp: le, fn: le_128_int32},
1700	{idx: 13, exp: gt, fn: gt_128_int32},
1701	{idx: 13, exp: ge, fn: ge_128_int32},
1702	{idx: 13, exp: eq, fn: eq_128_int32},
1703	{idx: 13, exp: ne, fn: ne_128_int32},
1704	{idx: 14, exp: lt, fn: lt_254_int32},
1705	{idx: 14, exp: le, fn: le_254_int32},
1706	{idx: 14, exp: gt, fn: gt_254_int32},
1707	{idx: 14, exp: ge, fn: ge_254_int32},
1708	{idx: 14, exp: eq, fn: eq_254_int32},
1709	{idx: 14, exp: ne, fn: ne_254_int32},
1710	{idx: 15, exp: lt, fn: lt_255_int32},
1711	{idx: 15, exp: le, fn: le_255_int32},
1712	{idx: 15, exp: gt, fn: gt_255_int32},
1713	{idx: 15, exp: ge, fn: ge_255_int32},
1714	{idx: 15, exp: eq, fn: eq_255_int32},
1715	{idx: 15, exp: ne, fn: ne_255_int32},
1716	{idx: 16, exp: lt, fn: lt_256_int32},
1717	{idx: 16, exp: le, fn: le_256_int32},
1718	{idx: 16, exp: gt, fn: gt_256_int32},
1719	{idx: 16, exp: ge, fn: ge_256_int32},
1720	{idx: 16, exp: eq, fn: eq_256_int32},
1721	{idx: 16, exp: ne, fn: ne_256_int32},
1722	{idx: 17, exp: lt, fn: lt_32766_int32},
1723	{idx: 17, exp: le, fn: le_32766_int32},
1724	{idx: 17, exp: gt, fn: gt_32766_int32},
1725	{idx: 17, exp: ge, fn: ge_32766_int32},
1726	{idx: 17, exp: eq, fn: eq_32766_int32},
1727	{idx: 17, exp: ne, fn: ne_32766_int32},
1728	{idx: 18, exp: lt, fn: lt_32767_int32},
1729	{idx: 18, exp: le, fn: le_32767_int32},
1730	{idx: 18, exp: gt, fn: gt_32767_int32},
1731	{idx: 18, exp: ge, fn: ge_32767_int32},
1732	{idx: 18, exp: eq, fn: eq_32767_int32},
1733	{idx: 18, exp: ne, fn: ne_32767_int32},
1734	{idx: 19, exp: lt, fn: lt_32768_int32},
1735	{idx: 19, exp: le, fn: le_32768_int32},
1736	{idx: 19, exp: gt, fn: gt_32768_int32},
1737	{idx: 19, exp: ge, fn: ge_32768_int32},
1738	{idx: 19, exp: eq, fn: eq_32768_int32},
1739	{idx: 19, exp: ne, fn: ne_32768_int32},
1740	{idx: 20, exp: lt, fn: lt_65534_int32},
1741	{idx: 20, exp: le, fn: le_65534_int32},
1742	{idx: 20, exp: gt, fn: gt_65534_int32},
1743	{idx: 20, exp: ge, fn: ge_65534_int32},
1744	{idx: 20, exp: eq, fn: eq_65534_int32},
1745	{idx: 20, exp: ne, fn: ne_65534_int32},
1746	{idx: 21, exp: lt, fn: lt_65535_int32},
1747	{idx: 21, exp: le, fn: le_65535_int32},
1748	{idx: 21, exp: gt, fn: gt_65535_int32},
1749	{idx: 21, exp: ge, fn: ge_65535_int32},
1750	{idx: 21, exp: eq, fn: eq_65535_int32},
1751	{idx: 21, exp: ne, fn: ne_65535_int32},
1752	{idx: 22, exp: lt, fn: lt_65536_int32},
1753	{idx: 22, exp: le, fn: le_65536_int32},
1754	{idx: 22, exp: gt, fn: gt_65536_int32},
1755	{idx: 22, exp: ge, fn: ge_65536_int32},
1756	{idx: 22, exp: eq, fn: eq_65536_int32},
1757	{idx: 22, exp: ne, fn: ne_65536_int32},
1758	{idx: 23, exp: lt, fn: lt_2147483646_int32},
1759	{idx: 23, exp: le, fn: le_2147483646_int32},
1760	{idx: 23, exp: gt, fn: gt_2147483646_int32},
1761	{idx: 23, exp: ge, fn: ge_2147483646_int32},
1762	{idx: 23, exp: eq, fn: eq_2147483646_int32},
1763	{idx: 23, exp: ne, fn: ne_2147483646_int32},
1764	{idx: 24, exp: lt, fn: lt_2147483647_int32},
1765	{idx: 24, exp: le, fn: le_2147483647_int32},
1766	{idx: 24, exp: gt, fn: gt_2147483647_int32},
1767	{idx: 24, exp: ge, fn: ge_2147483647_int32},
1768	{idx: 24, exp: eq, fn: eq_2147483647_int32},
1769	{idx: 24, exp: ne, fn: ne_2147483647_int32},
1770}
1771
1772// int16 tests
1773var int16_vals = []int16{
1774	-32768,
1775	-32767,
1776	-129,
1777	-128,
1778	-127,
1779	-1,
1780	0,
1781	1,
1782	126,
1783	127,
1784	128,
1785	254,
1786	255,
1787	256,
1788	32766,
1789	32767,
1790}
1791
1792func lt_neg32768_int16(x int16) bool { return x < -32768 }
1793func le_neg32768_int16(x int16) bool { return x <= -32768 }
1794func gt_neg32768_int16(x int16) bool { return x > -32768 }
1795func ge_neg32768_int16(x int16) bool { return x >= -32768 }
1796func eq_neg32768_int16(x int16) bool { return x == -32768 }
1797func ne_neg32768_int16(x int16) bool { return x != -32768 }
1798func lt_neg32767_int16(x int16) bool { return x < -32767 }
1799func le_neg32767_int16(x int16) bool { return x <= -32767 }
1800func gt_neg32767_int16(x int16) bool { return x > -32767 }
1801func ge_neg32767_int16(x int16) bool { return x >= -32767 }
1802func eq_neg32767_int16(x int16) bool { return x == -32767 }
1803func ne_neg32767_int16(x int16) bool { return x != -32767 }
1804func lt_neg129_int16(x int16) bool   { return x < -129 }
1805func le_neg129_int16(x int16) bool   { return x <= -129 }
1806func gt_neg129_int16(x int16) bool   { return x > -129 }
1807func ge_neg129_int16(x int16) bool   { return x >= -129 }
1808func eq_neg129_int16(x int16) bool   { return x == -129 }
1809func ne_neg129_int16(x int16) bool   { return x != -129 }
1810func lt_neg128_int16(x int16) bool   { return x < -128 }
1811func le_neg128_int16(x int16) bool   { return x <= -128 }
1812func gt_neg128_int16(x int16) bool   { return x > -128 }
1813func ge_neg128_int16(x int16) bool   { return x >= -128 }
1814func eq_neg128_int16(x int16) bool   { return x == -128 }
1815func ne_neg128_int16(x int16) bool   { return x != -128 }
1816func lt_neg127_int16(x int16) bool   { return x < -127 }
1817func le_neg127_int16(x int16) bool   { return x <= -127 }
1818func gt_neg127_int16(x int16) bool   { return x > -127 }
1819func ge_neg127_int16(x int16) bool   { return x >= -127 }
1820func eq_neg127_int16(x int16) bool   { return x == -127 }
1821func ne_neg127_int16(x int16) bool   { return x != -127 }
1822func lt_neg1_int16(x int16) bool     { return x < -1 }
1823func le_neg1_int16(x int16) bool     { return x <= -1 }
1824func gt_neg1_int16(x int16) bool     { return x > -1 }
1825func ge_neg1_int16(x int16) bool     { return x >= -1 }
1826func eq_neg1_int16(x int16) bool     { return x == -1 }
1827func ne_neg1_int16(x int16) bool     { return x != -1 }
1828func lt_0_int16(x int16) bool        { return x < 0 }
1829func le_0_int16(x int16) bool        { return x <= 0 }
1830func gt_0_int16(x int16) bool        { return x > 0 }
1831func ge_0_int16(x int16) bool        { return x >= 0 }
1832func eq_0_int16(x int16) bool        { return x == 0 }
1833func ne_0_int16(x int16) bool        { return x != 0 }
1834func lt_1_int16(x int16) bool        { return x < 1 }
1835func le_1_int16(x int16) bool        { return x <= 1 }
1836func gt_1_int16(x int16) bool        { return x > 1 }
1837func ge_1_int16(x int16) bool        { return x >= 1 }
1838func eq_1_int16(x int16) bool        { return x == 1 }
1839func ne_1_int16(x int16) bool        { return x != 1 }
1840func lt_126_int16(x int16) bool      { return x < 126 }
1841func le_126_int16(x int16) bool      { return x <= 126 }
1842func gt_126_int16(x int16) bool      { return x > 126 }
1843func ge_126_int16(x int16) bool      { return x >= 126 }
1844func eq_126_int16(x int16) bool      { return x == 126 }
1845func ne_126_int16(x int16) bool      { return x != 126 }
1846func lt_127_int16(x int16) bool      { return x < 127 }
1847func le_127_int16(x int16) bool      { return x <= 127 }
1848func gt_127_int16(x int16) bool      { return x > 127 }
1849func ge_127_int16(x int16) bool      { return x >= 127 }
1850func eq_127_int16(x int16) bool      { return x == 127 }
1851func ne_127_int16(x int16) bool      { return x != 127 }
1852func lt_128_int16(x int16) bool      { return x < 128 }
1853func le_128_int16(x int16) bool      { return x <= 128 }
1854func gt_128_int16(x int16) bool      { return x > 128 }
1855func ge_128_int16(x int16) bool      { return x >= 128 }
1856func eq_128_int16(x int16) bool      { return x == 128 }
1857func ne_128_int16(x int16) bool      { return x != 128 }
1858func lt_254_int16(x int16) bool      { return x < 254 }
1859func le_254_int16(x int16) bool      { return x <= 254 }
1860func gt_254_int16(x int16) bool      { return x > 254 }
1861func ge_254_int16(x int16) bool      { return x >= 254 }
1862func eq_254_int16(x int16) bool      { return x == 254 }
1863func ne_254_int16(x int16) bool      { return x != 254 }
1864func lt_255_int16(x int16) bool      { return x < 255 }
1865func le_255_int16(x int16) bool      { return x <= 255 }
1866func gt_255_int16(x int16) bool      { return x > 255 }
1867func ge_255_int16(x int16) bool      { return x >= 255 }
1868func eq_255_int16(x int16) bool      { return x == 255 }
1869func ne_255_int16(x int16) bool      { return x != 255 }
1870func lt_256_int16(x int16) bool      { return x < 256 }
1871func le_256_int16(x int16) bool      { return x <= 256 }
1872func gt_256_int16(x int16) bool      { return x > 256 }
1873func ge_256_int16(x int16) bool      { return x >= 256 }
1874func eq_256_int16(x int16) bool      { return x == 256 }
1875func ne_256_int16(x int16) bool      { return x != 256 }
1876func lt_32766_int16(x int16) bool    { return x < 32766 }
1877func le_32766_int16(x int16) bool    { return x <= 32766 }
1878func gt_32766_int16(x int16) bool    { return x > 32766 }
1879func ge_32766_int16(x int16) bool    { return x >= 32766 }
1880func eq_32766_int16(x int16) bool    { return x == 32766 }
1881func ne_32766_int16(x int16) bool    { return x != 32766 }
1882func lt_32767_int16(x int16) bool    { return x < 32767 }
1883func le_32767_int16(x int16) bool    { return x <= 32767 }
1884func gt_32767_int16(x int16) bool    { return x > 32767 }
1885func ge_32767_int16(x int16) bool    { return x >= 32767 }
1886func eq_32767_int16(x int16) bool    { return x == 32767 }
1887func ne_32767_int16(x int16) bool    { return x != 32767 }
1888
1889var int16_tests = []struct {
1890	idx int    // index of the constant used
1891	exp result // expected results
1892	fn  func(int16) bool
1893}{
1894	{idx: 0, exp: lt, fn: lt_neg32768_int16},
1895	{idx: 0, exp: le, fn: le_neg32768_int16},
1896	{idx: 0, exp: gt, fn: gt_neg32768_int16},
1897	{idx: 0, exp: ge, fn: ge_neg32768_int16},
1898	{idx: 0, exp: eq, fn: eq_neg32768_int16},
1899	{idx: 0, exp: ne, fn: ne_neg32768_int16},
1900	{idx: 1, exp: lt, fn: lt_neg32767_int16},
1901	{idx: 1, exp: le, fn: le_neg32767_int16},
1902	{idx: 1, exp: gt, fn: gt_neg32767_int16},
1903	{idx: 1, exp: ge, fn: ge_neg32767_int16},
1904	{idx: 1, exp: eq, fn: eq_neg32767_int16},
1905	{idx: 1, exp: ne, fn: ne_neg32767_int16},
1906	{idx: 2, exp: lt, fn: lt_neg129_int16},
1907	{idx: 2, exp: le, fn: le_neg129_int16},
1908	{idx: 2, exp: gt, fn: gt_neg129_int16},
1909	{idx: 2, exp: ge, fn: ge_neg129_int16},
1910	{idx: 2, exp: eq, fn: eq_neg129_int16},
1911	{idx: 2, exp: ne, fn: ne_neg129_int16},
1912	{idx: 3, exp: lt, fn: lt_neg128_int16},
1913	{idx: 3, exp: le, fn: le_neg128_int16},
1914	{idx: 3, exp: gt, fn: gt_neg128_int16},
1915	{idx: 3, exp: ge, fn: ge_neg128_int16},
1916	{idx: 3, exp: eq, fn: eq_neg128_int16},
1917	{idx: 3, exp: ne, fn: ne_neg128_int16},
1918	{idx: 4, exp: lt, fn: lt_neg127_int16},
1919	{idx: 4, exp: le, fn: le_neg127_int16},
1920	{idx: 4, exp: gt, fn: gt_neg127_int16},
1921	{idx: 4, exp: ge, fn: ge_neg127_int16},
1922	{idx: 4, exp: eq, fn: eq_neg127_int16},
1923	{idx: 4, exp: ne, fn: ne_neg127_int16},
1924	{idx: 5, exp: lt, fn: lt_neg1_int16},
1925	{idx: 5, exp: le, fn: le_neg1_int16},
1926	{idx: 5, exp: gt, fn: gt_neg1_int16},
1927	{idx: 5, exp: ge, fn: ge_neg1_int16},
1928	{idx: 5, exp: eq, fn: eq_neg1_int16},
1929	{idx: 5, exp: ne, fn: ne_neg1_int16},
1930	{idx: 6, exp: lt, fn: lt_0_int16},
1931	{idx: 6, exp: le, fn: le_0_int16},
1932	{idx: 6, exp: gt, fn: gt_0_int16},
1933	{idx: 6, exp: ge, fn: ge_0_int16},
1934	{idx: 6, exp: eq, fn: eq_0_int16},
1935	{idx: 6, exp: ne, fn: ne_0_int16},
1936	{idx: 7, exp: lt, fn: lt_1_int16},
1937	{idx: 7, exp: le, fn: le_1_int16},
1938	{idx: 7, exp: gt, fn: gt_1_int16},
1939	{idx: 7, exp: ge, fn: ge_1_int16},
1940	{idx: 7, exp: eq, fn: eq_1_int16},
1941	{idx: 7, exp: ne, fn: ne_1_int16},
1942	{idx: 8, exp: lt, fn: lt_126_int16},
1943	{idx: 8, exp: le, fn: le_126_int16},
1944	{idx: 8, exp: gt, fn: gt_126_int16},
1945	{idx: 8, exp: ge, fn: ge_126_int16},
1946	{idx: 8, exp: eq, fn: eq_126_int16},
1947	{idx: 8, exp: ne, fn: ne_126_int16},
1948	{idx: 9, exp: lt, fn: lt_127_int16},
1949	{idx: 9, exp: le, fn: le_127_int16},
1950	{idx: 9, exp: gt, fn: gt_127_int16},
1951	{idx: 9, exp: ge, fn: ge_127_int16},
1952	{idx: 9, exp: eq, fn: eq_127_int16},
1953	{idx: 9, exp: ne, fn: ne_127_int16},
1954	{idx: 10, exp: lt, fn: lt_128_int16},
1955	{idx: 10, exp: le, fn: le_128_int16},
1956	{idx: 10, exp: gt, fn: gt_128_int16},
1957	{idx: 10, exp: ge, fn: ge_128_int16},
1958	{idx: 10, exp: eq, fn: eq_128_int16},
1959	{idx: 10, exp: ne, fn: ne_128_int16},
1960	{idx: 11, exp: lt, fn: lt_254_int16},
1961	{idx: 11, exp: le, fn: le_254_int16},
1962	{idx: 11, exp: gt, fn: gt_254_int16},
1963	{idx: 11, exp: ge, fn: ge_254_int16},
1964	{idx: 11, exp: eq, fn: eq_254_int16},
1965	{idx: 11, exp: ne, fn: ne_254_int16},
1966	{idx: 12, exp: lt, fn: lt_255_int16},
1967	{idx: 12, exp: le, fn: le_255_int16},
1968	{idx: 12, exp: gt, fn: gt_255_int16},
1969	{idx: 12, exp: ge, fn: ge_255_int16},
1970	{idx: 12, exp: eq, fn: eq_255_int16},
1971	{idx: 12, exp: ne, fn: ne_255_int16},
1972	{idx: 13, exp: lt, fn: lt_256_int16},
1973	{idx: 13, exp: le, fn: le_256_int16},
1974	{idx: 13, exp: gt, fn: gt_256_int16},
1975	{idx: 13, exp: ge, fn: ge_256_int16},
1976	{idx: 13, exp: eq, fn: eq_256_int16},
1977	{idx: 13, exp: ne, fn: ne_256_int16},
1978	{idx: 14, exp: lt, fn: lt_32766_int16},
1979	{idx: 14, exp: le, fn: le_32766_int16},
1980	{idx: 14, exp: gt, fn: gt_32766_int16},
1981	{idx: 14, exp: ge, fn: ge_32766_int16},
1982	{idx: 14, exp: eq, fn: eq_32766_int16},
1983	{idx: 14, exp: ne, fn: ne_32766_int16},
1984	{idx: 15, exp: lt, fn: lt_32767_int16},
1985	{idx: 15, exp: le, fn: le_32767_int16},
1986	{idx: 15, exp: gt, fn: gt_32767_int16},
1987	{idx: 15, exp: ge, fn: ge_32767_int16},
1988	{idx: 15, exp: eq, fn: eq_32767_int16},
1989	{idx: 15, exp: ne, fn: ne_32767_int16},
1990}
1991
1992// int8 tests
1993var int8_vals = []int8{
1994	-128,
1995	-127,
1996	-1,
1997	0,
1998	1,
1999	126,
2000	127,
2001}
2002
2003func lt_neg128_int8(x int8) bool { return x < -128 }
2004func le_neg128_int8(x int8) bool { return x <= -128 }
2005func gt_neg128_int8(x int8) bool { return x > -128 }
2006func ge_neg128_int8(x int8) bool { return x >= -128 }
2007func eq_neg128_int8(x int8) bool { return x == -128 }
2008func ne_neg128_int8(x int8) bool { return x != -128 }
2009func lt_neg127_int8(x int8) bool { return x < -127 }
2010func le_neg127_int8(x int8) bool { return x <= -127 }
2011func gt_neg127_int8(x int8) bool { return x > -127 }
2012func ge_neg127_int8(x int8) bool { return x >= -127 }
2013func eq_neg127_int8(x int8) bool { return x == -127 }
2014func ne_neg127_int8(x int8) bool { return x != -127 }
2015func lt_neg1_int8(x int8) bool   { return x < -1 }
2016func le_neg1_int8(x int8) bool   { return x <= -1 }
2017func gt_neg1_int8(x int8) bool   { return x > -1 }
2018func ge_neg1_int8(x int8) bool   { return x >= -1 }
2019func eq_neg1_int8(x int8) bool   { return x == -1 }
2020func ne_neg1_int8(x int8) bool   { return x != -1 }
2021func lt_0_int8(x int8) bool      { return x < 0 }
2022func le_0_int8(x int8) bool      { return x <= 0 }
2023func gt_0_int8(x int8) bool      { return x > 0 }
2024func ge_0_int8(x int8) bool      { return x >= 0 }
2025func eq_0_int8(x int8) bool      { return x == 0 }
2026func ne_0_int8(x int8) bool      { return x != 0 }
2027func lt_1_int8(x int8) bool      { return x < 1 }
2028func le_1_int8(x int8) bool      { return x <= 1 }
2029func gt_1_int8(x int8) bool      { return x > 1 }
2030func ge_1_int8(x int8) bool      { return x >= 1 }
2031func eq_1_int8(x int8) bool      { return x == 1 }
2032func ne_1_int8(x int8) bool      { return x != 1 }
2033func lt_126_int8(x int8) bool    { return x < 126 }
2034func le_126_int8(x int8) bool    { return x <= 126 }
2035func gt_126_int8(x int8) bool    { return x > 126 }
2036func ge_126_int8(x int8) bool    { return x >= 126 }
2037func eq_126_int8(x int8) bool    { return x == 126 }
2038func ne_126_int8(x int8) bool    { return x != 126 }
2039func lt_127_int8(x int8) bool    { return x < 127 }
2040func le_127_int8(x int8) bool    { return x <= 127 }
2041func gt_127_int8(x int8) bool    { return x > 127 }
2042func ge_127_int8(x int8) bool    { return x >= 127 }
2043func eq_127_int8(x int8) bool    { return x == 127 }
2044func ne_127_int8(x int8) bool    { return x != 127 }
2045
2046var int8_tests = []struct {
2047	idx int    // index of the constant used
2048	exp result // expected results
2049	fn  func(int8) bool
2050}{
2051	{idx: 0, exp: lt, fn: lt_neg128_int8},
2052	{idx: 0, exp: le, fn: le_neg128_int8},
2053	{idx: 0, exp: gt, fn: gt_neg128_int8},
2054	{idx: 0, exp: ge, fn: ge_neg128_int8},
2055	{idx: 0, exp: eq, fn: eq_neg128_int8},
2056	{idx: 0, exp: ne, fn: ne_neg128_int8},
2057	{idx: 1, exp: lt, fn: lt_neg127_int8},
2058	{idx: 1, exp: le, fn: le_neg127_int8},
2059	{idx: 1, exp: gt, fn: gt_neg127_int8},
2060	{idx: 1, exp: ge, fn: ge_neg127_int8},
2061	{idx: 1, exp: eq, fn: eq_neg127_int8},
2062	{idx: 1, exp: ne, fn: ne_neg127_int8},
2063	{idx: 2, exp: lt, fn: lt_neg1_int8},
2064	{idx: 2, exp: le, fn: le_neg1_int8},
2065	{idx: 2, exp: gt, fn: gt_neg1_int8},
2066	{idx: 2, exp: ge, fn: ge_neg1_int8},
2067	{idx: 2, exp: eq, fn: eq_neg1_int8},
2068	{idx: 2, exp: ne, fn: ne_neg1_int8},
2069	{idx: 3, exp: lt, fn: lt_0_int8},
2070	{idx: 3, exp: le, fn: le_0_int8},
2071	{idx: 3, exp: gt, fn: gt_0_int8},
2072	{idx: 3, exp: ge, fn: ge_0_int8},
2073	{idx: 3, exp: eq, fn: eq_0_int8},
2074	{idx: 3, exp: ne, fn: ne_0_int8},
2075	{idx: 4, exp: lt, fn: lt_1_int8},
2076	{idx: 4, exp: le, fn: le_1_int8},
2077	{idx: 4, exp: gt, fn: gt_1_int8},
2078	{idx: 4, exp: ge, fn: ge_1_int8},
2079	{idx: 4, exp: eq, fn: eq_1_int8},
2080	{idx: 4, exp: ne, fn: ne_1_int8},
2081	{idx: 5, exp: lt, fn: lt_126_int8},
2082	{idx: 5, exp: le, fn: le_126_int8},
2083	{idx: 5, exp: gt, fn: gt_126_int8},
2084	{idx: 5, exp: ge, fn: ge_126_int8},
2085	{idx: 5, exp: eq, fn: eq_126_int8},
2086	{idx: 5, exp: ne, fn: ne_126_int8},
2087	{idx: 6, exp: lt, fn: lt_127_int8},
2088	{idx: 6, exp: le, fn: le_127_int8},
2089	{idx: 6, exp: gt, fn: gt_127_int8},
2090	{idx: 6, exp: ge, fn: ge_127_int8},
2091	{idx: 6, exp: eq, fn: eq_127_int8},
2092	{idx: 6, exp: ne, fn: ne_127_int8},
2093}
2094
2095// TestComparisonsConst tests results for comparison operations against constants.
2096func TestComparisonsConst(t *testing.T) {
2097	for i, test := range uint64_tests {
2098		for j, x := range uint64_vals {
2099			want := test.exp.l
2100			if j == test.idx {
2101				want = test.exp.e
2102			} else if j > test.idx {
2103				want = test.exp.r
2104			}
2105			if test.fn(x) != want {
2106				fn := runtime.FuncForPC(reflect.ValueOf(test.fn).Pointer()).Name()
2107				t.Errorf("test failed: %v(%v) != %v [type=uint64 i=%v j=%v idx=%v]", fn, x, want, i, j, test.idx)
2108			}
2109		}
2110	}
2111	for i, test := range uint32_tests {
2112		for j, x := range uint32_vals {
2113			want := test.exp.l
2114			if j == test.idx {
2115				want = test.exp.e
2116			} else if j > test.idx {
2117				want = test.exp.r
2118			}
2119			if test.fn(x) != want {
2120				fn := runtime.FuncForPC(reflect.ValueOf(test.fn).Pointer()).Name()
2121				t.Errorf("test failed: %v(%v) != %v [type=uint32 i=%v j=%v idx=%v]", fn, x, want, i, j, test.idx)
2122			}
2123		}
2124	}
2125	for i, test := range uint16_tests {
2126		for j, x := range uint16_vals {
2127			want := test.exp.l
2128			if j == test.idx {
2129				want = test.exp.e
2130			} else if j > test.idx {
2131				want = test.exp.r
2132			}
2133			if test.fn(x) != want {
2134				fn := runtime.FuncForPC(reflect.ValueOf(test.fn).Pointer()).Name()
2135				t.Errorf("test failed: %v(%v) != %v [type=uint16 i=%v j=%v idx=%v]", fn, x, want, i, j, test.idx)
2136			}
2137		}
2138	}
2139	for i, test := range uint8_tests {
2140		for j, x := range uint8_vals {
2141			want := test.exp.l
2142			if j == test.idx {
2143				want = test.exp.e
2144			} else if j > test.idx {
2145				want = test.exp.r
2146			}
2147			if test.fn(x) != want {
2148				fn := runtime.FuncForPC(reflect.ValueOf(test.fn).Pointer()).Name()
2149				t.Errorf("test failed: %v(%v) != %v [type=uint8 i=%v j=%v idx=%v]", fn, x, want, i, j, test.idx)
2150			}
2151		}
2152	}
2153	for i, test := range int64_tests {
2154		for j, x := range int64_vals {
2155			want := test.exp.l
2156			if j == test.idx {
2157				want = test.exp.e
2158			} else if j > test.idx {
2159				want = test.exp.r
2160			}
2161			if test.fn(x) != want {
2162				fn := runtime.FuncForPC(reflect.ValueOf(test.fn).Pointer()).Name()
2163				t.Errorf("test failed: %v(%v) != %v [type=int64 i=%v j=%v idx=%v]", fn, x, want, i, j, test.idx)
2164			}
2165		}
2166	}
2167	for i, test := range int32_tests {
2168		for j, x := range int32_vals {
2169			want := test.exp.l
2170			if j == test.idx {
2171				want = test.exp.e
2172			} else if j > test.idx {
2173				want = test.exp.r
2174			}
2175			if test.fn(x) != want {
2176				fn := runtime.FuncForPC(reflect.ValueOf(test.fn).Pointer()).Name()
2177				t.Errorf("test failed: %v(%v) != %v [type=int32 i=%v j=%v idx=%v]", fn, x, want, i, j, test.idx)
2178			}
2179		}
2180	}
2181	for i, test := range int16_tests {
2182		for j, x := range int16_vals {
2183			want := test.exp.l
2184			if j == test.idx {
2185				want = test.exp.e
2186			} else if j > test.idx {
2187				want = test.exp.r
2188			}
2189			if test.fn(x) != want {
2190				fn := runtime.FuncForPC(reflect.ValueOf(test.fn).Pointer()).Name()
2191				t.Errorf("test failed: %v(%v) != %v [type=int16 i=%v j=%v idx=%v]", fn, x, want, i, j, test.idx)
2192			}
2193		}
2194	}
2195	for i, test := range int8_tests {
2196		for j, x := range int8_vals {
2197			want := test.exp.l
2198			if j == test.idx {
2199				want = test.exp.e
2200			} else if j > test.idx {
2201				want = test.exp.r
2202			}
2203			if test.fn(x) != want {
2204				fn := runtime.FuncForPC(reflect.ValueOf(test.fn).Pointer()).Name()
2205				t.Errorf("test failed: %v(%v) != %v [type=int8 i=%v j=%v idx=%v]", fn, x, want, i, j, test.idx)
2206			}
2207		}
2208	}
2209}
2210