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, }
30 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
36 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
37 BPF_LD_IMM64(BPF_REG_8, 0x8000000000000000),
38 BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1),
39 BPF_JMP_IMM(BPF_JA, 0, 0, 1),
42 BPF_LD_IMM64(BPF_REG_8, 0x8000000000000001),
43 BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1),
45 BPF_MOV64_IMM(BPF_REG_0, 2),
48 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
53 .data64 = { 1ULL << 63, }
59 .data64 = { 1ULL << 63 | 1, }
62 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
65 "jset32: min/max deduction",
68 BPF_MOV64_IMM(BPF_REG_0, 0),
69 BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, 0x10, 1),
71 BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, 0x10, 1),
72 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
81 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
82 BPF_JMP32_IMM(BPF_JEQ, BPF_REG_7, -1, 1),
84 BPF_MOV64_IMM(BPF_REG_0, 2),
87 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
98 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
104 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
105 BPF_LD_IMM64(BPF_REG_8, 0x7000000000000001),
106 BPF_JMP32_REG(BPF_JEQ, BPF_REG_7, BPF_REG_8, 1),
108 BPF_MOV64_IMM(BPF_REG_0, 2),
111 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
122 .data64 = { 1ULL << 63 | 1, }
125 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
128 "jeq32: min/max deduction",
131 BPF_MOV64_IMM(BPF_REG_0, 0),
132 BPF_JMP32_IMM(BPF_JEQ, BPF_REG_7, 0x10, 1),
134 BPF_JMP32_IMM(BPF_JSGE, BPF_REG_7, 0xf, 1),
135 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
144 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
145 BPF_JMP32_IMM(BPF_JNE, BPF_REG_7, -1, 1),
147 BPF_MOV64_IMM(BPF_REG_0, 2),
150 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
161 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
167 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
168 BPF_LD_IMM64(BPF_REG_8, 0x8000000000000001),
169 BPF_JMP32_REG(BPF_JNE, BPF_REG_7, BPF_REG_8, 1),
171 BPF_MOV64_IMM(BPF_REG_0, 2),
174 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
185 .data64 = { 1ULL << 63 | 2, }
188 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
191 "jne32: min/max deduction",
194 BPF_MOV64_IMM(BPF_REG_0, 0),
195 BPF_JMP32_IMM(BPF_JNE, BPF_REG_7, 0x10, 1),
196 BPF_JMP_IMM(BPF_JNE, BPF_REG_7, 0x10, 1),
198 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
207 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
208 BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, UINT_MAX - 1, 1),
210 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
213 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
218 .data64 = { UINT_MAX, }
221 .data64 = { UINT_MAX - 1, }
227 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
233 BPF_LD_IMM64(BPF_REG_8, UINT_MAX | 1ULL << 32),
234 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
235 BPF_JMP32_REG(BPF_JGE, BPF_REG_7, BPF_REG_8, 1),
237 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
240 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
245 .data64 = { UINT_MAX, }
248 .data64 = { INT_MAX, }
251 .data64 = { (UINT_MAX - 1) | 2ULL << 32, }
254 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
257 "jge32: min/max deduction",
260 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
261 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
262 BPF_JMP32_REG(BPF_JGE, BPF_REG_7, BPF_REG_8, 1),
264 BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, 0x7ffffff0, 1),
265 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
275 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
276 BPF_JMP32_IMM(BPF_JGT, BPF_REG_7, UINT_MAX - 1, 1),
278 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
281 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
286 .data64 = { UINT_MAX, }
289 .data64 = { UINT_MAX - 1, }
295 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
301 BPF_LD_IMM64(BPF_REG_8, (UINT_MAX - 1) | 1ULL << 32),
302 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
303 BPF_JMP32_REG(BPF_JGT, BPF_REG_7, BPF_REG_8, 1),
305 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
308 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
313 .data64 = { UINT_MAX, }
316 .data64 = { UINT_MAX - 1, }
319 .data64 = { (UINT_MAX - 1) | 2ULL << 32, }
322 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
325 "jgt32: min/max deduction",
328 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
329 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
330 BPF_JMP32_REG(BPF_JGT, BPF_REG_7, BPF_REG_8, 1),
332 BPF_JMP_IMM(BPF_JGT, BPF_REG_7, 0x7ffffff0, 1),
333 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
343 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
344 BPF_JMP32_IMM(BPF_JLE, BPF_REG_7, INT_MAX, 1),
346 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
349 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
354 .data64 = { INT_MAX - 1, }
357 .data64 = { UINT_MAX, }
360 .data64 = { INT_MAX, }
363 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
369 BPF_LD_IMM64(BPF_REG_8, (INT_MAX - 1) | 2ULL << 32),
370 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
371 BPF_JMP32_REG(BPF_JLE, BPF_REG_7, BPF_REG_8, 1),
373 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
376 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
381 .data64 = { INT_MAX | 1ULL << 32, }
384 .data64 = { INT_MAX - 2, }
387 .data64 = { UINT_MAX, }
390 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
393 "jle32: min/max deduction",
396 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
397 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
398 BPF_JMP32_REG(BPF_JLE, BPF_REG_7, BPF_REG_8, 1),
400 BPF_JMP32_IMM(BPF_JLE, BPF_REG_7, 0x7ffffff0, 1),
401 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
411 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
412 BPF_JMP32_IMM(BPF_JLT, BPF_REG_7, INT_MAX, 1),
414 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
417 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
422 .data64 = { INT_MAX, }
425 .data64 = { UINT_MAX, }
428 .data64 = { INT_MAX - 1, }
431 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
437 BPF_LD_IMM64(BPF_REG_8, INT_MAX | 2ULL << 32),
438 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
439 BPF_JMP32_REG(BPF_JLT, BPF_REG_7, BPF_REG_8, 1),
441 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
444 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
449 .data64 = { INT_MAX | 1ULL << 32, }
452 .data64 = { UINT_MAX, }
455 .data64 = { (INT_MAX - 1) | 3ULL << 32, }
458 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
461 "jlt32: min/max deduction",
464 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
465 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
466 BPF_JMP32_REG(BPF_JLT, BPF_REG_7, BPF_REG_8, 1),
468 BPF_JMP_IMM(BPF_JSLT, BPF_REG_7, 0x7ffffff0, 1),
469 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
479 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
480 BPF_JMP32_IMM(BPF_JSGE, BPF_REG_7, -1, 1),
482 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
485 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
499 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
505 BPF_LD_IMM64(BPF_REG_8, (__u32)-1 | 2ULL << 32),
506 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
507 BPF_JMP32_REG(BPF_JSGE, BPF_REG_7, BPF_REG_8, 1),
509 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
512 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
520 .data64 = { 0x7fffffff | 1ULL << 32, }
526 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
529 "jsge32: min/max deduction",
532 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
533 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
534 BPF_JMP32_REG(BPF_JSGE, BPF_REG_7, BPF_REG_8, 1),
536 BPF_JMP_IMM(BPF_JSGE, BPF_REG_7, 0x7ffffff0, 1),
537 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
547 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
548 BPF_JMP32_IMM(BPF_JSGT, BPF_REG_7, -1, 1),
550 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
553 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
558 .data64 = { (__u32)-2, }
567 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
573 BPF_LD_IMM64(BPF_REG_8, 0x7ffffffe | 1ULL << 32),
574 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
575 BPF_JMP32_REG(BPF_JSGT, BPF_REG_7, BPF_REG_8, 1),
577 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
580 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
585 .data64 = { 0x7ffffffe, }
588 .data64 = { 0x1ffffffffULL, }
591 .data64 = { 0x7fffffff, }
594 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
597 "jsgt32: min/max deduction",
600 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
601 BPF_LD_IMM64(BPF_REG_8, (__u32)(-2) | 1ULL << 32),
602 BPF_JMP32_REG(BPF_JSGT, BPF_REG_7, BPF_REG_8, 1),
604 BPF_JMP_IMM(BPF_JSGT, BPF_REG_7, -2, 1),
605 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
615 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
616 BPF_JMP32_IMM(BPF_JSLE, BPF_REG_7, -1, 1),
618 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
621 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
626 .data64 = { (__u32)-2, }
635 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
641 BPF_LD_IMM64(BPF_REG_8, 0x7ffffffe | 1ULL << 32),
642 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
643 BPF_JMP32_REG(BPF_JSLE, BPF_REG_7, BPF_REG_8, 1),
645 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
648 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
653 .data64 = { 0x7ffffffe, }
656 .data64 = { (__u32)-1, }
659 .data64 = { 0x7fffffff | 2ULL << 32, }
662 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
665 "jsle32: min/max deduction",
668 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
669 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
670 BPF_JMP32_REG(BPF_JSLE, BPF_REG_7, BPF_REG_8, 1),
672 BPF_JMP_IMM(BPF_JSLE, BPF_REG_7, 0x7ffffff0, 1),
673 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
683 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
684 BPF_JMP32_IMM(BPF_JSLT, BPF_REG_7, -1, 1),
686 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
689 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
694 .data64 = { (__u32)-2, }
703 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
709 BPF_LD_IMM64(BPF_REG_8, 0x7fffffff | 1ULL << 32),
710 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
711 BPF_JMP32_REG(BPF_JSLT, BPF_REG_7, BPF_REG_8, 1),
713 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
716 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
721 .data64 = { 0x7ffffffe, }
724 .data64 = { 0xffffffff, }
727 .data64 = { 0x7fffffff | 2ULL << 32, }
730 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
733 "jslt32: min/max deduction",
736 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
737 BPF_LD_IMM64(BPF_REG_8, (__u32)(-1) | 1ULL << 32),
738 BPF_JMP32_REG(BPF_JSLT, BPF_REG_7, BPF_REG_8, 1),
740 BPF_JMP32_IMM(BPF_JSLT, BPF_REG_7, -1, 1),
741 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),