Lines Matching refs:val
426 static inline void emit_mov_i_no8m(const u8 rd, u32 val, struct jit_ctx *ctx)
429 emit(ARM_LDR_I(rd, ARM_PC, imm_offset(val, ctx)), ctx);
431 emit(ARM_MOVW(rd, val & 0xffff), ctx);
432 if (val > 0xffff)
433 emit(ARM_MOVT(rd, val >> 16), ctx);
437 static inline void emit_mov_i(const u8 rd, u32 val, struct jit_ctx *ctx)
439 int imm12 = imm8m(val);
444 emit_mov_i_no8m(rd, val, ctx);
605 static inline void emit_a32_mov_i(const s8 dst, const u32 val,
611 emit_mov_i(tmp[1], val, ctx);
614 emit_mov_i(dst, val, ctx);
618 static void emit_a32_mov_i64(const s8 dst[], u64 val, struct jit_ctx *ctx)
623 emit_mov_i(rd[1], (u32)val, ctx);
624 emit_mov_i(rd[0], val >> 32, ctx);
631 const u32 val, struct jit_ctx *ctx) {
632 u64 val64 = val;
634 if (is64 && (val & (1<<31)))
802 static inline void emit_a32_alu_i(const s8 dst, const u32 val,
812 emit(ARM_LSL_I(rd, rd, val), ctx);
815 emit(ARM_LSR_I(rd, rd, val), ctx);
818 emit(ARM_ASR_I(rd, rd, val), ctx);
821 emit(ARM_RSB_I(rd, rd, val), ctx);
917 /* dst = dst << val */
919 const u32 val, struct jit_ctx *ctx){
928 if (val < 32) {
929 emit(ARM_MOV_SI(tmp2[0], rd[0], SRTYPE_ASL, val), ctx);
930 emit(ARM_ORR_SI(rd[0], tmp2[0], rd[1], SRTYPE_LSR, 32 - val), ctx);
931 emit(ARM_MOV_SI(rd[1], rd[1], SRTYPE_ASL, val), ctx);
933 if (val == 32)
936 emit(ARM_MOV_SI(rd[0], rd[1], SRTYPE_ASL, val - 32), ctx);
943 /* dst = dst >> val */
945 const u32 val, struct jit_ctx *ctx) {
954 if (val == 0) {
958 } else if (val < 32) {
959 emit(ARM_MOV_SI(tmp2[1], rd[1], SRTYPE_LSR, val), ctx);
960 emit(ARM_ORR_SI(rd[1], tmp2[1], rd[0], SRTYPE_ASL, 32 - val), ctx);
961 emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_LSR, val), ctx);
962 } else if (val == 32) {
966 emit(ARM_MOV_SI(rd[1], rd[0], SRTYPE_LSR, val - 32), ctx);
973 /* dst = dst >> val (signed) */
975 const u32 val, struct jit_ctx *ctx){
984 if (val == 0) {
988 } else if (val < 32) {
989 emit(ARM_MOV_SI(tmp2[1], rd[1], SRTYPE_LSR, val), ctx);
990 emit(ARM_ORR_SI(rd[1], tmp2[1], rd[0], SRTYPE_ASL, 32 - val), ctx);
991 emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_ASR, val), ctx);
992 } else if (val == 32) {
996 emit(ARM_MOV_SI(rd[1], rd[0], SRTYPE_ASR, val - 32), ctx);
1610 u64 val = (u32)imm | (u64)insn[1].imm << 32;
1612 emit_a32_mov_i64(dst, val, ctx);