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