1{
2	"test1 ld_imm64",
3	.insns = {
4	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
5	BPF_LD_IMM64(BPF_REG_0, 0),
6	BPF_LD_IMM64(BPF_REG_0, 0),
7	BPF_LD_IMM64(BPF_REG_0, 1),
8	BPF_LD_IMM64(BPF_REG_0, 1),
9	BPF_MOV64_IMM(BPF_REG_0, 2),
10	BPF_EXIT_INSN(),
11	},
12	.errstr = "jump into the middle of ldimm64 insn 1",
13	.errstr_unpriv = "jump into the middle of ldimm64 insn 1",
14	.result = REJECT,
15},
16{
17	"test2 ld_imm64",
18	.insns = {
19	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
20	BPF_LD_IMM64(BPF_REG_0, 0),
21	BPF_LD_IMM64(BPF_REG_0, 0),
22	BPF_LD_IMM64(BPF_REG_0, 1),
23	BPF_LD_IMM64(BPF_REG_0, 1),
24	BPF_EXIT_INSN(),
25	},
26	.errstr = "jump into the middle of ldimm64 insn 1",
27	.errstr_unpriv = "jump into the middle of ldimm64 insn 1",
28	.result = REJECT,
29},
30{
31	"test3 ld_imm64",
32	.insns = {
33	BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0, 1),
34	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
35	BPF_LD_IMM64(BPF_REG_0, 0),
36	BPF_LD_IMM64(BPF_REG_0, 0),
37	BPF_LD_IMM64(BPF_REG_0, 1),
38	BPF_LD_IMM64(BPF_REG_0, 1),
39	BPF_EXIT_INSN(),
40	},
41	.errstr = "invalid bpf_ld_imm64 insn",
42	.result = REJECT,
43},
44{
45	"test4 ld_imm64",
46	.insns = {
47	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
48	BPF_EXIT_INSN(),
49	},
50	.errstr = "invalid bpf_ld_imm64 insn",
51	.result = REJECT,
52},
53{
54	"test6 ld_imm64",
55	.insns = {
56	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 0),
57	BPF_RAW_INSN(0, 0, 0, 0, 0),
58	BPF_EXIT_INSN(),
59	},
60	.result = ACCEPT,
61},
62{
63	"test7 ld_imm64",
64	.insns = {
65	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
66	BPF_RAW_INSN(0, 0, 0, 0, 1),
67	BPF_EXIT_INSN(),
68	},
69	.result = ACCEPT,
70	.retval = 1,
71},
72{
73	"test8 ld_imm64",
74	.insns = {
75	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 1, 1),
76	BPF_RAW_INSN(0, 0, 0, 0, 1),
77	BPF_EXIT_INSN(),
78	},
79	.errstr = "uses reserved fields",
80	.result = REJECT,
81},
82{
83	"test9 ld_imm64",
84	.insns = {
85	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
86	BPF_RAW_INSN(0, 0, 0, 1, 1),
87	BPF_EXIT_INSN(),
88	},
89	.errstr = "invalid bpf_ld_imm64 insn",
90	.result = REJECT,
91},
92{
93	"test10 ld_imm64",
94	.insns = {
95	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
96	BPF_RAW_INSN(0, BPF_REG_1, 0, 0, 1),
97	BPF_EXIT_INSN(),
98	},
99	.errstr = "invalid bpf_ld_imm64 insn",
100	.result = REJECT,
101},
102{
103	"test11 ld_imm64",
104	.insns = {
105	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, 0, 0, 1),
106	BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1),
107	BPF_EXIT_INSN(),
108	},
109	.errstr = "invalid bpf_ld_imm64 insn",
110	.result = REJECT,
111},
112{
113	"test12 ld_imm64",
114	.insns = {
115	BPF_MOV64_IMM(BPF_REG_1, 0),
116	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1),
117	BPF_RAW_INSN(0, 0, 0, 0, 0),
118	BPF_EXIT_INSN(),
119	},
120	.errstr = "not pointing to valid bpf_map",
121	.result = REJECT,
122},
123{
124	"test13 ld_imm64",
125	.insns = {
126	BPF_MOV64_IMM(BPF_REG_1, 0),
127	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, 0, BPF_REG_1, 0, 1),
128	BPF_RAW_INSN(0, 0, BPF_REG_1, 0, 1),
129	BPF_EXIT_INSN(),
130	},
131	.errstr = "invalid bpf_ld_imm64 insn",
132	.result = REJECT,
133},
134{
135	"test14 ld_imm64: reject 2nd imm != 0",
136	.insns = {
137	BPF_MOV64_IMM(BPF_REG_0, 0),
138	BPF_RAW_INSN(BPF_LD | BPF_IMM | BPF_DW, BPF_REG_1,
139		     BPF_PSEUDO_MAP_FD, 0, 0),
140	BPF_RAW_INSN(0, 0, 0, 0, 0xfefefe),
141	BPF_EXIT_INSN(),
142	},
143	.fixup_map_hash_48b = { 1 },
144	.errstr = "unrecognized bpf_ld_imm64 insn",
145	.result = REJECT,
146},
147