BPF_SIZE
len = load_r(buf, dst, src, off, BPF_SIZE(code), false);
len = load_r(buf, dst, src, off, BPF_SIZE(code), true);
len = store_r(buf, src, dst, off, BPF_SIZE(code));
len = store_i(buf, imm, dst, off, BPF_SIZE(code));
emit_ldsx_r(dst, rn, off, ctx, BPF_SIZE(code));
emit_ldx_r(dst, rn, off, ctx, BPF_SIZE(code));
switch (BPF_SIZE(code)) {
emit_str_r(dst_lo, tmp2, off, ctx, BPF_SIZE(code));
emit_str_r(dst_lo, rs, off, ctx, BPF_SIZE(code));
switch (BPF_SIZE(code)) {
switch (BPF_SIZE(code)) {
switch (BPF_SIZE(code)) {
switch (BPF_SIZE(code)) {
switch (BPF_SIZE(code)) {
const bool isdw = BPF_SIZE(code) == BPF_DW;
const bool isdw = BPF_SIZE(code) == BPF_DW;
switch (BPF_SIZE(code)) {
switch (BPF_SIZE(code)) {
switch (BPF_SIZE(code)) {
const bool isdw = BPF_SIZE(insn->code) == BPF_DW;
emit_ldx(ctx, dst, lo(src), off, BPF_SIZE(code));
switch (BPF_SIZE(code)) {
emit_stx(ctx, lo(dst), tmp, off, BPF_SIZE(code));
emit_stx(ctx, lo(dst), src, off, BPF_SIZE(code));
emit_ldx(ctx, dst, src, off, BPF_SIZE(code));
emit_stx(ctx, dst, MIPS_R_T4, off, BPF_SIZE(code));
emit_stx(ctx, dst, src, off, BPF_SIZE(code));
if (BPF_SIZE(code) == BPF_DW) {
if (BPF_SIZE(code) == BPF_DW) {
BPF_CLASS(code), code, (code & BPF_ALU64) ? 1:0, BPF_SIZE(code),
if (emit_load_r64(dst, src, off, ctx, BPF_SIZE(code)))
if (emit_store_r64(dst, src, off, ctx, BPF_SIZE(code),
switch (BPF_SIZE(code)) {
emit_store(rd, rs, off, ctx, BPF_SIZE(code), BPF_MODE(code));
u32 size = BPF_SIZE(code);
if (BPF_SIZE(code) == BPF_W || BPF_SIZE(code) == BPF_DW) {
if ((BPF_SIZE(code) == BPF_DW && (off & 3)) ||
(BPF_SIZE(code) == BPF_B &&
(BPF_SIZE(code) == BPF_B && BPF_MODE(code) == BPF_MEMSX))
u32 size = BPF_SIZE(insn->code);
switch (BPF_SIZE(code)) {
u32 size = BPF_SIZE(code);
u32 size = BPF_SIZE(code);
if (emit_load_r64(dst, src, off, ctx, BPF_SIZE(code)))
if (emit_store_r64(dst, src, off, ctx, BPF_SIZE(code),
if (emit_store_r64(dst, src, off, ctx, BPF_SIZE(code),
emit_ldx(rd, off, rs, BPF_SIZE(code), sign_ext, ctx);
if (BPF_SIZE(code) != BPF_DW && insn_is_zext(&insn[1]))
emit_st(rd, off, imm, BPF_SIZE(code), ctx);
emit_stx(rd, off, rs, BPF_SIZE(code), ctx);
emit_ldx(rd, off, rs, BPF_SIZE(code), false, ctx);
if (BPF_SIZE(code) != BPF_DW && insn_is_zext(&insn[1]))
emit_stx(rd, off, rs, BPF_SIZE(code), ctx);
bool is64 = BPF_SIZE(code) == BPF_DW;
if (BPF_SIZE(code) != BPF_W && BPF_SIZE(code) != BPF_DW) {
bool is32 = BPF_SIZE(insn->code) == BPF_W;
(BPF_SIZE(insn->code) == BPF_DW ||
BPF_SIZE(insn->code) == BPF_W) &&
switch (BPF_SIZE(code)) {
switch (BPF_SIZE(code)) {
switch (BPF_SIZE(code)) {
EMIT(imm32, bpf_size_to_x86_bytes(BPF_SIZE(insn->code)));
emit_stx(&prog, BPF_SIZE(insn->code), dst_reg, src_reg, insn->off);
emit_st_r12(&prog, BPF_SIZE(insn->code), dst_reg, insn->off, insn->imm);
emit_ldsx_r12(&prog, BPF_SIZE(insn->code), dst_reg, src_reg, insn->off);
emit_ldx_r12(&prog, BPF_SIZE(insn->code), dst_reg, src_reg, insn->off);
emit_stx_r12(&prog, BPF_SIZE(insn->code), dst_reg, src_reg, insn->off);
emit_ldsx(&prog, BPF_SIZE(insn->code), dst_reg, src_reg, insn_off);
emit_ldx(&prog, BPF_SIZE(insn->code), dst_reg, src_reg, insn_off);
bool is64 = BPF_SIZE(insn->code) == BPF_DW;
emit_ldx(&prog, BPF_SIZE(insn->code),
BPF_SIZE(insn->code));
insn->off, BPF_SIZE(insn->code));
insn->off, BPF_SIZE(insn->code));
BPF_SIZE(insn->code), dst_reg,
err = emit_atomic_rmw_index(&prog, insn->imm, BPF_SIZE(insn->code),
switch (BPF_SIZE(code)) {
EMIT(imm32, bpf_size_to_x86_bytes(BPF_SIZE(code)));
if (BPF_SIZE(code) == BPF_DW) {
switch (BPF_SIZE(code)) {
if (BPF_SIZE(code) == BPF_DW) {
switch (BPF_SIZE(code)) {
switch (BPF_SIZE(code)) {
if (!exp_mask[BPF_SIZE(insn.code)])
if (exp_mask[BPF_SIZE(insn.code)] != next.imm)
if (BPF_SIZE(insn.code) != BPF_W)
if (BPF_SIZE(ld->code) != BPF_SIZE(st->code))
else if (BPF_SIZE(meta->insn.code) != BPF_DW)
switch (BPF_SIZE(meta->insn.code)) {
if (BPF_SIZE(meta->insn.code) != BPF_DW)
.code = BPF_LD | BPF_SIZE(SIZE) | BPF_ABS, \
.code = BPF_LD | BPF_SIZE(SIZE) | BPF_IND, \
.code = BPF_LDX | BPF_SIZE(SIZE) | BPF_MEM, \
.code = BPF_LDX | BPF_SIZE(SIZE) | BPF_MEMSX, \
.code = BPF_STX | BPF_SIZE(SIZE) | BPF_MEM, \
.code = BPF_STX | BPF_SIZE(SIZE) | BPF_ATOMIC, \
.code = BPF_ST | BPF_SIZE(SIZE) | BPF_MEM, \
const int __size = bpf_size_to_bytes(BPF_SIZE((insn)->code)); \
BPF_SIZE(si->code), si->dst_reg, si->src_reg,
read_size = bpf_size_to_bytes(BPF_SIZE(si->code));
BPF_SIZE(si->code), si->dst_reg, si->dst_reg,
BPF_SIZE(from->code),
if (BPF_SIZE(insn->code) == BPF_W) \
else if (BPF_SIZE(insn->code) == BPF_DW) \
if (BPF_SIZE(insn->code) == BPF_W) \
else if (BPF_SIZE(insn->code) == BPF_DW) \
if (BPF_SIZE(insn->code) == BPF_W)
else if (BPF_SIZE(insn->code) == BPF_DW)
if (BPF_SIZE(insn->code) == BPF_W)
else if (BPF_SIZE(insn->code) == BPF_DW)
switch (BPF_SIZE(insn->code)) {
switch (BPF_SIZE(insn->code)) {
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
BPF_SIZE(insn->code) == BPF_DW ? "64" : "",
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
BPF_SIZE(insn->code) == BPF_DW ? "64" : "",
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
BPF_SIZE(insn->code) == BPF_DW ? "64" : "",
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3] :
bpf_ldsx_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
BPF_SIZE(insn->code) == BPF_DW) {
insns[i].code = BPF_LDX | BPF_SIZE(code) | BPF_MEM;
insns[i].code = BPF_CLASS(code) | BPF_SIZE(code) | BPF_MEM;
if (BPF_SIZE(insn->code) != BPF_DW) {
BPF_SIZE(insn->code) == BPF_DW ||
insn->off, BPF_SIZE(insn->code),
insn->code = BPF_STX | BPF_PROBE_ATOMIC | BPF_SIZE(insn->code);
BPF_SIZE((insn)->code);
BPF_SIZE((insn)->code);
insn->code = BPF_CLASS(insn->code) | BPF_PROBE_MEM32SX | BPF_SIZE(insn->code);
insn->code = BPF_CLASS(insn->code) | BPF_PROBE_MEM32 | BPF_SIZE(insn->code);
if (BPF_SIZE(insn->code) == BPF_DW) {
return BPF_SIZE(code) == BPF_DW || BPF_MODE(code) == BPF_MEMSX;
return BPF_SIZE(code) == BPF_DW;
BPF_SIZE(insn->code), BPF_READ, insn->dst_reg,
BPF_SIZE(insn->code), BPF_WRITE, insn->src_reg,
if (BPF_SIZE(insn->code) != BPF_W && BPF_SIZE(insn->code) != BPF_DW) {
BPF_SIZE(insn->code), BPF_READ, -1, true, false);
insn->off, BPF_SIZE(insn->code),
BPF_SIZE(insn->code), BPF_WRITE, -1, true, false);
if (BPF_SIZE(insn->code) == BPF_DW && BITS_PER_LONG != 64) {
if (BPF_SIZE(insn->code) == BPF_DW && BITS_PER_LONG != 64) {
BPF_SIZE(si->code), si->dst_reg, si->src_reg,
BPF_SIZE(si->code), si->dst_reg, si->src_reg,
BPF_SIZE(si->code), si->dst_reg, si->src_reg,
BPF_SIZE(si->code), si->dst_reg, si->src_reg,
sin_addr, BPF_SIZE(si->code), 0, tmp_reg);
sin6_addr.s6_addr32[0], BPF_SIZE(si->code), off,
s_addr, BPF_SIZE(si->code), 0, tmp_reg);
s6_addr32[0], BPF_SIZE(si->code), off, tmp_reg);
*insn++ = BPF_EMIT_STORE(BPF_SIZE(si->code), si, off);
*insn++ = BPF_LDX_MEM(BPF_SIZE(si->code), si->dst_reg,
int size = bpf_size_to_bytes(BPF_SIZE(fp->code));
bool endian = BPF_SIZE(fp->code) == BPF_H ||
BPF_SIZE(fp->code) == BPF_W;
*insn++ = BPF_LDX_MEM(BPF_SIZE(fp->code), BPF_REG_A,
*insn++ = BPF_LDX_MEM(BPF_SIZE(fp->code), BPF_REG_A,
switch (BPF_SIZE(fp->code)) {
switch (BPF_SIZE(orig->code)) {
*insn++ = BPF_EMIT_STORE(BPF_SIZE(si->code), si, off);
*insn++ = BPF_LDX_MEM(BPF_SIZE(si->code), si->dst_reg,
.code = BPF_LD | BPF_SIZE(SIZE) | BPF_ABS, \
.code = BPF_LDX | BPF_SIZE(SIZE) | BPF_MEM, \
.code = BPF_STX | BPF_SIZE(SIZE) | BPF_MEM, \
.code = BPF_STX | BPF_SIZE(SIZE) | BPF_ATOMIC, \
.code = BPF_ST | BPF_SIZE(SIZE) | BPF_MEM, \
.code = BPF_LD | BPF_SIZE(SIZE) | BPF_ABS, \
.code = BPF_LD | BPF_SIZE(SIZE) | BPF_IND, \
.code = BPF_LDX | BPF_SIZE(SIZE) | BPF_MEM, \
.code = BPF_STX | BPF_SIZE(SIZE) | BPF_MEM, \
.code = BPF_STX | BPF_SIZE(SIZE) | BPF_ATOMIC, \
.code = BPF_ST | BPF_SIZE(SIZE) | BPF_MEM, \
switch (BPF_SIZE(insn->code)) {
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
BPF_SIZE(insn->code) == BPF_DW ? "64" : "",
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
BPF_SIZE(insn->code) == BPF_DW ? "64" : "",
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
BPF_SIZE(insn->code) == BPF_DW ? "64" : "",
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3] :
bpf_ldsx_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
BPF_SIZE(insn->code) == BPF_DW) {