BPF_DIV
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_X:
if (op == BPF_DIV) {
if (op == BPF_DIV)
if (op == BPF_DIV)
if (op == BPF_DIV)
if (op == BPF_DIV)
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_DIV:
case BPF_DIV:
case BPF_DIV:
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_X:
case BPF_DIV:
case BPF_DIV:
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_K:
if (BPF_OP(opcode) == BPF_DIV || BPF_OP(opcode) == BPF_MOD) {
if (BPF_OP(opcode) == BPF_DIV)
if (BPF_OP(opcode) == BPF_DIV || BPF_OP(opcode) == BPF_MOD) {
if (BPF_OP(opcode) == BPF_DIV)
case BPF_DIV:
case BPF_DIV:
if (BPF_OP(opcode) == BPF_DIV || BPF_OP(opcode) == BPF_MOD) {
if (BPF_OP(opcode) == BPF_DIV)
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_X: /* (u32) dst /= (u32) src */
case BPF_ALU64 | BPF_DIV | BPF_X: /* dst /= src */
case BPF_ALU | BPF_DIV | BPF_K: /* (u32) dst /= (u32) imm */
case BPF_ALU64 | BPF_DIV | BPF_K: /* dst /= imm */
case BPF_ALU | BPF_DIV | BPF_X: /* (u32) dst /= (u32) src */
case BPF_ALU64 | BPF_DIV | BPF_X: /* dst /= src */
case BPF_ALU | BPF_DIV | BPF_K: /* (u32) dst /= (u32) imm */
case BPF_ALU64 | BPF_DIV | BPF_K: /* dst /= imm */
if (BPF_OP(code) == BPF_DIV) {
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_DIV:
case BPF_ALU64 | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
int rc_reg = BPF_OP(insn->code) == BPF_DIV ? REG_W1 : REG_W0;
case BPF_ALU64 | BPF_DIV | BPF_X:
int rc_reg = BPF_OP(insn->code) == BPF_DIV ? REG_W1 : REG_W0;
case BPF_ALU | BPF_DIV | BPF_K:
int rc_reg = BPF_OP(insn->code) == BPF_DIV ? REG_W1 : REG_W0;
case BPF_ALU64 | BPF_DIV | BPF_K:
int rc_reg = BPF_OP(insn->code) == BPF_DIV ? REG_W1 : REG_W0;
case BPF_ALU | BPF_DIV | BPF_K: /* A /= K with K != 0*/
case BPF_ALU | BPF_DIV | BPF_X: /* A /= X; */
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_K: {
else if (BPF_OP(insn->code) == BPF_DIV &&
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU64 | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_X:
[BPF_ALU64 | BPF_DIV | BPF_X] = div_reg64,
[BPF_ALU64 | BPF_DIV | BPF_K] = div_imm64,
[BPF_ALU | BPF_DIV | BPF_X] = div_reg,
[BPF_ALU | BPF_DIV | BPF_K] = div_imm,
return is_mbpf_alu(meta) && mbpf_op(meta) == BPF_DIV;
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU64 | BPF_DIV | BPF_K:
return (BPF_OP(insn->code) == BPF_DIV || BPF_OP(insn->code) == BPF_MOD) &&
[BPF_DIV >> 4] = "/=",
[BPF_DIV >> 4] = "s/=",
insn->code == (BPF_ALU64 | BPF_DIV | BPF_K) ||
insn->code == (BPF_ALU | BPF_DIV | BPF_K)) &&
bool isdiv = BPF_OP(insn->code) == BPF_DIV;
insn->code == (BPF_ALU64 | BPF_DIV | BPF_X) ||
insn->code == (BPF_ALU | BPF_DIV | BPF_X)) {
bool isdiv = BPF_OP(insn->code) == BPF_DIV;
case BPF_DIV:
case BPF_DIV:
if ((opcode == BPF_MOD || opcode == BPF_DIV) &&
case BPF_DIV:
(insn->off == 1 && opcode != BPF_MOD && opcode != BPF_DIV)) {
(insn->off == 1 && opcode != BPF_MOD && opcode != BPF_DIV)) {
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
return __bpf_fill_alu64_imm(self, BPF_DIV, 0);
return __bpf_fill_alu64_imm(self, BPF_DIV, F_SIGNED);
return __bpf_fill_alu32_imm(self, BPF_DIV, F_SIGNED);
BPF_STMT(BPF_ALU | BPF_DIV | BPF_X, 0),
BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 0x1),
return __bpf_fill_alu32_imm(self, BPF_DIV, 0);
return __bpf_fill_alu64_reg(self, BPF_DIV);
return __bpf_fill_alu32_reg(self, BPF_DIV);
return __bpf_fill_alu_imm_regs(self, BPF_DIV, 0);
return __bpf_fill_alu_imm_regs(self, BPF_DIV, F_SIGNED);
return __bpf_fill_alu_imm_regs(self, BPF_DIV, F_ALU32);
return __bpf_fill_alu_imm_regs(self, BPF_DIV, F_ALU32 | F_SIGNED);
return __bpf_fill_alu_reg_pairs(self, BPF_DIV, false);
return __bpf_fill_alu_reg_pairs(self, BPF_DIV, true);
BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 2),
BPF_STMT(BPF_ALU | BPF_DIV | BPF_X, 0),
BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 0x70000000),
BPF_ALU64_REG(BPF_DIV, R0, R2),
BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 0),
BPF_SUB, BPF_MUL, BPF_DIV, BPF_MOD,
BPF_ALU32_REG(BPF_DIV, R0, R1),
BPF_ALU32_REG(BPF_DIV, R0, R1),
BPF_ALU64_REG(BPF_DIV, R0, R1),
BPF_ALU64_REG(BPF_DIV, R0, R1),
BPF_ALU64_REG(BPF_DIV, R2, R4),
BPF_ALU32_IMM(BPF_DIV, R0, 2),
BPF_ALU32_IMM(BPF_DIV, R0, 1),
BPF_ALU32_IMM(BPF_DIV, R0, 4294967295U),
BPF_ALU32_IMM(BPF_DIV, R2, 0xffffffff),
case BPF_DIV:
BPF_ALU64_IMM(BPF_DIV, R0, 2),
BPF_ALU64_IMM(BPF_DIV, R0, 1),
BPF_ALU64_IMM(BPF_DIV, R0, 2147483647),
BPF_ALU64_IMM(BPF_DIV, R2, 0xffffffff),
BPF_ALU32_REG_OFF(BPF_DIV, R0, R1, 1),
BPF_ALU32_IMM_OFF(BPF_DIV, R0, 2, 1),
BPF_ALU64_REG_OFF(BPF_DIV, R0, R1, 1),
BPF_ALU64_IMM_OFF(BPF_DIV, R0, 2, 1),
case BPF_ALU | BPF_DIV | BPF_K:
case BPF_ALU | BPF_DIV | BPF_X:
case BPF_ALU | BPF_DIV | BPF_K:
if (fp->code == (BPF_ALU | BPF_DIV | BPF_X) ||
[BPF_ALU | BPF_DIV | BPF_K] = true,
[BPF_ALU | BPF_DIV | BPF_X] = true,
#define BPF_ALU_DIV (BPF_ALU | BPF_DIV)
bpf_set_curr_instr(BPF_ALU | BPF_DIV | BPF_K, 0, 0, $3); }
bpf_set_curr_instr(BPF_ALU | BPF_DIV | BPF_X, 0, 0, 0); }
bpf_set_curr_instr(BPF_ALU | BPF_DIV | BPF_X, 0, 0, 0); }
return (BPF_OP(insn->code) == BPF_DIV || BPF_OP(insn->code) == BPF_MOD) &&
[BPF_DIV >> 4] = "/=",
[BPF_DIV >> 4] = "s/=",
DEFINE_BAD_OFFSET_TEST(bad_offset_divx, BPF_ALU64 | BPF_DIV | BPF_X, -1, 0)
DEFINE_BAD_OFFSET_TEST(bad_offset_divx2, BPF_ALU64 | BPF_DIV | BPF_X, 2, 0)
BPF_ALU32_REG(BPF_DIV, BPF_REG_3, BPF_REG_2),
BPF_ALU64_REG(BPF_DIV, BPF_REG_0, BPF_REG_1),
BPF_ALU64_IMM(BPF_DIV, BPF_REG_3, 0xfefeeeULL),
BPF_ALU32_REG(BPF_DIV, BPF_REG_1, BPF_REG_3),
BPF_ALU32_REG(BPF_DIV, BPF_REG_1, BPF_REG_1),
BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_2),
BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_2),
BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_7),
BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_7),