5 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
6 /* reg, high bits shouldn't be tested */
7 BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, -2, 1),
8 BPF_JMP_IMM(BPF_JA, 0, 0, 1),
11 BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, 1, 1),
13 BPF_MOV64_IMM(BPF_REG_0, 2),
16 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
21 .data64 = { 1ULL << 63, }
27 .data64 = { 1ULL << 63 | 1, }
35 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
36 BPF_LD_IMM64(BPF_REG_8, 0x8000000000000000),
37 BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1),
38 BPF_JMP_IMM(BPF_JA, 0, 0, 1),
41 BPF_LD_IMM64(BPF_REG_8, 0x8000000000000001),
42 BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1),
44 BPF_MOV64_IMM(BPF_REG_0, 2),
47 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
52 .data64 = { 1ULL << 63, }
58 .data64 = { 1ULL << 63 | 1, }
63 "jset32: min/max deduction",
66 BPF_MOV64_IMM(BPF_REG_0, 0),
67 BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, 0x10, 1),
69 BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, 0x10, 1),
70 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
79 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
80 BPF_JMP32_IMM(BPF_JEQ, BPF_REG_7, -1, 1),
82 BPF_MOV64_IMM(BPF_REG_0, 2),
85 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
101 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
102 BPF_LD_IMM64(BPF_REG_8, 0x7000000000000001),
103 BPF_JMP32_REG(BPF_JEQ, BPF_REG_7, BPF_REG_8, 1),
105 BPF_MOV64_IMM(BPF_REG_0, 2),
108 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
119 .data64 = { 1ULL << 63 | 1, }
124 "jeq32: min/max deduction",
127 BPF_MOV64_IMM(BPF_REG_0, 0),
128 BPF_JMP32_IMM(BPF_JEQ, BPF_REG_7, 0x10, 1),
130 BPF_JMP32_IMM(BPF_JSGE, BPF_REG_7, 0xf, 1),
131 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
140 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
141 BPF_JMP32_IMM(BPF_JNE, BPF_REG_7, -1, 1),
143 BPF_MOV64_IMM(BPF_REG_0, 2),
146 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
162 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
163 BPF_LD_IMM64(BPF_REG_8, 0x8000000000000001),
164 BPF_JMP32_REG(BPF_JNE, BPF_REG_7, BPF_REG_8, 1),
166 BPF_MOV64_IMM(BPF_REG_0, 2),
169 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
180 .data64 = { 1ULL << 63 | 2, }
185 "jne32: min/max deduction",
188 BPF_MOV64_IMM(BPF_REG_0, 0),
189 BPF_JMP32_IMM(BPF_JNE, BPF_REG_7, 0x10, 1),
190 BPF_JMP_IMM(BPF_JNE, BPF_REG_7, 0x10, 1),
192 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
201 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
202 BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, UINT_MAX - 1, 1),
204 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
207 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
212 .data64 = { UINT_MAX, }
215 .data64 = { UINT_MAX - 1, }
226 BPF_LD_IMM64(BPF_REG_8, UINT_MAX | 1ULL << 32),
227 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
228 BPF_JMP32_REG(BPF_JGE, BPF_REG_7, BPF_REG_8, 1),
230 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
233 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
238 .data64 = { UINT_MAX, }
241 .data64 = { INT_MAX, }
244 .data64 = { (UINT_MAX - 1) | 2ULL << 32, }
249 "jge32: min/max deduction",
252 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
253 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
254 BPF_JMP32_REG(BPF_JGE, BPF_REG_7, BPF_REG_8, 1),
256 BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, 0x7ffffff0, 1),
257 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
267 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
268 BPF_JMP32_IMM(BPF_JGT, BPF_REG_7, UINT_MAX - 1, 1),
270 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
273 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
278 .data64 = { UINT_MAX, }
281 .data64 = { UINT_MAX - 1, }
292 BPF_LD_IMM64(BPF_REG_8, (UINT_MAX - 1) | 1ULL << 32),
293 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
294 BPF_JMP32_REG(BPF_JGT, BPF_REG_7, BPF_REG_8, 1),
296 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
299 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
304 .data64 = { UINT_MAX, }
307 .data64 = { UINT_MAX - 1, }
310 .data64 = { (UINT_MAX - 1) | 2ULL << 32, }
315 "jgt32: min/max deduction",
318 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
319 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
320 BPF_JMP32_REG(BPF_JGT, BPF_REG_7, BPF_REG_8, 1),
322 BPF_JMP_IMM(BPF_JGT, BPF_REG_7, 0x7ffffff0, 1),
323 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
333 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
334 BPF_JMP32_IMM(BPF_JLE, BPF_REG_7, INT_MAX, 1),
336 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
339 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
344 .data64 = { INT_MAX - 1, }
347 .data64 = { UINT_MAX, }
350 .data64 = { INT_MAX, }
358 BPF_LD_IMM64(BPF_REG_8, (INT_MAX - 1) | 2ULL << 32),
359 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
360 BPF_JMP32_REG(BPF_JLE, BPF_REG_7, BPF_REG_8, 1),
362 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
365 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
370 .data64 = { INT_MAX | 1ULL << 32, }
373 .data64 = { INT_MAX - 2, }
376 .data64 = { UINT_MAX, }
381 "jle32: min/max deduction",
384 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
385 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
386 BPF_JMP32_REG(BPF_JLE, BPF_REG_7, BPF_REG_8, 1),
388 BPF_JMP32_IMM(BPF_JLE, BPF_REG_7, 0x7ffffff0, 1),
389 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
399 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
400 BPF_JMP32_IMM(BPF_JLT, BPF_REG_7, INT_MAX, 1),
402 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
405 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
410 .data64 = { INT_MAX, }
413 .data64 = { UINT_MAX, }
416 .data64 = { INT_MAX - 1, }
424 BPF_LD_IMM64(BPF_REG_8, INT_MAX | 2ULL << 32),
425 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
426 BPF_JMP32_REG(BPF_JLT, BPF_REG_7, BPF_REG_8, 1),
428 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
431 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
436 .data64 = { INT_MAX | 1ULL << 32, }
439 .data64 = { UINT_MAX, }
442 .data64 = { (INT_MAX - 1) | 3ULL << 32, }
447 "jlt32: min/max deduction",
450 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
451 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
452 BPF_JMP32_REG(BPF_JLT, BPF_REG_7, BPF_REG_8, 1),
454 BPF_JMP_IMM(BPF_JSLT, BPF_REG_7, 0x7ffffff0, 1),
455 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
465 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
466 BPF_JMP32_IMM(BPF_JSGE, BPF_REG_7, -1, 1),
468 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
471 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
490 BPF_LD_IMM64(BPF_REG_8, (__u32)-1 | 2ULL << 32),
491 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
492 BPF_JMP32_REG(BPF_JSGE, BPF_REG_7, BPF_REG_8, 1),
494 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
497 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
505 .data64 = { 0x7fffffff | 1ULL << 32, }
513 "jsge32: min/max deduction",
516 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
517 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
518 BPF_JMP32_REG(BPF_JSGE, BPF_REG_7, BPF_REG_8, 1),
520 BPF_JMP_IMM(BPF_JSGE, BPF_REG_7, 0x7ffffff0, 1),
521 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
531 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
532 BPF_JMP32_IMM(BPF_JSGT, BPF_REG_7, -1, 1),
534 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
537 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
542 .data64 = { (__u32)-2, }
556 BPF_LD_IMM64(BPF_REG_8, 0x7ffffffe | 1ULL << 32),
557 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
558 BPF_JMP32_REG(BPF_JSGT, BPF_REG_7, BPF_REG_8, 1),
560 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
563 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
568 .data64 = { 0x7ffffffe, }
571 .data64 = { 0x1ffffffffULL, }
574 .data64 = { 0x7fffffff, }
579 "jsgt32: min/max deduction",
582 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
583 BPF_LD_IMM64(BPF_REG_8, (__u32)(-2) | 1ULL << 32),
584 BPF_JMP32_REG(BPF_JSGT, BPF_REG_7, BPF_REG_8, 1),
586 BPF_JMP_IMM(BPF_JSGT, BPF_REG_7, -2, 1),
587 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
597 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
598 BPF_JMP32_IMM(BPF_JSLE, BPF_REG_7, -1, 1),
600 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
603 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
608 .data64 = { (__u32)-2, }
622 BPF_LD_IMM64(BPF_REG_8, 0x7ffffffe | 1ULL << 32),
623 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
624 BPF_JMP32_REG(BPF_JSLE, BPF_REG_7, BPF_REG_8, 1),
626 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
629 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
634 .data64 = { 0x7ffffffe, }
637 .data64 = { (__u32)-1, }
640 .data64 = { 0x7fffffff | 2ULL << 32, }
645 "jsle32: min/max deduction",
648 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
649 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
650 BPF_JMP32_REG(BPF_JSLE, BPF_REG_7, BPF_REG_8, 1),
652 BPF_JMP_IMM(BPF_JSLE, BPF_REG_7, 0x7ffffff0, 1),
653 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
663 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
664 BPF_JMP32_IMM(BPF_JSLT, BPF_REG_7, -1, 1),
666 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
669 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
674 .data64 = { (__u32)-2, }
688 BPF_LD_IMM64(BPF_REG_8, 0x7fffffff | 1ULL << 32),
689 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
690 BPF_JMP32_REG(BPF_JSLT, BPF_REG_7, BPF_REG_8, 1),
692 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
695 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
700 .data64 = { 0x7ffffffe, }
703 .data64 = { 0xffffffff, }
706 .data64 = { 0x7fffffff | 2ULL << 32, }
711 "jslt32: min/max deduction",
714 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
715 BPF_LD_IMM64(BPF_REG_8, (__u32)(-1) | 1ULL << 32),
716 BPF_JMP32_REG(BPF_JSLT, BPF_REG_7, BPF_REG_8, 1),
718 BPF_JMP32_IMM(BPF_JSLT, BPF_REG_7, -1, 1),
719 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),