Lines Matching +full:0 +full:- +full:32

1 /* This file contains sub-register zero extension checks for insns defining
2 * sub-registers, meaning:
3 * - All insns under BPF_ALU class. Their BPF_ALU32 variants or narrow width
4 * forms (BPF_END) could define sub-registers.
5 * - Narrow direct loads, BPF_B/H/W | BPF_LDX.
6 * - BPF_LD is not exposed to JIT back-ends, so no need for testing.
8 * "get_prandom_u32" is used to initialize low 32-bit of some registers to
9 * prevent potential optimizations done by verifier or JIT back-ends which could
16 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
18 BPF_LD_IMM64(BPF_REG_0, 0x100000000ULL),
20 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
24 .retval = 0,
29 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
30 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
32 /* An insn could have no effect on the low 32-bit, for example:
33 * a = a + 0
34 * a = a | 0
35 * a = a & -1
36 * But, they should still zero high 32-bit.
38 BPF_ALU32_IMM(BPF_ADD, BPF_REG_0, 0),
39 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
41 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
42 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
44 BPF_ALU32_IMM(BPF_ADD, BPF_REG_0, -2),
45 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
50 .retval = 0,
55 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
57 BPF_LD_IMM64(BPF_REG_0, 0x1ffffffffULL),
59 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
63 .retval = 0,
68 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
69 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
71 BPF_ALU32_IMM(BPF_SUB, BPF_REG_0, 0),
72 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
74 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
75 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
78 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
83 .retval = 0,
88 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
90 BPF_LD_IMM64(BPF_REG_0, 0x100000001ULL),
92 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
96 .retval = 0,
101 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
102 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
105 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
107 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
108 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
110 BPF_ALU32_IMM(BPF_MUL, BPF_REG_0, -1),
111 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
116 .retval = 0,
121 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
123 BPF_MOV64_IMM(BPF_REG_0, -1),
125 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
129 .retval = 0,
134 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
135 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
138 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
140 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
141 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
144 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
149 .retval = 0,
154 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
156 BPF_LD_IMM64(BPF_REG_0, 0x100000001ULL),
158 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
162 .retval = 0,
167 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
168 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
170 BPF_ALU32_IMM(BPF_OR, BPF_REG_0, 0),
171 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
173 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
174 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
177 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
182 .retval = 0,
187 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
188 BPF_LD_IMM64(BPF_REG_1, 0x100000000ULL),
190 BPF_LD_IMM64(BPF_REG_0, 0x1ffffffffULL),
192 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
196 .retval = 0,
201 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
202 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
204 BPF_ALU32_IMM(BPF_AND, BPF_REG_0, -1),
205 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
207 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
208 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
210 BPF_ALU32_IMM(BPF_AND, BPF_REG_0, -2),
211 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
216 .retval = 0,
221 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
222 BPF_LD_IMM64(BPF_REG_1, 0x100000000ULL),
226 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
230 .retval = 0,
235 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
236 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
238 BPF_ALU32_IMM(BPF_LSH, BPF_REG_0, 0),
239 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
241 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
242 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
245 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
250 .retval = 0,
255 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
256 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
260 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
264 .retval = 0,
269 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
270 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
272 BPF_ALU32_IMM(BPF_RSH, BPF_REG_0, 0),
273 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
275 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
276 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
279 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
284 .retval = 0,
289 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
290 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
292 BPF_ALU32_IMM(BPF_NEG, BPF_REG_0, 0),
293 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
297 .retval = 0,
302 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
304 BPF_MOV64_IMM(BPF_REG_0, -1),
306 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
310 .retval = 0,
315 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
316 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
319 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
321 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
322 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
325 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
330 .retval = 0,
335 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
337 BPF_LD_IMM64(BPF_REG_0, 0x100000000ULL),
339 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
343 .retval = 0,
348 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
349 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
352 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
356 .retval = 0,
361 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
362 BPF_LD_IMM64(BPF_REG_1, 0x100000000ULL),
364 BPF_LD_IMM64(BPF_REG_0, 0x100000000ULL),
366 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
370 .retval = 0,
375 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
376 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
378 BPF_MOV32_IMM(BPF_REG_0, 0),
379 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
381 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
382 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
385 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
390 .retval = 0,
395 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
396 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
400 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
404 .retval = 0,
409 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
410 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
412 BPF_ALU32_IMM(BPF_ARSH, BPF_REG_0, 0),
413 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
415 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
416 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
419 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
424 .retval = 0,
429 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
431 BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32),
432 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
435 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
439 .retval = 0,
444 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
446 BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32),
447 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
449 BPF_ENDIAN(BPF_TO_LE, BPF_REG_0, 32),
450 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
454 .retval = 0,
459 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
461 BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32),
462 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
465 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
469 .retval = 0,
474 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
476 BPF_ALU64_IMM(BPF_LSH, BPF_REG_6, 32),
477 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
479 BPF_ENDIAN(BPF_TO_BE, BPF_REG_0, 32),
480 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
484 .retval = 0,
490 BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -4),
491 BPF_ST_MEM(BPF_W, BPF_REG_6, 0, 0xfaceb00c),
492 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
493 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
495 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_6, 0),
496 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
500 .retval = 0,
506 BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -4),
507 BPF_ST_MEM(BPF_W, BPF_REG_6, 0, 0xfaceb00c),
508 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
509 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
511 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_6, 0),
512 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
516 .retval = 0,
522 BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, -4),
523 BPF_ST_MEM(BPF_W, BPF_REG_6, 0, 0xfaceb00c),
524 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_get_prandom_u32),
525 BPF_LD_IMM64(BPF_REG_1, 0x1000000000ULL),
527 BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_6, 0),
528 BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, 32),
532 .retval = 0,