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: ignores upper bits",
67 BPF_MOV64_IMM(BPF_REG_0, 0),
68 BPF_LD_IMM64(BPF_REG_7, 0x8000000000000000),
69 BPF_LD_IMM64(BPF_REG_8, 0x8000000000000000),
70 BPF_JMP_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1),
72 BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1),
73 BPF_MOV64_IMM(BPF_REG_0, 2),
80 "jset32: min/max deduction",
83 BPF_MOV64_IMM(BPF_REG_0, 0),
84 BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, 0x10, 1),
86 BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, 0x10, 1),
87 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
96 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
97 BPF_JMP32_IMM(BPF_JEQ, BPF_REG_7, -1, 1),
99 BPF_MOV64_IMM(BPF_REG_0, 2),
102 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
113 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
119 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
120 BPF_LD_IMM64(BPF_REG_8, 0x7000000000000001),
121 BPF_JMP32_REG(BPF_JEQ, BPF_REG_7, BPF_REG_8, 1),
123 BPF_MOV64_IMM(BPF_REG_0, 2),
126 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
137 .data64 = { 1ULL << 63 | 1, }
140 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
143 "jeq32: min/max deduction",
146 BPF_MOV64_IMM(BPF_REG_0, 0),
147 BPF_JMP32_IMM(BPF_JEQ, BPF_REG_7, 0x10, 1),
149 BPF_JMP32_IMM(BPF_JSGE, BPF_REG_7, 0xf, 1),
150 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
159 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
160 BPF_JMP32_IMM(BPF_JNE, BPF_REG_7, -1, 1),
162 BPF_MOV64_IMM(BPF_REG_0, 2),
165 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
176 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
182 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
183 BPF_LD_IMM64(BPF_REG_8, 0x8000000000000001),
184 BPF_JMP32_REG(BPF_JNE, BPF_REG_7, BPF_REG_8, 1),
186 BPF_MOV64_IMM(BPF_REG_0, 2),
189 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
200 .data64 = { 1ULL << 63 | 2, }
203 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
206 "jne32: min/max deduction",
209 BPF_MOV64_IMM(BPF_REG_0, 0),
210 BPF_JMP32_IMM(BPF_JNE, BPF_REG_7, 0x10, 1),
211 BPF_JMP_IMM(BPF_JNE, BPF_REG_7, 0x10, 1),
213 BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0),
222 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
223 BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, UINT_MAX - 1, 1),
225 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
228 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
233 .data64 = { UINT_MAX, }
236 .data64 = { UINT_MAX - 1, }
242 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
248 BPF_LD_IMM64(BPF_REG_8, UINT_MAX | 1ULL << 32),
249 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
250 BPF_JMP32_REG(BPF_JGE, BPF_REG_7, BPF_REG_8, 1),
252 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
255 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
260 .data64 = { UINT_MAX, }
263 .data64 = { INT_MAX, }
266 .data64 = { (UINT_MAX - 1) | 2ULL << 32, }
269 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
272 "jge32: min/max deduction",
275 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
276 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
277 BPF_JMP32_REG(BPF_JGE, BPF_REG_7, BPF_REG_8, 1),
279 BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, 0x7ffffff0, 1),
280 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
290 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
291 BPF_JMP32_IMM(BPF_JGT, BPF_REG_7, UINT_MAX - 1, 1),
293 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
296 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
301 .data64 = { UINT_MAX, }
304 .data64 = { UINT_MAX - 1, }
310 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
316 BPF_LD_IMM64(BPF_REG_8, (UINT_MAX - 1) | 1ULL << 32),
317 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
318 BPF_JMP32_REG(BPF_JGT, BPF_REG_7, BPF_REG_8, 1),
320 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
323 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
328 .data64 = { UINT_MAX, }
331 .data64 = { UINT_MAX - 1, }
334 .data64 = { (UINT_MAX - 1) | 2ULL << 32, }
337 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
340 "jgt32: min/max deduction",
343 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
344 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
345 BPF_JMP32_REG(BPF_JGT, BPF_REG_7, BPF_REG_8, 1),
347 BPF_JMP_IMM(BPF_JGT, BPF_REG_7, 0x7ffffff0, 1),
348 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
358 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
359 BPF_JMP32_IMM(BPF_JLE, BPF_REG_7, INT_MAX, 1),
361 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
364 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
369 .data64 = { INT_MAX - 1, }
372 .data64 = { UINT_MAX, }
375 .data64 = { INT_MAX, }
378 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
384 BPF_LD_IMM64(BPF_REG_8, (INT_MAX - 1) | 2ULL << 32),
385 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
386 BPF_JMP32_REG(BPF_JLE, BPF_REG_7, BPF_REG_8, 1),
388 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
391 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
396 .data64 = { INT_MAX | 1ULL << 32, }
399 .data64 = { INT_MAX - 2, }
402 .data64 = { UINT_MAX, }
405 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
408 "jle32: min/max deduction",
411 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
412 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
413 BPF_JMP32_REG(BPF_JLE, BPF_REG_7, BPF_REG_8, 1),
415 BPF_JMP32_IMM(BPF_JLE, BPF_REG_7, 0x7ffffff0, 1),
416 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
426 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
427 BPF_JMP32_IMM(BPF_JLT, BPF_REG_7, INT_MAX, 1),
429 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
432 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
437 .data64 = { INT_MAX, }
440 .data64 = { UINT_MAX, }
443 .data64 = { INT_MAX - 1, }
446 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
452 BPF_LD_IMM64(BPF_REG_8, INT_MAX | 2ULL << 32),
453 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
454 BPF_JMP32_REG(BPF_JLT, BPF_REG_7, BPF_REG_8, 1),
456 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
459 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
464 .data64 = { INT_MAX | 1ULL << 32, }
467 .data64 = { UINT_MAX, }
470 .data64 = { (INT_MAX - 1) | 3ULL << 32, }
473 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
476 "jlt32: min/max deduction",
479 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
480 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
481 BPF_JMP32_REG(BPF_JLT, BPF_REG_7, BPF_REG_8, 1),
483 BPF_JMP_IMM(BPF_JSLT, BPF_REG_7, 0x7ffffff0, 1),
484 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
494 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
495 BPF_JMP32_IMM(BPF_JSGE, BPF_REG_7, -1, 1),
497 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
500 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
514 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
520 BPF_LD_IMM64(BPF_REG_8, (__u32)-1 | 2ULL << 32),
521 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
522 BPF_JMP32_REG(BPF_JSGE, BPF_REG_7, BPF_REG_8, 1),
524 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
527 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
535 .data64 = { 0x7fffffff | 1ULL << 32, }
541 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
544 "jsge32: min/max deduction",
547 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
548 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
549 BPF_JMP32_REG(BPF_JSGE, BPF_REG_7, BPF_REG_8, 1),
551 BPF_JMP_IMM(BPF_JSGE, BPF_REG_7, 0x7ffffff0, 1),
552 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
562 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
563 BPF_JMP32_IMM(BPF_JSGT, BPF_REG_7, -1, 1),
565 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
568 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
573 .data64 = { (__u32)-2, }
582 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
588 BPF_LD_IMM64(BPF_REG_8, 0x7ffffffe | 1ULL << 32),
589 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
590 BPF_JMP32_REG(BPF_JSGT, BPF_REG_7, BPF_REG_8, 1),
592 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
595 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
600 .data64 = { 0x7ffffffe, }
603 .data64 = { 0x1ffffffffULL, }
606 .data64 = { 0x7fffffff, }
609 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
612 "jsgt32: min/max deduction",
615 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
616 BPF_LD_IMM64(BPF_REG_8, (__u32)(-2) | 1ULL << 32),
617 BPF_JMP32_REG(BPF_JSGT, BPF_REG_7, BPF_REG_8, 1),
619 BPF_JMP_IMM(BPF_JSGT, BPF_REG_7, -2, 1),
620 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
630 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
631 BPF_JMP32_IMM(BPF_JSLE, BPF_REG_7, -1, 1),
633 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
636 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
641 .data64 = { (__u32)-2, }
650 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
656 BPF_LD_IMM64(BPF_REG_8, 0x7ffffffe | 1ULL << 32),
657 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
658 BPF_JMP32_REG(BPF_JSLE, BPF_REG_7, BPF_REG_8, 1),
660 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
663 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
668 .data64 = { 0x7ffffffe, }
671 .data64 = { (__u32)-1, }
674 .data64 = { 0x7fffffff | 2ULL << 32, }
677 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
680 "jsle32: min/max deduction",
683 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
684 BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32),
685 BPF_JMP32_REG(BPF_JSLE, BPF_REG_7, BPF_REG_8, 1),
687 BPF_JMP_IMM(BPF_JSLE, BPF_REG_7, 0x7ffffff0, 1),
688 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
698 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
699 BPF_JMP32_IMM(BPF_JSLT, BPF_REG_7, -1, 1),
701 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
704 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
709 .data64 = { (__u32)-2, }
718 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
724 BPF_LD_IMM64(BPF_REG_8, 0x7fffffff | 1ULL << 32),
725 BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0),
726 BPF_JMP32_REG(BPF_JSLT, BPF_REG_7, BPF_REG_8, 1),
728 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
731 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
736 .data64 = { 0x7ffffffe, }
739 .data64 = { 0xffffffff, }
742 .data64 = { 0x7fffffff | 2ULL << 32, }
745 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
748 "jslt32: min/max deduction",
751 BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2),
752 BPF_LD_IMM64(BPF_REG_8, (__u32)(-1) | 1ULL << 32),
753 BPF_JMP32_REG(BPF_JSLT, BPF_REG_7, BPF_REG_8, 1),
755 BPF_JMP32_IMM(BPF_JSLT, BPF_REG_7, -1, 1),
756 BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0),
763 "jgt32: range bound deduction, reg op imm",
765 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
766 BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),
767 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
768 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
769 BPF_LD_MAP_FD(BPF_REG_1, 0),
770 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
771 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
772 BPF_MOV64_REG(BPF_REG_1, BPF_REG_8),
773 BPF_MOV64_REG(BPF_REG_8, BPF_REG_0),
774 BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid),
775 BPF_JMP32_IMM(BPF_JGT, BPF_REG_0, 1, 5),
776 BPF_MOV32_REG(BPF_REG_6, BPF_REG_0),
777 BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32),
778 BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32),
779 BPF_ALU64_REG(BPF_ADD, BPF_REG_8, BPF_REG_6),
780 BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0),
781 BPF_MOV32_IMM(BPF_REG_0, 0),
784 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
785 .fixup_map_hash_48b = { 4 },
787 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
790 "jgt32: range bound deduction, reg1 op reg2, reg1 unknown",
792 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
793 BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),
794 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
795 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
796 BPF_LD_MAP_FD(BPF_REG_1, 0),
797 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
798 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 10),
799 BPF_MOV64_REG(BPF_REG_1, BPF_REG_8),
800 BPF_MOV64_REG(BPF_REG_8, BPF_REG_0),
801 BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid),
802 BPF_MOV32_IMM(BPF_REG_2, 1),
803 BPF_JMP32_REG(BPF_JGT, BPF_REG_0, BPF_REG_2, 5),
804 BPF_MOV32_REG(BPF_REG_6, BPF_REG_0),
805 BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32),
806 BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32),
807 BPF_ALU64_REG(BPF_ADD, BPF_REG_8, BPF_REG_6),
808 BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0),
809 BPF_MOV32_IMM(BPF_REG_0, 0),
812 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
813 .fixup_map_hash_48b = { 4 },
815 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,
818 "jle32: range bound deduction, reg1 op reg2, reg2 unknown",
820 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
821 BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),
822 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
823 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
824 BPF_LD_MAP_FD(BPF_REG_1, 0),
825 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem),
826 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 10),
827 BPF_MOV64_REG(BPF_REG_1, BPF_REG_8),
828 BPF_MOV64_REG(BPF_REG_8, BPF_REG_0),
829 BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid),
830 BPF_MOV32_IMM(BPF_REG_2, 1),
831 BPF_JMP32_REG(BPF_JLE, BPF_REG_2, BPF_REG_0, 5),
832 BPF_MOV32_REG(BPF_REG_6, BPF_REG_0),
833 BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32),
834 BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32),
835 BPF_ALU64_REG(BPF_ADD, BPF_REG_8, BPF_REG_6),
836 BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0),
837 BPF_MOV32_IMM(BPF_REG_0, 0),
840 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
841 .fixup_map_hash_48b = { 4 },
843 .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS,