Lines Matching refs:rd

426 static inline void emit_mov_i_no8m(const u8 rd, u32 val, struct jit_ctx *ctx)  in emit_mov_i_no8m()  argument
429 emit(ARM_LDR_I(rd, ARM_PC, imm_offset(val, ctx)), ctx); in emit_mov_i_no8m()
431 emit(ARM_MOVW(rd, val & 0xffff), ctx); in emit_mov_i_no8m()
433 emit(ARM_MOVT(rd, val >> 16), ctx); in emit_mov_i_no8m()
437 static inline void emit_mov_i(const u8 rd, u32 val, struct jit_ctx *ctx) in emit_mov_i() argument
442 emit(ARM_MOV_I(rd, imm12), ctx); in emit_mov_i()
444 emit_mov_i_no8m(rd, val, ctx); in emit_mov_i()
477 static inline void emit_udivmod(u8 rd, u8 rm, u8 rn, struct jit_ctx *ctx, u8 op) in emit_udivmod() argument
485 emit(ARM_UDIV(rd, rm, rn), ctx); in emit_udivmod()
488 emit(ARM_MLS(rd, rn, ARM_IP, rm), ctx); in emit_udivmod()
523 if (rd != ARM_R0) in emit_udivmod()
524 emit(ARM_MOV_R(rd, ARM_R0), ctx); in emit_udivmod()
621 const s8 *rd = is_stacked(dst_lo) ? tmp : dst; in emit_a32_mov_i64() local
623 emit_mov_i(rd[1], (u32)val, ctx); in emit_a32_mov_i64()
624 emit_mov_i(rd[0], val >> 32, ctx); in emit_a32_mov_i64()
626 arm_bpf_put_reg64(dst, rd, ctx); in emit_a32_mov_i64()
722 s8 rn, rd; in emit_a32_alu_r() local
725 rd = arm_bpf_get_reg32(dst, tmp[0], ctx); in emit_a32_alu_r()
727 emit_alu_r(rd, rn, is64, hi, op, ctx); in emit_a32_alu_r()
728 arm_bpf_put_reg32(dst, rd, ctx); in emit_a32_alu_r()
737 const s8 *rd; in emit_a32_alu_r64() local
739 rd = arm_bpf_get_reg64(dst, tmp, ctx); in emit_a32_alu_r64()
746 emit_alu_r(rd[1], rs[1], true, false, op, ctx); in emit_a32_alu_r64()
747 emit_alu_r(rd[0], rs[0], true, true, op, ctx); in emit_a32_alu_r64()
754 emit_alu_r(rd[1], rs, true, false, op, ctx); in emit_a32_alu_r64()
756 emit_a32_mov_i(rd[0], 0, ctx); in emit_a32_alu_r64()
759 arm_bpf_put_reg64(dst, rd, ctx); in emit_a32_alu_r64()
805 s8 rd; in emit_a32_alu_i() local
807 rd = arm_bpf_get_reg32(dst, tmp[0], ctx); in emit_a32_alu_i()
812 emit(ARM_LSL_I(rd, rd, val), ctx); in emit_a32_alu_i()
815 emit(ARM_LSR_I(rd, rd, val), ctx); in emit_a32_alu_i()
818 emit(ARM_ASR_I(rd, rd, val), ctx); in emit_a32_alu_i()
821 emit(ARM_RSB_I(rd, rd, val), ctx); in emit_a32_alu_i()
825 arm_bpf_put_reg32(dst, rd, ctx); in emit_a32_alu_i()
832 const s8 *rd; in emit_a32_neg64() local
835 rd = arm_bpf_get_reg64(dst, tmp, ctx); in emit_a32_neg64()
838 emit(ARM_RSBS_I(rd[1], rd[1], 0), ctx); in emit_a32_neg64()
839 emit(ARM_RSC_I(rd[0], rd[0], 0), ctx); in emit_a32_neg64()
841 arm_bpf_put_reg64(dst, rd, ctx); in emit_a32_neg64()
849 const s8 *rd; in emit_a32_lsh_r64() local
854 rd = arm_bpf_get_reg64(dst, tmp, ctx); in emit_a32_lsh_r64()
859 emit(ARM_MOV_SR(ARM_LR, rd[0], SRTYPE_ASL, rt), ctx); in emit_a32_lsh_r64()
860 emit(ARM_ORR_SR(ARM_LR, ARM_LR, rd[1], SRTYPE_ASL, ARM_IP), ctx); in emit_a32_lsh_r64()
861 emit(ARM_ORR_SR(ARM_IP, ARM_LR, rd[1], SRTYPE_LSR, tmp2[0]), ctx); in emit_a32_lsh_r64()
862 emit(ARM_MOV_SR(ARM_LR, rd[1], SRTYPE_ASL, rt), ctx); in emit_a32_lsh_r64()
873 const s8 *rd; in emit_a32_arsh_r64() local
878 rd = arm_bpf_get_reg64(dst, tmp, ctx); in emit_a32_arsh_r64()
883 emit(ARM_MOV_SR(ARM_LR, rd[1], SRTYPE_LSR, rt), ctx); in emit_a32_arsh_r64()
884 emit(ARM_ORR_SR(ARM_LR, ARM_LR, rd[0], SRTYPE_ASL, ARM_IP), ctx); in emit_a32_arsh_r64()
886 ARM_ORR_SR(ARM_LR, ARM_LR, rd[0], SRTYPE_ASR, tmp2[0]), ctx); in emit_a32_arsh_r64()
887 emit(ARM_MOV_SR(ARM_IP, rd[0], SRTYPE_ASR, rt), ctx); in emit_a32_arsh_r64()
898 const s8 *rd; in emit_a32_rsh_r64() local
903 rd = arm_bpf_get_reg64(dst, tmp, ctx); in emit_a32_rsh_r64()
908 emit(ARM_MOV_SR(ARM_LR, rd[1], SRTYPE_LSR, rt), ctx); in emit_a32_rsh_r64()
909 emit(ARM_ORR_SR(ARM_LR, ARM_LR, rd[0], SRTYPE_ASL, ARM_IP), ctx); in emit_a32_rsh_r64()
910 emit(ARM_ORR_SR(ARM_LR, ARM_LR, rd[0], SRTYPE_LSR, tmp2[0]), ctx); in emit_a32_rsh_r64()
911 emit(ARM_MOV_SR(ARM_IP, rd[0], SRTYPE_LSR, rt), ctx); in emit_a32_rsh_r64()
922 const s8 *rd; in emit_a32_lsh_i64() local
925 rd = arm_bpf_get_reg64(dst, tmp, ctx); in emit_a32_lsh_i64()
929 emit(ARM_MOV_SI(tmp2[0], rd[0], SRTYPE_ASL, val), ctx); in emit_a32_lsh_i64()
930 emit(ARM_ORR_SI(rd[0], tmp2[0], rd[1], SRTYPE_LSR, 32 - val), ctx); in emit_a32_lsh_i64()
931 emit(ARM_MOV_SI(rd[1], rd[1], SRTYPE_ASL, val), ctx); in emit_a32_lsh_i64()
934 emit(ARM_MOV_R(rd[0], rd[1]), ctx); in emit_a32_lsh_i64()
936 emit(ARM_MOV_SI(rd[0], rd[1], SRTYPE_ASL, val - 32), ctx); in emit_a32_lsh_i64()
937 emit(ARM_EOR_R(rd[1], rd[1], rd[1]), ctx); in emit_a32_lsh_i64()
940 arm_bpf_put_reg64(dst, rd, ctx); in emit_a32_lsh_i64()
948 const s8 *rd; in emit_a32_rsh_i64() local
951 rd = arm_bpf_get_reg64(dst, tmp, ctx); in emit_a32_rsh_i64()
959 emit(ARM_MOV_SI(tmp2[1], rd[1], SRTYPE_LSR, val), ctx); in emit_a32_rsh_i64()
960 emit(ARM_ORR_SI(rd[1], tmp2[1], rd[0], SRTYPE_ASL, 32 - val), ctx); in emit_a32_rsh_i64()
961 emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_LSR, val), ctx); in emit_a32_rsh_i64()
963 emit(ARM_MOV_R(rd[1], rd[0]), ctx); in emit_a32_rsh_i64()
964 emit(ARM_MOV_I(rd[0], 0), ctx); in emit_a32_rsh_i64()
966 emit(ARM_MOV_SI(rd[1], rd[0], SRTYPE_LSR, val - 32), ctx); in emit_a32_rsh_i64()
967 emit(ARM_MOV_I(rd[0], 0), ctx); in emit_a32_rsh_i64()
970 arm_bpf_put_reg64(dst, rd, ctx); in emit_a32_rsh_i64()
978 const s8 *rd; in emit_a32_arsh_i64() local
981 rd = arm_bpf_get_reg64(dst, tmp, ctx); in emit_a32_arsh_i64()
989 emit(ARM_MOV_SI(tmp2[1], rd[1], SRTYPE_LSR, val), ctx); in emit_a32_arsh_i64()
990 emit(ARM_ORR_SI(rd[1], tmp2[1], rd[0], SRTYPE_ASL, 32 - val), ctx); in emit_a32_arsh_i64()
991 emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_ASR, val), ctx); in emit_a32_arsh_i64()
993 emit(ARM_MOV_R(rd[1], rd[0]), ctx); in emit_a32_arsh_i64()
994 emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_ASR, 31), ctx); in emit_a32_arsh_i64()
996 emit(ARM_MOV_SI(rd[1], rd[0], SRTYPE_ASR, val - 32), ctx); in emit_a32_arsh_i64()
997 emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_ASR, 31), ctx); in emit_a32_arsh_i64()
1000 arm_bpf_put_reg64(dst, rd, ctx); in emit_a32_arsh_i64()
1007 const s8 *rd, *rt; in emit_a32_mul_r64() local
1010 rd = arm_bpf_get_reg64(dst, tmp, ctx); in emit_a32_mul_r64()
1014 emit(ARM_MUL(ARM_IP, rd[1], rt[0]), ctx); in emit_a32_mul_r64()
1015 emit(ARM_MUL(ARM_LR, rd[0], rt[1]), ctx); in emit_a32_mul_r64()
1018 emit(ARM_UMULL(ARM_IP, rd[0], rd[1], rt[1]), ctx); in emit_a32_mul_r64()
1019 emit(ARM_ADD_R(rd[0], ARM_LR, rd[0]), ctx); in emit_a32_mul_r64()
1022 arm_bpf_put_reg32(dst_hi, rd[0], ctx); in emit_a32_mul_r64()
1049 s8 rd; in emit_str_r() local
1051 rd = arm_bpf_get_reg32(dst, tmp[1], ctx); in emit_str_r()
1055 emit(ARM_ADD_R(tmp[0], tmp[0], rd), ctx); in emit_str_r()
1056 rd = tmp[0]; in emit_str_r()
1062 emit(ARM_STRB_I(src_lo, rd, off), ctx); in emit_str_r()
1066 emit(ARM_STRH_I(src_lo, rd, off), ctx); in emit_str_r()
1070 emit(ARM_STR_I(src_lo, rd, off), ctx); in emit_str_r()
1074 emit(ARM_STR_I(src_lo, rd, off), ctx); in emit_str_r()
1075 emit(ARM_STR_I(src_hi, rd, off + 4), ctx); in emit_str_r()
1084 const s8 *rd = is_stacked(dst_lo) ? tmp : dst; in emit_ldx_r() local
1092 } else if (rd[1] == rm) { in emit_ldx_r()
1099 emit(ARM_LDRB_I(rd[1], rm, off), ctx); in emit_ldx_r()
1101 emit_a32_mov_i(rd[0], 0, ctx); in emit_ldx_r()
1105 emit(ARM_LDRH_I(rd[1], rm, off), ctx); in emit_ldx_r()
1107 emit_a32_mov_i(rd[0], 0, ctx); in emit_ldx_r()
1111 emit(ARM_LDR_I(rd[1], rm, off), ctx); in emit_ldx_r()
1113 emit_a32_mov_i(rd[0], 0, ctx); in emit_ldx_r()
1117 emit(ARM_LDR_I(rd[1], rm, off), ctx); in emit_ldx_r()
1118 emit(ARM_LDR_I(rd[0], rm, off + 4), ctx); in emit_ldx_r()
1121 arm_bpf_put_reg64(dst, rd, ctx); in emit_ldx_r()
1125 static inline void emit_ar_r(const u8 rd, const u8 rt, const u8 rm, in emit_ar_r() argument
1132 emit(ARM_AND_R(ARM_LR, rd, rm), ctx); in emit_ar_r()
1145 emit(ARM_CMP_R(rd, rm), ctx); in emit_ar_r()
1156 emit(ARM_SBCS_R(ARM_IP, rm, rd), ctx); in emit_ar_r()
1162 emit(ARM_SBCS_R(ARM_IP, rd, rm), ctx); in emit_ar_r()
1249 static inline void emit_rev16(const u8 rd, const u8 rn, struct jit_ctx *ctx) in emit_rev16() argument
1257 emit(ARM_ORR_SI(rd, tmp2[0], tmp2[1], SRTYPE_LSL, 8), ctx); in emit_rev16()
1259 emit(ARM_REV16(rd, rn), ctx); in emit_rev16()
1264 static inline void emit_rev32(const u8 rd, const u8 rn, struct jit_ctx *ctx) in emit_rev32() argument
1279 emit(ARM_ORR_R(rd, ARM_IP, tmp2[0]), ctx); in emit_rev32()
1282 emit(ARM_REV(rd, rn), ctx); in emit_rev32()
1374 const s8 *rd, *rs; in build_insn() local
1565 rd = arm_bpf_get_reg64(dst, tmp, ctx); in build_insn()
1570 emit_rev16(rd[1], rd[1], ctx); in build_insn()
1573 emit_rev32(rd[1], rd[1], ctx); in build_insn()
1576 emit_rev32(ARM_LR, rd[1], ctx); in build_insn()
1577 emit_rev32(rd[1], rd[0], ctx); in build_insn()
1578 emit(ARM_MOV_R(rd[0], ARM_LR), ctx); in build_insn()
1588 emit(ARM_AND_R(rd[1], rd[1], tmp2[1]), ctx); in build_insn()
1590 emit(ARM_UXTH(rd[1], rd[1]), ctx); in build_insn()
1593 emit(ARM_EOR_R(rd[0], rd[0], rd[0]), ctx); in build_insn()
1598 emit(ARM_EOR_R(rd[0], rd[0], rd[0]), ctx); in build_insn()
1605 arm_bpf_put_reg64(dst, rd, ctx); in build_insn()
1735 rd = arm_bpf_get_reg64(dst, tmp, ctx); in build_insn()
1738 emit_ar_r(rd[0], rd[1], rm, rn, ctx, BPF_OP(code), in build_insn()