Lines Matching refs:imm

262 	u32 imm;
264 imm = (imm20_1 & 0x80000) | ((imm20_1 & 0x3ff) << 9) |
267 return (imm << 12) | (rd << 7) | opcode;
287 u32 imm;
289 imm = ((imm6 & 0x20) << 7) | ((imm6 & 0x1f) << 2);
290 return (funct3 << 13) | (rd << 7) | op | imm;
325 u32 imm;
327 imm = ((imm6 & 0x20) << 7) | ((imm6 & 0x1f) << 2);
328 return (funct3 << 13) | (funct2 << 10) | ((rd & 0x7) << 7) | op | imm;
542 u32 imm;
544 imm = ((imm10 & 0x30) << 2) | ((imm10 & 0x3c0) >> 4) |
546 return rv_ciw_insn(0x0, imm, rd, 0x0);
579 u32 imm;
581 imm = ((imm10 & 0x200) >> 4) | (imm10 & 0x10) | ((imm10 & 0x40) >> 3) |
583 return rv_ci_insn(0x3, imm, RV_REG_SP, 0x1);
633 u32 imm;
635 imm = ((imm8 & 0xc0) >> 6) | (imm8 & 0x3c);
636 return rv_ci_insn(0x2, imm, rd, 0x2);
661 u32 imm;
663 imm = (imm8 & 0x3c) | ((imm8 & 0xc0) >> 6);
664 return rv_css_insn(0x6, imm, rs2, 0x2);
788 u32 imm;
790 imm = ((imm9 & 0x1c0) >> 6) | (imm9 & 0x38);
791 return rv_ci_insn(0x3, imm, rd, 0x2);
796 u32 imm;
798 imm = (imm9 & 0x38) | ((imm9 & 0x1c0) >> 6);
799 return rv_css_insn(0x7, imm, rs2, 0x2);
806 static inline void emit_jalr(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx)
808 if (rvc_enabled() && rd == RV_REG_RA && rs && !imm)
810 else if (rvc_enabled() && !rd && rs && !imm)
813 emit(rv_jalr(rd, rs, imm), ctx);
832 static inline void emit_addi(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx)
834 if (rvc_enabled() && rd == RV_REG_SP && rd == rs && is_10b_int(imm) && imm && !(imm & 0xf))
835 emitc(rvc_addi16sp(imm), ctx);
836 else if (rvc_enabled() && is_creg(rd) && rs == RV_REG_SP && is_10b_uint(imm) &&
837 !(imm & 0x3) && imm)
838 emitc(rvc_addi4spn(rd, imm), ctx);
839 else if (rvc_enabled() && rd && rd == rs && imm && is_6b_int(imm))
840 emitc(rvc_addi(rd, imm), ctx);
842 emit(rv_addi(rd, rs, imm), ctx);
845 static inline void emit_li(u8 rd, s32 imm, struct rv_jit_context *ctx)
847 if (rvc_enabled() && rd && is_6b_int(imm))
848 emitc(rvc_li(rd, imm), ctx);
850 emit(rv_addi(rd, RV_REG_ZERO, imm), ctx);
853 static inline void emit_lui(u8 rd, s32 imm, struct rv_jit_context *ctx)
855 if (rvc_enabled() && rd && rd != RV_REG_SP && is_6b_int(imm) && imm)
856 emitc(rvc_lui(rd, imm), ctx);
858 emit(rv_lui(rd, imm), ctx);
861 static inline void emit_slli(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx)
863 if (rvc_enabled() && rd && rd == rs && imm && (u32)imm < __riscv_xlen)
864 emitc(rvc_slli(rd, imm), ctx);
866 emit(rv_slli(rd, rs, imm), ctx);
869 static inline void emit_andi(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx)
871 if (rvc_enabled() && is_creg(rd) && rd == rs && is_6b_int(imm))
872 emitc(rvc_andi(rd, imm), ctx);
874 emit(rv_andi(rd, rs, imm), ctx);
877 static inline void emit_srli(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx)
879 if (rvc_enabled() && is_creg(rd) && rd == rs && imm && (u32)imm < __riscv_xlen)
880 emitc(rvc_srli(rd, imm), ctx);
882 emit(rv_srli(rd, rs, imm), ctx);
885 static inline void emit_srai(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx)
887 if (rvc_enabled() && is_creg(rd) && rd == rs && imm && (u32)imm < __riscv_xlen)
888 emitc(rvc_srai(rd, imm), ctx);
890 emit(rv_srai(rd, rs, imm), ctx);
948 static inline void emit_addiw(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx)
950 if (rvc_enabled() && rd && rd == rs && is_6b_int(imm))
951 emitc(rvc_addiw(rd, imm), ctx);
953 emit(rv_addiw(rd, rs, imm), ctx);