Lines Matching refs:imm

263 	u32 imm;  in rv_j_insn()  local
265 imm = (imm20_1 & 0x80000) | ((imm20_1 & 0x3ff) << 9) | in rv_j_insn()
268 return (imm << 12) | (rd << 7) | opcode; in rv_j_insn()
288 u32 imm; in rv_ci_insn() local
290 imm = ((imm6 & 0x20) << 7) | ((imm6 & 0x1f) << 2); in rv_ci_insn()
291 return (funct3 << 13) | (rd << 7) | op | imm; in rv_ci_insn()
326 u32 imm; in rv_cb_insn() local
328 imm = ((imm6 & 0x20) << 7) | ((imm6 & 0x1f) << 2); in rv_cb_insn()
329 return (funct3 << 13) | (funct2 << 10) | ((rd & 0x7) << 7) | op | imm; in rv_cb_insn()
585 u32 imm; in rvc_addi4spn() local
587 imm = ((imm10 & 0x30) << 2) | ((imm10 & 0x3c0) >> 4) | in rvc_addi4spn()
589 return rv_ciw_insn(0x0, imm, rd, 0x0); in rvc_addi4spn()
622 u32 imm; in rvc_addi16sp() local
624 imm = ((imm10 & 0x200) >> 4) | (imm10 & 0x10) | ((imm10 & 0x40) >> 3) | in rvc_addi16sp()
626 return rv_ci_insn(0x3, imm, RV_REG_SP, 0x1); in rvc_addi16sp()
676 u32 imm; in rvc_lwsp() local
678 imm = ((imm8 & 0xc0) >> 6) | (imm8 & 0x3c); in rvc_lwsp()
679 return rv_ci_insn(0x2, imm, rd, 0x2); in rvc_lwsp()
704 u32 imm; in rvc_swsp() local
706 imm = (imm8 & 0x3c) | ((imm8 & 0xc0) >> 6); in rvc_swsp()
707 return rv_css_insn(0x6, imm, rs2, 0x2); in rvc_swsp()
861 u32 imm; in rvc_ldsp() local
863 imm = ((imm9 & 0x1c0) >> 6) | (imm9 & 0x38); in rvc_ldsp()
864 return rv_ci_insn(0x3, imm, rd, 0x2); in rvc_ldsp()
869 u32 imm; in rvc_sdsp() local
871 imm = (imm9 & 0x38) | ((imm9 & 0x1c0) >> 6); in rvc_sdsp()
872 return rv_css_insn(0x7, imm, rs2, 0x2); in rvc_sdsp()
879 static inline void emit_jalr(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx) in emit_jalr() argument
881 if (rvc_enabled() && rd == RV_REG_RA && rs && !imm) in emit_jalr()
883 else if (rvc_enabled() && !rd && rs && !imm) in emit_jalr()
886 emit(rv_jalr(rd, rs, imm), ctx); in emit_jalr()
905 static inline void emit_addi(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx) in emit_addi() argument
907 if (rvc_enabled() && rd == RV_REG_SP && rd == rs && is_10b_int(imm) && imm && !(imm & 0xf)) in emit_addi()
908 emitc(rvc_addi16sp(imm), ctx); in emit_addi()
909 else if (rvc_enabled() && is_creg(rd) && rs == RV_REG_SP && is_10b_uint(imm) && in emit_addi()
910 !(imm & 0x3) && imm) in emit_addi()
911 emitc(rvc_addi4spn(rd, imm), ctx); in emit_addi()
912 else if (rvc_enabled() && rd && rd == rs && imm && is_6b_int(imm)) in emit_addi()
913 emitc(rvc_addi(rd, imm), ctx); in emit_addi()
915 emit(rv_addi(rd, rs, imm), ctx); in emit_addi()
918 static inline void emit_li(u8 rd, s32 imm, struct rv_jit_context *ctx) in emit_li() argument
920 if (rvc_enabled() && rd && is_6b_int(imm)) in emit_li()
921 emitc(rvc_li(rd, imm), ctx); in emit_li()
923 emit(rv_addi(rd, RV_REG_ZERO, imm), ctx); in emit_li()
926 static inline void emit_lui(u8 rd, s32 imm, struct rv_jit_context *ctx) in emit_lui() argument
928 if (rvc_enabled() && rd && rd != RV_REG_SP && is_6b_int(imm) && imm) in emit_lui()
929 emitc(rvc_lui(rd, imm), ctx); in emit_lui()
931 emit(rv_lui(rd, imm), ctx); in emit_lui()
934 static inline void emit_slli(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx) in emit_slli() argument
936 if (rvc_enabled() && rd && rd == rs && imm && (u32)imm < __riscv_xlen) in emit_slli()
937 emitc(rvc_slli(rd, imm), ctx); in emit_slli()
939 emit(rv_slli(rd, rs, imm), ctx); in emit_slli()
942 static inline void emit_andi(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx) in emit_andi() argument
944 if (rvc_enabled() && is_creg(rd) && rd == rs && is_6b_int(imm)) in emit_andi()
945 emitc(rvc_andi(rd, imm), ctx); in emit_andi()
947 emit(rv_andi(rd, rs, imm), ctx); in emit_andi()
950 static inline void emit_srli(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx) in emit_srli() argument
952 if (rvc_enabled() && is_creg(rd) && rd == rs && imm && (u32)imm < __riscv_xlen) in emit_srli()
953 emitc(rvc_srli(rd, imm), ctx); in emit_srli()
955 emit(rv_srli(rd, rs, imm), ctx); in emit_srli()
958 static inline void emit_srai(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx) in emit_srai() argument
960 if (rvc_enabled() && is_creg(rd) && rd == rs && imm && (u32)imm < __riscv_xlen) in emit_srai()
961 emitc(rvc_srai(rd, imm), ctx); in emit_srai()
963 emit(rv_srai(rd, rs, imm), ctx); in emit_srai()
1021 static inline void emit_addiw(u8 rd, u8 rs, s32 imm, struct rv_jit_context *ctx) in emit_addiw() argument
1023 if (rvc_enabled() && rd && rd == rs && is_6b_int(imm)) in emit_addiw()
1024 emitc(rvc_addiw(rd, imm), ctx); in emit_addiw()
1026 emit(rv_addiw(rd, rs, imm), ctx); in emit_addiw()