18c2ecf20Sopenharmony_ci/* This file contains sub-register zero extension checks for insns defining 28c2ecf20Sopenharmony_ci * sub-registers, meaning: 38c2ecf20Sopenharmony_ci * - All insns under BPF_ALU class. Their BPF_ALU32 variants or narrow width 48c2ecf20Sopenharmony_ci * forms (BPF_END) could define sub-registers. 58c2ecf20Sopenharmony_ci * - Narrow direct loads, BPF_B/H/W | BPF_LDX. 68c2ecf20Sopenharmony_ci * - BPF_LD is not exposed to JIT back-ends, so no need for testing. 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * "get_prandom_u32" is used to initialize low 32-bit of some registers to 98c2ecf20Sopenharmony_ci * prevent potential optimizations done by verifier or JIT back-ends which could 108c2ecf20Sopenharmony_ci * optimize register back into constant when range info shows one register is a 118c2ecf20Sopenharmony_ci * constant. 128c2ecf20Sopenharmony_ci */ 138c2ecf20Sopenharmony_ci{ 148c2ecf20Sopenharmony_ci "add32 reg zero extend check", 158c2ecf20Sopenharmony_ci .insns = { 168c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 178c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), 188c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0x100000000ULL), 198c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_ADD, BPF_REG_0, BPF_REG_1), 208c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 218c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 228c2ecf20Sopenharmony_ci }, 238c2ecf20Sopenharmony_ci .result = ACCEPT, 248c2ecf20Sopenharmony_ci .retval = 0, 258c2ecf20Sopenharmony_ci}, 268c2ecf20Sopenharmony_ci{ 278c2ecf20Sopenharmony_ci "add32 imm zero extend check", 288c2ecf20Sopenharmony_ci .insns = { 298c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 308c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 318c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 328c2ecf20Sopenharmony_ci /* An insn could have no effect on the low 32-bit, for example: 338c2ecf20Sopenharmony_ci * a = a + 0 348c2ecf20Sopenharmony_ci * a = a | 0 358c2ecf20Sopenharmony_ci * a = a & -1 368c2ecf20Sopenharmony_ci * But, they should still zero high 32-bit. 378c2ecf20Sopenharmony_ci */ 388c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_ADD, BPF_REG_0, 0), 398c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 408c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 418c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 428c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 438c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 448c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_ADD, BPF_REG_0, -2), 458c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 468c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 478c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 488c2ecf20Sopenharmony_ci }, 498c2ecf20Sopenharmony_ci .result = ACCEPT, 508c2ecf20Sopenharmony_ci .retval = 0, 518c2ecf20Sopenharmony_ci}, 528c2ecf20Sopenharmony_ci{ 538c2ecf20Sopenharmony_ci "sub32 reg zero extend check", 548c2ecf20Sopenharmony_ci .insns = { 558c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 568c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), 578c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0x1ffffffffULL), 588c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_SUB, BPF_REG_0, BPF_REG_1), 598c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 608c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 618c2ecf20Sopenharmony_ci }, 628c2ecf20Sopenharmony_ci .result = ACCEPT, 638c2ecf20Sopenharmony_ci .retval = 0, 648c2ecf20Sopenharmony_ci}, 658c2ecf20Sopenharmony_ci{ 668c2ecf20Sopenharmony_ci "sub32 imm zero extend check", 678c2ecf20Sopenharmony_ci .insns = { 688c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 698c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 708c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 718c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_SUB, BPF_REG_0, 0), 728c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 738c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 748c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 758c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 768c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 778c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_SUB, BPF_REG_0, 1), 788c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 798c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 808c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 818c2ecf20Sopenharmony_ci }, 828c2ecf20Sopenharmony_ci .result = ACCEPT, 838c2ecf20Sopenharmony_ci .retval = 0, 848c2ecf20Sopenharmony_ci}, 858c2ecf20Sopenharmony_ci{ 868c2ecf20Sopenharmony_ci "mul32 reg zero extend check", 878c2ecf20Sopenharmony_ci .insns = { 888c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 898c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), 908c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0x100000001ULL), 918c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_MUL, BPF_REG_0, BPF_REG_1), 928c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 938c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 948c2ecf20Sopenharmony_ci }, 958c2ecf20Sopenharmony_ci .result = ACCEPT, 968c2ecf20Sopenharmony_ci .retval = 0, 978c2ecf20Sopenharmony_ci}, 988c2ecf20Sopenharmony_ci{ 998c2ecf20Sopenharmony_ci "mul32 imm zero extend check", 1008c2ecf20Sopenharmony_ci .insns = { 1018c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 1028c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 1038c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 1048c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_MUL, BPF_REG_0, 1), 1058c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 1068c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 1078c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 1088c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 1098c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 1108c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_MUL, BPF_REG_0, -1), 1118c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 1128c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 1138c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 1148c2ecf20Sopenharmony_ci }, 1158c2ecf20Sopenharmony_ci .result = ACCEPT, 1168c2ecf20Sopenharmony_ci .retval = 0, 1178c2ecf20Sopenharmony_ci}, 1188c2ecf20Sopenharmony_ci{ 1198c2ecf20Sopenharmony_ci "div32 reg zero extend check", 1208c2ecf20Sopenharmony_ci .insns = { 1218c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 1228c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), 1238c2ecf20Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, -1), 1248c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_1), 1258c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 1268c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 1278c2ecf20Sopenharmony_ci }, 1288c2ecf20Sopenharmony_ci .result = ACCEPT, 1298c2ecf20Sopenharmony_ci .retval = 0, 1308c2ecf20Sopenharmony_ci}, 1318c2ecf20Sopenharmony_ci{ 1328c2ecf20Sopenharmony_ci "div32 imm zero extend check", 1338c2ecf20Sopenharmony_ci .insns = { 1348c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 1358c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 1368c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 1378c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_DIV, BPF_REG_0, 1), 1388c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 1398c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 1408c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 1418c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 1428c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 1438c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_DIV, BPF_REG_0, 2), 1448c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 1458c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 1468c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 1478c2ecf20Sopenharmony_ci }, 1488c2ecf20Sopenharmony_ci .result = ACCEPT, 1498c2ecf20Sopenharmony_ci .retval = 0, 1508c2ecf20Sopenharmony_ci}, 1518c2ecf20Sopenharmony_ci{ 1528c2ecf20Sopenharmony_ci "or32 reg zero extend check", 1538c2ecf20Sopenharmony_ci .insns = { 1548c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 1558c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), 1568c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0x100000001ULL), 1578c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 1588c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 1598c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 1608c2ecf20Sopenharmony_ci }, 1618c2ecf20Sopenharmony_ci .result = ACCEPT, 1628c2ecf20Sopenharmony_ci .retval = 0, 1638c2ecf20Sopenharmony_ci}, 1648c2ecf20Sopenharmony_ci{ 1658c2ecf20Sopenharmony_ci "or32 imm zero extend check", 1668c2ecf20Sopenharmony_ci .insns = { 1678c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 1688c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 1698c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 1708c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_OR, BPF_REG_0, 0), 1718c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 1728c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 1738c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 1748c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 1758c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 1768c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_OR, BPF_REG_0, 1), 1778c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 1788c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 1798c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 1808c2ecf20Sopenharmony_ci }, 1818c2ecf20Sopenharmony_ci .result = ACCEPT, 1828c2ecf20Sopenharmony_ci .retval = 0, 1838c2ecf20Sopenharmony_ci}, 1848c2ecf20Sopenharmony_ci{ 1858c2ecf20Sopenharmony_ci "and32 reg zero extend check", 1868c2ecf20Sopenharmony_ci .insns = { 1878c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 1888c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x100000000ULL), 1898c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_1, BPF_REG_0), 1908c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0x1ffffffffULL), 1918c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_AND, BPF_REG_0, BPF_REG_1), 1928c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 1938c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 1948c2ecf20Sopenharmony_ci }, 1958c2ecf20Sopenharmony_ci .result = ACCEPT, 1968c2ecf20Sopenharmony_ci .retval = 0, 1978c2ecf20Sopenharmony_ci}, 1988c2ecf20Sopenharmony_ci{ 1998c2ecf20Sopenharmony_ci "and32 imm zero extend check", 2008c2ecf20Sopenharmony_ci .insns = { 2018c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 2028c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 2038c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 2048c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_AND, BPF_REG_0, -1), 2058c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 2068c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 2078c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 2088c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 2098c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 2108c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_AND, BPF_REG_0, -2), 2118c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 2128c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 2138c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 2148c2ecf20Sopenharmony_ci }, 2158c2ecf20Sopenharmony_ci .result = ACCEPT, 2168c2ecf20Sopenharmony_ci .retval = 0, 2178c2ecf20Sopenharmony_ci}, 2188c2ecf20Sopenharmony_ci{ 2198c2ecf20Sopenharmony_ci "lsh32 reg zero extend check", 2208c2ecf20Sopenharmony_ci .insns = { 2218c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 2228c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x100000000ULL), 2238c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 2248c2ecf20Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_1, 1), 2258c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_LSH, BPF_REG_0, BPF_REG_1), 2268c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 2278c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 2288c2ecf20Sopenharmony_ci }, 2298c2ecf20Sopenharmony_ci .result = ACCEPT, 2308c2ecf20Sopenharmony_ci .retval = 0, 2318c2ecf20Sopenharmony_ci}, 2328c2ecf20Sopenharmony_ci{ 2338c2ecf20Sopenharmony_ci "lsh32 imm zero extend check", 2348c2ecf20Sopenharmony_ci .insns = { 2358c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 2368c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 2378c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 2388c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_LSH, BPF_REG_0, 0), 2398c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 2408c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 2418c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 2428c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 2438c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 2448c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_LSH, BPF_REG_0, 1), 2458c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 2468c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 2478c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 2488c2ecf20Sopenharmony_ci }, 2498c2ecf20Sopenharmony_ci .result = ACCEPT, 2508c2ecf20Sopenharmony_ci .retval = 0, 2518c2ecf20Sopenharmony_ci}, 2528c2ecf20Sopenharmony_ci{ 2538c2ecf20Sopenharmony_ci "rsh32 reg zero extend check", 2548c2ecf20Sopenharmony_ci .insns = { 2558c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 2568c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 2578c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 2588c2ecf20Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_1, 1), 2598c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_RSH, BPF_REG_0, BPF_REG_1), 2608c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 2618c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 2628c2ecf20Sopenharmony_ci }, 2638c2ecf20Sopenharmony_ci .result = ACCEPT, 2648c2ecf20Sopenharmony_ci .retval = 0, 2658c2ecf20Sopenharmony_ci}, 2668c2ecf20Sopenharmony_ci{ 2678c2ecf20Sopenharmony_ci "rsh32 imm zero extend check", 2688c2ecf20Sopenharmony_ci .insns = { 2698c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 2708c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 2718c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 2728c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_RSH, BPF_REG_0, 0), 2738c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 2748c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 2758c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 2768c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 2778c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 2788c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_RSH, BPF_REG_0, 1), 2798c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 2808c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 2818c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 2828c2ecf20Sopenharmony_ci }, 2838c2ecf20Sopenharmony_ci .result = ACCEPT, 2848c2ecf20Sopenharmony_ci .retval = 0, 2858c2ecf20Sopenharmony_ci}, 2868c2ecf20Sopenharmony_ci{ 2878c2ecf20Sopenharmony_ci "neg32 reg zero extend check", 2888c2ecf20Sopenharmony_ci .insns = { 2898c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 2908c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 2918c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 2928c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_NEG, BPF_REG_0, 0), 2938c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 2948c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 2958c2ecf20Sopenharmony_ci }, 2968c2ecf20Sopenharmony_ci .result = ACCEPT, 2978c2ecf20Sopenharmony_ci .retval = 0, 2988c2ecf20Sopenharmony_ci}, 2998c2ecf20Sopenharmony_ci{ 3008c2ecf20Sopenharmony_ci "mod32 reg zero extend check", 3018c2ecf20Sopenharmony_ci .insns = { 3028c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 3038c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), 3048c2ecf20Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_0, -1), 3058c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_MOD, BPF_REG_0, BPF_REG_1), 3068c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 3078c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 3088c2ecf20Sopenharmony_ci }, 3098c2ecf20Sopenharmony_ci .result = ACCEPT, 3108c2ecf20Sopenharmony_ci .retval = 0, 3118c2ecf20Sopenharmony_ci}, 3128c2ecf20Sopenharmony_ci{ 3138c2ecf20Sopenharmony_ci "mod32 imm zero extend check", 3148c2ecf20Sopenharmony_ci .insns = { 3158c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 3168c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 3178c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 3188c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_MOD, BPF_REG_0, 1), 3198c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 3208c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 3218c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 3228c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 3238c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 3248c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_MOD, BPF_REG_0, 2), 3258c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 3268c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 3278c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 3288c2ecf20Sopenharmony_ci }, 3298c2ecf20Sopenharmony_ci .result = ACCEPT, 3308c2ecf20Sopenharmony_ci .retval = 0, 3318c2ecf20Sopenharmony_ci}, 3328c2ecf20Sopenharmony_ci{ 3338c2ecf20Sopenharmony_ci "xor32 reg zero extend check", 3348c2ecf20Sopenharmony_ci .insns = { 3358c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 3368c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_1, BPF_REG_0), 3378c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0x100000000ULL), 3388c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_XOR, BPF_REG_0, BPF_REG_1), 3398c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 3408c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 3418c2ecf20Sopenharmony_ci }, 3428c2ecf20Sopenharmony_ci .result = ACCEPT, 3438c2ecf20Sopenharmony_ci .retval = 0, 3448c2ecf20Sopenharmony_ci}, 3458c2ecf20Sopenharmony_ci{ 3468c2ecf20Sopenharmony_ci "xor32 imm zero extend check", 3478c2ecf20Sopenharmony_ci .insns = { 3488c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 3498c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 3508c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 3518c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_XOR, BPF_REG_0, 1), 3528c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 3538c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 3548c2ecf20Sopenharmony_ci }, 3558c2ecf20Sopenharmony_ci .result = ACCEPT, 3568c2ecf20Sopenharmony_ci .retval = 0, 3578c2ecf20Sopenharmony_ci}, 3588c2ecf20Sopenharmony_ci{ 3598c2ecf20Sopenharmony_ci "mov32 reg zero extend check", 3608c2ecf20Sopenharmony_ci .insns = { 3618c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 3628c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x100000000ULL), 3638c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_1, BPF_REG_0), 3648c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_0, 0x100000000ULL), 3658c2ecf20Sopenharmony_ci BPF_MOV32_REG(BPF_REG_0, BPF_REG_1), 3668c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 3678c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 3688c2ecf20Sopenharmony_ci }, 3698c2ecf20Sopenharmony_ci .result = ACCEPT, 3708c2ecf20Sopenharmony_ci .retval = 0, 3718c2ecf20Sopenharmony_ci}, 3728c2ecf20Sopenharmony_ci{ 3738c2ecf20Sopenharmony_ci "mov32 imm zero extend check", 3748c2ecf20Sopenharmony_ci .insns = { 3758c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 3768c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 3778c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 3788c2ecf20Sopenharmony_ci BPF_MOV32_IMM(BPF_REG_0, 0), 3798c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 3808c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 3818c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 3828c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 3838c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 3848c2ecf20Sopenharmony_ci BPF_MOV32_IMM(BPF_REG_0, 1), 3858c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 3868c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 3878c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 3888c2ecf20Sopenharmony_ci }, 3898c2ecf20Sopenharmony_ci .result = ACCEPT, 3908c2ecf20Sopenharmony_ci .retval = 0, 3918c2ecf20Sopenharmony_ci}, 3928c2ecf20Sopenharmony_ci{ 3938c2ecf20Sopenharmony_ci "arsh32 reg zero extend check", 3948c2ecf20Sopenharmony_ci .insns = { 3958c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 3968c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 3978c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 3988c2ecf20Sopenharmony_ci BPF_MOV64_IMM(BPF_REG_1, 1), 3998c2ecf20Sopenharmony_ci BPF_ALU32_REG(BPF_ARSH, BPF_REG_0, BPF_REG_1), 4008c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 4018c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 4028c2ecf20Sopenharmony_ci }, 4038c2ecf20Sopenharmony_ci .result = ACCEPT, 4048c2ecf20Sopenharmony_ci .retval = 0, 4058c2ecf20Sopenharmony_ci}, 4068c2ecf20Sopenharmony_ci{ 4078c2ecf20Sopenharmony_ci "arsh32 imm zero extend check", 4088c2ecf20Sopenharmony_ci .insns = { 4098c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4108c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 4118c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 4128c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_ARSH, BPF_REG_0, 0), 4138c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 4148c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 4158c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4168c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 4178c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 4188c2ecf20Sopenharmony_ci BPF_ALU32_IMM(BPF_ARSH, BPF_REG_0, 1), 4198c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 4208c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 4218c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 4228c2ecf20Sopenharmony_ci }, 4238c2ecf20Sopenharmony_ci .result = ACCEPT, 4248c2ecf20Sopenharmony_ci .retval = 0, 4258c2ecf20Sopenharmony_ci}, 4268c2ecf20Sopenharmony_ci{ 4278c2ecf20Sopenharmony_ci "end16 (to_le) reg zero extend check", 4288c2ecf20Sopenharmony_ci .insns = { 4298c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4308c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 4318c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32), 4328c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4338c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 4348c2ecf20Sopenharmony_ci BPF_ENDIAN(BPF_TO_LE, BPF_REG_0, 16), 4358c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 4368c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 4378c2ecf20Sopenharmony_ci }, 4388c2ecf20Sopenharmony_ci .result = ACCEPT, 4398c2ecf20Sopenharmony_ci .retval = 0, 4408c2ecf20Sopenharmony_ci}, 4418c2ecf20Sopenharmony_ci{ 4428c2ecf20Sopenharmony_ci "end32 (to_le) reg zero extend check", 4438c2ecf20Sopenharmony_ci .insns = { 4448c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4458c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 4468c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32), 4478c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4488c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 4498c2ecf20Sopenharmony_ci BPF_ENDIAN(BPF_TO_LE, BPF_REG_0, 32), 4508c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 4518c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 4528c2ecf20Sopenharmony_ci }, 4538c2ecf20Sopenharmony_ci .result = ACCEPT, 4548c2ecf20Sopenharmony_ci .retval = 0, 4558c2ecf20Sopenharmony_ci}, 4568c2ecf20Sopenharmony_ci{ 4578c2ecf20Sopenharmony_ci "end16 (to_be) reg zero extend check", 4588c2ecf20Sopenharmony_ci .insns = { 4598c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4608c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 4618c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32), 4628c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4638c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 4648c2ecf20Sopenharmony_ci BPF_ENDIAN(BPF_TO_BE, BPF_REG_0, 16), 4658c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 4668c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 4678c2ecf20Sopenharmony_ci }, 4688c2ecf20Sopenharmony_ci .result = ACCEPT, 4698c2ecf20Sopenharmony_ci .retval = 0, 4708c2ecf20Sopenharmony_ci}, 4718c2ecf20Sopenharmony_ci{ 4728c2ecf20Sopenharmony_ci "end32 (to_be) reg zero extend check", 4738c2ecf20Sopenharmony_ci .insns = { 4748c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4758c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_0), 4768c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32), 4778c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4788c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_6), 4798c2ecf20Sopenharmony_ci BPF_ENDIAN(BPF_TO_BE, BPF_REG_0, 32), 4808c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 4818c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 4828c2ecf20Sopenharmony_ci }, 4838c2ecf20Sopenharmony_ci .result = ACCEPT, 4848c2ecf20Sopenharmony_ci .retval = 0, 4858c2ecf20Sopenharmony_ci}, 4868c2ecf20Sopenharmony_ci{ 4878c2ecf20Sopenharmony_ci "ldx_b zero extend check", 4888c2ecf20Sopenharmony_ci .insns = { 4898c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_10), 4908c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -4), 4918c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_W, BPF_REG_6, 0, 0xfaceb00c), 4928c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 4938c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 4948c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 4958c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_6, 0), 4968c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 4978c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 4988c2ecf20Sopenharmony_ci }, 4998c2ecf20Sopenharmony_ci .result = ACCEPT, 5008c2ecf20Sopenharmony_ci .retval = 0, 5018c2ecf20Sopenharmony_ci}, 5028c2ecf20Sopenharmony_ci{ 5038c2ecf20Sopenharmony_ci "ldx_h zero extend check", 5048c2ecf20Sopenharmony_ci .insns = { 5058c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_10), 5068c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -4), 5078c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_W, BPF_REG_6, 0, 0xfaceb00c), 5088c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 5098c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 5108c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 5118c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_6, 0), 5128c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 5138c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 5148c2ecf20Sopenharmony_ci }, 5158c2ecf20Sopenharmony_ci .result = ACCEPT, 5168c2ecf20Sopenharmony_ci .retval = 0, 5178c2ecf20Sopenharmony_ci}, 5188c2ecf20Sopenharmony_ci{ 5198c2ecf20Sopenharmony_ci "ldx_w zero extend check", 5208c2ecf20Sopenharmony_ci .insns = { 5218c2ecf20Sopenharmony_ci BPF_MOV64_REG(BPF_REG_6, BPF_REG_10), 5228c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -4), 5238c2ecf20Sopenharmony_ci BPF_ST_MEM(BPF_W, BPF_REG_6, 0, 0xfaceb00c), 5248c2ecf20Sopenharmony_ci BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32), 5258c2ecf20Sopenharmony_ci BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL), 5268c2ecf20Sopenharmony_ci BPF_ALU64_REG(BPF_OR, BPF_REG_0, BPF_REG_1), 5278c2ecf20Sopenharmony_ci BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_6, 0), 5288c2ecf20Sopenharmony_ci BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32), 5298c2ecf20Sopenharmony_ci BPF_EXIT_INSN(), 5308c2ecf20Sopenharmony_ci }, 5318c2ecf20Sopenharmony_ci .result = ACCEPT, 5328c2ecf20Sopenharmony_ci .retval = 0, 5338c2ecf20Sopenharmony_ci}, 534