Lines Matching refs:dst
209 static SLJIT_INLINE sljit_s32 emit_imm32_const(struct sljit_compiler *compiler, sljit_s32 dst, slji… in emit_imm32_const() argument
211 FAIL_IF(push_inst32(compiler, MOVW | RD4(dst) | in emit_imm32_const()
213 return push_inst32(compiler, MOVT | RD4(dst) | in emit_imm32_const()
219 sljit_s32 dst = inst[1] & 0x0f00; in modify_imm32_const() local
220 …SLJIT_ASSERT(((inst[0] & 0xfbf0) == (MOVW >> 16)) && ((inst[2] & 0xfbf0) == (MOVT >> 16)) && dst =… in modify_imm32_const()
222 inst[1] = dst | COPY_BITS(new_imm, 8, 12, 3) | (new_imm & 0xff); in modify_imm32_const()
224 inst[3] = dst | COPY_BITS(new_imm, 8 + 16, 12, 3) | ((new_imm & 0xff0000) >> 16); in modify_imm32_const()
511 static sljit_s32 load_immediate(struct sljit_compiler *compiler, sljit_s32 dst, sljit_uw imm) in load_immediate() argument
518 return push_inst32(compiler, MOV_WI | RD4(dst) | tmp); in load_immediate()
521 return push_inst32(compiler, MVN_WI | RD4(dst) | tmp); in load_immediate()
525 FAIL_IF(push_inst32(compiler, MOVW | RD4(dst) | in load_immediate()
530 return push_inst32(compiler, MOVT | RD4(dst) | in load_immediate()
541 static sljit_s32 emit_op_imm(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 dst, sljit… in emit_op_imm() argument
567 return load_immediate(compiler, dst, imm); in emit_op_imm()
570 return load_immediate(compiler, dst, ~imm); in emit_op_imm()
576 if (IS_2_LO_REGS(reg, dst)) { in emit_op_imm()
578 return push_inst16(compiler, ADDSI3 | IMM3(imm) | RD3(dst) | RN3(reg)); in emit_op_imm()
580 return push_inst16(compiler, SUBSI3 | IMM3(nimm) | RD3(dst) | RN3(reg)); in emit_op_imm()
581 if (reg == dst) { in emit_op_imm()
583 return push_inst16(compiler, ADDSI8 | IMM8(imm) | RDN3(dst)); in emit_op_imm()
585 return push_inst16(compiler, SUBSI8 | IMM8(nimm) | RDN3(dst)); in emit_op_imm()
590 return push_inst32(compiler, ADDWI | RD4(dst) | RN4(reg) | IMM12(imm)); in emit_op_imm()
592 return push_inst32(compiler, SUBWI | RD4(dst) | RN4(reg) | IMM12(nimm)); in emit_op_imm()
596 return push_inst32(compiler, ADD_WI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | nimm); in emit_op_imm()
599 return push_inst32(compiler, SUB_WI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | nimm); in emit_op_imm()
604 return push_inst32(compiler, ADCI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | imm); in emit_op_imm()
609 if (imm == 0 && IS_2_LO_REGS(reg, dst)) in emit_op_imm()
610 return push_inst16(compiler, RSBSI | RD3(dst) | RN3(reg)); in emit_op_imm()
613 return push_inst32(compiler, RSB_WI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | imm); in emit_op_imm()
627 if (IS_2_LO_REGS(reg, dst)) { in emit_op_imm()
629 return push_inst16(compiler, SUBSI3 | IMM3(imm) | RD3(dst) | RN3(reg)); in emit_op_imm()
631 return push_inst16(compiler, ADDSI3 | IMM3(nimm) | RD3(dst) | RN3(reg)); in emit_op_imm()
632 if (reg == dst) { in emit_op_imm()
634 return push_inst16(compiler, SUBSI8 | IMM8(imm) | RDN3(dst)); in emit_op_imm()
636 return push_inst16(compiler, ADDSI8 | IMM8(nimm) | RDN3(dst)); in emit_op_imm()
641 return push_inst32(compiler, SUBWI | RD4(dst) | RN4(reg) | IMM12(imm)); in emit_op_imm()
643 return push_inst32(compiler, ADDWI | RD4(dst) | RN4(reg) | IMM12(nimm)); in emit_op_imm()
647 return push_inst32(compiler, SUB_WI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | nimm); in emit_op_imm()
650 return push_inst32(compiler, ADD_WI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | nimm); in emit_op_imm()
657 return push_inst32(compiler, SBCI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | imm); in emit_op_imm()
662 return push_inst32(compiler, ANDI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | nimm); in emit_op_imm()
665 return push_inst32(compiler, BICI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | imm); in emit_op_imm()
670 return push_inst32(compiler, ORRI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | nimm); in emit_op_imm()
673 return push_inst32(compiler, ORNI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | imm); in emit_op_imm()
678 return push_inst32(compiler, EORI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | imm); in emit_op_imm()
688 return push_inst16(compiler, MOV | SET_REGS44(dst, reg)); in emit_op_imm()
689 if (IS_2_LO_REGS(dst, reg)) in emit_op_imm()
690 return push_inst16(compiler, MOVS | RD3(dst) | RN3(reg)); in emit_op_imm()
691 return push_inst32(compiler, MOV_W | SET_FLAGS | RD4(dst) | RM4(reg)); in emit_op_imm()
695 if (IS_2_LO_REGS(dst, reg)) in emit_op_imm()
696 return push_inst16(compiler, LSLSI | RD3(dst) | RN3(reg) | (imm << 6)); in emit_op_imm()
697 return push_inst32(compiler, LSL_WI | (flags & SET_FLAGS) | RD4(dst) | RM4(reg) | IMM5(imm)); in emit_op_imm()
699 if (IS_2_LO_REGS(dst, reg)) in emit_op_imm()
700 return push_inst16(compiler, LSRSI | RD3(dst) | RN3(reg) | (imm << 6)); in emit_op_imm()
701 return push_inst32(compiler, LSR_WI | (flags & SET_FLAGS) | RD4(dst) | RM4(reg) | IMM5(imm)); in emit_op_imm()
703 if (IS_2_LO_REGS(dst, reg)) in emit_op_imm()
704 return push_inst16(compiler, ASRSI | RD3(dst) | RN3(reg) | (imm << 6)); in emit_op_imm()
705 return push_inst32(compiler, ASR_WI | (flags & SET_FLAGS) | RD4(dst) | RM4(reg) | IMM5(imm)); in emit_op_imm()
737 if (dst == arg2) in emit_op_imm()
739 return push_inst16(compiler, MOV | SET_REGS44(dst, arg2)); in emit_op_imm()
743 if (IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
744 return push_inst16(compiler, UXTB | RD3(dst) | RN3(arg2)); in emit_op_imm()
745 return push_inst32(compiler, UXTB_W | RD4(dst) | RM4(arg2)); in emit_op_imm()
749 if (IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
750 return push_inst16(compiler, SXTB | RD3(dst) | RN3(arg2)); in emit_op_imm()
751 return push_inst32(compiler, SXTB_W | RD4(dst) | RM4(arg2)); in emit_op_imm()
755 if (IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
756 return push_inst16(compiler, UXTH | RD3(dst) | RN3(arg2)); in emit_op_imm()
757 return push_inst32(compiler, UXTH_W | RD4(dst) | RM4(arg2)); in emit_op_imm()
761 if (IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
762 return push_inst16(compiler, SXTH | RD3(dst) | RN3(arg2)); in emit_op_imm()
763 return push_inst32(compiler, SXTH_W | RD4(dst) | RM4(arg2)); in emit_op_imm()
766 if (IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
767 return push_inst16(compiler, MVNS | RD3(dst) | RN3(arg2)); in emit_op_imm()
768 return push_inst32(compiler, MVN_W | (flags & SET_FLAGS) | RD4(dst) | RM4(arg2)); in emit_op_imm()
771 FAIL_IF(push_inst32(compiler, CLZ | RN4(arg2) | RD4(dst) | RM4(arg2))); in emit_op_imm()
774 if (IS_3_LO_REGS(dst, arg1, arg2)) in emit_op_imm()
775 return push_inst16(compiler, ADDS | RD3(dst) | RN3(arg1) | RM3(arg2)); in emit_op_imm()
776 if (dst == arg1 && !(flags & SET_FLAGS)) in emit_op_imm()
777 return push_inst16(compiler, ADD | SET_REGS44(dst, arg2)); in emit_op_imm()
778 return push_inst32(compiler, ADD_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
780 if (dst == arg1 && IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
781 return push_inst16(compiler, ADCS | RD3(dst) | RN3(arg2)); in emit_op_imm()
782 return push_inst32(compiler, ADC_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
789 if (IS_3_LO_REGS(dst, arg1, arg2)) in emit_op_imm()
790 return push_inst16(compiler, SUBS | RD3(dst) | RN3(arg1) | RM3(arg2)); in emit_op_imm()
791 return push_inst32(compiler, SUB_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
793 if (dst == arg1 && IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
794 return push_inst16(compiler, SBCS | RD3(dst) | RN3(arg2)); in emit_op_imm()
795 return push_inst32(compiler, SBC_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
798 return push_inst32(compiler, MUL | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
799 SLJIT_ASSERT(dst != TMP_REG2); in emit_op_imm()
800 FAIL_IF(push_inst32(compiler, SMULL | RT4(dst) | RD4(TMP_REG2) | RN4(arg1) | RM4(arg2))); in emit_op_imm()
802 return push_inst32(compiler, CMP_W | RN4(TMP_REG2) | 0x70e0 | RM4(dst)); in emit_op_imm()
804 if (dst == arg1 && IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
805 return push_inst16(compiler, ANDS | RD3(dst) | RN3(arg2)); in emit_op_imm()
808 return push_inst32(compiler, AND_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
810 if (dst == arg1 && IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
811 return push_inst16(compiler, ORRS | RD3(dst) | RN3(arg2)); in emit_op_imm()
812 return push_inst32(compiler, ORR_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
814 if (dst == arg1 && IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
815 return push_inst16(compiler, EORS | RD3(dst) | RN3(arg2)); in emit_op_imm()
816 return push_inst32(compiler, EOR_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
818 if (dst == arg1 && IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
819 return push_inst16(compiler, LSLS | RD3(dst) | RN3(arg2)); in emit_op_imm()
820 return push_inst32(compiler, LSL_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
822 if (dst == arg1 && IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
823 return push_inst16(compiler, LSRS | RD3(dst) | RN3(arg2)); in emit_op_imm()
824 return push_inst32(compiler, LSR_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
826 if (dst == arg1 && IS_2_LO_REGS(dst, arg2)) in emit_op_imm()
827 return push_inst16(compiler, ASRS | RD3(dst) | RN3(arg2)); in emit_op_imm()
828 return push_inst32(compiler, ASR_W | (flags & SET_FLAGS) | RD4(dst) | RN4(arg1) | RM4(arg2)); in emit_op_imm()
919 static sljit_s32 emit_set_delta(struct sljit_compiler *compiler, sljit_s32 dst, sljit_s32 reg, slji… in emit_set_delta() argument
923 return push_inst32(compiler, ADDWI | RD4(dst) | RN4(reg) | IMM12(value)); in emit_set_delta()
926 return push_inst32(compiler, ADD_WI | RD4(dst) | RN4(reg) | value); in emit_set_delta()
931 return push_inst32(compiler, SUBWI | RD4(dst) | RN4(reg) | IMM12(value)); in emit_set_delta()
934 return push_inst32(compiler, SUB_WI | RD4(dst) | RN4(reg) | value); in emit_set_delta()
1271 sljit_s32 dst, sljit_sw dstw, in sljit_emit_op1() argument
1278 CHECK(check_sljit_emit_op1(compiler, op, dst, dstw, src, srcw)); in sljit_emit_op1()
1279 ADJUST_LOCAL_OFFSET(dst, dstw); in sljit_emit_op1()
1282 if (dst == SLJIT_UNUSED && !HAS_FLAGS(op)) { in sljit_emit_op1()
1289 dst_r = SLOW_IS_REG(dst) ? dst : TMP_REG1; in sljit_emit_op1()
1362 if (!(dst & SLJIT_MEM)) in sljit_emit_op1()
1365 …return emit_op_mem(compiler, flags | STORE, dst_r, dst, dstw, (dst_r == TMP_REG1) ? TMP_REG2 : TMP… in sljit_emit_op1()
1373 return sljit_emit_op2(compiler, SLJIT_SUB | op_flags, dst, dstw, SLJIT_IMM, 0, src, srcw); in sljit_emit_op1()
1389 if (!(dst & SLJIT_MEM)) in sljit_emit_op1()
1391 return emit_op_mem(compiler, flags | STORE, dst_r, dst, dstw, TMP_REG2); in sljit_emit_op1()
1395 sljit_s32 dst, sljit_sw dstw, in sljit_emit_op2() argument
1402 CHECK(check_sljit_emit_op2(compiler, op, dst, dstw, src1, src1w, src2, src2w)); in sljit_emit_op2()
1403 ADJUST_LOCAL_OFFSET(dst, dstw); in sljit_emit_op2()
1407 if (dst == SLJIT_UNUSED && !HAS_FLAGS(op)) in sljit_emit_op2()
1410 dst_reg = SLOW_IS_REG(dst) ? dst : TMP_REG1; in sljit_emit_op2()
1432 if (dst == SLJIT_UNUSED) in sljit_emit_op2()
1437 if (!(dst & SLJIT_MEM)) in sljit_emit_op2()
1439 return emit_op_mem(compiler, WORD_SIZE | STORE, dst_reg, dst, dstw, TMP_REG2); in sljit_emit_op2()
1517 sljit_s32 dst, sljit_sw dstw, in sljit_emit_fop1_conv_sw_from_f64() argument
1529 if (FAST_IS_REG(dst)) in sljit_emit_fop1_conv_sw_from_f64()
1530 return push_inst32(compiler, VMOV | (1 << 20) | RT4(dst) | DN4(TMP_FREG1)); in sljit_emit_fop1_conv_sw_from_f64()
1533 return emit_fop_mem(compiler, 0, TMP_FREG1, dst, dstw); in sljit_emit_fop1_conv_sw_from_f64()
1537 sljit_s32 dst, sljit_sw dstw, in sljit_emit_fop1_conv_f64_from_sw() argument
1540 sljit_s32 dst_r = FAST_IS_REG(dst) ? dst : TMP_FREG1; in sljit_emit_fop1_conv_f64_from_sw()
1557 if (dst & SLJIT_MEM) in sljit_emit_fop1_conv_f64_from_sw()
1558 return emit_fop_mem(compiler, (op & SLJIT_F32_OP), TMP_FREG1, dst, dstw); in sljit_emit_fop1_conv_f64_from_sw()
1583 sljit_s32 dst, sljit_sw dstw, in sljit_emit_fop1() argument
1591 SELECT_FOP1_OPERATION_WITH_CHECKS(compiler, op, dst, dstw, src, srcw); in sljit_emit_fop1()
1593 dst_r = FAST_IS_REG(dst) ? dst : TMP_FREG1; in sljit_emit_fop1()
1624 if (dst & SLJIT_MEM) in sljit_emit_fop1()
1625 return emit_fop_mem(compiler, (op & SLJIT_F32_OP), dst_r, dst, dstw); in sljit_emit_fop1()
1630 sljit_s32 dst, sljit_sw dstw, in sljit_emit_fop2() argument
1637 CHECK(check_sljit_emit_fop2(compiler, op, dst, dstw, src1, src1w, src2, src2w)); in sljit_emit_fop2()
1638 ADJUST_LOCAL_OFFSET(dst, dstw); in sljit_emit_fop2()
1644 dst_r = FAST_IS_REG(dst) ? dst : TMP_FREG1; in sljit_emit_fop2()
1669 if (!(dst & SLJIT_MEM)) in sljit_emit_fop2()
1671 return emit_fop_mem(compiler, (op & SLJIT_F32_OP), TMP_FREG1, dst, dstw); in sljit_emit_fop2()
1680 …BUTE sljit_s32 sljit_emit_fast_enter(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw) in sljit_emit_fast_enter() argument
1683 CHECK(check_sljit_emit_fast_enter(compiler, dst, dstw)); in sljit_emit_fast_enter()
1684 ADJUST_LOCAL_OFFSET(dst, dstw); in sljit_emit_fast_enter()
1688 if (FAST_IS_REG(dst)) in sljit_emit_fast_enter()
1689 return push_inst16(compiler, MOV | SET_REGS44(dst, TMP_REG2)); in sljit_emit_fast_enter()
1692 return emit_op_mem(compiler, WORD_SIZE | STORE, TMP_REG2, dst, dstw, TMP_REG1); in sljit_emit_fast_enter()
1850 sljit_s32 dst, sljit_sw dstw, in sljit_emit_op_flags() argument
1857 CHECK(check_sljit_emit_op_flags(compiler, op, dst, dstw, type)); in sljit_emit_op_flags()
1858 ADJUST_LOCAL_OFFSET(dst, dstw); in sljit_emit_op_flags()
1862 dst_r = FAST_IS_REG(dst) ? dst : TMP_REG1; in sljit_emit_op_flags()
1874 if (!(dst & SLJIT_MEM)) in sljit_emit_op_flags()
1876 return emit_op_mem(compiler, WORD_SIZE | STORE, TMP_REG1, dst, dstw, TMP_REG2); in sljit_emit_op_flags()
1879 if (dst & SLJIT_MEM) in sljit_emit_op_flags()
1880 FAIL_IF(emit_op_mem(compiler, WORD_SIZE, TMP_REG1, dst, dstw, TMP_REG2)); in sljit_emit_op_flags()
1892 if (dst & SLJIT_MEM) in sljit_emit_op_flags()
1893 FAIL_IF(emit_op_mem(compiler, WORD_SIZE | STORE, TMP_REG1, dst, dstw, TMP_REG2)); in sljit_emit_op_flags()
1952 …t sljit_const* sljit_emit_const(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw, slj… in sljit_emit_const() argument
1958 CHECK_PTR(check_sljit_emit_const(compiler, dst, dstw, init_value)); in sljit_emit_const()
1959 ADJUST_LOCAL_OFFSET(dst, dstw); in sljit_emit_const()
1965 dst_r = FAST_IS_REG(dst) ? dst : TMP_REG1; in sljit_emit_const()
1968 if (dst & SLJIT_MEM) in sljit_emit_const()
1969 PTR_FAIL_IF(emit_op_mem(compiler, WORD_SIZE | STORE, dst_r, dst, dstw, TMP_REG2)); in sljit_emit_const()