Lines Matching refs:dst
565 X86Instr* X86Instr_Alu32R ( X86AluOp op, X86RMI* src, HReg dst ) {
570 i->Xin.Alu32R.dst = dst;
573 X86Instr* X86Instr_Alu32M ( X86AluOp op, X86RI* src, X86AMode* dst ) {
578 i->Xin.Alu32M.dst = dst;
582 X86Instr* X86Instr_Sh32 ( X86ShiftOp op, UInt src, HReg dst ) {
587 i->Xin.Sh32.dst = dst;
590 X86Instr* X86Instr_Test32 ( UInt imm32, X86RM* dst ) {
594 i->Xin.Test32.dst = dst;
597 X86Instr* X86Instr_Unary32 ( X86UnaryOp op, HReg dst ) {
601 i->Xin.Unary32.dst = dst;
604 X86Instr* X86Instr_Lea32 ( X86AMode* am, HReg dst ) {
608 i->Xin.Lea32.dst = dst;
625 X86Instr* X86Instr_Sh3232 ( X86ShiftOp op, UInt amt, HReg src, HReg dst ) {
631 i->Xin.Sh3232.dst = dst;
650 X86Instr* X86Instr_Goto ( IRJumpKind jk, X86CondCode cond, X86RI* dst ) {
654 i->Xin.Goto.dst = dst;
658 X86Instr* X86Instr_CMov32 ( X86CondCode cond, X86RM* src, HReg dst ) {
663 i->Xin.CMov32.dst = dst;
668 X86AMode* src, HReg dst ) {
674 i->Xin.LoadEX.dst = dst;
678 X86Instr* X86Instr_Store ( UChar sz, HReg src, X86AMode* dst ) {
683 i->Xin.Store.dst = dst;
687 X86Instr* X86Instr_Set32 ( X86CondCode cond, HReg dst ) {
691 i->Xin.Set32.dst = dst;
694 X86Instr* X86Instr_Bsfr32 ( Bool isFwds, HReg src, HReg dst ) {
699 i->Xin.Bsfr32.dst = dst;
727 X86Instr* X86Instr_FpUnary ( X86FpOp op, HReg src, HReg dst ) {
732 i->Xin.FpUnary.dst = dst;
735 X86Instr* X86Instr_FpBinary ( X86FpOp op, HReg srcL, HReg srcR, HReg dst ) {
741 i->Xin.FpBinary.dst = dst;
765 X86Instr* X86Instr_Fp64to32 ( HReg src, HReg dst ) {
769 i->Xin.Fp64to32.dst = dst;
772 X86Instr* X86Instr_FpCMov ( X86CondCode cond, HReg src, HReg dst ) {
777 i->Xin.FpCMov.dst = dst;
792 X86Instr* X86Instr_FpCmp ( HReg srcL, HReg srcR, HReg dst ) {
797 i->Xin.FpCmp.dst = dst;
801 X86Instr* X86Instr_SseConst ( UShort con, HReg dst ) {
805 i->Xin.SseConst.dst = dst;
806 vassert(hregClass(dst) == HRcVec128);
827 X86Instr* X86Instr_Sse32Fx4 ( X86SseOp op, HReg src, HReg dst ) {
832 i->Xin.Sse32Fx4.dst = dst;
836 X86Instr* X86Instr_Sse32FLo ( X86SseOp op, HReg src, HReg dst ) {
841 i->Xin.Sse32FLo.dst = dst;
845 X86Instr* X86Instr_Sse64Fx2 ( X86SseOp op, HReg src, HReg dst ) {
850 i->Xin.Sse64Fx2.dst = dst;
854 X86Instr* X86Instr_Sse64FLo ( X86SseOp op, HReg src, HReg dst ) {
859 i->Xin.Sse64FLo.dst = dst;
868 i->Xin.SseReRg.dst = rg;
871 X86Instr* X86Instr_SseCMov ( X86CondCode cond, HReg src, HReg dst ) {
876 i->Xin.SseCMov.dst = dst;
880 X86Instr* X86Instr_SseShuf ( Int order, HReg src, HReg dst ) {
885 i->Xin.SseShuf.dst = dst;
897 ppHRegX86(i->Xin.Alu32R.dst);
903 ppX86AMode(i->Xin.Alu32M.dst);
911 ppHRegX86(i->Xin.Sh32.dst);
915 ppX86RM(i->Xin.Test32.dst);
919 ppHRegX86(i->Xin.Unary32.dst);
925 ppHRegX86(i->Xin.Lea32.dst);
943 ppHRegX86(i->Xin.Sh3232.dst);
969 ppX86RI(i->Xin.Goto.dst);
979 ppHRegX86(i->Xin.CMov32.dst);
987 ppHRegX86(i->Xin.LoadEX.dst);
993 ppX86AMode(i->Xin.Store.dst);
997 ppHRegX86(i->Xin.Set32.dst);
1003 ppHRegX86(i->Xin.Bsfr32.dst);
1024 ppHRegX86(i->Xin.FpUnary.dst);
1032 ppHRegX86(i->Xin.FpBinary.dst);
1068 ppHRegX86(i->Xin.Fp64to32.dst);
1074 ppHRegX86(i->Xin.FpCMov.dst);
1089 ppHRegX86(i->Xin.FpCmp.dst);
1093 ppHRegX86(i->Xin.SseConst.dst);
1117 ppHRegX86(i->Xin.Sse32Fx4.dst);
1123 ppHRegX86(i->Xin.Sse32FLo.dst);
1129 ppHRegX86(i->Xin.Sse64Fx2.dst);
1135 ppHRegX86(i->Xin.Sse64FLo.dst);
1141 ppHRegX86(i->Xin.SseReRg.dst);
1147 ppHRegX86(i->Xin.SseCMov.dst);
1153 ppHRegX86(i->Xin.SseShuf.dst);
1172 addHRegUse(u, HRmWrite, i->Xin.Alu32R.dst);
1176 addHRegUse(u, HRmRead, i->Xin.Alu32R.dst);
1179 addHRegUse(u, HRmModify, i->Xin.Alu32R.dst);
1183 addRegUsage_X86AMode(u, i->Xin.Alu32M.dst);
1186 addHRegUse(u, HRmModify, i->Xin.Sh32.dst);
1191 addRegUsage_X86RM(u, i->Xin.Test32.dst, HRmRead);
1194 addHRegUse(u, HRmModify, i->Xin.Unary32.dst);
1198 addHRegUse(u, HRmWrite, i->Xin.Lea32.dst);
1212 addHRegUse(u, HRmModify, i->Xin.Sh3232.dst);
1262 addRegUsage_X86RI(u, i->Xin.Goto.dst);
1274 addHRegUse(u, HRmModify, i->Xin.CMov32.dst);
1278 addHRegUse(u, HRmWrite, i->Xin.LoadEX.dst);
1282 addRegUsage_X86AMode(u, i->Xin.Store.dst);
1285 addHRegUse(u, HRmWrite, i->Xin.Set32.dst);
1289 addHRegUse(u, HRmWrite, i->Xin.Bsfr32.dst);
1307 addHRegUse(u, HRmWrite, i->Xin.FpUnary.dst);
1312 addHRegUse(u, HRmWrite, i->Xin.FpBinary.dst);
1326 addHRegUse(u, HRmWrite, i->Xin.Fp64to32.dst);
1330 addHRegUse(u, HRmModify, i->Xin.FpCMov.dst);
1341 addHRegUse(u, HRmWrite, i->Xin.FpCmp.dst);
1354 addHRegUse(u, HRmWrite, i->Xin.SseConst.dst);
1363 i->Xin.Sse32Fx4.dst);
1372 i->Xin.Sse32FLo.dst);
1381 i->Xin.Sse64Fx2.dst);
1390 i->Xin.Sse64FLo.dst);
1394 && i->Xin.SseReRg.src == i->Xin.SseReRg.dst) {
1397 addHRegUse(u, HRmWrite, i->Xin.SseReRg.dst);
1402 i->Xin.SseReRg.dst);
1407 addHRegUse(u, HRmModify, i->Xin.SseCMov.dst);
1411 addHRegUse(u, HRmWrite, i->Xin.SseShuf.dst);
1431 mapReg(m, &i->Xin.Alu32R.dst);
1435 mapRegs_X86AMode(m, i->Xin.Alu32M.dst);
1438 mapReg(m, &i->Xin.Sh32.dst);
1441 mapRegs_X86RM(m, i->Xin.Test32.dst);
1444 mapReg(m, &i->Xin.Unary32.dst);
1448 mapReg(m, &i->Xin.Lea32.dst);
1458 mapReg(m, &i->Xin.Sh3232.dst);
1466 dst);
1470 mapReg(m, &i->Xin.CMov32.dst);
1474 mapReg(m, &i->Xin.LoadEX.dst);
1478 mapRegs_X86AMode(m, i->Xin.Store.dst);
1481 mapReg(m, &i->Xin.Set32.dst);
1485 mapReg(m, &i->Xin.Bsfr32.dst);
1497 mapReg(m, &i->Xin.FpUnary.dst);
1502 mapReg(m, &i->Xin.FpBinary.dst);
1514 mapReg(m, &i->Xin.Fp64to32.dst);
1518 mapReg(m, &i->Xin.FpCMov.dst);
1528 mapReg(m, &i->Xin.FpCmp.dst);
1531 mapReg(m, &i->Xin.SseConst.dst);
1543 mapReg(m, &i->Xin.Sse32Fx4.dst);
1547 mapReg(m, &i->Xin.Sse32FLo.dst);
1551 mapReg(m, &i->Xin.Sse64Fx2.dst);
1555 mapReg(m, &i->Xin.Sse64FLo.dst);
1559 mapReg(m, &i->Xin.SseReRg.dst);
1563 mapReg(m, &i->Xin.SseCMov.dst);
1567 mapReg(m, &i->Xin.SseShuf.dst);
1576 source and destination to *src and *dst. If in doubt say No. Used
1579 Bool isMove_X86Instr ( X86Instr* i, HReg* src, HReg* dst )
1588 *dst = i->Xin.Alu32R.dst;
1596 *dst = i->Xin.FpUnary.dst;
1603 *dst = i->Xin.SseReRg.dst;
1673 /* Deal with form: src=RMI_Reg, dst=Reg where src == vreg
1674 Convert to: src=RMI_Mem, dst=Reg
1681 vassert(i->Xin.Alu32R.dst != vreg);
1685 i->Xin.Alu32R.dst
1689 /* Deal with form: src=RMI_Imm, dst=Reg where dst == vreg
1690 Convert to: src=RI_Imm, dst=Mem
1695 && i->Xin.Alu32R.dst == vreg) {
1714 /* Deal with form: CMov32(src=RM_Reg, dst) where vreg == src
1715 Convert to CMov32(RM_Mem, dst) */
1719 vassert(i->Xin.CMov32.dst != vreg);
1723 i->Xin.CMov32.dst
1729 && i->Xin.Test32.dst->tag == Xrm_Reg
1730 && i->Xin.Test32.dst->Xrm.Reg.reg == vreg) {
2016 *p++ = toUChar(0xB8 + iregNo(i->Xin.Alu32R.dst));
2022 i->Xin.Alu32R.dst);
2026 dst,
2039 p = doAMode_R(p, i->Xin.Alu32R.dst,
2045 p = doAMode_M(p, i->Xin.Alu32R.dst,
2051 p = doAMode_R(p, i->Xin.Alu32R.dst, i->Xin.Alu32R.dst);
2055 p = doAMode_R(p, i->Xin.Alu32R.dst, i->Xin.Alu32R.dst);
2086 if (i->Xin.Alu32R.dst == hregX86_EAX()
2093 p = doAMode_R(p, fake(subopc_imm), i->Xin.Alu32R.dst);
2097 p = doAMode_R(p, fake(subopc_imm), i->Xin.Alu32R.dst);
2104 i->Xin.Alu32R.dst);
2108 p = doAMode_M(p, i->Xin.Alu32R.dst,
2123 i->Xin.Alu32M.dst);
2127 p = doAMode_M(p, fake(0), i->Xin.Alu32M.dst);
2147 i->Xin.Alu32M.dst);
2152 p = doAMode_M(p, fake(subopc_imm), i->Xin.Alu32M.dst);
2157 p = doAMode_M(p, fake(subopc_imm), i->Xin.Alu32M.dst);
2176 p = doAMode_R(p, fake(subopc), i->Xin.Sh32.dst);
2179 p = doAMode_R(p, fake(subopc), i->Xin.Sh32.dst);
2185 if (i->Xin.Test32.dst->tag == Xrm_Reg) {
2188 p = doAMode_R(p, fake(0), i->Xin.Test32.dst->Xrm.Reg.reg);
2194 p = doAMode_M(p, fake(0), i->Xin.Test32.dst->Xrm.Mem.am);
2202 p = doAMode_R(p, fake(2), i->Xin.Unary32.dst);
2207 p = doAMode_R(p, fake(3), i->Xin.Unary32.dst);
2214 p = doAMode_M(p, i->Xin.Lea32.dst, i->Xin.Lea32.am);
2261 p = doAMode_R(p, i->Xin.Sh3232.src, i->Xin.Sh3232.dst);
2376 if (i->Xin.Goto.dst->tag == Xri_Imm) {
2379 p = emit32(p, i->Xin.Goto.dst->Xri.Imm.imm32);
2381 vassert(i->Xin.Goto.dst->tag == Xri_Reg);
2383 if (i->Xin.Goto.dst->Xri.Reg.reg != hregX86_EAX()) {
2385 p = doAMode_R(p, i->Xin.Goto.dst->Xri.Reg.reg, hregX86_EAX());
2418 p = doAMode_R(p, i->Xin.CMov32.dst, i->Xin.CMov32.src->Xrm.Reg.reg);
2422 p = doAMode_M(p, i->Xin.CMov32.dst, i->Xin.CMov32.src->Xrm.Mem.am);
2438 i->Xin.CMov32.dst);
2446 p = doAMode_M(p, i->Xin.CMov32.dst,
2463 p = doAMode_M(p, i->Xin.LoadEX.dst, i->Xin.LoadEX.src);
2470 p = doAMode_M(p, i->Xin.LoadEX.dst, i->Xin.LoadEX.src);
2477 p = doAMode_M(p, i->Xin.LoadEX.dst, i->Xin.LoadEX.src);
2492 if (iregNo(i->Xin.Set32.dst) >= 4) {
2493 /* xchg %eax, %dst */
2494 *p++ = toUChar(0x90 + iregNo(i->Xin.Set32.dst));
2502 /* xchg %eax, %dst */
2503 *p++ = toUChar(0x90 + iregNo(i->Xin.Set32.dst));
2505 /* movl $0, %dst */
2506 *p++ = toUChar(0xB8 + iregNo(i->Xin.Set32.dst));
2508 /* setb lo8(%dst) */
2511 p = doAMode_R(p, fake(0), i->Xin.Set32.dst);
2522 p = doAMode_R(p, i->Xin.Bsfr32.dst, i->Xin.Bsfr32.src);
2587 p = doAMode_M(p, i->Xin.Store.src, i->Xin.Store.dst);
2597 p = doAMode_M(p, i->Xin.Store.src, i->Xin.Store.dst);
2613 addRegUsage_X86AMode(&u, i->Xin.Store.dst);
2629 /* movb lo8{%swap}, (dst) */
2631 p = doAMode_M(p, swap, i->Xin.Store.dst);
2641 /* gop %src, %dst
2642 --> ffree %st7 ; fld %st(src) ; fop %st(0) ; fstp %st(1+dst)
2647 p = do_fstp_st(p, 1+hregNumber(i->Xin.FpUnary.dst));
2655 ffree %st7 ; fld %st(srcR+1) ; fyl2x{p1} ; fstp(1+dst) */
2662 p = do_fstp_st(p, 1+hregNumber(i->Xin.FpBinary.dst));
2668 ffree %st7 ; fld %st(srcR+1) ; fpatan ; fstp(1+dst) */
2674 p = do_fstp_st(p, 1+hregNumber(i->Xin.FpBinary.dst));
2682 ffree %st7 ; fld %st(srcL+1) ; fprem/fprem1/fscale ; fstp(2+dst) ;
2695 p = do_fstp_st(p, 2+hregNumber(i->Xin.FpBinary.dst));
2701 /* gop %srcL, %srcR, %dst
2702 --> ffree %st7 ; fld %st(srcL) ; fop %st(1+srcR) ; fstp %st(1+dst)
2708 p = do_fstp_st(p, 1+hregNumber(i->Xin.FpBinary.dst));
2807 /* fstp %st(1+dst) */
2808 p = do_fstp_st(p, 1+fregNo(i->Xin.Fp64to32.dst));
2817 /* ffree %st7 ; fld %st(src) ; fstp %st(1+dst) */
2820 p = do_fstp_st(p, 1+fregNo(i->Xin.FpCMov.dst));
2838 /* gcmp %fL, %fR, %dst
2840 fnstsw %ax ; movl %eax, %dst
2852 /* movl %eax, %dst */
2854 p = doAMode_R(p, hregX86_EAX(), i->Xin.FpCmp.dst);
2863 /* movl (%esp), %xmm-dst */
2866 *p++ = toUChar(0x04 + 8 * (7 & vregNo(i->Xin.SseConst.dst)));
2883 /* movs[sd] amode, %xmm-dst */
2910 p = doAMode_R(p, fake(vregNo(i->Xin.Sse32Fx4.dst)),
2936 p = doAMode_R(p, fake(vregNo(i->Xin.Sse64Fx2.dst)),
2962 p = doAMode_R(p, fake(vregNo(i->Xin.Sse32FLo.dst)),
2988 p = doAMode_R(p, fake(vregNo(i->Xin.Sse64FLo.dst)),
3053 p = doAMode_R(p, fake(vregNo(i->Xin.SseReRg.dst)),
3064 /* movaps %src, %dst */
3067 p = doAMode_R(p, fake(vregNo(i->Xin.SseCMov.dst)),
3078 p = doAMode_R(p, fake(vregNo(i->Xin.SseShuf.dst)),