BPF_RSH
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_RSH:
case BPF_RSH:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_RSH:
case BPF_RSH:
op = BPF_RSH;
case BPF_RSH:
case BPF_RSH:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_RSH:
case BPF_RSH:
case BPF_RSH:
case BPF_RSH:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_RSH:
case BPF_RSH:
case BPF_RSH:
case BPF_RSH:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X: /* (u32) dst >>= (u32) src */
case BPF_ALU64 | BPF_RSH | BPF_X: /* dst >>= src */
case BPF_ALU | BPF_RSH | BPF_K: /* (u32) dst >>= (u32) imm */
case BPF_ALU64 | BPF_RSH | BPF_K: /* dst >>= imm */
case BPF_ALU | BPF_RSH | BPF_X: /* (u32) dst >>= (u32) src */
case BPF_ALU64 | BPF_RSH | BPF_X: /* dst >>= src */
case BPF_ALU | BPF_RSH | BPF_K: /* (u32) dst >>= (u32) imm */
case BPF_ALU64 | BPF_RSH | BPF_K: /* dst >>= imm */
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_RSH:
case BPF_RSH:
case BPF_RSH:
case BPF_RSH:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X: /* dst = (u32) dst >> (u32) src */
case BPF_ALU64 | BPF_RSH | BPF_X: /* dst = dst >> src */
case BPF_ALU | BPF_RSH | BPF_K: /* dst = (u32) dst >> (u32) imm */
case BPF_ALU64 | BPF_RSH | BPF_K: /* dst = dst >> imm */
case BPF_ALU | BPF_RSH | BPF_X: /* A >>= X */
case BPF_ALU | BPF_RSH | BPF_K: /* A >>= K */
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_RSH:
[BPF_RSH] = 0xE8,
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_K:
case BPF_ALU64 | BPF_RSH | BPF_X:
case BPF_RSH:
[BPF_ALU64 | BPF_RSH | BPF_X] = shr_reg64,
[BPF_ALU64 | BPF_RSH | BPF_K] = shr_imm64,
[BPF_ALU | BPF_RSH | BPF_X] = shr_reg,
[BPF_ALU | BPF_RSH | BPF_K] = shr_imm,
next2.code == (BPF_RSH | BPF_K | BPF_ALU64)) &&
!(next1.code == (BPF_RSH | BPF_K | BPF_ALU64) &&
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X:
[BPF_RSH >> 4] = ">>=",
case BPF_RSH:
case BPF_RSH:
if ((opcode == BPF_LSH || opcode == BPF_RSH ||
insn_buf[cnt++] = BPF_ALU32_IMM(BPF_RSH,
insn_buf[cnt++] = BPF_ALU64_IMM(BPF_RSH,
insn_buf[1] = BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, BPF_TRAMP_IS_RETURN_SHIFT);
insn_buf[1] = BPF_ALU64_IMM(BPF_RSH, BPF_REG_0, BPF_TRAMP_COOKIE_INDEX_SHIFT);
*patch++ = BPF_ALU64_IMM(BPF_RSH, BPF_REG_AX, 32);
insn_buf[3] = BPF_ALU64_IMM(BPF_RSH, BPF_REG_2, 36);
case BPF_ALU | BPF_RSH | BPF_K:
case BPF_ALU | BPF_RSH | BPF_X:
BPF_ALU64_IMM(BPF_RSH, R1, 32),
BPF_ALU64_IMM(BPF_RSH, R1, 32), \
BPF_ALU64_IMM(BPF_RSH, R1, 32), \
BPF_ALU64_IMM(BPF_RSH, R2, 32),
BPF_ALU64_IMM(BPF_RSH, R1, 32), \
BPF_ALU64_IMM(BPF_RSH, R1, 32), \
if (op == BPF_LSH || op == BPF_RSH || op == BPF_ARSH)
insns[i++] = BPF_ALU64_IMM(BPF_RSH, rd, 32);
return __bpf_fill_alu_imm_regs(self, BPF_RSH, false);
return __bpf_fill_alu_imm_regs(self, BPF_RSH, true);
if (op == BPF_LSH || op == BPF_RSH || op == BPF_ARSH)
insns[i++] = BPF_ALU64_IMM(BPF_RSH, rd, 32);
return __bpf_fill_alu_reg_pairs(self, BPF_RSH, false);
return __bpf_fill_alu_reg_pairs(self, BPF_RSH, true);
insn[i++] = BPF_ALU64_IMM(BPF_RSH, R0, 32);
insn[i++] = BPF_ALU64_IMM(BPF_RSH, rs, 32);
BPF_STMT(BPF_ALU | BPF_RSH, 1),
BPF_STMT(BPF_ALU | BPF_RSH | BPF_K, 2),
BPF_ALU64_IMM(BPF_RSH, R1, 8),
BPF_ALU64_IMM(BPF_RSH, R1, 8),
BPF_ALU64_IMM(BPF_RSH, R2, 32),
BPF_ALU64_IMM(BPF_RSH, R2, 32),
BPF_ALU32_REG(BPF_RSH, R0, R1),
BPF_ALU64_IMM(BPF_RSH, R1, 32),
BPF_ALU64_IMM(BPF_RSH, R2, 32),
BPF_ALU64_IMM(BPF_RSH, R3, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32), /* R0 = 1 */
BPF_LSH, BPF_RSH, BPF_ARSH, BPF_ADD,
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
case BPF_RSH:
BPF_ALU64_IMM(BPF_RSH, R0, 32),
return __bpf_fill_alu_shift(self, BPF_RSH, BPF_K, false);
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
return __bpf_fill_alu_shift(self, BPF_RSH, BPF_X, false);
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
return __bpf_fill_alu_shift(self, BPF_RSH, BPF_K, true);
BPF_ALU32_REG(BPF_RSH, R0, R1),
BPF_ALU32_REG(BPF_RSH, R0, R1),
BPF_ALU32_REG(BPF_RSH, R0, R1),
BPF_ALU64_REG(BPF_RSH, R0, R1),
BPF_ALU64_REG(BPF_RSH, R0, R1),
BPF_ALU64_REG(BPF_RSH, R0, R1),
BPF_ALU64_REG(BPF_RSH, R0, R1),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_REG(BPF_RSH, R0, R1),
BPF_ALU64_REG(BPF_RSH, R0, R1),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_REG(BPF_RSH, R0, R1),
BPF_ALU64_REG(BPF_RSH, R0, R1),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_REG(BPF_RSH, R0, R1),
BPF_ALU64_REG(BPF_RSH, R0, R1),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
return __bpf_fill_alu_shift(self, BPF_RSH, BPF_X, true);
BPF_ALU32_IMM(BPF_RSH, R0, 1),
BPF_ALU32_IMM(BPF_RSH, R0, 31),
BPF_ALU32_IMM(BPF_RSH, R0, 20),
BPF_ALU32_IMM(BPF_RSH, R0, 0),
BPF_ALU64_IMM(BPF_RSH, R0, 1),
BPF_ALU64_IMM(BPF_RSH, R0, 31),
BPF_ALU64_IMM(BPF_RSH, R0, 12),
BPF_ALU64_IMM(BPF_RSH, R0, 12),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 36),
BPF_ALU64_IMM(BPF_RSH, R0, 36),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 0),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 12),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R1, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R1, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R1, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R1, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
return __bpf_fill_alu_shift_same_reg(self, BPF_RSH, false);
BPF_ALU64_IMM(BPF_RSH, R1, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
BPF_ALU64_IMM(BPF_RSH, R1, 32),
BPF_ALU64_IMM(BPF_RSH, R0, 32),
return __bpf_fill_alu_shift_same_reg(self, BPF_RSH, true);
BPF_ALU64_IMM(BPF_RSH, R1, 32), \
BPF_ALU64_IMM(BPF_RSH, R1, 32), \
BPF_ALU64_IMM(BPF_RSH, R1, 32), \
[BPF_ALU | BPF_RSH | BPF_K] = true,
[BPF_ALU | BPF_RSH | BPF_X] = true,
case BPF_ALU | BPF_RSH | BPF_K:
*insn++ = BPF_ALU32_IMM(BPF_RSH, dst_reg, 5);
case BPF_ALU | BPF_RSH | BPF_X:
case BPF_ALU | BPF_RSH | BPF_K:
*insn++ = BPF_ALU32_IMM(BPF_RSH, value_reg, SKB_TSTAMP_TYPE_RSHIFT);
*insn++ = BPF_ALU32_IMM(BPF_RSH, si->dst_reg, 5);
#define BPF_ALU_RSH (BPF_ALU | BPF_RSH)
bpf_set_curr_instr(BPF_ALU | BPF_RSH | BPF_K, 0, 0, $3); }
bpf_set_curr_instr(BPF_ALU | BPF_RSH | BPF_X, 0, 0, 0); }
bpf_set_curr_instr(BPF_ALU | BPF_RSH | BPF_X, 0, 0, 0); }
emit(gen, BPF_ALU64_IMM(BPF_RSH, BPF_REG_7, 32));
emit(gen, BPF_ALU64_IMM(BPF_RSH, BPF_REG_9, 32));
emit(gen, BPF_ALU64_IMM(BPF_RSH, BPF_REG_9, 32));
emit(gen, BPF_ALU64_IMM(BPF_RSH, BPF_REG_7, 32));
[BPF_RSH >> 4] = ">>=",
BPF_ALU64_IMM(BPF_RSH, BPF_REG_4, 1),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_4, 1),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_4, 1),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_4, 1),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_3, 4),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_4, 1),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_4, 1),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_4, 1),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_4, 1),
insn[i++] = BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 32);
BPF_ALU64_IMM(BPF_RSH, BPF_REG_7, 33)
BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 0),
BPF_ALU64_REG(BPF_RSH, BPF_REG_1, BPF_REG_3),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 1),
BPF_ALU32_IMM(BPF_RSH, BPF_REG_1, 1),
BPF_ALU64_REG(BPF_RSH, BPF_REG_1, BPF_REG_4),
BPF_ALU32_REG(BPF_RSH, BPF_REG_4, BPF_REG_0),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 32),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 32),
BPF_ALU64_IMM(BPF_RSH, BPF_REG_6, 10),