BPF_MOD
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_MOD:
case BPF_MOD:
case BPF_MOD:
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_MOD:
case BPF_MOD:
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_K:
if (BPF_OP(opcode) == BPF_DIV || BPF_OP(opcode) == BPF_MOD) {
if (BPF_OP(opcode) == BPF_DIV || BPF_OP(opcode) == BPF_MOD) {
case BPF_MOD:
case BPF_MOD:
if (BPF_OP(opcode) == BPF_DIV || BPF_OP(opcode) == BPF_MOD) {
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_X: /* (u32) dst %= (u32) src */
case BPF_ALU64 | BPF_MOD | BPF_X: /* dst %= src */
case BPF_ALU | BPF_MOD | BPF_K: /* (u32) dst %= (u32) imm */
case BPF_ALU64 | BPF_MOD | BPF_K: /* dst %= imm */
case BPF_ALU | BPF_MOD | BPF_X: /* (u32) dst %= (u32) src */
if (BPF_OP(code) == BPF_MOD) {
case BPF_ALU64 | BPF_MOD | BPF_X: /* dst %= src */
if (BPF_OP(code) == BPF_MOD) {
case BPF_ALU | BPF_MOD | BPF_K: /* (u32) dst %= (u32) imm */
case BPF_ALU64 | BPF_MOD | BPF_K: /* dst %= imm */
if (BPF_OP(code) == BPF_MOD) {
if (BPF_OP(code) == BPF_MOD) {
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_MOD:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_K:
if (BPF_OP(insn->code) == BPF_MOD)
case BPF_ALU64 | BPF_MOD | BPF_K:
if (BPF_OP(insn->code) == BPF_MOD)
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_K: {
case BPF_ALU | BPF_MOD | BPF_X: {
case BPF_ALU64 | BPF_MOD | BPF_X: {
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU64 | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_K:
if (BPF_OP(insn->code) == BPF_MOD &&
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU64 | BPF_MOD | BPF_K:
case BPF_ALU64 | BPF_MOD | BPF_X:
if (op == BPF_MOD) {
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU64 | BPF_MOD | BPF_K:
return (BPF_OP(insn->code) == BPF_DIV || BPF_OP(insn->code) == BPF_MOD) &&
[BPF_MOD >> 4] = "%=",
[BPF_MOD >> 4] = "s%=",
if ((insn->code == (BPF_ALU64 | BPF_MOD | BPF_K) ||
insn->code == (BPF_ALU | BPF_MOD | BPF_K) ||
if (insn->code == (BPF_ALU64 | BPF_MOD | BPF_X) ||
insn->code == (BPF_ALU | BPF_MOD | BPF_X) ||
case BPF_MOD:
case BPF_MOD:
if ((opcode == BPF_MOD || opcode == BPF_DIV) &&
case BPF_MOD:
(insn->off == 1 && opcode != BPF_MOD && opcode != BPF_DIV)) {
(insn->off == 1 && opcode != BPF_MOD && opcode != BPF_DIV)) {
return __bpf_fill_alu64_imm(self, BPF_MOD, 0);
return __bpf_fill_alu64_imm(self, BPF_MOD, F_SIGNED);
return __bpf_fill_alu32_imm(self, BPF_MOD, F_SIGNED);
BPF_STMT(BPF_ALU | BPF_MOD | BPF_X, 0),
BPF_STMT(BPF_ALU | BPF_MOD | BPF_K, 0x1),
return __bpf_fill_alu32_imm(self, BPF_MOD, 0);
return __bpf_fill_alu64_reg(self, BPF_MOD);
return __bpf_fill_alu32_reg(self, BPF_MOD);
return __bpf_fill_alu_imm_regs(self, BPF_MOD, 0);
return __bpf_fill_alu_imm_regs(self, BPF_MOD, F_SIGNED);
return __bpf_fill_alu_imm_regs(self, BPF_MOD, F_ALU32);
return __bpf_fill_alu_imm_regs(self, BPF_MOD, F_ALU32 | F_SIGNED);
return __bpf_fill_alu_reg_pairs(self, BPF_MOD, false);
return __bpf_fill_alu_reg_pairs(self, BPF_MOD, true);
BPF_STMT(BPF_ALU | BPF_MOD | BPF_X, 0),
BPF_STMT(BPF_ALU | BPF_MOD | BPF_K, 0x70000000),
BPF_ALU64_IMM(BPF_MOD, R0, 3),
BPF_SUB, BPF_MUL, BPF_DIV, BPF_MOD,
BPF_ALU32_REG(BPF_MOD, R0, R1),
BPF_ALU32_REG(BPF_MOD, R0, R1),
BPF_ALU64_REG(BPF_MOD, R0, R1),
BPF_ALU64_REG(BPF_MOD, R0, R1),
BPF_ALU32_IMM(BPF_MOD, R0, 2),
case BPF_MOD:
BPF_ALU32_IMM(BPF_MOD, R0, 1),
BPF_ALU32_IMM(BPF_MOD, R0, 4294967293U),
BPF_ALU64_IMM(BPF_MOD, R0, 2),
BPF_ALU64_IMM(BPF_MOD, R0, 1),
BPF_ALU64_IMM(BPF_MOD, R0, 2147483645),
BPF_ALU32_REG_OFF(BPF_MOD, R0, R1, 1),
BPF_ALU32_IMM_OFF(BPF_MOD, R0, 2, 1),
BPF_ALU64_REG_OFF(BPF_MOD, R0, R1, 1),
BPF_ALU64_IMM_OFF(BPF_MOD, R0, 2, 1),
case BPF_ALU | BPF_MOD | BPF_K:
case BPF_ALU | BPF_MOD | BPF_X:
case BPF_ALU | BPF_MOD | BPF_K:
fp->code == (BPF_ALU | BPF_MOD | BPF_X)) {
[BPF_ALU | BPF_MOD | BPF_K] = true,
[BPF_ALU | BPF_MOD | BPF_X] = true,
#define BPF_ALU_MOD (BPF_ALU | BPF_MOD)
bpf_set_curr_instr(BPF_ALU | BPF_MOD | BPF_K, 0, 0, $3); }
bpf_set_curr_instr(BPF_ALU | BPF_MOD | BPF_X, 0, 0, 0); }
bpf_set_curr_instr(BPF_ALU | BPF_MOD | BPF_X, 0, 0, 0); }
return (BPF_OP(insn->code) == BPF_DIV || BPF_OP(insn->code) == BPF_MOD) &&
[BPF_MOD >> 4] = "%=",
[BPF_MOD >> 4] = "s%=",
DEFINE_BAD_OFFSET_TEST(bad_offset_modk, BPF_ALU64 | BPF_MOD | BPF_K, -1, 1)
DEFINE_BAD_OFFSET_TEST(bad_offset_modk2, BPF_ALU64 | BPF_MOD | BPF_K, 2, 1)
BPF_ALU64_IMM(BPF_MOD, BPF_REG_1, 0xbeefULL),
BPF_ALU64_REG(BPF_MOD, BPF_REG_1, BPF_REG_3),
BPF_ALU64_REG(BPF_MOD, BPF_REG_2, BPF_REG_2),
BPF_ALU64_IMM(BPF_MOD, BPF_REG_6, 1),
{ BPF_ALU64 | BPF_MOD | BPF_K, BPF_REG_0, 0, 0, mod },
{ BPF_ALU | BPF_MOD, 0, 0, mod },