162306a36Sopenharmony_ci{ 262306a36Sopenharmony_ci "jset32: BPF_K", 362306a36Sopenharmony_ci .insns = { 462306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 562306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 662306a36Sopenharmony_ci /* reg, high bits shouldn't be tested */ 762306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, -2, 1), 862306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JA, 0, 0, 1), 962306a36Sopenharmony_ci BPF_EXIT_INSN(), 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, 1, 1), 1262306a36Sopenharmony_ci BPF_EXIT_INSN(), 1362306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 2), 1462306a36Sopenharmony_ci BPF_EXIT_INSN(), 1562306a36Sopenharmony_ci }, 1662306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 1762306a36Sopenharmony_ci .result = ACCEPT, 1862306a36Sopenharmony_ci .runs = 3, 1962306a36Sopenharmony_ci .retvals = { 2062306a36Sopenharmony_ci { .retval = 0, 2162306a36Sopenharmony_ci .data64 = { 1ULL << 63, } 2262306a36Sopenharmony_ci }, 2362306a36Sopenharmony_ci { .retval = 2, 2462306a36Sopenharmony_ci .data64 = { 1, } 2562306a36Sopenharmony_ci }, 2662306a36Sopenharmony_ci { .retval = 2, 2762306a36Sopenharmony_ci .data64 = { 1ULL << 63 | 1, } 2862306a36Sopenharmony_ci }, 2962306a36Sopenharmony_ci }, 3062306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 3162306a36Sopenharmony_ci}, 3262306a36Sopenharmony_ci{ 3362306a36Sopenharmony_ci "jset32: BPF_X", 3462306a36Sopenharmony_ci .insns = { 3562306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 3662306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 3762306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x8000000000000000), 3862306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1), 3962306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JA, 0, 0, 1), 4062306a36Sopenharmony_ci BPF_EXIT_INSN(), 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x8000000000000001), 4362306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1), 4462306a36Sopenharmony_ci BPF_EXIT_INSN(), 4562306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 2), 4662306a36Sopenharmony_ci BPF_EXIT_INSN(), 4762306a36Sopenharmony_ci }, 4862306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 4962306a36Sopenharmony_ci .result = ACCEPT, 5062306a36Sopenharmony_ci .runs = 3, 5162306a36Sopenharmony_ci .retvals = { 5262306a36Sopenharmony_ci { .retval = 0, 5362306a36Sopenharmony_ci .data64 = { 1ULL << 63, } 5462306a36Sopenharmony_ci }, 5562306a36Sopenharmony_ci { .retval = 2, 5662306a36Sopenharmony_ci .data64 = { 1, } 5762306a36Sopenharmony_ci }, 5862306a36Sopenharmony_ci { .retval = 2, 5962306a36Sopenharmony_ci .data64 = { 1ULL << 63 | 1, } 6062306a36Sopenharmony_ci }, 6162306a36Sopenharmony_ci }, 6262306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 6362306a36Sopenharmony_ci}, 6462306a36Sopenharmony_ci{ 6562306a36Sopenharmony_ci "jset32: ignores upper bits", 6662306a36Sopenharmony_ci .insns = { 6762306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 0), 6862306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_7, 0x8000000000000000), 6962306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x8000000000000000), 7062306a36Sopenharmony_ci BPF_JMP_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1), 7162306a36Sopenharmony_ci BPF_EXIT_INSN(), 7262306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSET, BPF_REG_7, BPF_REG_8, 1), 7362306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 2), 7462306a36Sopenharmony_ci BPF_EXIT_INSN(), 7562306a36Sopenharmony_ci }, 7662306a36Sopenharmony_ci .result = ACCEPT, 7762306a36Sopenharmony_ci .retval = 2, 7862306a36Sopenharmony_ci}, 7962306a36Sopenharmony_ci{ 8062306a36Sopenharmony_ci "jset32: min/max deduction", 8162306a36Sopenharmony_ci .insns = { 8262306a36Sopenharmony_ci BPF_RAND_UEXT_R7, 8362306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 0), 8462306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JSET, BPF_REG_7, 0x10, 1), 8562306a36Sopenharmony_ci BPF_EXIT_INSN(), 8662306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, 0x10, 1), 8762306a36Sopenharmony_ci BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0), 8862306a36Sopenharmony_ci BPF_EXIT_INSN(), 8962306a36Sopenharmony_ci }, 9062306a36Sopenharmony_ci .errstr_unpriv = "R9 !read_ok", 9162306a36Sopenharmony_ci .result_unpriv = REJECT, 9262306a36Sopenharmony_ci .result = ACCEPT, 9362306a36Sopenharmony_ci}, 9462306a36Sopenharmony_ci{ 9562306a36Sopenharmony_ci "jeq32: BPF_K", 9662306a36Sopenharmony_ci .insns = { 9762306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 9862306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 9962306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JEQ, BPF_REG_7, -1, 1), 10062306a36Sopenharmony_ci BPF_EXIT_INSN(), 10162306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 2), 10262306a36Sopenharmony_ci BPF_EXIT_INSN(), 10362306a36Sopenharmony_ci }, 10462306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 10562306a36Sopenharmony_ci .result = ACCEPT, 10662306a36Sopenharmony_ci .runs = 2, 10762306a36Sopenharmony_ci .retvals = { 10862306a36Sopenharmony_ci { .retval = 0, 10962306a36Sopenharmony_ci .data64 = { -2, } 11062306a36Sopenharmony_ci }, 11162306a36Sopenharmony_ci { .retval = 2, 11262306a36Sopenharmony_ci .data64 = { -1, } 11362306a36Sopenharmony_ci }, 11462306a36Sopenharmony_ci }, 11562306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 11662306a36Sopenharmony_ci}, 11762306a36Sopenharmony_ci{ 11862306a36Sopenharmony_ci "jeq32: BPF_X", 11962306a36Sopenharmony_ci .insns = { 12062306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 12162306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 12262306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x7000000000000001), 12362306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JEQ, BPF_REG_7, BPF_REG_8, 1), 12462306a36Sopenharmony_ci BPF_EXIT_INSN(), 12562306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 2), 12662306a36Sopenharmony_ci BPF_EXIT_INSN(), 12762306a36Sopenharmony_ci }, 12862306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 12962306a36Sopenharmony_ci .result = ACCEPT, 13062306a36Sopenharmony_ci .runs = 3, 13162306a36Sopenharmony_ci .retvals = { 13262306a36Sopenharmony_ci { .retval = 0, 13362306a36Sopenharmony_ci .data64 = { 2, } 13462306a36Sopenharmony_ci }, 13562306a36Sopenharmony_ci { .retval = 2, 13662306a36Sopenharmony_ci .data64 = { 1, } 13762306a36Sopenharmony_ci }, 13862306a36Sopenharmony_ci { .retval = 2, 13962306a36Sopenharmony_ci .data64 = { 1ULL << 63 | 1, } 14062306a36Sopenharmony_ci }, 14162306a36Sopenharmony_ci }, 14262306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 14362306a36Sopenharmony_ci}, 14462306a36Sopenharmony_ci{ 14562306a36Sopenharmony_ci "jeq32: min/max deduction", 14662306a36Sopenharmony_ci .insns = { 14762306a36Sopenharmony_ci BPF_RAND_UEXT_R7, 14862306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 0), 14962306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JEQ, BPF_REG_7, 0x10, 1), 15062306a36Sopenharmony_ci BPF_EXIT_INSN(), 15162306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JSGE, BPF_REG_7, 0xf, 1), 15262306a36Sopenharmony_ci BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0), 15362306a36Sopenharmony_ci BPF_EXIT_INSN(), 15462306a36Sopenharmony_ci }, 15562306a36Sopenharmony_ci .errstr_unpriv = "R9 !read_ok", 15662306a36Sopenharmony_ci .result_unpriv = REJECT, 15762306a36Sopenharmony_ci .result = ACCEPT, 15862306a36Sopenharmony_ci}, 15962306a36Sopenharmony_ci{ 16062306a36Sopenharmony_ci "jne32: BPF_K", 16162306a36Sopenharmony_ci .insns = { 16262306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 16362306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 16462306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JNE, BPF_REG_7, -1, 1), 16562306a36Sopenharmony_ci BPF_EXIT_INSN(), 16662306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 2), 16762306a36Sopenharmony_ci BPF_EXIT_INSN(), 16862306a36Sopenharmony_ci }, 16962306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 17062306a36Sopenharmony_ci .result = ACCEPT, 17162306a36Sopenharmony_ci .runs = 2, 17262306a36Sopenharmony_ci .retvals = { 17362306a36Sopenharmony_ci { .retval = 2, 17462306a36Sopenharmony_ci .data64 = { 1, } 17562306a36Sopenharmony_ci }, 17662306a36Sopenharmony_ci { .retval = 0, 17762306a36Sopenharmony_ci .data64 = { -1, } 17862306a36Sopenharmony_ci }, 17962306a36Sopenharmony_ci }, 18062306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 18162306a36Sopenharmony_ci}, 18262306a36Sopenharmony_ci{ 18362306a36Sopenharmony_ci "jne32: BPF_X", 18462306a36Sopenharmony_ci .insns = { 18562306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 18662306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 18762306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x8000000000000001), 18862306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JNE, BPF_REG_7, BPF_REG_8, 1), 18962306a36Sopenharmony_ci BPF_EXIT_INSN(), 19062306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 2), 19162306a36Sopenharmony_ci BPF_EXIT_INSN(), 19262306a36Sopenharmony_ci }, 19362306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 19462306a36Sopenharmony_ci .result = ACCEPT, 19562306a36Sopenharmony_ci .runs = 3, 19662306a36Sopenharmony_ci .retvals = { 19762306a36Sopenharmony_ci { .retval = 0, 19862306a36Sopenharmony_ci .data64 = { 1, } 19962306a36Sopenharmony_ci }, 20062306a36Sopenharmony_ci { .retval = 2, 20162306a36Sopenharmony_ci .data64 = { 2, } 20262306a36Sopenharmony_ci }, 20362306a36Sopenharmony_ci { .retval = 2, 20462306a36Sopenharmony_ci .data64 = { 1ULL << 63 | 2, } 20562306a36Sopenharmony_ci }, 20662306a36Sopenharmony_ci }, 20762306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 20862306a36Sopenharmony_ci}, 20962306a36Sopenharmony_ci{ 21062306a36Sopenharmony_ci "jne32: min/max deduction", 21162306a36Sopenharmony_ci .insns = { 21262306a36Sopenharmony_ci BPF_RAND_UEXT_R7, 21362306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 0), 21462306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JNE, BPF_REG_7, 0x10, 1), 21562306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JNE, BPF_REG_7, 0x10, 1), 21662306a36Sopenharmony_ci BPF_EXIT_INSN(), 21762306a36Sopenharmony_ci BPF_LDX_MEM(BPF_B, BPF_REG_8, BPF_REG_9, 0), 21862306a36Sopenharmony_ci BPF_EXIT_INSN(), 21962306a36Sopenharmony_ci }, 22062306a36Sopenharmony_ci .errstr_unpriv = "R9 !read_ok", 22162306a36Sopenharmony_ci .result_unpriv = REJECT, 22262306a36Sopenharmony_ci .result = ACCEPT, 22362306a36Sopenharmony_ci}, 22462306a36Sopenharmony_ci{ 22562306a36Sopenharmony_ci "jge32: BPF_K", 22662306a36Sopenharmony_ci .insns = { 22762306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 22862306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 22962306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, UINT_MAX - 1, 1), 23062306a36Sopenharmony_ci BPF_EXIT_INSN(), 23162306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 23262306a36Sopenharmony_ci BPF_EXIT_INSN(), 23362306a36Sopenharmony_ci }, 23462306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 23562306a36Sopenharmony_ci .result = ACCEPT, 23662306a36Sopenharmony_ci .runs = 3, 23762306a36Sopenharmony_ci .retvals = { 23862306a36Sopenharmony_ci { .retval = 2, 23962306a36Sopenharmony_ci .data64 = { UINT_MAX, } 24062306a36Sopenharmony_ci }, 24162306a36Sopenharmony_ci { .retval = 2, 24262306a36Sopenharmony_ci .data64 = { UINT_MAX - 1, } 24362306a36Sopenharmony_ci }, 24462306a36Sopenharmony_ci { .retval = 0, 24562306a36Sopenharmony_ci .data64 = { 0, } 24662306a36Sopenharmony_ci }, 24762306a36Sopenharmony_ci }, 24862306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 24962306a36Sopenharmony_ci}, 25062306a36Sopenharmony_ci{ 25162306a36Sopenharmony_ci "jge32: BPF_X", 25262306a36Sopenharmony_ci .insns = { 25362306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 25462306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, UINT_MAX | 1ULL << 32), 25562306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 25662306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JGE, BPF_REG_7, BPF_REG_8, 1), 25762306a36Sopenharmony_ci BPF_EXIT_INSN(), 25862306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 25962306a36Sopenharmony_ci BPF_EXIT_INSN(), 26062306a36Sopenharmony_ci }, 26162306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 26262306a36Sopenharmony_ci .result = ACCEPT, 26362306a36Sopenharmony_ci .runs = 3, 26462306a36Sopenharmony_ci .retvals = { 26562306a36Sopenharmony_ci { .retval = 2, 26662306a36Sopenharmony_ci .data64 = { UINT_MAX, } 26762306a36Sopenharmony_ci }, 26862306a36Sopenharmony_ci { .retval = 0, 26962306a36Sopenharmony_ci .data64 = { INT_MAX, } 27062306a36Sopenharmony_ci }, 27162306a36Sopenharmony_ci { .retval = 0, 27262306a36Sopenharmony_ci .data64 = { (UINT_MAX - 1) | 2ULL << 32, } 27362306a36Sopenharmony_ci }, 27462306a36Sopenharmony_ci }, 27562306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 27662306a36Sopenharmony_ci}, 27762306a36Sopenharmony_ci{ 27862306a36Sopenharmony_ci "jge32: min/max deduction", 27962306a36Sopenharmony_ci .insns = { 28062306a36Sopenharmony_ci BPF_RAND_UEXT_R7, 28162306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 28262306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32), 28362306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JGE, BPF_REG_7, BPF_REG_8, 1), 28462306a36Sopenharmony_ci BPF_EXIT_INSN(), 28562306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JGE, BPF_REG_7, 0x7ffffff0, 1), 28662306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0), 28762306a36Sopenharmony_ci BPF_EXIT_INSN(), 28862306a36Sopenharmony_ci }, 28962306a36Sopenharmony_ci .errstr_unpriv = "R0 invalid mem access 'scalar'", 29062306a36Sopenharmony_ci .result_unpriv = REJECT, 29162306a36Sopenharmony_ci .result = ACCEPT, 29262306a36Sopenharmony_ci .retval = 2, 29362306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 29462306a36Sopenharmony_ci}, 29562306a36Sopenharmony_ci{ 29662306a36Sopenharmony_ci "jgt32: BPF_K", 29762306a36Sopenharmony_ci .insns = { 29862306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 29962306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 30062306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JGT, BPF_REG_7, UINT_MAX - 1, 1), 30162306a36Sopenharmony_ci BPF_EXIT_INSN(), 30262306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 30362306a36Sopenharmony_ci BPF_EXIT_INSN(), 30462306a36Sopenharmony_ci }, 30562306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 30662306a36Sopenharmony_ci .result = ACCEPT, 30762306a36Sopenharmony_ci .runs = 3, 30862306a36Sopenharmony_ci .retvals = { 30962306a36Sopenharmony_ci { .retval = 2, 31062306a36Sopenharmony_ci .data64 = { UINT_MAX, } 31162306a36Sopenharmony_ci }, 31262306a36Sopenharmony_ci { .retval = 0, 31362306a36Sopenharmony_ci .data64 = { UINT_MAX - 1, } 31462306a36Sopenharmony_ci }, 31562306a36Sopenharmony_ci { .retval = 0, 31662306a36Sopenharmony_ci .data64 = { 0, } 31762306a36Sopenharmony_ci }, 31862306a36Sopenharmony_ci }, 31962306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 32062306a36Sopenharmony_ci}, 32162306a36Sopenharmony_ci{ 32262306a36Sopenharmony_ci "jgt32: BPF_X", 32362306a36Sopenharmony_ci .insns = { 32462306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 32562306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, (UINT_MAX - 1) | 1ULL << 32), 32662306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 32762306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JGT, BPF_REG_7, BPF_REG_8, 1), 32862306a36Sopenharmony_ci BPF_EXIT_INSN(), 32962306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 33062306a36Sopenharmony_ci BPF_EXIT_INSN(), 33162306a36Sopenharmony_ci }, 33262306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 33362306a36Sopenharmony_ci .result = ACCEPT, 33462306a36Sopenharmony_ci .runs = 3, 33562306a36Sopenharmony_ci .retvals = { 33662306a36Sopenharmony_ci { .retval = 2, 33762306a36Sopenharmony_ci .data64 = { UINT_MAX, } 33862306a36Sopenharmony_ci }, 33962306a36Sopenharmony_ci { .retval = 0, 34062306a36Sopenharmony_ci .data64 = { UINT_MAX - 1, } 34162306a36Sopenharmony_ci }, 34262306a36Sopenharmony_ci { .retval = 0, 34362306a36Sopenharmony_ci .data64 = { (UINT_MAX - 1) | 2ULL << 32, } 34462306a36Sopenharmony_ci }, 34562306a36Sopenharmony_ci }, 34662306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 34762306a36Sopenharmony_ci}, 34862306a36Sopenharmony_ci{ 34962306a36Sopenharmony_ci "jgt32: min/max deduction", 35062306a36Sopenharmony_ci .insns = { 35162306a36Sopenharmony_ci BPF_RAND_UEXT_R7, 35262306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 35362306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32), 35462306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JGT, BPF_REG_7, BPF_REG_8, 1), 35562306a36Sopenharmony_ci BPF_EXIT_INSN(), 35662306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JGT, BPF_REG_7, 0x7ffffff0, 1), 35762306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0), 35862306a36Sopenharmony_ci BPF_EXIT_INSN(), 35962306a36Sopenharmony_ci }, 36062306a36Sopenharmony_ci .errstr_unpriv = "R0 invalid mem access 'scalar'", 36162306a36Sopenharmony_ci .result_unpriv = REJECT, 36262306a36Sopenharmony_ci .result = ACCEPT, 36362306a36Sopenharmony_ci .retval = 2, 36462306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 36562306a36Sopenharmony_ci}, 36662306a36Sopenharmony_ci{ 36762306a36Sopenharmony_ci "jle32: BPF_K", 36862306a36Sopenharmony_ci .insns = { 36962306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 37062306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 37162306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JLE, BPF_REG_7, INT_MAX, 1), 37262306a36Sopenharmony_ci BPF_EXIT_INSN(), 37362306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 37462306a36Sopenharmony_ci BPF_EXIT_INSN(), 37562306a36Sopenharmony_ci }, 37662306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 37762306a36Sopenharmony_ci .result = ACCEPT, 37862306a36Sopenharmony_ci .runs = 3, 37962306a36Sopenharmony_ci .retvals = { 38062306a36Sopenharmony_ci { .retval = 2, 38162306a36Sopenharmony_ci .data64 = { INT_MAX - 1, } 38262306a36Sopenharmony_ci }, 38362306a36Sopenharmony_ci { .retval = 0, 38462306a36Sopenharmony_ci .data64 = { UINT_MAX, } 38562306a36Sopenharmony_ci }, 38662306a36Sopenharmony_ci { .retval = 2, 38762306a36Sopenharmony_ci .data64 = { INT_MAX, } 38862306a36Sopenharmony_ci }, 38962306a36Sopenharmony_ci }, 39062306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 39162306a36Sopenharmony_ci}, 39262306a36Sopenharmony_ci{ 39362306a36Sopenharmony_ci "jle32: BPF_X", 39462306a36Sopenharmony_ci .insns = { 39562306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 39662306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, (INT_MAX - 1) | 2ULL << 32), 39762306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 39862306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JLE, BPF_REG_7, BPF_REG_8, 1), 39962306a36Sopenharmony_ci BPF_EXIT_INSN(), 40062306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 40162306a36Sopenharmony_ci BPF_EXIT_INSN(), 40262306a36Sopenharmony_ci }, 40362306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 40462306a36Sopenharmony_ci .result = ACCEPT, 40562306a36Sopenharmony_ci .runs = 3, 40662306a36Sopenharmony_ci .retvals = { 40762306a36Sopenharmony_ci { .retval = 0, 40862306a36Sopenharmony_ci .data64 = { INT_MAX | 1ULL << 32, } 40962306a36Sopenharmony_ci }, 41062306a36Sopenharmony_ci { .retval = 2, 41162306a36Sopenharmony_ci .data64 = { INT_MAX - 2, } 41262306a36Sopenharmony_ci }, 41362306a36Sopenharmony_ci { .retval = 0, 41462306a36Sopenharmony_ci .data64 = { UINT_MAX, } 41562306a36Sopenharmony_ci }, 41662306a36Sopenharmony_ci }, 41762306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 41862306a36Sopenharmony_ci}, 41962306a36Sopenharmony_ci{ 42062306a36Sopenharmony_ci "jle32: min/max deduction", 42162306a36Sopenharmony_ci .insns = { 42262306a36Sopenharmony_ci BPF_RAND_UEXT_R7, 42362306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 42462306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32), 42562306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JLE, BPF_REG_7, BPF_REG_8, 1), 42662306a36Sopenharmony_ci BPF_EXIT_INSN(), 42762306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JLE, BPF_REG_7, 0x7ffffff0, 1), 42862306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0), 42962306a36Sopenharmony_ci BPF_EXIT_INSN(), 43062306a36Sopenharmony_ci }, 43162306a36Sopenharmony_ci .errstr_unpriv = "R0 invalid mem access 'scalar'", 43262306a36Sopenharmony_ci .result_unpriv = REJECT, 43362306a36Sopenharmony_ci .result = ACCEPT, 43462306a36Sopenharmony_ci .retval = 2, 43562306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 43662306a36Sopenharmony_ci}, 43762306a36Sopenharmony_ci{ 43862306a36Sopenharmony_ci "jlt32: BPF_K", 43962306a36Sopenharmony_ci .insns = { 44062306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 44162306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 44262306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JLT, BPF_REG_7, INT_MAX, 1), 44362306a36Sopenharmony_ci BPF_EXIT_INSN(), 44462306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 44562306a36Sopenharmony_ci BPF_EXIT_INSN(), 44662306a36Sopenharmony_ci }, 44762306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 44862306a36Sopenharmony_ci .result = ACCEPT, 44962306a36Sopenharmony_ci .runs = 3, 45062306a36Sopenharmony_ci .retvals = { 45162306a36Sopenharmony_ci { .retval = 0, 45262306a36Sopenharmony_ci .data64 = { INT_MAX, } 45362306a36Sopenharmony_ci }, 45462306a36Sopenharmony_ci { .retval = 0, 45562306a36Sopenharmony_ci .data64 = { UINT_MAX, } 45662306a36Sopenharmony_ci }, 45762306a36Sopenharmony_ci { .retval = 2, 45862306a36Sopenharmony_ci .data64 = { INT_MAX - 1, } 45962306a36Sopenharmony_ci }, 46062306a36Sopenharmony_ci }, 46162306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 46262306a36Sopenharmony_ci}, 46362306a36Sopenharmony_ci{ 46462306a36Sopenharmony_ci "jlt32: BPF_X", 46562306a36Sopenharmony_ci .insns = { 46662306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 46762306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, INT_MAX | 2ULL << 32), 46862306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 46962306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JLT, BPF_REG_7, BPF_REG_8, 1), 47062306a36Sopenharmony_ci BPF_EXIT_INSN(), 47162306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 47262306a36Sopenharmony_ci BPF_EXIT_INSN(), 47362306a36Sopenharmony_ci }, 47462306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 47562306a36Sopenharmony_ci .result = ACCEPT, 47662306a36Sopenharmony_ci .runs = 3, 47762306a36Sopenharmony_ci .retvals = { 47862306a36Sopenharmony_ci { .retval = 0, 47962306a36Sopenharmony_ci .data64 = { INT_MAX | 1ULL << 32, } 48062306a36Sopenharmony_ci }, 48162306a36Sopenharmony_ci { .retval = 0, 48262306a36Sopenharmony_ci .data64 = { UINT_MAX, } 48362306a36Sopenharmony_ci }, 48462306a36Sopenharmony_ci { .retval = 2, 48562306a36Sopenharmony_ci .data64 = { (INT_MAX - 1) | 3ULL << 32, } 48662306a36Sopenharmony_ci }, 48762306a36Sopenharmony_ci }, 48862306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 48962306a36Sopenharmony_ci}, 49062306a36Sopenharmony_ci{ 49162306a36Sopenharmony_ci "jlt32: min/max deduction", 49262306a36Sopenharmony_ci .insns = { 49362306a36Sopenharmony_ci BPF_RAND_UEXT_R7, 49462306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 49562306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32), 49662306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JLT, BPF_REG_7, BPF_REG_8, 1), 49762306a36Sopenharmony_ci BPF_EXIT_INSN(), 49862306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JSLT, BPF_REG_7, 0x7ffffff0, 1), 49962306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0), 50062306a36Sopenharmony_ci BPF_EXIT_INSN(), 50162306a36Sopenharmony_ci }, 50262306a36Sopenharmony_ci .errstr_unpriv = "R0 invalid mem access 'scalar'", 50362306a36Sopenharmony_ci .result_unpriv = REJECT, 50462306a36Sopenharmony_ci .result = ACCEPT, 50562306a36Sopenharmony_ci .retval = 2, 50662306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 50762306a36Sopenharmony_ci}, 50862306a36Sopenharmony_ci{ 50962306a36Sopenharmony_ci "jsge32: BPF_K", 51062306a36Sopenharmony_ci .insns = { 51162306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 51262306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 51362306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JSGE, BPF_REG_7, -1, 1), 51462306a36Sopenharmony_ci BPF_EXIT_INSN(), 51562306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 51662306a36Sopenharmony_ci BPF_EXIT_INSN(), 51762306a36Sopenharmony_ci }, 51862306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 51962306a36Sopenharmony_ci .result = ACCEPT, 52062306a36Sopenharmony_ci .runs = 3, 52162306a36Sopenharmony_ci .retvals = { 52262306a36Sopenharmony_ci { .retval = 2, 52362306a36Sopenharmony_ci .data64 = { 0, } 52462306a36Sopenharmony_ci }, 52562306a36Sopenharmony_ci { .retval = 2, 52662306a36Sopenharmony_ci .data64 = { -1, } 52762306a36Sopenharmony_ci }, 52862306a36Sopenharmony_ci { .retval = 0, 52962306a36Sopenharmony_ci .data64 = { -2, } 53062306a36Sopenharmony_ci }, 53162306a36Sopenharmony_ci }, 53262306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 53362306a36Sopenharmony_ci}, 53462306a36Sopenharmony_ci{ 53562306a36Sopenharmony_ci "jsge32: BPF_X", 53662306a36Sopenharmony_ci .insns = { 53762306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 53862306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, (__u32)-1 | 2ULL << 32), 53962306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 54062306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSGE, BPF_REG_7, BPF_REG_8, 1), 54162306a36Sopenharmony_ci BPF_EXIT_INSN(), 54262306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 54362306a36Sopenharmony_ci BPF_EXIT_INSN(), 54462306a36Sopenharmony_ci }, 54562306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 54662306a36Sopenharmony_ci .result = ACCEPT, 54762306a36Sopenharmony_ci .runs = 3, 54862306a36Sopenharmony_ci .retvals = { 54962306a36Sopenharmony_ci { .retval = 2, 55062306a36Sopenharmony_ci .data64 = { -1, } 55162306a36Sopenharmony_ci }, 55262306a36Sopenharmony_ci { .retval = 2, 55362306a36Sopenharmony_ci .data64 = { 0x7fffffff | 1ULL << 32, } 55462306a36Sopenharmony_ci }, 55562306a36Sopenharmony_ci { .retval = 0, 55662306a36Sopenharmony_ci .data64 = { -2, } 55762306a36Sopenharmony_ci }, 55862306a36Sopenharmony_ci }, 55962306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 56062306a36Sopenharmony_ci}, 56162306a36Sopenharmony_ci{ 56262306a36Sopenharmony_ci "jsge32: min/max deduction", 56362306a36Sopenharmony_ci .insns = { 56462306a36Sopenharmony_ci BPF_RAND_UEXT_R7, 56562306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 56662306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32), 56762306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSGE, BPF_REG_7, BPF_REG_8, 1), 56862306a36Sopenharmony_ci BPF_EXIT_INSN(), 56962306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JSGE, BPF_REG_7, 0x7ffffff0, 1), 57062306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0), 57162306a36Sopenharmony_ci BPF_EXIT_INSN(), 57262306a36Sopenharmony_ci }, 57362306a36Sopenharmony_ci .errstr_unpriv = "R0 invalid mem access 'scalar'", 57462306a36Sopenharmony_ci .result_unpriv = REJECT, 57562306a36Sopenharmony_ci .result = ACCEPT, 57662306a36Sopenharmony_ci .retval = 2, 57762306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 57862306a36Sopenharmony_ci}, 57962306a36Sopenharmony_ci{ 58062306a36Sopenharmony_ci "jsgt32: BPF_K", 58162306a36Sopenharmony_ci .insns = { 58262306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 58362306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 58462306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JSGT, BPF_REG_7, -1, 1), 58562306a36Sopenharmony_ci BPF_EXIT_INSN(), 58662306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 58762306a36Sopenharmony_ci BPF_EXIT_INSN(), 58862306a36Sopenharmony_ci }, 58962306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 59062306a36Sopenharmony_ci .result = ACCEPT, 59162306a36Sopenharmony_ci .runs = 3, 59262306a36Sopenharmony_ci .retvals = { 59362306a36Sopenharmony_ci { .retval = 0, 59462306a36Sopenharmony_ci .data64 = { (__u32)-2, } 59562306a36Sopenharmony_ci }, 59662306a36Sopenharmony_ci { .retval = 0, 59762306a36Sopenharmony_ci .data64 = { -1, } 59862306a36Sopenharmony_ci }, 59962306a36Sopenharmony_ci { .retval = 2, 60062306a36Sopenharmony_ci .data64 = { 1, } 60162306a36Sopenharmony_ci }, 60262306a36Sopenharmony_ci }, 60362306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 60462306a36Sopenharmony_ci}, 60562306a36Sopenharmony_ci{ 60662306a36Sopenharmony_ci "jsgt32: BPF_X", 60762306a36Sopenharmony_ci .insns = { 60862306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 60962306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x7ffffffe | 1ULL << 32), 61062306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 61162306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSGT, BPF_REG_7, BPF_REG_8, 1), 61262306a36Sopenharmony_ci BPF_EXIT_INSN(), 61362306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 61462306a36Sopenharmony_ci BPF_EXIT_INSN(), 61562306a36Sopenharmony_ci }, 61662306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 61762306a36Sopenharmony_ci .result = ACCEPT, 61862306a36Sopenharmony_ci .runs = 3, 61962306a36Sopenharmony_ci .retvals = { 62062306a36Sopenharmony_ci { .retval = 0, 62162306a36Sopenharmony_ci .data64 = { 0x7ffffffe, } 62262306a36Sopenharmony_ci }, 62362306a36Sopenharmony_ci { .retval = 0, 62462306a36Sopenharmony_ci .data64 = { 0x1ffffffffULL, } 62562306a36Sopenharmony_ci }, 62662306a36Sopenharmony_ci { .retval = 2, 62762306a36Sopenharmony_ci .data64 = { 0x7fffffff, } 62862306a36Sopenharmony_ci }, 62962306a36Sopenharmony_ci }, 63062306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 63162306a36Sopenharmony_ci}, 63262306a36Sopenharmony_ci{ 63362306a36Sopenharmony_ci "jsgt32: min/max deduction", 63462306a36Sopenharmony_ci .insns = { 63562306a36Sopenharmony_ci BPF_RAND_SEXT_R7, 63662306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 63762306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, (__u32)(-2) | 1ULL << 32), 63862306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSGT, BPF_REG_7, BPF_REG_8, 1), 63962306a36Sopenharmony_ci BPF_EXIT_INSN(), 64062306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JSGT, BPF_REG_7, -2, 1), 64162306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0), 64262306a36Sopenharmony_ci BPF_EXIT_INSN(), 64362306a36Sopenharmony_ci }, 64462306a36Sopenharmony_ci .errstr_unpriv = "R0 invalid mem access 'scalar'", 64562306a36Sopenharmony_ci .result_unpriv = REJECT, 64662306a36Sopenharmony_ci .result = ACCEPT, 64762306a36Sopenharmony_ci .retval = 2, 64862306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 64962306a36Sopenharmony_ci}, 65062306a36Sopenharmony_ci{ 65162306a36Sopenharmony_ci "jsle32: BPF_K", 65262306a36Sopenharmony_ci .insns = { 65362306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 65462306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 65562306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JSLE, BPF_REG_7, -1, 1), 65662306a36Sopenharmony_ci BPF_EXIT_INSN(), 65762306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 65862306a36Sopenharmony_ci BPF_EXIT_INSN(), 65962306a36Sopenharmony_ci }, 66062306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 66162306a36Sopenharmony_ci .result = ACCEPT, 66262306a36Sopenharmony_ci .runs = 3, 66362306a36Sopenharmony_ci .retvals = { 66462306a36Sopenharmony_ci { .retval = 2, 66562306a36Sopenharmony_ci .data64 = { (__u32)-2, } 66662306a36Sopenharmony_ci }, 66762306a36Sopenharmony_ci { .retval = 2, 66862306a36Sopenharmony_ci .data64 = { -1, } 66962306a36Sopenharmony_ci }, 67062306a36Sopenharmony_ci { .retval = 0, 67162306a36Sopenharmony_ci .data64 = { 1, } 67262306a36Sopenharmony_ci }, 67362306a36Sopenharmony_ci }, 67462306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 67562306a36Sopenharmony_ci}, 67662306a36Sopenharmony_ci{ 67762306a36Sopenharmony_ci "jsle32: BPF_X", 67862306a36Sopenharmony_ci .insns = { 67962306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 68062306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x7ffffffe | 1ULL << 32), 68162306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 68262306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSLE, BPF_REG_7, BPF_REG_8, 1), 68362306a36Sopenharmony_ci BPF_EXIT_INSN(), 68462306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 68562306a36Sopenharmony_ci BPF_EXIT_INSN(), 68662306a36Sopenharmony_ci }, 68762306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 68862306a36Sopenharmony_ci .result = ACCEPT, 68962306a36Sopenharmony_ci .runs = 3, 69062306a36Sopenharmony_ci .retvals = { 69162306a36Sopenharmony_ci { .retval = 2, 69262306a36Sopenharmony_ci .data64 = { 0x7ffffffe, } 69362306a36Sopenharmony_ci }, 69462306a36Sopenharmony_ci { .retval = 2, 69562306a36Sopenharmony_ci .data64 = { (__u32)-1, } 69662306a36Sopenharmony_ci }, 69762306a36Sopenharmony_ci { .retval = 0, 69862306a36Sopenharmony_ci .data64 = { 0x7fffffff | 2ULL << 32, } 69962306a36Sopenharmony_ci }, 70062306a36Sopenharmony_ci }, 70162306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 70262306a36Sopenharmony_ci}, 70362306a36Sopenharmony_ci{ 70462306a36Sopenharmony_ci "jsle32: min/max deduction", 70562306a36Sopenharmony_ci .insns = { 70662306a36Sopenharmony_ci BPF_RAND_UEXT_R7, 70762306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 70862306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x7ffffff0 | 1ULL << 32), 70962306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSLE, BPF_REG_7, BPF_REG_8, 1), 71062306a36Sopenharmony_ci BPF_EXIT_INSN(), 71162306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JSLE, BPF_REG_7, 0x7ffffff0, 1), 71262306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0), 71362306a36Sopenharmony_ci BPF_EXIT_INSN(), 71462306a36Sopenharmony_ci }, 71562306a36Sopenharmony_ci .errstr_unpriv = "R0 invalid mem access 'scalar'", 71662306a36Sopenharmony_ci .result_unpriv = REJECT, 71762306a36Sopenharmony_ci .result = ACCEPT, 71862306a36Sopenharmony_ci .retval = 2, 71962306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 72062306a36Sopenharmony_ci}, 72162306a36Sopenharmony_ci{ 72262306a36Sopenharmony_ci "jslt32: BPF_K", 72362306a36Sopenharmony_ci .insns = { 72462306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 72562306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 72662306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JSLT, BPF_REG_7, -1, 1), 72762306a36Sopenharmony_ci BPF_EXIT_INSN(), 72862306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 72962306a36Sopenharmony_ci BPF_EXIT_INSN(), 73062306a36Sopenharmony_ci }, 73162306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 73262306a36Sopenharmony_ci .result = ACCEPT, 73362306a36Sopenharmony_ci .runs = 3, 73462306a36Sopenharmony_ci .retvals = { 73562306a36Sopenharmony_ci { .retval = 2, 73662306a36Sopenharmony_ci .data64 = { (__u32)-2, } 73762306a36Sopenharmony_ci }, 73862306a36Sopenharmony_ci { .retval = 0, 73962306a36Sopenharmony_ci .data64 = { -1, } 74062306a36Sopenharmony_ci }, 74162306a36Sopenharmony_ci { .retval = 0, 74262306a36Sopenharmony_ci .data64 = { 1, } 74362306a36Sopenharmony_ci }, 74462306a36Sopenharmony_ci }, 74562306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 74662306a36Sopenharmony_ci}, 74762306a36Sopenharmony_ci{ 74862306a36Sopenharmony_ci "jslt32: BPF_X", 74962306a36Sopenharmony_ci .insns = { 75062306a36Sopenharmony_ci BPF_DIRECT_PKT_R2, 75162306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, 0x7fffffff | 1ULL << 32), 75262306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_7, BPF_REG_2, 0), 75362306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSLT, BPF_REG_7, BPF_REG_8, 1), 75462306a36Sopenharmony_ci BPF_EXIT_INSN(), 75562306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 75662306a36Sopenharmony_ci BPF_EXIT_INSN(), 75762306a36Sopenharmony_ci }, 75862306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 75962306a36Sopenharmony_ci .result = ACCEPT, 76062306a36Sopenharmony_ci .runs = 3, 76162306a36Sopenharmony_ci .retvals = { 76262306a36Sopenharmony_ci { .retval = 2, 76362306a36Sopenharmony_ci .data64 = { 0x7ffffffe, } 76462306a36Sopenharmony_ci }, 76562306a36Sopenharmony_ci { .retval = 2, 76662306a36Sopenharmony_ci .data64 = { 0xffffffff, } 76762306a36Sopenharmony_ci }, 76862306a36Sopenharmony_ci { .retval = 0, 76962306a36Sopenharmony_ci .data64 = { 0x7fffffff | 2ULL << 32, } 77062306a36Sopenharmony_ci }, 77162306a36Sopenharmony_ci }, 77262306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 77362306a36Sopenharmony_ci}, 77462306a36Sopenharmony_ci{ 77562306a36Sopenharmony_ci "jslt32: min/max deduction", 77662306a36Sopenharmony_ci .insns = { 77762306a36Sopenharmony_ci BPF_RAND_SEXT_R7, 77862306a36Sopenharmony_ci BPF_ALU32_IMM(BPF_MOV, BPF_REG_0, 2), 77962306a36Sopenharmony_ci BPF_LD_IMM64(BPF_REG_8, (__u32)(-1) | 1ULL << 32), 78062306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JSLT, BPF_REG_7, BPF_REG_8, 1), 78162306a36Sopenharmony_ci BPF_EXIT_INSN(), 78262306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JSLT, BPF_REG_7, -1, 1), 78362306a36Sopenharmony_ci BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0), 78462306a36Sopenharmony_ci BPF_EXIT_INSN(), 78562306a36Sopenharmony_ci }, 78662306a36Sopenharmony_ci .errstr_unpriv = "R0 invalid mem access 'scalar'", 78762306a36Sopenharmony_ci .result_unpriv = REJECT, 78862306a36Sopenharmony_ci .result = ACCEPT, 78962306a36Sopenharmony_ci .retval = 2, 79062306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 79162306a36Sopenharmony_ci}, 79262306a36Sopenharmony_ci{ 79362306a36Sopenharmony_ci "jgt32: range bound deduction, reg op imm", 79462306a36Sopenharmony_ci .insns = { 79562306a36Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0), 79662306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_8, BPF_REG_1), 79762306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 79862306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), 79962306a36Sopenharmony_ci BPF_LD_MAP_FD(BPF_REG_1, 0), 80062306a36Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), 80162306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9), 80262306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_8), 80362306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_8, BPF_REG_0), 80462306a36Sopenharmony_ci BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid), 80562306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JGT, BPF_REG_0, 1, 5), 80662306a36Sopenharmony_ci BPF_MOV32_REG(BPF_REG_6, BPF_REG_0), 80762306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32), 80862306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32), 80962306a36Sopenharmony_ci BPF_ALU64_REG(BPF_ADD, BPF_REG_8, BPF_REG_6), 81062306a36Sopenharmony_ci BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0), 81162306a36Sopenharmony_ci BPF_MOV32_IMM(BPF_REG_0, 0), 81262306a36Sopenharmony_ci BPF_EXIT_INSN(), 81362306a36Sopenharmony_ci }, 81462306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 81562306a36Sopenharmony_ci .fixup_map_hash_48b = { 4 }, 81662306a36Sopenharmony_ci .result = ACCEPT, 81762306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 81862306a36Sopenharmony_ci}, 81962306a36Sopenharmony_ci{ 82062306a36Sopenharmony_ci "jgt32: range bound deduction, reg1 op reg2, reg1 unknown", 82162306a36Sopenharmony_ci .insns = { 82262306a36Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0), 82362306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_8, BPF_REG_1), 82462306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 82562306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), 82662306a36Sopenharmony_ci BPF_LD_MAP_FD(BPF_REG_1, 0), 82762306a36Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), 82862306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 10), 82962306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_8), 83062306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_8, BPF_REG_0), 83162306a36Sopenharmony_ci BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid), 83262306a36Sopenharmony_ci BPF_MOV32_IMM(BPF_REG_2, 1), 83362306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JGT, BPF_REG_0, BPF_REG_2, 5), 83462306a36Sopenharmony_ci BPF_MOV32_REG(BPF_REG_6, BPF_REG_0), 83562306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32), 83662306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32), 83762306a36Sopenharmony_ci BPF_ALU64_REG(BPF_ADD, BPF_REG_8, BPF_REG_6), 83862306a36Sopenharmony_ci BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0), 83962306a36Sopenharmony_ci BPF_MOV32_IMM(BPF_REG_0, 0), 84062306a36Sopenharmony_ci BPF_EXIT_INSN(), 84162306a36Sopenharmony_ci }, 84262306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 84362306a36Sopenharmony_ci .fixup_map_hash_48b = { 4 }, 84462306a36Sopenharmony_ci .result = ACCEPT, 84562306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 84662306a36Sopenharmony_ci}, 84762306a36Sopenharmony_ci{ 84862306a36Sopenharmony_ci "jle32: range bound deduction, reg1 op reg2, reg2 unknown", 84962306a36Sopenharmony_ci .insns = { 85062306a36Sopenharmony_ci BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0), 85162306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_8, BPF_REG_1), 85262306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), 85362306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8), 85462306a36Sopenharmony_ci BPF_LD_MAP_FD(BPF_REG_1, 0), 85562306a36Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), 85662306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 10), 85762306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_8), 85862306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_8, BPF_REG_0), 85962306a36Sopenharmony_ci BPF_EMIT_CALL(BPF_FUNC_get_cgroup_classid), 86062306a36Sopenharmony_ci BPF_MOV32_IMM(BPF_REG_2, 1), 86162306a36Sopenharmony_ci BPF_JMP32_REG(BPF_JLE, BPF_REG_2, BPF_REG_0, 5), 86262306a36Sopenharmony_ci BPF_MOV32_REG(BPF_REG_6, BPF_REG_0), 86362306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32), 86462306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32), 86562306a36Sopenharmony_ci BPF_ALU64_REG(BPF_ADD, BPF_REG_8, BPF_REG_6), 86662306a36Sopenharmony_ci BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0), 86762306a36Sopenharmony_ci BPF_MOV32_IMM(BPF_REG_0, 0), 86862306a36Sopenharmony_ci BPF_EXIT_INSN(), 86962306a36Sopenharmony_ci }, 87062306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 87162306a36Sopenharmony_ci .fixup_map_hash_48b = { 4 }, 87262306a36Sopenharmony_ci .result = ACCEPT, 87362306a36Sopenharmony_ci .flags = F_NEEDS_EFFICIENT_UNALIGNED_ACCESS, 87462306a36Sopenharmony_ci}, 87562306a36Sopenharmony_ci{ 87662306a36Sopenharmony_ci "jeq32/jne32: bounds checking", 87762306a36Sopenharmony_ci .insns = { 87862306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_6, 563), 87962306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_2, 0), 88062306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_NEG, BPF_REG_2, 0), 88162306a36Sopenharmony_ci BPF_ALU64_IMM(BPF_NEG, BPF_REG_2, 0), 88262306a36Sopenharmony_ci BPF_ALU32_REG(BPF_OR, BPF_REG_2, BPF_REG_6), 88362306a36Sopenharmony_ci BPF_JMP32_IMM(BPF_JNE, BPF_REG_2, 8, 5), 88462306a36Sopenharmony_ci BPF_JMP_IMM(BPF_JSGE, BPF_REG_2, 500, 2), 88562306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 2), 88662306a36Sopenharmony_ci BPF_EXIT_INSN(), 88762306a36Sopenharmony_ci BPF_MOV64_REG(BPF_REG_0, BPF_REG_4), 88862306a36Sopenharmony_ci BPF_EXIT_INSN(), 88962306a36Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, 1), 89062306a36Sopenharmony_ci BPF_EXIT_INSN(), 89162306a36Sopenharmony_ci }, 89262306a36Sopenharmony_ci .prog_type = BPF_PROG_TYPE_SCHED_CLS, 89362306a36Sopenharmony_ci .result = ACCEPT, 89462306a36Sopenharmony_ci .retval = 1, 89562306a36Sopenharmony_ci}, 896