• Home
  • Raw
  • Download

Lines Matching refs:Ain

592    i->Ain.Imm64.imm64 = imm64;  in AMD64Instr_Imm64()
593 i->Ain.Imm64.dst = dst; in AMD64Instr_Imm64()
599 i->Ain.Alu64R.op = op; in AMD64Instr_Alu64R()
600 i->Ain.Alu64R.src = src; in AMD64Instr_Alu64R()
601 i->Ain.Alu64R.dst = dst; in AMD64Instr_Alu64R()
607 i->Ain.Alu64M.op = op; in AMD64Instr_Alu64M()
608 i->Ain.Alu64M.src = src; in AMD64Instr_Alu64M()
609 i->Ain.Alu64M.dst = dst; in AMD64Instr_Alu64M()
616 i->Ain.Sh64.op = op; in AMD64Instr_Sh64()
617 i->Ain.Sh64.src = src; in AMD64Instr_Sh64()
618 i->Ain.Sh64.dst = dst; in AMD64Instr_Sh64()
624 i->Ain.Test64.imm32 = imm32; in AMD64Instr_Test64()
625 i->Ain.Test64.dst = dst; in AMD64Instr_Test64()
631 i->Ain.Unary64.op = op; in AMD64Instr_Unary64()
632 i->Ain.Unary64.dst = dst; in AMD64Instr_Unary64()
638 i->Ain.Lea64.am = am; in AMD64Instr_Lea64()
639 i->Ain.Lea64.dst = dst; in AMD64Instr_Lea64()
645 i->Ain.Alu32R.op = op; in AMD64Instr_Alu32R()
646 i->Ain.Alu32R.src = src; in AMD64Instr_Alu32R()
647 i->Ain.Alu32R.dst = dst; in AMD64Instr_Alu32R()
658 i->Ain.MulL.syned = syned; in AMD64Instr_MulL()
659 i->Ain.MulL.src = src; in AMD64Instr_MulL()
665 i->Ain.Div.syned = syned; in AMD64Instr_Div()
666 i->Ain.Div.sz = sz; in AMD64Instr_Div()
667 i->Ain.Div.src = src; in AMD64Instr_Div()
674 i->Ain.Push.src = src; in AMD64Instr_Push()
681 i->Ain.Call.cond = cond; in AMD64Instr_Call()
682 i->Ain.Call.target = target; in AMD64Instr_Call()
683 i->Ain.Call.regparms = regparms; in AMD64Instr_Call()
684 i->Ain.Call.rloc = rloc; in AMD64Instr_Call()
694 i->Ain.XDirect.dstGA = dstGA; in AMD64Instr_XDirect()
695 i->Ain.XDirect.amRIP = amRIP; in AMD64Instr_XDirect()
696 i->Ain.XDirect.cond = cond; in AMD64Instr_XDirect()
697 i->Ain.XDirect.toFastEP = toFastEP; in AMD64Instr_XDirect()
704 i->Ain.XIndir.dstGA = dstGA; in AMD64Instr_XIndir()
705 i->Ain.XIndir.amRIP = amRIP; in AMD64Instr_XIndir()
706 i->Ain.XIndir.cond = cond; in AMD64Instr_XIndir()
713 i->Ain.XAssisted.dstGA = dstGA; in AMD64Instr_XAssisted()
714 i->Ain.XAssisted.amRIP = amRIP; in AMD64Instr_XAssisted()
715 i->Ain.XAssisted.cond = cond; in AMD64Instr_XAssisted()
716 i->Ain.XAssisted.jk = jk; in AMD64Instr_XAssisted()
723 i->Ain.CMov64.cond = cond; in AMD64Instr_CMov64()
724 i->Ain.CMov64.src = src; in AMD64Instr_CMov64()
725 i->Ain.CMov64.dst = dst; in AMD64Instr_CMov64()
733 i->Ain.CLoad.cond = cond; in AMD64Instr_CLoad()
734 i->Ain.CLoad.szB = szB; in AMD64Instr_CLoad()
735 i->Ain.CLoad.addr = addr; in AMD64Instr_CLoad()
736 i->Ain.CLoad.dst = dst; in AMD64Instr_CLoad()
744 i->Ain.CStore.cond = cond; in AMD64Instr_CStore()
745 i->Ain.CStore.szB = szB; in AMD64Instr_CStore()
746 i->Ain.CStore.src = src; in AMD64Instr_CStore()
747 i->Ain.CStore.addr = addr; in AMD64Instr_CStore()
754 i->Ain.MovxLQ.syned = syned; in AMD64Instr_MovxLQ()
755 i->Ain.MovxLQ.src = src; in AMD64Instr_MovxLQ()
756 i->Ain.MovxLQ.dst = dst; in AMD64Instr_MovxLQ()
763 i->Ain.LoadEX.szSmall = szSmall; in AMD64Instr_LoadEX()
764 i->Ain.LoadEX.syned = syned; in AMD64Instr_LoadEX()
765 i->Ain.LoadEX.src = src; in AMD64Instr_LoadEX()
766 i->Ain.LoadEX.dst = dst; in AMD64Instr_LoadEX()
773 i->Ain.Store.sz = sz; in AMD64Instr_Store()
774 i->Ain.Store.src = src; in AMD64Instr_Store()
775 i->Ain.Store.dst = dst; in AMD64Instr_Store()
782 i->Ain.Set64.cond = cond; in AMD64Instr_Set64()
783 i->Ain.Set64.dst = dst; in AMD64Instr_Set64()
789 i->Ain.Bsfr64.isFwds = isFwds; in AMD64Instr_Bsfr64()
790 i->Ain.Bsfr64.src = src; in AMD64Instr_Bsfr64()
791 i->Ain.Bsfr64.dst = dst; in AMD64Instr_Bsfr64()
802 i->Ain.ACAS.addr = addr; in AMD64Instr_ACAS()
803 i->Ain.ACAS.sz = sz; in AMD64Instr_ACAS()
810 i->Ain.DACAS.addr = addr; in AMD64Instr_DACAS()
811 i->Ain.DACAS.sz = sz; in AMD64Instr_DACAS()
820 i->Ain.A87Free.nregs = nregs; in AMD64Instr_A87Free()
828 i->Ain.A87PushPop.addr = addr; in AMD64Instr_A87PushPop()
829 i->Ain.A87PushPop.isPush = isPush; in AMD64Instr_A87PushPop()
830 i->Ain.A87PushPop.szB = szB; in AMD64Instr_A87PushPop()
838 i->Ain.A87FpOp.op = op; in AMD64Instr_A87FpOp()
845 i->Ain.A87LdCW.addr = addr; in AMD64Instr_A87LdCW()
852 i->Ain.A87StSW.addr = addr; in AMD64Instr_A87StSW()
858 i->Ain.LdMXCSR.addr = addr; in AMD64Instr_LdMXCSR()
864 i->Ain.SseUComIS.sz = toUChar(sz); in AMD64Instr_SseUComIS()
865 i->Ain.SseUComIS.srcL = srcL; in AMD64Instr_SseUComIS()
866 i->Ain.SseUComIS.srcR = srcR; in AMD64Instr_SseUComIS()
867 i->Ain.SseUComIS.dst = dst; in AMD64Instr_SseUComIS()
874 i->Ain.SseSI2SF.szS = toUChar(szS); in AMD64Instr_SseSI2SF()
875 i->Ain.SseSI2SF.szD = toUChar(szD); in AMD64Instr_SseSI2SF()
876 i->Ain.SseSI2SF.src = src; in AMD64Instr_SseSI2SF()
877 i->Ain.SseSI2SF.dst = dst; in AMD64Instr_SseSI2SF()
885 i->Ain.SseSF2SI.szS = toUChar(szS); in AMD64Instr_SseSF2SI()
886 i->Ain.SseSF2SI.szD = toUChar(szD); in AMD64Instr_SseSF2SI()
887 i->Ain.SseSF2SI.src = src; in AMD64Instr_SseSF2SI()
888 i->Ain.SseSF2SI.dst = dst; in AMD64Instr_SseSF2SI()
897 i->Ain.SseSDSS.from64 = from64; in AMD64Instr_SseSDSS()
898 i->Ain.SseSDSS.src = src; in AMD64Instr_SseSDSS()
899 i->Ain.SseSDSS.dst = dst; in AMD64Instr_SseSDSS()
906 i->Ain.SseLdSt.isLoad = isLoad; in AMD64Instr_SseLdSt()
907 i->Ain.SseLdSt.sz = toUChar(sz); in AMD64Instr_SseLdSt()
908 i->Ain.SseLdSt.reg = reg; in AMD64Instr_SseLdSt()
909 i->Ain.SseLdSt.addr = addr; in AMD64Instr_SseLdSt()
918 i->Ain.SseCStore.cond = cond; in AMD64Instr_SseCStore()
919 i->Ain.SseCStore.src = src; in AMD64Instr_SseCStore()
920 i->Ain.SseCStore.addr = addr; in AMD64Instr_SseCStore()
929 i->Ain.SseCLoad.cond = cond; in AMD64Instr_SseCLoad()
930 i->Ain.SseCLoad.addr = addr; in AMD64Instr_SseCLoad()
931 i->Ain.SseCLoad.dst = dst; in AMD64Instr_SseCLoad()
939 i->Ain.SseLdzLO.sz = sz; in AMD64Instr_SseLdzLO()
940 i->Ain.SseLdzLO.reg = reg; in AMD64Instr_SseLdzLO()
941 i->Ain.SseLdzLO.addr = addr; in AMD64Instr_SseLdzLO()
948 i->Ain.Sse32Fx4.op = op; in AMD64Instr_Sse32Fx4()
949 i->Ain.Sse32Fx4.src = src; in AMD64Instr_Sse32Fx4()
950 i->Ain.Sse32Fx4.dst = dst; in AMD64Instr_Sse32Fx4()
957 i->Ain.Sse32FLo.op = op; in AMD64Instr_Sse32FLo()
958 i->Ain.Sse32FLo.src = src; in AMD64Instr_Sse32FLo()
959 i->Ain.Sse32FLo.dst = dst; in AMD64Instr_Sse32FLo()
966 i->Ain.Sse64Fx2.op = op; in AMD64Instr_Sse64Fx2()
967 i->Ain.Sse64Fx2.src = src; in AMD64Instr_Sse64Fx2()
968 i->Ain.Sse64Fx2.dst = dst; in AMD64Instr_Sse64Fx2()
975 i->Ain.Sse64FLo.op = op; in AMD64Instr_Sse64FLo()
976 i->Ain.Sse64FLo.src = src; in AMD64Instr_Sse64FLo()
977 i->Ain.Sse64FLo.dst = dst; in AMD64Instr_Sse64FLo()
984 i->Ain.SseReRg.op = op; in AMD64Instr_SseReRg()
985 i->Ain.SseReRg.src = re; in AMD64Instr_SseReRg()
986 i->Ain.SseReRg.dst = rg; in AMD64Instr_SseReRg()
992 i->Ain.SseCMov.cond = cond; in AMD64Instr_SseCMov()
993 i->Ain.SseCMov.src = src; in AMD64Instr_SseCMov()
994 i->Ain.SseCMov.dst = dst; in AMD64Instr_SseCMov()
1001 i->Ain.SseShuf.order = order; in AMD64Instr_SseShuf()
1002 i->Ain.SseShuf.src = src; in AMD64Instr_SseShuf()
1003 i->Ain.SseShuf.dst = dst; in AMD64Instr_SseShuf()
1028 i->Ain.EvCheck.amCounter = amCounter; in AMD64Instr_EvCheck()
1029 i->Ain.EvCheck.amFailAddr = amFailAddr; in AMD64Instr_EvCheck()
1043 vex_printf("movabsq $0x%llx,", i->Ain.Imm64.imm64); in ppAMD64Instr()
1044 ppHRegAMD64(i->Ain.Imm64.dst); in ppAMD64Instr()
1047 vex_printf("%sq ", showAMD64AluOp(i->Ain.Alu64R.op)); in ppAMD64Instr()
1048 ppAMD64RMI(i->Ain.Alu64R.src); in ppAMD64Instr()
1050 ppHRegAMD64(i->Ain.Alu64R.dst); in ppAMD64Instr()
1053 vex_printf("%sq ", showAMD64AluOp(i->Ain.Alu64M.op)); in ppAMD64Instr()
1054 ppAMD64RI(i->Ain.Alu64M.src); in ppAMD64Instr()
1056 ppAMD64AMode(i->Ain.Alu64M.dst); in ppAMD64Instr()
1059 vex_printf("%sq ", showAMD64ShiftOp(i->Ain.Sh64.op)); in ppAMD64Instr()
1060 if (i->Ain.Sh64.src == 0) in ppAMD64Instr()
1063 vex_printf("$%d,", (Int)i->Ain.Sh64.src); in ppAMD64Instr()
1064 ppHRegAMD64(i->Ain.Sh64.dst); in ppAMD64Instr()
1067 vex_printf("testq $%d,", (Int)i->Ain.Test64.imm32); in ppAMD64Instr()
1068 ppHRegAMD64(i->Ain.Test64.dst); in ppAMD64Instr()
1071 vex_printf("%sq ", showAMD64UnaryOp(i->Ain.Unary64.op)); in ppAMD64Instr()
1072 ppHRegAMD64(i->Ain.Unary64.dst); in ppAMD64Instr()
1076 ppAMD64AMode(i->Ain.Lea64.am); in ppAMD64Instr()
1078 ppHRegAMD64(i->Ain.Lea64.dst); in ppAMD64Instr()
1081 vex_printf("%sl ", showAMD64AluOp(i->Ain.Alu32R.op)); in ppAMD64Instr()
1082 ppAMD64RMI_lo32(i->Ain.Alu32R.src); in ppAMD64Instr()
1084 ppHRegAMD64_lo32(i->Ain.Alu32R.dst); in ppAMD64Instr()
1087 vex_printf("%cmulq ", i->Ain.MulL.syned ? 's' : 'u'); in ppAMD64Instr()
1088 ppAMD64RM(i->Ain.MulL.src); in ppAMD64Instr()
1092 i->Ain.Div.syned ? 's' : 'u', in ppAMD64Instr()
1093 showAMD64ScalarSz(i->Ain.Div.sz)); in ppAMD64Instr()
1094 ppAMD64RM(i->Ain.Div.src); in ppAMD64Instr()
1098 ppAMD64RMI(i->Ain.Push.src); in ppAMD64Instr()
1102 i->Ain.Call.cond==Acc_ALWAYS in ppAMD64Instr()
1103 ? "" : showAMD64CondCode(i->Ain.Call.cond), in ppAMD64Instr()
1104 i->Ain.Call.regparms ); in ppAMD64Instr()
1105 ppRetLoc(i->Ain.Call.rloc); in ppAMD64Instr()
1106 vex_printf("] 0x%llx", i->Ain.Call.target); in ppAMD64Instr()
1112 showAMD64CondCode(i->Ain.XDirect.cond)); in ppAMD64Instr()
1113 vex_printf("movabsq $0x%llx,%%r11; ", i->Ain.XDirect.dstGA); in ppAMD64Instr()
1115 ppAMD64AMode(i->Ain.XDirect.amRIP); in ppAMD64Instr()
1118 i->Ain.XDirect.toFastEP ? "fast" : "slow"); in ppAMD64Instr()
1123 showAMD64CondCode(i->Ain.XIndir.cond)); in ppAMD64Instr()
1125 ppHRegAMD64(i->Ain.XIndir.dstGA); in ppAMD64Instr()
1127 ppAMD64AMode(i->Ain.XIndir.amRIP); in ppAMD64Instr()
1133 showAMD64CondCode(i->Ain.XAssisted.cond)); in ppAMD64Instr()
1135 ppHRegAMD64(i->Ain.XAssisted.dstGA); in ppAMD64Instr()
1137 ppAMD64AMode(i->Ain.XAssisted.amRIP); in ppAMD64Instr()
1139 (Int)i->Ain.XAssisted.jk); in ppAMD64Instr()
1144 vex_printf("cmov%s ", showAMD64CondCode(i->Ain.CMov64.cond)); in ppAMD64Instr()
1145 ppHRegAMD64(i->Ain.CMov64.src); in ppAMD64Instr()
1147 ppHRegAMD64(i->Ain.CMov64.dst); in ppAMD64Instr()
1151 showAMD64CondCode(i->Ain.CLoad.cond)); in ppAMD64Instr()
1152 vex_printf("mov%c ", i->Ain.CLoad.szB == 4 ? 'l' : 'q'); in ppAMD64Instr()
1153 ppAMD64AMode(i->Ain.CLoad.addr); in ppAMD64Instr()
1155 (i->Ain.CLoad.szB == 4 ? ppHRegAMD64_lo32 : ppHRegAMD64) in ppAMD64Instr()
1156 (i->Ain.CLoad.dst); in ppAMD64Instr()
1161 showAMD64CondCode(i->Ain.CStore.cond)); in ppAMD64Instr()
1162 vex_printf("mov%c ", i->Ain.CStore.szB == 4 ? 'l' : 'q'); in ppAMD64Instr()
1163 (i->Ain.CStore.szB == 4 ? ppHRegAMD64_lo32 : ppHRegAMD64) in ppAMD64Instr()
1164 (i->Ain.CStore.src); in ppAMD64Instr()
1166 ppAMD64AMode(i->Ain.CStore.addr); in ppAMD64Instr()
1171 vex_printf("mov%clq ", i->Ain.MovxLQ.syned ? 's' : 'z'); in ppAMD64Instr()
1172 ppHRegAMD64_lo32(i->Ain.MovxLQ.src); in ppAMD64Instr()
1174 ppHRegAMD64(i->Ain.MovxLQ.dst); in ppAMD64Instr()
1177 if (i->Ain.LoadEX.szSmall==4 && !i->Ain.LoadEX.syned) { in ppAMD64Instr()
1179 ppAMD64AMode(i->Ain.LoadEX.src); in ppAMD64Instr()
1181 ppHRegAMD64_lo32(i->Ain.LoadEX.dst); in ppAMD64Instr()
1184 i->Ain.LoadEX.syned ? 's' : 'z', in ppAMD64Instr()
1185 i->Ain.LoadEX.szSmall==1 in ppAMD64Instr()
1187 : (i->Ain.LoadEX.szSmall==2 ? 'w' : 'l')); in ppAMD64Instr()
1188 ppAMD64AMode(i->Ain.LoadEX.src); in ppAMD64Instr()
1190 ppHRegAMD64(i->Ain.LoadEX.dst); in ppAMD64Instr()
1194 vex_printf("mov%c ", i->Ain.Store.sz==1 ? 'b' in ppAMD64Instr()
1195 : (i->Ain.Store.sz==2 ? 'w' : 'l')); in ppAMD64Instr()
1196 ppHRegAMD64(i->Ain.Store.src); in ppAMD64Instr()
1198 ppAMD64AMode(i->Ain.Store.dst); in ppAMD64Instr()
1201 vex_printf("setq%s ", showAMD64CondCode(i->Ain.Set64.cond)); in ppAMD64Instr()
1202 ppHRegAMD64(i->Ain.Set64.dst); in ppAMD64Instr()
1205 vex_printf("bs%cq ", i->Ain.Bsfr64.isFwds ? 'f' : 'r'); in ppAMD64Instr()
1206 ppHRegAMD64(i->Ain.Bsfr64.src); in ppAMD64Instr()
1208 ppHRegAMD64(i->Ain.Bsfr64.dst); in ppAMD64Instr()
1215 i->Ain.ACAS.sz==1 ? 'b' : i->Ain.ACAS.sz==2 ? 'w' in ppAMD64Instr()
1216 : i->Ain.ACAS.sz==4 ? 'l' : 'q' ); in ppAMD64Instr()
1218 ppAMD64AMode(i->Ain.ACAS.addr); in ppAMD64Instr()
1222 (Int)(2 * i->Ain.DACAS.sz)); in ppAMD64Instr()
1223 ppAMD64AMode(i->Ain.DACAS.addr); in ppAMD64Instr()
1226 vex_printf("ffree %%st(7..%d)", 8 - i->Ain.A87Free.nregs ); in ppAMD64Instr()
1229 vex_printf(i->Ain.A87PushPop.isPush ? "fld%c " : "fstp%c ", in ppAMD64Instr()
1230 i->Ain.A87PushPop.szB == 4 ? 's' : 'l'); in ppAMD64Instr()
1231 ppAMD64AMode(i->Ain.A87PushPop.addr); in ppAMD64Instr()
1234 vex_printf("f%s", showA87FpOp(i->Ain.A87FpOp.op)); in ppAMD64Instr()
1238 ppAMD64AMode(i->Ain.A87LdCW.addr); in ppAMD64Instr()
1242 ppAMD64AMode(i->Ain.A87StSW.addr); in ppAMD64Instr()
1246 ppAMD64AMode(i->Ain.LdMXCSR.addr); in ppAMD64Instr()
1249 vex_printf("ucomis%s ", i->Ain.SseUComIS.sz==4 ? "s" : "d"); in ppAMD64Instr()
1250 ppHRegAMD64(i->Ain.SseUComIS.srcL); in ppAMD64Instr()
1252 ppHRegAMD64(i->Ain.SseUComIS.srcR); in ppAMD64Instr()
1254 ppHRegAMD64(i->Ain.SseUComIS.dst); in ppAMD64Instr()
1257 vex_printf("cvtsi2s%s ", i->Ain.SseSI2SF.szD==4 ? "s" : "d"); in ppAMD64Instr()
1258 (i->Ain.SseSI2SF.szS==4 ? ppHRegAMD64_lo32 : ppHRegAMD64) in ppAMD64Instr()
1259 (i->Ain.SseSI2SF.src); in ppAMD64Instr()
1261 ppHRegAMD64(i->Ain.SseSI2SF.dst); in ppAMD64Instr()
1264 vex_printf("cvts%s2si ", i->Ain.SseSF2SI.szS==4 ? "s" : "d"); in ppAMD64Instr()
1265 ppHRegAMD64(i->Ain.SseSF2SI.src); in ppAMD64Instr()
1267 (i->Ain.SseSF2SI.szD==4 ? ppHRegAMD64_lo32 : ppHRegAMD64) in ppAMD64Instr()
1268 (i->Ain.SseSF2SI.dst); in ppAMD64Instr()
1271 vex_printf(i->Ain.SseSDSS.from64 ? "cvtsd2ss " : "cvtss2sd "); in ppAMD64Instr()
1272 ppHRegAMD64(i->Ain.SseSDSS.src); in ppAMD64Instr()
1274 ppHRegAMD64(i->Ain.SseSDSS.dst); in ppAMD64Instr()
1277 switch (i->Ain.SseLdSt.sz) { in ppAMD64Instr()
1283 if (i->Ain.SseLdSt.isLoad) { in ppAMD64Instr()
1284 ppAMD64AMode(i->Ain.SseLdSt.addr); in ppAMD64Instr()
1286 ppHRegAMD64(i->Ain.SseLdSt.reg); in ppAMD64Instr()
1288 ppHRegAMD64(i->Ain.SseLdSt.reg); in ppAMD64Instr()
1290 ppAMD64AMode(i->Ain.SseLdSt.addr); in ppAMD64Instr()
1295 showAMD64CondCode(i->Ain.SseCStore.cond)); in ppAMD64Instr()
1297 ppHRegAMD64(i->Ain.SseCStore.src); in ppAMD64Instr()
1299 ppAMD64AMode(i->Ain.SseCStore.addr); in ppAMD64Instr()
1304 showAMD64CondCode(i->Ain.SseCLoad.cond)); in ppAMD64Instr()
1306 ppAMD64AMode(i->Ain.SseCLoad.addr); in ppAMD64Instr()
1308 ppHRegAMD64(i->Ain.SseCLoad.dst); in ppAMD64Instr()
1312 vex_printf("movs%s ", i->Ain.SseLdzLO.sz==4 ? "s" : "d"); in ppAMD64Instr()
1313 ppAMD64AMode(i->Ain.SseLdzLO.addr); in ppAMD64Instr()
1315 ppHRegAMD64(i->Ain.SseLdzLO.reg); in ppAMD64Instr()
1318 vex_printf("%sps ", showAMD64SseOp(i->Ain.Sse32Fx4.op)); in ppAMD64Instr()
1319 ppHRegAMD64(i->Ain.Sse32Fx4.src); in ppAMD64Instr()
1321 ppHRegAMD64(i->Ain.Sse32Fx4.dst); in ppAMD64Instr()
1324 vex_printf("%sss ", showAMD64SseOp(i->Ain.Sse32FLo.op)); in ppAMD64Instr()
1325 ppHRegAMD64(i->Ain.Sse32FLo.src); in ppAMD64Instr()
1327 ppHRegAMD64(i->Ain.Sse32FLo.dst); in ppAMD64Instr()
1330 vex_printf("%spd ", showAMD64SseOp(i->Ain.Sse64Fx2.op)); in ppAMD64Instr()
1331 ppHRegAMD64(i->Ain.Sse64Fx2.src); in ppAMD64Instr()
1333 ppHRegAMD64(i->Ain.Sse64Fx2.dst); in ppAMD64Instr()
1336 vex_printf("%ssd ", showAMD64SseOp(i->Ain.Sse64FLo.op)); in ppAMD64Instr()
1337 ppHRegAMD64(i->Ain.Sse64FLo.src); in ppAMD64Instr()
1339 ppHRegAMD64(i->Ain.Sse64FLo.dst); in ppAMD64Instr()
1342 vex_printf("%s ", showAMD64SseOp(i->Ain.SseReRg.op)); in ppAMD64Instr()
1343 ppHRegAMD64(i->Ain.SseReRg.src); in ppAMD64Instr()
1345 ppHRegAMD64(i->Ain.SseReRg.dst); in ppAMD64Instr()
1348 vex_printf("cmov%s ", showAMD64CondCode(i->Ain.SseCMov.cond)); in ppAMD64Instr()
1349 ppHRegAMD64(i->Ain.SseCMov.src); in ppAMD64Instr()
1351 ppHRegAMD64(i->Ain.SseCMov.dst); in ppAMD64Instr()
1354 vex_printf("pshufd $0x%x,", (UInt)i->Ain.SseShuf.order); in ppAMD64Instr()
1355 ppHRegAMD64(i->Ain.SseShuf.src); in ppAMD64Instr()
1357 ppHRegAMD64(i->Ain.SseShuf.dst); in ppAMD64Instr()
1379 ppAMD64AMode(i->Ain.EvCheck.amCounter); in ppAMD64Instr()
1381 ppAMD64AMode(i->Ain.EvCheck.amFailAddr); in ppAMD64Instr()
1401 addHRegUse(u, HRmWrite, i->Ain.Imm64.dst); in getRegUsage_AMD64Instr()
1404 addRegUsage_AMD64RMI(u, i->Ain.Alu64R.src); in getRegUsage_AMD64Instr()
1405 if (i->Ain.Alu64R.op == Aalu_MOV) { in getRegUsage_AMD64Instr()
1406 addHRegUse(u, HRmWrite, i->Ain.Alu64R.dst); in getRegUsage_AMD64Instr()
1409 if (i->Ain.Alu64R.op == Aalu_CMP) { in getRegUsage_AMD64Instr()
1410 addHRegUse(u, HRmRead, i->Ain.Alu64R.dst); in getRegUsage_AMD64Instr()
1413 addHRegUse(u, HRmModify, i->Ain.Alu64R.dst); in getRegUsage_AMD64Instr()
1416 addRegUsage_AMD64RI(u, i->Ain.Alu64M.src); in getRegUsage_AMD64Instr()
1417 addRegUsage_AMD64AMode(u, i->Ain.Alu64M.dst); in getRegUsage_AMD64Instr()
1420 addHRegUse(u, HRmModify, i->Ain.Sh64.dst); in getRegUsage_AMD64Instr()
1421 if (i->Ain.Sh64.src == 0) in getRegUsage_AMD64Instr()
1425 addHRegUse(u, HRmRead, i->Ain.Test64.dst); in getRegUsage_AMD64Instr()
1428 addHRegUse(u, HRmModify, i->Ain.Unary64.dst); in getRegUsage_AMD64Instr()
1431 addRegUsage_AMD64AMode(u, i->Ain.Lea64.am); in getRegUsage_AMD64Instr()
1432 addHRegUse(u, HRmWrite, i->Ain.Lea64.dst); in getRegUsage_AMD64Instr()
1435 vassert(i->Ain.Alu32R.op != Aalu_MOV); in getRegUsage_AMD64Instr()
1436 addRegUsage_AMD64RMI(u, i->Ain.Alu32R.src); in getRegUsage_AMD64Instr()
1437 if (i->Ain.Alu32R.op == Aalu_CMP) { in getRegUsage_AMD64Instr()
1438 addHRegUse(u, HRmRead, i->Ain.Alu32R.dst); in getRegUsage_AMD64Instr()
1441 addHRegUse(u, HRmModify, i->Ain.Alu32R.dst); in getRegUsage_AMD64Instr()
1444 addRegUsage_AMD64RM(u, i->Ain.MulL.src, HRmRead); in getRegUsage_AMD64Instr()
1449 addRegUsage_AMD64RM(u, i->Ain.Div.src, HRmRead); in getRegUsage_AMD64Instr()
1454 addRegUsage_AMD64RMI(u, i->Ain.Push.src); in getRegUsage_AMD64Instr()
1488 switch (i->Ain.Call.regparms) { in getRegUsage_AMD64Instr()
1514 addRegUsage_AMD64AMode(u, i->Ain.XDirect.amRIP); in getRegUsage_AMD64Instr()
1518 addHRegUse(u, HRmRead, i->Ain.XIndir.dstGA); in getRegUsage_AMD64Instr()
1519 addRegUsage_AMD64AMode(u, i->Ain.XIndir.amRIP); in getRegUsage_AMD64Instr()
1523 addHRegUse(u, HRmRead, i->Ain.XAssisted.dstGA); in getRegUsage_AMD64Instr()
1524 addRegUsage_AMD64AMode(u, i->Ain.XAssisted.amRIP); in getRegUsage_AMD64Instr()
1527 addHRegUse(u, HRmRead, i->Ain.CMov64.src); in getRegUsage_AMD64Instr()
1528 addHRegUse(u, HRmModify, i->Ain.CMov64.dst); in getRegUsage_AMD64Instr()
1531 addRegUsage_AMD64AMode(u, i->Ain.CLoad.addr); in getRegUsage_AMD64Instr()
1532 addHRegUse(u, HRmModify, i->Ain.CLoad.dst); in getRegUsage_AMD64Instr()
1535 addRegUsage_AMD64AMode(u, i->Ain.CStore.addr); in getRegUsage_AMD64Instr()
1536 addHRegUse(u, HRmRead, i->Ain.CStore.src); in getRegUsage_AMD64Instr()
1539 addHRegUse(u, HRmRead, i->Ain.MovxLQ.src); in getRegUsage_AMD64Instr()
1540 addHRegUse(u, HRmWrite, i->Ain.MovxLQ.dst); in getRegUsage_AMD64Instr()
1543 addRegUsage_AMD64AMode(u, i->Ain.LoadEX.src); in getRegUsage_AMD64Instr()
1544 addHRegUse(u, HRmWrite, i->Ain.LoadEX.dst); in getRegUsage_AMD64Instr()
1547 addHRegUse(u, HRmRead, i->Ain.Store.src); in getRegUsage_AMD64Instr()
1548 addRegUsage_AMD64AMode(u, i->Ain.Store.dst); in getRegUsage_AMD64Instr()
1551 addHRegUse(u, HRmWrite, i->Ain.Set64.dst); in getRegUsage_AMD64Instr()
1554 addHRegUse(u, HRmRead, i->Ain.Bsfr64.src); in getRegUsage_AMD64Instr()
1555 addHRegUse(u, HRmWrite, i->Ain.Bsfr64.dst); in getRegUsage_AMD64Instr()
1560 addRegUsage_AMD64AMode(u, i->Ain.ACAS.addr); in getRegUsage_AMD64Instr()
1565 addRegUsage_AMD64AMode(u, i->Ain.DACAS.addr); in getRegUsage_AMD64Instr()
1574 addRegUsage_AMD64AMode(u, i->Ain.A87PushPop.addr); in getRegUsage_AMD64Instr()
1579 addRegUsage_AMD64AMode(u, i->Ain.A87LdCW.addr); in getRegUsage_AMD64Instr()
1582 addRegUsage_AMD64AMode(u, i->Ain.A87StSW.addr); in getRegUsage_AMD64Instr()
1585 addRegUsage_AMD64AMode(u, i->Ain.LdMXCSR.addr); in getRegUsage_AMD64Instr()
1588 addHRegUse(u, HRmRead, i->Ain.SseUComIS.srcL); in getRegUsage_AMD64Instr()
1589 addHRegUse(u, HRmRead, i->Ain.SseUComIS.srcR); in getRegUsage_AMD64Instr()
1590 addHRegUse(u, HRmWrite, i->Ain.SseUComIS.dst); in getRegUsage_AMD64Instr()
1593 addHRegUse(u, HRmRead, i->Ain.SseSI2SF.src); in getRegUsage_AMD64Instr()
1594 addHRegUse(u, HRmWrite, i->Ain.SseSI2SF.dst); in getRegUsage_AMD64Instr()
1597 addHRegUse(u, HRmRead, i->Ain.SseSF2SI.src); in getRegUsage_AMD64Instr()
1598 addHRegUse(u, HRmWrite, i->Ain.SseSF2SI.dst); in getRegUsage_AMD64Instr()
1601 addHRegUse(u, HRmRead, i->Ain.SseSDSS.src); in getRegUsage_AMD64Instr()
1602 addHRegUse(u, HRmWrite, i->Ain.SseSDSS.dst); in getRegUsage_AMD64Instr()
1605 addRegUsage_AMD64AMode(u, i->Ain.SseLdSt.addr); in getRegUsage_AMD64Instr()
1606 addHRegUse(u, i->Ain.SseLdSt.isLoad ? HRmWrite : HRmRead, in getRegUsage_AMD64Instr()
1607 i->Ain.SseLdSt.reg); in getRegUsage_AMD64Instr()
1610 addRegUsage_AMD64AMode(u, i->Ain.SseCStore.addr); in getRegUsage_AMD64Instr()
1611 addHRegUse(u, HRmRead, i->Ain.SseCStore.src); in getRegUsage_AMD64Instr()
1614 addRegUsage_AMD64AMode(u, i->Ain.SseCLoad.addr); in getRegUsage_AMD64Instr()
1615 addHRegUse(u, HRmModify, i->Ain.SseCLoad.dst); in getRegUsage_AMD64Instr()
1618 addRegUsage_AMD64AMode(u, i->Ain.SseLdzLO.addr); in getRegUsage_AMD64Instr()
1619 addHRegUse(u, HRmWrite, i->Ain.SseLdzLO.reg); in getRegUsage_AMD64Instr()
1622 vassert(i->Ain.Sse32Fx4.op != Asse_MOV); in getRegUsage_AMD64Instr()
1623 unary = toBool( i->Ain.Sse32Fx4.op == Asse_RCPF in getRegUsage_AMD64Instr()
1624 || i->Ain.Sse32Fx4.op == Asse_RSQRTF in getRegUsage_AMD64Instr()
1625 || i->Ain.Sse32Fx4.op == Asse_SQRTF ); in getRegUsage_AMD64Instr()
1626 addHRegUse(u, HRmRead, i->Ain.Sse32Fx4.src); in getRegUsage_AMD64Instr()
1628 i->Ain.Sse32Fx4.dst); in getRegUsage_AMD64Instr()
1631 vassert(i->Ain.Sse32FLo.op != Asse_MOV); in getRegUsage_AMD64Instr()
1632 unary = toBool( i->Ain.Sse32FLo.op == Asse_RCPF in getRegUsage_AMD64Instr()
1633 || i->Ain.Sse32FLo.op == Asse_RSQRTF in getRegUsage_AMD64Instr()
1634 || i->Ain.Sse32FLo.op == Asse_SQRTF ); in getRegUsage_AMD64Instr()
1635 addHRegUse(u, HRmRead, i->Ain.Sse32FLo.src); in getRegUsage_AMD64Instr()
1637 i->Ain.Sse32FLo.dst); in getRegUsage_AMD64Instr()
1640 vassert(i->Ain.Sse64Fx2.op != Asse_MOV); in getRegUsage_AMD64Instr()
1641 unary = toBool( i->Ain.Sse64Fx2.op == Asse_RCPF in getRegUsage_AMD64Instr()
1642 || i->Ain.Sse64Fx2.op == Asse_RSQRTF in getRegUsage_AMD64Instr()
1643 || i->Ain.Sse64Fx2.op == Asse_SQRTF ); in getRegUsage_AMD64Instr()
1644 addHRegUse(u, HRmRead, i->Ain.Sse64Fx2.src); in getRegUsage_AMD64Instr()
1646 i->Ain.Sse64Fx2.dst); in getRegUsage_AMD64Instr()
1649 vassert(i->Ain.Sse64FLo.op != Asse_MOV); in getRegUsage_AMD64Instr()
1650 unary = toBool( i->Ain.Sse64FLo.op == Asse_RCPF in getRegUsage_AMD64Instr()
1651 || i->Ain.Sse64FLo.op == Asse_RSQRTF in getRegUsage_AMD64Instr()
1652 || i->Ain.Sse64FLo.op == Asse_SQRTF ); in getRegUsage_AMD64Instr()
1653 addHRegUse(u, HRmRead, i->Ain.Sse64FLo.src); in getRegUsage_AMD64Instr()
1655 i->Ain.Sse64FLo.dst); in getRegUsage_AMD64Instr()
1658 if ( (i->Ain.SseReRg.op == Asse_XOR in getRegUsage_AMD64Instr()
1659 || i->Ain.SseReRg.op == Asse_CMPEQ32) in getRegUsage_AMD64Instr()
1660 && sameHReg(i->Ain.SseReRg.src, i->Ain.SseReRg.dst)) { in getRegUsage_AMD64Instr()
1665 addHRegUse(u, HRmWrite, i->Ain.SseReRg.dst); in getRegUsage_AMD64Instr()
1667 addHRegUse(u, HRmRead, i->Ain.SseReRg.src); in getRegUsage_AMD64Instr()
1668 addHRegUse(u, i->Ain.SseReRg.op == Asse_MOV in getRegUsage_AMD64Instr()
1670 i->Ain.SseReRg.dst); in getRegUsage_AMD64Instr()
1674 addHRegUse(u, HRmRead, i->Ain.SseCMov.src); in getRegUsage_AMD64Instr()
1675 addHRegUse(u, HRmModify, i->Ain.SseCMov.dst); in getRegUsage_AMD64Instr()
1678 addHRegUse(u, HRmRead, i->Ain.SseShuf.src); in getRegUsage_AMD64Instr()
1679 addHRegUse(u, HRmWrite, i->Ain.SseShuf.dst); in getRegUsage_AMD64Instr()
1702 addRegUsage_AMD64AMode(u, i->Ain.EvCheck.amCounter); in getRegUsage_AMD64Instr()
1703 addRegUsage_AMD64AMode(u, i->Ain.EvCheck.amFailAddr); in getRegUsage_AMD64Instr()
1725 mapReg(m, &i->Ain.Imm64.dst); in mapRegs_AMD64Instr()
1728 mapRegs_AMD64RMI(m, i->Ain.Alu64R.src); in mapRegs_AMD64Instr()
1729 mapReg(m, &i->Ain.Alu64R.dst); in mapRegs_AMD64Instr()
1732 mapRegs_AMD64RI(m, i->Ain.Alu64M.src); in mapRegs_AMD64Instr()
1733 mapRegs_AMD64AMode(m, i->Ain.Alu64M.dst); in mapRegs_AMD64Instr()
1736 mapReg(m, &i->Ain.Sh64.dst); in mapRegs_AMD64Instr()
1739 mapReg(m, &i->Ain.Test64.dst); in mapRegs_AMD64Instr()
1742 mapReg(m, &i->Ain.Unary64.dst); in mapRegs_AMD64Instr()
1745 mapRegs_AMD64AMode(m, i->Ain.Lea64.am); in mapRegs_AMD64Instr()
1746 mapReg(m, &i->Ain.Lea64.dst); in mapRegs_AMD64Instr()
1749 mapRegs_AMD64RMI(m, i->Ain.Alu32R.src); in mapRegs_AMD64Instr()
1750 mapReg(m, &i->Ain.Alu32R.dst); in mapRegs_AMD64Instr()
1753 mapRegs_AMD64RM(m, i->Ain.MulL.src); in mapRegs_AMD64Instr()
1756 mapRegs_AMD64RM(m, i->Ain.Div.src); in mapRegs_AMD64Instr()
1759 mapRegs_AMD64RMI(m, i->Ain.Push.src); in mapRegs_AMD64Instr()
1764 mapRegs_AMD64AMode(m, i->Ain.XDirect.amRIP); in mapRegs_AMD64Instr()
1767 mapReg(m, &i->Ain.XIndir.dstGA); in mapRegs_AMD64Instr()
1768 mapRegs_AMD64AMode(m, i->Ain.XIndir.amRIP); in mapRegs_AMD64Instr()
1771 mapReg(m, &i->Ain.XAssisted.dstGA); in mapRegs_AMD64Instr()
1772 mapRegs_AMD64AMode(m, i->Ain.XAssisted.amRIP); in mapRegs_AMD64Instr()
1775 mapReg(m, &i->Ain.CMov64.src); in mapRegs_AMD64Instr()
1776 mapReg(m, &i->Ain.CMov64.dst); in mapRegs_AMD64Instr()
1779 mapRegs_AMD64AMode(m, i->Ain.CLoad.addr); in mapRegs_AMD64Instr()
1780 mapReg(m, &i->Ain.CLoad.dst); in mapRegs_AMD64Instr()
1783 mapRegs_AMD64AMode(m, i->Ain.CStore.addr); in mapRegs_AMD64Instr()
1784 mapReg(m, &i->Ain.CStore.src); in mapRegs_AMD64Instr()
1787 mapReg(m, &i->Ain.MovxLQ.src); in mapRegs_AMD64Instr()
1788 mapReg(m, &i->Ain.MovxLQ.dst); in mapRegs_AMD64Instr()
1791 mapRegs_AMD64AMode(m, i->Ain.LoadEX.src); in mapRegs_AMD64Instr()
1792 mapReg(m, &i->Ain.LoadEX.dst); in mapRegs_AMD64Instr()
1795 mapReg(m, &i->Ain.Store.src); in mapRegs_AMD64Instr()
1796 mapRegs_AMD64AMode(m, i->Ain.Store.dst); in mapRegs_AMD64Instr()
1799 mapReg(m, &i->Ain.Set64.dst); in mapRegs_AMD64Instr()
1802 mapReg(m, &i->Ain.Bsfr64.src); in mapRegs_AMD64Instr()
1803 mapReg(m, &i->Ain.Bsfr64.dst); in mapRegs_AMD64Instr()
1808 mapRegs_AMD64AMode(m, i->Ain.ACAS.addr); in mapRegs_AMD64Instr()
1811 mapRegs_AMD64AMode(m, i->Ain.DACAS.addr); in mapRegs_AMD64Instr()
1816 mapRegs_AMD64AMode(m, i->Ain.A87PushPop.addr); in mapRegs_AMD64Instr()
1821 mapRegs_AMD64AMode(m, i->Ain.A87LdCW.addr); in mapRegs_AMD64Instr()
1824 mapRegs_AMD64AMode(m, i->Ain.A87StSW.addr); in mapRegs_AMD64Instr()
1827 mapRegs_AMD64AMode(m, i->Ain.LdMXCSR.addr); in mapRegs_AMD64Instr()
1830 mapReg(m, &i->Ain.SseUComIS.srcL); in mapRegs_AMD64Instr()
1831 mapReg(m, &i->Ain.SseUComIS.srcR); in mapRegs_AMD64Instr()
1832 mapReg(m, &i->Ain.SseUComIS.dst); in mapRegs_AMD64Instr()
1835 mapReg(m, &i->Ain.SseSI2SF.src); in mapRegs_AMD64Instr()
1836 mapReg(m, &i->Ain.SseSI2SF.dst); in mapRegs_AMD64Instr()
1839 mapReg(m, &i->Ain.SseSF2SI.src); in mapRegs_AMD64Instr()
1840 mapReg(m, &i->Ain.SseSF2SI.dst); in mapRegs_AMD64Instr()
1843 mapReg(m, &i->Ain.SseSDSS.src); in mapRegs_AMD64Instr()
1844 mapReg(m, &i->Ain.SseSDSS.dst); in mapRegs_AMD64Instr()
1847 mapReg(m, &i->Ain.SseLdSt.reg); in mapRegs_AMD64Instr()
1848 mapRegs_AMD64AMode(m, i->Ain.SseLdSt.addr); in mapRegs_AMD64Instr()
1851 mapRegs_AMD64AMode(m, i->Ain.SseCStore.addr); in mapRegs_AMD64Instr()
1852 mapReg(m, &i->Ain.SseCStore.src); in mapRegs_AMD64Instr()
1855 mapRegs_AMD64AMode(m, i->Ain.SseCLoad.addr); in mapRegs_AMD64Instr()
1856 mapReg(m, &i->Ain.SseCLoad.dst); in mapRegs_AMD64Instr()
1859 mapReg(m, &i->Ain.SseLdzLO.reg); in mapRegs_AMD64Instr()
1860 mapRegs_AMD64AMode(m, i->Ain.SseLdzLO.addr); in mapRegs_AMD64Instr()
1863 mapReg(m, &i->Ain.Sse32Fx4.src); in mapRegs_AMD64Instr()
1864 mapReg(m, &i->Ain.Sse32Fx4.dst); in mapRegs_AMD64Instr()
1867 mapReg(m, &i->Ain.Sse32FLo.src); in mapRegs_AMD64Instr()
1868 mapReg(m, &i->Ain.Sse32FLo.dst); in mapRegs_AMD64Instr()
1871 mapReg(m, &i->Ain.Sse64Fx2.src); in mapRegs_AMD64Instr()
1872 mapReg(m, &i->Ain.Sse64Fx2.dst); in mapRegs_AMD64Instr()
1875 mapReg(m, &i->Ain.Sse64FLo.src); in mapRegs_AMD64Instr()
1876 mapReg(m, &i->Ain.Sse64FLo.dst); in mapRegs_AMD64Instr()
1879 mapReg(m, &i->Ain.SseReRg.src); in mapRegs_AMD64Instr()
1880 mapReg(m, &i->Ain.SseReRg.dst); in mapRegs_AMD64Instr()
1883 mapReg(m, &i->Ain.SseCMov.src); in mapRegs_AMD64Instr()
1884 mapReg(m, &i->Ain.SseCMov.dst); in mapRegs_AMD64Instr()
1887 mapReg(m, &i->Ain.SseShuf.src); in mapRegs_AMD64Instr()
1888 mapReg(m, &i->Ain.SseShuf.dst); in mapRegs_AMD64Instr()
1901 mapRegs_AMD64AMode(m, i->Ain.EvCheck.amCounter); in mapRegs_AMD64Instr()
1902 mapRegs_AMD64AMode(m, i->Ain.EvCheck.amFailAddr); in mapRegs_AMD64Instr()
1922 if (i->Ain.Alu64R.op != Aalu_MOV) in isMove_AMD64Instr()
1924 if (i->Ain.Alu64R.src->tag != Armi_Reg) in isMove_AMD64Instr()
1926 *src = i->Ain.Alu64R.src->Armi.Reg.reg; in isMove_AMD64Instr()
1927 *dst = i->Ain.Alu64R.dst; in isMove_AMD64Instr()
1931 if (i->Ain.SseReRg.op != Asse_MOV) in isMove_AMD64Instr()
1933 *src = i->Ain.SseReRg.src; in isMove_AMD64Instr()
1934 *dst = i->Ain.SseReRg.dst; in isMove_AMD64Instr()
2006 && (i->Ain.Alu64R.op == Aalu_MOV || i->Ain.Alu64R.op == Aalu_OR in directReload_AMD64()
2007 || i->Ain.Alu64R.op == Aalu_XOR) in directReload_AMD64()
2008 && i->Ain.Alu64R.src->tag == Armi_Reg in directReload_AMD64()
2009 && sameHReg(i->Ain.Alu64R.src->Armi.Reg.reg, vreg)) { in directReload_AMD64()
2010 vassert(! sameHReg(i->Ain.Alu64R.dst, vreg)); in directReload_AMD64()
2012 i->Ain.Alu64R.op, in directReload_AMD64()
2014 i->Ain.Alu64R.dst in directReload_AMD64()
2022 && (i->Ain.Alu64R.op == Aalu_CMP) in directReload_AMD64()
2023 && i->Ain.Alu64R.src->tag == Armi_Imm in directReload_AMD64()
2024 && sameHReg(i->Ain.Alu64R.dst, vreg)) { in directReload_AMD64()
2026 i->Ain.Alu64R.op, in directReload_AMD64()
2027 AMD64RI_Imm( i->Ain.Alu64R.src->Armi.Imm.imm32 ), in directReload_AMD64()
2470 if (i->Ain.Imm64.imm64 <= 0xFFFFFULL) { in emit_AMD64Instr()
2475 if (1 & iregEnc3(i->Ain.Imm64.dst)) in emit_AMD64Instr()
2477 *p++ = 0xB8 + iregEnc210(i->Ain.Imm64.dst); in emit_AMD64Instr()
2478 p = emit32(p, (UInt)i->Ain.Imm64.imm64); in emit_AMD64Instr()
2480 *p++ = toUChar(0x48 + (1 & iregEnc3(i->Ain.Imm64.dst))); in emit_AMD64Instr()
2481 *p++ = toUChar(0xB8 + iregEnc210(i->Ain.Imm64.dst)); in emit_AMD64Instr()
2482 p = emit64(p, i->Ain.Imm64.imm64); in emit_AMD64Instr()
2488 if (i->Ain.Alu64R.op == Aalu_MOV) { in emit_AMD64Instr()
2489 switch (i->Ain.Alu64R.src->tag) { in emit_AMD64Instr()
2491 if (0 == (i->Ain.Alu64R.src->Armi.Imm.imm32 & ~0xFFFFF)) { in emit_AMD64Instr()
2501 if (1 & iregEnc3(i->Ain.Alu64R.dst)) in emit_AMD64Instr()
2503 *p++ = 0xB8 + iregEnc210(i->Ain.Alu64R.dst); in emit_AMD64Instr()
2504 p = emit32(p, i->Ain.Alu64R.src->Armi.Imm.imm32); in emit_AMD64Instr()
2506 *p++ = toUChar(0x48 + (1 & iregEnc3(i->Ain.Alu64R.dst))); in emit_AMD64Instr()
2508 *p++ = toUChar(0xC0 + iregEnc210(i->Ain.Alu64R.dst)); in emit_AMD64Instr()
2509 p = emit32(p, i->Ain.Alu64R.src->Armi.Imm.imm32); in emit_AMD64Instr()
2513 *p++ = rexAMode_R( i->Ain.Alu64R.src->Armi.Reg.reg, in emit_AMD64Instr()
2514 i->Ain.Alu64R.dst ); in emit_AMD64Instr()
2516 p = doAMode_R(p, i->Ain.Alu64R.src->Armi.Reg.reg, in emit_AMD64Instr()
2517 i->Ain.Alu64R.dst); in emit_AMD64Instr()
2520 *p++ = rexAMode_M(i->Ain.Alu64R.dst, in emit_AMD64Instr()
2521 i->Ain.Alu64R.src->Armi.Mem.am); in emit_AMD64Instr()
2523 p = doAMode_M(p, i->Ain.Alu64R.dst, in emit_AMD64Instr()
2524 i->Ain.Alu64R.src->Armi.Mem.am); in emit_AMD64Instr()
2531 if (i->Ain.Alu64R.op == Aalu_MUL) { in emit_AMD64Instr()
2532 switch (i->Ain.Alu64R.src->tag) { in emit_AMD64Instr()
2534 *p++ = rexAMode_R( i->Ain.Alu64R.dst, in emit_AMD64Instr()
2535 i->Ain.Alu64R.src->Armi.Reg.reg); in emit_AMD64Instr()
2538 p = doAMode_R(p, i->Ain.Alu64R.dst, in emit_AMD64Instr()
2539 i->Ain.Alu64R.src->Armi.Reg.reg); in emit_AMD64Instr()
2542 *p++ = rexAMode_M(i->Ain.Alu64R.dst, in emit_AMD64Instr()
2543 i->Ain.Alu64R.src->Armi.Mem.am); in emit_AMD64Instr()
2546 p = doAMode_M(p, i->Ain.Alu64R.dst, in emit_AMD64Instr()
2547 i->Ain.Alu64R.src->Armi.Mem.am); in emit_AMD64Instr()
2550 if (fits8bits(i->Ain.Alu64R.src->Armi.Imm.imm32)) { in emit_AMD64Instr()
2551 *p++ = rexAMode_R(i->Ain.Alu64R.dst, i->Ain.Alu64R.dst); in emit_AMD64Instr()
2553 p = doAMode_R(p, i->Ain.Alu64R.dst, i->Ain.Alu64R.dst); in emit_AMD64Instr()
2554 *p++ = toUChar(0xFF & i->Ain.Alu64R.src->Armi.Imm.imm32); in emit_AMD64Instr()
2556 *p++ = rexAMode_R(i->Ain.Alu64R.dst, i->Ain.Alu64R.dst); in emit_AMD64Instr()
2558 p = doAMode_R(p, i->Ain.Alu64R.dst, i->Ain.Alu64R.dst); in emit_AMD64Instr()
2559 p = emit32(p, i->Ain.Alu64R.src->Armi.Imm.imm32); in emit_AMD64Instr()
2568 switch (i->Ain.Alu64R.op) { in emit_AMD64Instr()
2587 switch (i->Ain.Alu64R.src->tag) { in emit_AMD64Instr()
2589 if (sameHReg(i->Ain.Alu64R.dst, hregAMD64_RAX()) in emit_AMD64Instr()
2590 && !fits8bits(i->Ain.Alu64R.src->Armi.Imm.imm32)) { in emit_AMD64Instr()
2593 p = emit32(p, i->Ain.Alu64R.src->Armi.Imm.imm32); in emit_AMD64Instr()
2595 if (fits8bits(i->Ain.Alu64R.src->Armi.Imm.imm32)) { in emit_AMD64Instr()
2596 *p++ = rexAMode_R_enc_reg( 0, i->Ain.Alu64R.dst ); in emit_AMD64Instr()
2598 p = doAMode_R_enc_reg(p, subopc_imm, i->Ain.Alu64R.dst); in emit_AMD64Instr()
2599 *p++ = toUChar(0xFF & i->Ain.Alu64R.src->Armi.Imm.imm32); in emit_AMD64Instr()
2601 *p++ = rexAMode_R_enc_reg( 0, i->Ain.Alu64R.dst); in emit_AMD64Instr()
2603 p = doAMode_R_enc_reg(p, subopc_imm, i->Ain.Alu64R.dst); in emit_AMD64Instr()
2604 p = emit32(p, i->Ain.Alu64R.src->Armi.Imm.imm32); in emit_AMD64Instr()
2608 *p++ = rexAMode_R( i->Ain.Alu64R.src->Armi.Reg.reg, in emit_AMD64Instr()
2609 i->Ain.Alu64R.dst); in emit_AMD64Instr()
2611 p = doAMode_R(p, i->Ain.Alu64R.src->Armi.Reg.reg, in emit_AMD64Instr()
2612 i->Ain.Alu64R.dst); in emit_AMD64Instr()
2615 *p++ = rexAMode_M( i->Ain.Alu64R.dst, in emit_AMD64Instr()
2616 i->Ain.Alu64R.src->Armi.Mem.am); in emit_AMD64Instr()
2618 p = doAMode_M(p, i->Ain.Alu64R.dst, in emit_AMD64Instr()
2619 i->Ain.Alu64R.src->Armi.Mem.am); in emit_AMD64Instr()
2628 if (i->Ain.Alu64M.op == Aalu_MOV) { in emit_AMD64Instr()
2629 switch (i->Ain.Alu64M.src->tag) { in emit_AMD64Instr()
2631 *p++ = rexAMode_M(i->Ain.Alu64M.src->Ari.Reg.reg, in emit_AMD64Instr()
2632 i->Ain.Alu64M.dst); in emit_AMD64Instr()
2634 p = doAMode_M(p, i->Ain.Alu64M.src->Ari.Reg.reg, in emit_AMD64Instr()
2635 i->Ain.Alu64M.dst); in emit_AMD64Instr()
2638 *p++ = rexAMode_M_enc(0, i->Ain.Alu64M.dst); in emit_AMD64Instr()
2640 p = doAMode_M_enc(p, 0, i->Ain.Alu64M.dst); in emit_AMD64Instr()
2641 p = emit32(p, i->Ain.Alu64M.src->Ari.Imm.imm32); in emit_AMD64Instr()
2650 switch (i->Ain.Alu64M.op) { in emit_AMD64Instr()
2654 switch (i->Ain.Alu64M.src->tag) { in emit_AMD64Instr()
2663 if (fits8bits(i->Ain.Alu64M.src->Ari.Imm.imm32)) { in emit_AMD64Instr()
2664 *p++ = rexAMode_M_enc(subopc_imm, i->Ain.Alu64M.dst); in emit_AMD64Instr()
2666 p = doAMode_M_enc(p, subopc_imm, i->Ain.Alu64M.dst); in emit_AMD64Instr()
2667 *p++ = toUChar(0xFF & i->Ain.Alu64M.src->Ari.Imm.imm32); in emit_AMD64Instr()
2670 *p++ = rexAMode_M_enc(subopc_imm, i->Ain.Alu64M.dst); in emit_AMD64Instr()
2672 p = doAMode_M_enc(p, subopc_imm, i->Ain.Alu64M.dst); in emit_AMD64Instr()
2673 p = emit32(p, i->Ain.Alu64M.src->Ari.Imm.imm32); in emit_AMD64Instr()
2684 switch (i->Ain.Sh64.op) { in emit_AMD64Instr()
2690 if (i->Ain.Sh64.src == 0) { in emit_AMD64Instr()
2691 *p++ = rexAMode_R_enc_reg(0, i->Ain.Sh64.dst); in emit_AMD64Instr()
2693 p = doAMode_R_enc_reg(p, subopc, i->Ain.Sh64.dst); in emit_AMD64Instr()
2696 *p++ = rexAMode_R_enc_reg(0, i->Ain.Sh64.dst); in emit_AMD64Instr()
2698 p = doAMode_R_enc_reg(p, subopc, i->Ain.Sh64.dst); in emit_AMD64Instr()
2699 *p++ = (UChar)(i->Ain.Sh64.src); in emit_AMD64Instr()
2706 *p++ = rexAMode_R_enc_reg(0, i->Ain.Test64.dst); in emit_AMD64Instr()
2708 p = doAMode_R_enc_reg(p, 0, i->Ain.Test64.dst); in emit_AMD64Instr()
2709 p = emit32(p, i->Ain.Test64.imm32); in emit_AMD64Instr()
2713 if (i->Ain.Unary64.op == Aun_NOT) { in emit_AMD64Instr()
2714 *p++ = rexAMode_R_enc_reg(0, i->Ain.Unary64.dst); in emit_AMD64Instr()
2716 p = doAMode_R_enc_reg(p, 2, i->Ain.Unary64.dst); in emit_AMD64Instr()
2719 if (i->Ain.Unary64.op == Aun_NEG) { in emit_AMD64Instr()
2720 *p++ = rexAMode_R_enc_reg(0, i->Ain.Unary64.dst); in emit_AMD64Instr()
2722 p = doAMode_R_enc_reg(p, 3, i->Ain.Unary64.dst); in emit_AMD64Instr()
2728 *p++ = rexAMode_M(i->Ain.Lea64.dst, i->Ain.Lea64.am); in emit_AMD64Instr()
2730 p = doAMode_M(p, i->Ain.Lea64.dst, i->Ain.Lea64.am); in emit_AMD64Instr()
2736 switch (i->Ain.Alu32R.op) { in emit_AMD64Instr()
2751 switch (i->Ain.Alu32R.src->tag) { in emit_AMD64Instr()
2753 if (sameHReg(i->Ain.Alu32R.dst, hregAMD64_RAX()) in emit_AMD64Instr()
2754 && !fits8bits(i->Ain.Alu32R.src->Armi.Imm.imm32)) { in emit_AMD64Instr()
2757 p = emit32(p, i->Ain.Alu32R.src->Armi.Imm.imm32); in emit_AMD64Instr()
2759 if (fits8bits(i->Ain.Alu32R.src->Armi.Imm.imm32)) { in emit_AMD64Instr()
2760 rex = clearWBit( rexAMode_R_enc_reg( 0, i->Ain.Alu32R.dst ) ); in emit_AMD64Instr()
2763 p = doAMode_R_enc_reg(p, subopc_imm, i->Ain.Alu32R.dst); in emit_AMD64Instr()
2764 *p++ = toUChar(0xFF & i->Ain.Alu32R.src->Armi.Imm.imm32); in emit_AMD64Instr()
2766 rex = clearWBit( rexAMode_R_enc_reg( 0, i->Ain.Alu32R.dst) ); in emit_AMD64Instr()
2769 p = doAMode_R_enc_reg(p, subopc_imm, i->Ain.Alu32R.dst); in emit_AMD64Instr()
2770 p = emit32(p, i->Ain.Alu32R.src->Armi.Imm.imm32); in emit_AMD64Instr()
2775 rexAMode_R( i->Ain.Alu32R.src->Armi.Reg.reg, in emit_AMD64Instr()
2776 i->Ain.Alu32R.dst) ); in emit_AMD64Instr()
2779 p = doAMode_R(p, i->Ain.Alu32R.src->Armi.Reg.reg, in emit_AMD64Instr()
2780 i->Ain.Alu32R.dst); in emit_AMD64Instr()
2784 rexAMode_M( i->Ain.Alu32R.dst, in emit_AMD64Instr()
2785 i->Ain.Alu32R.src->Armi.Mem.am) ); in emit_AMD64Instr()
2788 p = doAMode_M(p, i->Ain.Alu32R.dst, in emit_AMD64Instr()
2789 i->Ain.Alu32R.src->Armi.Mem.am); in emit_AMD64Instr()
2797 subopc = i->Ain.MulL.syned ? 5 : 4; in emit_AMD64Instr()
2798 switch (i->Ain.MulL.src->tag) { in emit_AMD64Instr()
2800 *p++ = rexAMode_M_enc(0, i->Ain.MulL.src->Arm.Mem.am); in emit_AMD64Instr()
2802 p = doAMode_M_enc(p, subopc, i->Ain.MulL.src->Arm.Mem.am); in emit_AMD64Instr()
2805 *p++ = rexAMode_R_enc_reg(0, i->Ain.MulL.src->Arm.Reg.reg); in emit_AMD64Instr()
2807 p = doAMode_R_enc_reg(p, subopc, i->Ain.MulL.src->Arm.Reg.reg); in emit_AMD64Instr()
2815 subopc = i->Ain.Div.syned ? 7 : 6; in emit_AMD64Instr()
2816 if (i->Ain.Div.sz == 4) { in emit_AMD64Instr()
2817 switch (i->Ain.Div.src->tag) { in emit_AMD64Instr()
2822 p = doAMode_M_enc(p, subopc, i->Ain.Div.src->Arm.Mem.am); in emit_AMD64Instr()
2826 rexAMode_R_enc_reg(0, i->Ain.Div.src->Arm.Reg.reg)); in emit_AMD64Instr()
2828 p = doAMode_R_enc_reg(p, subopc, i->Ain.Div.src->Arm.Reg.reg); in emit_AMD64Instr()
2834 if (i->Ain.Div.sz == 8) { in emit_AMD64Instr()
2835 switch (i->Ain.Div.src->tag) { in emit_AMD64Instr()
2837 *p++ = rexAMode_M_enc(0, i->Ain.Div.src->Arm.Mem.am); in emit_AMD64Instr()
2839 p = doAMode_M_enc(p, subopc, i->Ain.Div.src->Arm.Mem.am); in emit_AMD64Instr()
2842 *p++ = rexAMode_R_enc_reg(0, i->Ain.Div.src->Arm.Reg.reg); in emit_AMD64Instr()
2844 p = doAMode_R_enc_reg(p, subopc, i->Ain.Div.src->Arm.Reg.reg); in emit_AMD64Instr()
2853 switch (i->Ain.Push.src->tag) { in emit_AMD64Instr()
2856 rexAMode_M_enc(0, i->Ain.Push.src->Armi.Mem.am)); in emit_AMD64Instr()
2858 p = doAMode_M_enc(p, 6, i->Ain.Push.src->Armi.Mem.am); in emit_AMD64Instr()
2862 p = emit32(p, i->Ain.Push.src->Armi.Imm.imm32); in emit_AMD64Instr()
2865 *p++ = toUChar(0x40 + (1 & iregEnc3(i->Ain.Push.src->Armi.Reg.reg))); in emit_AMD64Instr()
2866 *p++ = toUChar(0x50 + iregEnc210(i->Ain.Push.src->Armi.Reg.reg)); in emit_AMD64Instr()
2878 if (i->Ain.Call.cond == Acc_ALWAYS/*call always happens*/ in emit_AMD64Instr()
2879 || i->Ain.Call.rloc.pri == RLPri_None/*no fixup action*/) { in emit_AMD64Instr()
2882 Bool shortImm = fitsIn32Bits(i->Ain.Call.target); in emit_AMD64Instr()
2883 if (i->Ain.Call.cond != Acc_ALWAYS) { in emit_AMD64Instr()
2884 *p++ = toUChar(0x70 + (0xF & (i->Ain.Call.cond ^ 1))); in emit_AMD64Instr()
2893 p = emit32(p, (UInt)i->Ain.Call.target); in emit_AMD64Instr()
2898 p = emit64(p, i->Ain.Call.target); in emit_AMD64Instr()
2922 *p++ = toUChar(0x70 + (0xF & (i->Ain.Call.cond ^ 1))); in emit_AMD64Instr()
2928 p = emit64(p, i->Ain.Call.target); in emit_AMD64Instr()
2946 switch (i->Ain.Call.rloc.pri) { in emit_AMD64Instr()
2959 if (i->Ain.Call.rloc.spOff == 0) { in emit_AMD64Instr()
3019 if (i->Ain.XDirect.cond != Acc_ALWAYS) { in emit_AMD64Instr()
3021 *p++ = toUChar(0x70 + (0xF & (i->Ain.XDirect.cond ^ 1))); in emit_AMD64Instr()
3027 if (fitsIn32Bits(i->Ain.XDirect.dstGA)) { in emit_AMD64Instr()
3033 p = emit32(p, (UInt)i->Ain.XDirect.dstGA); in emit_AMD64Instr()
3038 p = emit64(p, i->Ain.XDirect.dstGA); in emit_AMD64Instr()
3042 *p++ = rexAMode_M(r11, i->Ain.XDirect.amRIP); in emit_AMD64Instr()
3044 p = doAMode_M(p, r11, i->Ain.XDirect.amRIP); in emit_AMD64Instr()
3055 = i->Ain.XDirect.toFastEP ? disp_cp_chain_me_to_fastEP in emit_AMD64Instr()
3065 if (i->Ain.XDirect.cond != Acc_ALWAYS) { in emit_AMD64Instr()
3087 if (i->Ain.XIndir.cond != Acc_ALWAYS) { in emit_AMD64Instr()
3089 *p++ = toUChar(0x70 + (0xF & (i->Ain.XIndir.cond ^ 1))); in emit_AMD64Instr()
3095 *p++ = rexAMode_M(i->Ain.XIndir.dstGA, i->Ain.XIndir.amRIP); in emit_AMD64Instr()
3097 p = doAMode_M(p, i->Ain.XIndir.dstGA, i->Ain.XIndir.amRIP); in emit_AMD64Instr()
3120 if (i->Ain.XIndir.cond != Acc_ALWAYS) { in emit_AMD64Instr()
3134 if (i->Ain.XAssisted.cond != Acc_ALWAYS) { in emit_AMD64Instr()
3136 *p++ = toUChar(0x70 + (0xF & (i->Ain.XAssisted.cond ^ 1))); in emit_AMD64Instr()
3142 *p++ = rexAMode_M(i->Ain.XAssisted.dstGA, i->Ain.XAssisted.amRIP); in emit_AMD64Instr()
3144 p = doAMode_M(p, i->Ain.XAssisted.dstGA, i->Ain.XAssisted.amRIP); in emit_AMD64Instr()
3149 switch (i->Ain.XAssisted.jk) { in emit_AMD64Instr()
3168 ppIRJumpKind(i->Ain.XAssisted.jk); in emit_AMD64Instr()
3184 if (i->Ain.XAssisted.cond != Acc_ALWAYS) { in emit_AMD64Instr()
3193 vassert(i->Ain.CMov64.cond != Acc_ALWAYS); in emit_AMD64Instr()
3194 *p++ = rexAMode_R(i->Ain.CMov64.dst, i->Ain.CMov64.src); in emit_AMD64Instr()
3196 *p++ = toUChar(0x40 + (0xF & i->Ain.CMov64.cond)); in emit_AMD64Instr()
3197 p = doAMode_R(p, i->Ain.CMov64.dst, i->Ain.CMov64.src); in emit_AMD64Instr()
3201 vassert(i->Ain.CLoad.cond != Acc_ALWAYS); in emit_AMD64Instr()
3204 vassert(i->Ain.CLoad.szB == 4 || i->Ain.CLoad.szB == 8); in emit_AMD64Instr()
3210 *p++ = toUChar(0x70 + (0xF & (i->Ain.CLoad.cond ^ 1))); in emit_AMD64Instr()
3217 rex = rexAMode_M(i->Ain.CLoad.dst, i->Ain.CLoad.addr); in emit_AMD64Instr()
3218 *p++ = i->Ain.CLoad.szB == 4 ? clearWBit(rex) : rex; in emit_AMD64Instr()
3220 p = doAMode_M(p, i->Ain.CLoad.dst, i->Ain.CLoad.addr); in emit_AMD64Instr()
3232 vassert(i->Ain.CStore.cond != Acc_ALWAYS); in emit_AMD64Instr()
3235 vassert(i->Ain.CStore.szB == 4 || i->Ain.CStore.szB == 8); in emit_AMD64Instr()
3241 *p++ = toUChar(0x70 + (0xF & (i->Ain.CStore.cond ^ 1))); in emit_AMD64Instr()
3246 rex = rexAMode_M(i->Ain.CStore.src, i->Ain.CStore.addr); in emit_AMD64Instr()
3247 *p++ = i->Ain.CStore.szB == 4 ? clearWBit(rex) : rex; in emit_AMD64Instr()
3249 p = doAMode_M(p, i->Ain.CStore.src, i->Ain.CStore.addr); in emit_AMD64Instr()
3261 if (i->Ain.MovxLQ.syned) { in emit_AMD64Instr()
3263 *p++ = rexAMode_R(i->Ain.MovxLQ.dst, i->Ain.MovxLQ.src); in emit_AMD64Instr()
3265 p = doAMode_R(p, i->Ain.MovxLQ.dst, i->Ain.MovxLQ.src); in emit_AMD64Instr()
3270 rexAMode_R(i->Ain.MovxLQ.src, i->Ain.MovxLQ.dst)); in emit_AMD64Instr()
3272 p = doAMode_R(p, i->Ain.MovxLQ.src, i->Ain.MovxLQ.dst); in emit_AMD64Instr()
3277 if (i->Ain.LoadEX.szSmall == 1 && !i->Ain.LoadEX.syned) { in emit_AMD64Instr()
3279 *p++ = rexAMode_M(i->Ain.LoadEX.dst, i->Ain.LoadEX.src); in emit_AMD64Instr()
3282 p = doAMode_M(p, i->Ain.LoadEX.dst, i->Ain.LoadEX.src); in emit_AMD64Instr()
3285 if (i->Ain.LoadEX.szSmall == 2 && !i->Ain.LoadEX.syned) { in emit_AMD64Instr()
3287 *p++ = rexAMode_M(i->Ain.LoadEX.dst, i->Ain.LoadEX.src); in emit_AMD64Instr()
3290 p = doAMode_M(p, i->Ain.LoadEX.dst, i->Ain.LoadEX.src); in emit_AMD64Instr()
3293 if (i->Ain.LoadEX.szSmall == 4 && !i->Ain.LoadEX.syned) { in emit_AMD64Instr()
3300 rexAMode_M(i->Ain.LoadEX.dst, i->Ain.LoadEX.src)); in emit_AMD64Instr()
3302 p = doAMode_M(p, i->Ain.LoadEX.dst, i->Ain.LoadEX.src); in emit_AMD64Instr()
3313 reg = iregEnc3210(i->Ain.Set64.dst); in emit_AMD64Instr()
3326 *p++ = toUChar(0x90 + (0x0F & i->Ain.Set64.cond)); in emit_AMD64Instr()
3331 *p++ = rexAMode_R(i->Ain.Bsfr64.dst, i->Ain.Bsfr64.src); in emit_AMD64Instr()
3333 if (i->Ain.Bsfr64.isFwds) { in emit_AMD64Instr()
3338 p = doAMode_R(p, i->Ain.Bsfr64.dst, i->Ain.Bsfr64.src); in emit_AMD64Instr()
3349 if (i->Ain.ACAS.sz == 2) *p++ = 0x66; in emit_AMD64Instr()
3355 rex = rexAMode_M( hregAMD64_RBX(), i->Ain.ACAS.addr ); in emit_AMD64Instr()
3356 if (i->Ain.ACAS.sz != 8) in emit_AMD64Instr()
3361 if (i->Ain.ACAS.sz == 1) *p++ = 0xB0; else *p++ = 0xB1; in emit_AMD64Instr()
3362 p = doAMode_M(p, hregAMD64_RBX(), i->Ain.ACAS.addr); in emit_AMD64Instr()
3371 rex = rexAMode_M_enc(1, i->Ain.ACAS.addr ); in emit_AMD64Instr()
3372 if (i->Ain.ACAS.sz != 8) in emit_AMD64Instr()
3377 p = doAMode_M_enc(p, 1, i->Ain.DACAS.addr); in emit_AMD64Instr()
3381 vassert(i->Ain.A87Free.nregs > 0 && i->Ain.A87Free.nregs <= 7); in emit_AMD64Instr()
3382 for (j = 0; j < i->Ain.A87Free.nregs; j++) { in emit_AMD64Instr()
3388 vassert(i->Ain.A87PushPop.szB == 8 || i->Ain.A87PushPop.szB == 4); in emit_AMD64Instr()
3389 if (i->Ain.A87PushPop.isPush) { in emit_AMD64Instr()
3392 rexAMode_M_enc(0, i->Ain.A87PushPop.addr) ); in emit_AMD64Instr()
3393 *p++ = i->Ain.A87PushPop.szB == 4 ? 0xD9 : 0xDD; in emit_AMD64Instr()
3394 p = doAMode_M_enc(p, 0/*subopcode*/, i->Ain.A87PushPop.addr); in emit_AMD64Instr()
3398 rexAMode_M_enc(3, i->Ain.A87PushPop.addr) ); in emit_AMD64Instr()
3399 *p++ = i->Ain.A87PushPop.szB == 4 ? 0xD9 : 0xDD; in emit_AMD64Instr()
3400 p = doAMode_M_enc(p, 3/*subopcode*/, i->Ain.A87PushPop.addr); in emit_AMD64Instr()
3406 switch (i->Ain.A87FpOp.op) { in emit_AMD64Instr()
3441 rexAMode_M_enc(5, i->Ain.A87LdCW.addr) ); in emit_AMD64Instr()
3443 p = doAMode_M_enc(p, 5/*subopcode*/, i->Ain.A87LdCW.addr); in emit_AMD64Instr()
3448 rexAMode_M_enc(7, i->Ain.A87StSW.addr) ); in emit_AMD64Instr()
3450 p = doAMode_M_enc(p, 7/*subopcode*/, i->Ain.A87StSW.addr); in emit_AMD64Instr()
3454 if (i->Ain.Store.sz == 2) { in emit_AMD64Instr()
3460 *p++ = clearWBit( rexAMode_M( i->Ain.Store.src, i->Ain.Store.dst) ); in emit_AMD64Instr()
3462 p = doAMode_M(p, i->Ain.Store.src, i->Ain.Store.dst); in emit_AMD64Instr()
3465 if (i->Ain.Store.sz == 4) { in emit_AMD64Instr()
3466 *p++ = clearWBit( rexAMode_M( i->Ain.Store.src, i->Ain.Store.dst) ); in emit_AMD64Instr()
3468 p = doAMode_M(p, i->Ain.Store.src, i->Ain.Store.dst); in emit_AMD64Instr()
3471 if (i->Ain.Store.sz == 1) { in emit_AMD64Instr()
3475 *p++ = clearWBit( rexAMode_M( i->Ain.Store.src, i->Ain.Store.dst) ); in emit_AMD64Instr()
3477 p = doAMode_M(p, i->Ain.Store.src, i->Ain.Store.dst); in emit_AMD64Instr()
3483 *p++ = clearWBit(rexAMode_M_enc(0, i->Ain.LdMXCSR.addr)); in emit_AMD64Instr()
3486 p = doAMode_M_enc(p, 2/*subopcode*/, i->Ain.LdMXCSR.addr); in emit_AMD64Instr()
3492 if (i->Ain.SseUComIS.sz == 8) { in emit_AMD64Instr()
3496 vassert(i->Ain.SseUComIS.sz == 4); in emit_AMD64Instr()
3499 rexAMode_R_enc_enc( vregEnc3210(i->Ain.SseUComIS.srcL), in emit_AMD64Instr()
3500 vregEnc3210(i->Ain.SseUComIS.srcR) )); in emit_AMD64Instr()
3503 p = doAMode_R_enc_enc(p, vregEnc3210(i->Ain.SseUComIS.srcL), in emit_AMD64Instr()
3504 vregEnc3210(i->Ain.SseUComIS.srcR) ); in emit_AMD64Instr()
3508 *p++ = toUChar(0x40 + (1 & iregEnc3(i->Ain.SseUComIS.dst))); in emit_AMD64Instr()
3509 *p++ = toUChar(0x58 + iregEnc210(i->Ain.SseUComIS.dst)); in emit_AMD64Instr()
3514 rex = rexAMode_R_enc_reg( vregEnc3210(i->Ain.SseSI2SF.dst), in emit_AMD64Instr()
3515 i->Ain.SseSI2SF.src ); in emit_AMD64Instr()
3516 *p++ = toUChar(i->Ain.SseSI2SF.szD==4 ? 0xF3 : 0xF2); in emit_AMD64Instr()
3517 *p++ = toUChar(i->Ain.SseSI2SF.szS==4 ? clearWBit(rex) : rex); in emit_AMD64Instr()
3520 p = doAMode_R_enc_reg( p, vregEnc3210(i->Ain.SseSI2SF.dst), in emit_AMD64Instr()
3521 i->Ain.SseSI2SF.src ); in emit_AMD64Instr()
3526 rex = rexAMode_R_reg_enc( i->Ain.SseSF2SI.dst, in emit_AMD64Instr()
3527 vregEnc3210(i->Ain.SseSF2SI.src) ); in emit_AMD64Instr()
3528 *p++ = toUChar(i->Ain.SseSF2SI.szS==4 ? 0xF3 : 0xF2); in emit_AMD64Instr()
3529 *p++ = toUChar(i->Ain.SseSF2SI.szD==4 ? clearWBit(rex) : rex); in emit_AMD64Instr()
3532 p = doAMode_R_reg_enc( p, i->Ain.SseSF2SI.dst, in emit_AMD64Instr()
3533 vregEnc3210(i->Ain.SseSF2SI.src) ); in emit_AMD64Instr()
3538 *p++ = toUChar(i->Ain.SseSDSS.from64 ? 0xF2 : 0xF3); in emit_AMD64Instr()
3540 rexAMode_R_enc_enc( vregEnc3210(i->Ain.SseSDSS.dst), in emit_AMD64Instr()
3541 vregEnc3210(i->Ain.SseSDSS.src) )); in emit_AMD64Instr()
3544 p = doAMode_R_enc_enc( p, vregEnc3210(i->Ain.SseSDSS.dst), in emit_AMD64Instr()
3545 vregEnc3210(i->Ain.SseSDSS.src) ); in emit_AMD64Instr()
3549 if (i->Ain.SseLdSt.sz == 8) { in emit_AMD64Instr()
3552 if (i->Ain.SseLdSt.sz == 4) { in emit_AMD64Instr()
3555 if (i->Ain.SseLdSt.sz != 16) { in emit_AMD64Instr()
3559 rexAMode_M_enc(vregEnc3210(i->Ain.SseLdSt.reg), in emit_AMD64Instr()
3560 i->Ain.SseLdSt.addr)); in emit_AMD64Instr()
3562 *p++ = toUChar(i->Ain.SseLdSt.isLoad ? 0x10 : 0x11); in emit_AMD64Instr()
3563 p = doAMode_M_enc(p, vregEnc3210(i->Ain.SseLdSt.reg), in emit_AMD64Instr()
3564 i->Ain.SseLdSt.addr); in emit_AMD64Instr()
3568 vassert(i->Ain.SseCStore.cond != Acc_ALWAYS); in emit_AMD64Instr()
3574 *p++ = toUChar(0x70 + (0xF & (i->Ain.SseCStore.cond ^ 1))); in emit_AMD64Instr()
3580 rexAMode_M_enc(vregEnc3210(i->Ain.SseCStore.src), in emit_AMD64Instr()
3581 i->Ain.SseCStore.addr)); in emit_AMD64Instr()
3584 p = doAMode_M_enc(p, vregEnc3210(i->Ain.SseCStore.src), in emit_AMD64Instr()
3585 i->Ain.SseCStore.addr); in emit_AMD64Instr()
3595 vassert(i->Ain.SseCLoad.cond != Acc_ALWAYS); in emit_AMD64Instr()
3601 *p++ = toUChar(0x70 + (0xF & (i->Ain.SseCLoad.cond ^ 1))); in emit_AMD64Instr()
3607 rexAMode_M_enc(vregEnc3210(i->Ain.SseCLoad.dst), in emit_AMD64Instr()
3608 i->Ain.SseCLoad.addr)); in emit_AMD64Instr()
3611 p = doAMode_M_enc(p, vregEnc3210(i->Ain.SseCLoad.dst), in emit_AMD64Instr()
3612 i->Ain.SseCLoad.addr); in emit_AMD64Instr()
3622 vassert(i->Ain.SseLdzLO.sz == 4 || i->Ain.SseLdzLO.sz == 8); in emit_AMD64Instr()
3624 *p++ = toUChar(i->Ain.SseLdzLO.sz==4 ? 0xF3 : 0xF2); in emit_AMD64Instr()
3626 rexAMode_M_enc(vregEnc3210(i->Ain.SseLdzLO.reg), in emit_AMD64Instr()
3627 i->Ain.SseLdzLO.addr)); in emit_AMD64Instr()
3630 p = doAMode_M_enc(p, vregEnc3210(i->Ain.SseLdzLO.reg), in emit_AMD64Instr()
3631 i->Ain.SseLdzLO.addr); in emit_AMD64Instr()
3637 rexAMode_R_enc_enc( vregEnc3210(i->Ain.Sse32Fx4.dst), in emit_AMD64Instr()
3638 vregEnc3210(i->Ain.Sse32Fx4.src) )); in emit_AMD64Instr()
3640 switch (i->Ain.Sse32Fx4.op) { in emit_AMD64Instr()
3656 p = doAMode_R_enc_enc(p, vregEnc3210(i->Ain.Sse32Fx4.dst), in emit_AMD64Instr()
3657 vregEnc3210(i->Ain.Sse32Fx4.src) ); in emit_AMD64Instr()
3666 rexAMode_R_enc_enc( vregEnc3210(i->Ain.Sse64Fx2.dst), in emit_AMD64Instr()
3667 vregEnc3210(i->Ain.Sse64Fx2.src) )); in emit_AMD64Instr()
3669 switch (i->Ain.Sse64Fx2.op) { in emit_AMD64Instr()
3683 p = doAMode_R_enc_enc(p, vregEnc3210(i->Ain.Sse64Fx2.dst), in emit_AMD64Instr()
3684 vregEnc3210(i->Ain.Sse64Fx2.src) ); in emit_AMD64Instr()
3693 rexAMode_R_enc_enc( vregEnc3210(i->Ain.Sse32FLo.dst), in emit_AMD64Instr()
3694 vregEnc3210(i->Ain.Sse32FLo.src) )); in emit_AMD64Instr()
3696 switch (i->Ain.Sse32FLo.op) { in emit_AMD64Instr()
3712 p = doAMode_R_enc_enc(p, vregEnc3210(i->Ain.Sse32FLo.dst), in emit_AMD64Instr()
3713 vregEnc3210(i->Ain.Sse32FLo.src) ); in emit_AMD64Instr()
3722 rexAMode_R_enc_enc( vregEnc3210(i->Ain.Sse64FLo.dst), in emit_AMD64Instr()
3723 vregEnc3210(i->Ain.Sse64FLo.src) )); in emit_AMD64Instr()
3725 switch (i->Ain.Sse64FLo.op) { in emit_AMD64Instr()
3739 p = doAMode_R_enc_enc(p, vregEnc3210(i->Ain.Sse64FLo.dst), in emit_AMD64Instr()
3740 vregEnc3210(i->Ain.Sse64FLo.src) ); in emit_AMD64Instr()
3749 rexAMode_R_enc_enc( vregEnc3210(i->Ain.SseReRg.dst), in emit_AMD64Instr()
3750 vregEnc3210(i->Ain.SseReRg.src) )); in emit_AMD64Instr()
3752 switch (i->Ain.SseReRg.op) { in emit_AMD64Instr()
3810 p = doAMode_R_enc_enc(p, vregEnc3210(i->Ain.SseReRg.dst), in emit_AMD64Instr()
3811 vregEnc3210(i->Ain.SseReRg.src) ); in emit_AMD64Instr()
3817 *p++ = toUChar(0x70 + (i->Ain.SseCMov.cond ^ 1)); in emit_AMD64Instr()
3823 rexAMode_R_enc_enc( vregEnc3210(i->Ain.SseCMov.dst), in emit_AMD64Instr()
3824 vregEnc3210(i->Ain.SseCMov.src) )); in emit_AMD64Instr()
3827 p = doAMode_R_enc_enc(p, vregEnc3210(i->Ain.SseCMov.dst), in emit_AMD64Instr()
3828 vregEnc3210(i->Ain.SseCMov.src) ); in emit_AMD64Instr()
3837 rexAMode_R_enc_enc( vregEnc3210(i->Ain.SseShuf.dst), in emit_AMD64Instr()
3838 vregEnc3210(i->Ain.SseShuf.src) )); in emit_AMD64Instr()
3841 p = doAMode_R_enc_enc(p, vregEnc3210(i->Ain.SseShuf.dst), in emit_AMD64Instr()
3842 vregEnc3210(i->Ain.SseShuf.src) ); in emit_AMD64Instr()
3843 *p++ = (UChar)(i->Ain.SseShuf.order); in emit_AMD64Instr()
3877 rex = clearWBit(rexAMode_M_enc(1, i->Ain.EvCheck.amCounter)); in emit_AMD64Instr()
3880 p = doAMode_M_enc(p, 1, i->Ain.EvCheck.amCounter); in emit_AMD64Instr()
3890 rex = clearWBit(rexAMode_M_enc(4, i->Ain.EvCheck.amFailAddr)); in emit_AMD64Instr()
3893 p = doAMode_M_enc(p, 4, i->Ain.EvCheck.amFailAddr); in emit_AMD64Instr()