162306a36Sopenharmony_ci{
262306a36Sopenharmony_ci	"test1 ld_imm64",
362306a36Sopenharmony_ci	.insns = {
462306a36Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
562306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 0),
662306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 0),
762306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 1),
862306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 1),
962306a36Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 2),
1062306a36Sopenharmony_ci	BPF_EXIT_INSN(),
1162306a36Sopenharmony_ci	},
1262306a36Sopenharmony_ci	.errstr = "jump into the middle of ldimm64 insn 1",
1362306a36Sopenharmony_ci	.errstr_unpriv = "jump into the middle of ldimm64 insn 1",
1462306a36Sopenharmony_ci	.result = REJECT,
1562306a36Sopenharmony_ci},
1662306a36Sopenharmony_ci{
1762306a36Sopenharmony_ci	"test2 ld_imm64",
1862306a36Sopenharmony_ci	.insns = {
1962306a36Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
2062306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 0),
2162306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 0),
2262306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 1),
2362306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 1),
2462306a36Sopenharmony_ci	BPF_EXIT_INSN(),
2562306a36Sopenharmony_ci	},
2662306a36Sopenharmony_ci	.errstr = "jump into the middle of ldimm64 insn 1",
2762306a36Sopenharmony_ci	.errstr_unpriv = "jump into the middle of ldimm64 insn 1",
2862306a36Sopenharmony_ci	.result = REJECT,
2962306a36Sopenharmony_ci},
3062306a36Sopenharmony_ci{
3162306a36Sopenharmony_ci	"test3 ld_imm64",
3262306a36Sopenharmony_ci	.insns = {
3362306a36Sopenharmony_ci	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
3462306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
3562306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 0),
3662306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 0),
3762306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 1),
3862306a36Sopenharmony_ci	BPF_LD_IMM64(BPF_REG_0, 1),
3962306a36Sopenharmony_ci	BPF_EXIT_INSN(),
4062306a36Sopenharmony_ci	},
4162306a36Sopenharmony_ci	.errstr = "invalid bpf_ld_imm64 insn",
4262306a36Sopenharmony_ci	.result = REJECT,
4362306a36Sopenharmony_ci},
4462306a36Sopenharmony_ci{
4562306a36Sopenharmony_ci	"test4 ld_imm64",
4662306a36Sopenharmony_ci	.insns = {
4762306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
4862306a36Sopenharmony_ci	BPF_EXIT_INSN(),
4962306a36Sopenharmony_ci	},
5062306a36Sopenharmony_ci	.errstr = "invalid bpf_ld_imm64 insn",
5162306a36Sopenharmony_ci	.result = REJECT,
5262306a36Sopenharmony_ci},
5362306a36Sopenharmony_ci{
5462306a36Sopenharmony_ci	"test6 ld_imm64",
5562306a36Sopenharmony_ci	.insns = {
5662306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
5762306a36Sopenharmony_ci	BPF_RAW_INSN(0, 0, 0, 0, 0),
5862306a36Sopenharmony_ci	BPF_EXIT_INSN(),
5962306a36Sopenharmony_ci	},
6062306a36Sopenharmony_ci	.result = ACCEPT,
6162306a36Sopenharmony_ci},
6262306a36Sopenharmony_ci{
6362306a36Sopenharmony_ci	"test7 ld_imm64",
6462306a36Sopenharmony_ci	.insns = {
6562306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
6662306a36Sopenharmony_ci	BPF_RAW_INSN(0, 0, 0, 0, 1),
6762306a36Sopenharmony_ci	BPF_EXIT_INSN(),
6862306a36Sopenharmony_ci	},
6962306a36Sopenharmony_ci	.result = ACCEPT,
7062306a36Sopenharmony_ci	.retval = 1,
7162306a36Sopenharmony_ci},
7262306a36Sopenharmony_ci{
7362306a36Sopenharmony_ci	"test8 ld_imm64",
7462306a36Sopenharmony_ci	.insns = {
7562306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 1, 1),
7662306a36Sopenharmony_ci	BPF_RAW_INSN(0, 0, 0, 0, 1),
7762306a36Sopenharmony_ci	BPF_EXIT_INSN(),
7862306a36Sopenharmony_ci	},
7962306a36Sopenharmony_ci	.errstr = "uses reserved fields",
8062306a36Sopenharmony_ci	.result = REJECT,
8162306a36Sopenharmony_ci},
8262306a36Sopenharmony_ci{
8362306a36Sopenharmony_ci	"test9 ld_imm64",
8462306a36Sopenharmony_ci	.insns = {
8562306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
8662306a36Sopenharmony_ci	BPF_RAW_INSN(0, 0, 0, 1, 1),
8762306a36Sopenharmony_ci	BPF_EXIT_INSN(),
8862306a36Sopenharmony_ci	},
8962306a36Sopenharmony_ci	.errstr = "invalid bpf_ld_imm64 insn",
9062306a36Sopenharmony_ci	.result = REJECT,
9162306a36Sopenharmony_ci},
9262306a36Sopenharmony_ci{
9362306a36Sopenharmony_ci	"test10 ld_imm64",
9462306a36Sopenharmony_ci	.insns = {
9562306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
9662306a36Sopenharmony_ci	BPF_RAW_INSN(0, BPF_REG_1, 0, 0, 1),
9762306a36Sopenharmony_ci	BPF_EXIT_INSN(),
9862306a36Sopenharmony_ci	},
9962306a36Sopenharmony_ci	.errstr = "invalid bpf_ld_imm64 insn",
10062306a36Sopenharmony_ci	.result = REJECT,
10162306a36Sopenharmony_ci},
10262306a36Sopenharmony_ci{
10362306a36Sopenharmony_ci	"test11 ld_imm64",
10462306a36Sopenharmony_ci	.insns = {
10562306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
10662306a36Sopenharmony_ci	BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1),
10762306a36Sopenharmony_ci	BPF_EXIT_INSN(),
10862306a36Sopenharmony_ci	},
10962306a36Sopenharmony_ci	.errstr = "invalid bpf_ld_imm64 insn",
11062306a36Sopenharmony_ci	.result = REJECT,
11162306a36Sopenharmony_ci},
11262306a36Sopenharmony_ci{
11362306a36Sopenharmony_ci	"test12 ld_imm64",
11462306a36Sopenharmony_ci	.insns = {
11562306a36Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_1, 0),
11662306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1),
11762306a36Sopenharmony_ci	BPF_RAW_INSN(0, 0, 0, 0, 0),
11862306a36Sopenharmony_ci	BPF_EXIT_INSN(),
11962306a36Sopenharmony_ci	},
12062306a36Sopenharmony_ci	.errstr = "not pointing to valid bpf_map",
12162306a36Sopenharmony_ci	.result = REJECT,
12262306a36Sopenharmony_ci},
12362306a36Sopenharmony_ci{
12462306a36Sopenharmony_ci	"test13 ld_imm64",
12562306a36Sopenharmony_ci	.insns = {
12662306a36Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_1, 0),
12762306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1),
12862306a36Sopenharmony_ci	BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1),
12962306a36Sopenharmony_ci	BPF_EXIT_INSN(),
13062306a36Sopenharmony_ci	},
13162306a36Sopenharmony_ci	.errstr = "invalid bpf_ld_imm64 insn",
13262306a36Sopenharmony_ci	.result = REJECT,
13362306a36Sopenharmony_ci},
13462306a36Sopenharmony_ci{
13562306a36Sopenharmony_ci	"test14 ld_imm64: reject 2nd imm != 0",
13662306a36Sopenharmony_ci	.insns = {
13762306a36Sopenharmony_ci	BPF_MOV64_IMM(BPF_REG_0, 0),
13862306a36Sopenharmony_ci	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, BPF_REG_1,
13962306a36Sopenharmony_ci		     BPF_PSEUDO_MAP_FD, 0, 0),
14062306a36Sopenharmony_ci	BPF_RAW_INSN(0, 0, 0, 0, 0xfefefe),
14162306a36Sopenharmony_ci	BPF_EXIT_INSN(),
14262306a36Sopenharmony_ci	},
14362306a36Sopenharmony_ci	.fixup_map_hash_48b = { 1 },
14462306a36Sopenharmony_ci	.errstr = "unrecognized bpf_ld_imm64 insn",
14562306a36Sopenharmony_ci	.result = REJECT,
14662306a36Sopenharmony_ci},
147