Lines Matching refs:ARMin
1027 if (i->ARMin.NBinary.op == ARMneon_VEXT) in showARMNeonDataSize()
1029 if (i->ARMin.NBinary.op == ARMneon_VAND || in showARMNeonDataSize()
1030 i->ARMin.NBinary.op == ARMneon_VORR || in showARMNeonDataSize()
1031 i->ARMin.NBinary.op == ARMneon_VXOR) in showARMNeonDataSize()
1033 return showARMNeonDataSize_wrk(i->ARMin.NBinary.size); in showARMNeonDataSize()
1035 if (i->ARMin.NUnary.op == ARMneon_COPY || in showARMNeonDataSize()
1036 i->ARMin.NUnary.op == ARMneon_NOT || in showARMNeonDataSize()
1037 i->ARMin.NUnary.op == ARMneon_VCVTF32toF16|| in showARMNeonDataSize()
1038 i->ARMin.NUnary.op == ARMneon_VCVTF16toF32|| in showARMNeonDataSize()
1039 i->ARMin.NUnary.op == ARMneon_VCVTFtoFixedS || in showARMNeonDataSize()
1040 i->ARMin.NUnary.op == ARMneon_VCVTFtoFixedU || in showARMNeonDataSize()
1041 i->ARMin.NUnary.op == ARMneon_VCVTFixedStoF || in showARMNeonDataSize()
1042 i->ARMin.NUnary.op == ARMneon_VCVTFixedUtoF || in showARMNeonDataSize()
1043 i->ARMin.NUnary.op == ARMneon_VCVTFtoS || in showARMNeonDataSize()
1044 i->ARMin.NUnary.op == ARMneon_VCVTFtoU || in showARMNeonDataSize()
1045 i->ARMin.NUnary.op == ARMneon_VCVTStoF || in showARMNeonDataSize()
1046 i->ARMin.NUnary.op == ARMneon_VCVTUtoF) in showARMNeonDataSize()
1048 if (i->ARMin.NUnary.op == ARMneon_VQSHLNSS || in showARMNeonDataSize()
1049 i->ARMin.NUnary.op == ARMneon_VQSHLNUU || in showARMNeonDataSize()
1050 i->ARMin.NUnary.op == ARMneon_VQSHLNUS) { in showARMNeonDataSize()
1052 size = i->ARMin.NUnary.size; in showARMNeonDataSize()
1063 return showARMNeonDataSize_wrk(i->ARMin.NUnary.size); in showARMNeonDataSize()
1065 if (i->ARMin.NUnaryS.op == ARMneon_VDUP) { in showARMNeonDataSize()
1067 size = i->ARMin.NUnaryS.size; in showARMNeonDataSize()
1076 return showARMNeonDataSize_wrk(i->ARMin.NUnaryS.size); in showARMNeonDataSize()
1078 return showARMNeonDataSize_wrk(i->ARMin.NShift.size); in showARMNeonDataSize()
1080 return showARMNeonDataSize_wrk(i->ARMin.NDual.size); in showARMNeonDataSize()
1090 i->ARMin.Alu.op = op; in ARMInstr_Alu()
1091 i->ARMin.Alu.dst = dst; in ARMInstr_Alu()
1092 i->ARMin.Alu.argL = argL; in ARMInstr_Alu()
1093 i->ARMin.Alu.argR = argR; in ARMInstr_Alu()
1100 i->ARMin.Shift.op = op; in ARMInstr_Shift()
1101 i->ARMin.Shift.dst = dst; in ARMInstr_Shift()
1102 i->ARMin.Shift.argL = argL; in ARMInstr_Shift()
1103 i->ARMin.Shift.argR = argR; in ARMInstr_Shift()
1109 i->ARMin.Unary.op = op; in ARMInstr_Unary()
1110 i->ARMin.Unary.dst = dst; in ARMInstr_Unary()
1111 i->ARMin.Unary.src = src; in ARMInstr_Unary()
1117 i->ARMin.CmpOrTst.isCmp = isCmp; in ARMInstr_CmpOrTst()
1118 i->ARMin.CmpOrTst.argL = argL; in ARMInstr_CmpOrTst()
1119 i->ARMin.CmpOrTst.argR = argR; in ARMInstr_CmpOrTst()
1125 i->ARMin.Mov.dst = dst; in ARMInstr_Mov()
1126 i->ARMin.Mov.src = src; in ARMInstr_Mov()
1132 i->ARMin.Imm32.dst = dst; in ARMInstr_Imm32()
1133 i->ARMin.Imm32.imm32 = imm32; in ARMInstr_Imm32()
1140 i->ARMin.LdSt32.cc = cc; in ARMInstr_LdSt32()
1141 i->ARMin.LdSt32.isLoad = isLoad; in ARMInstr_LdSt32()
1142 i->ARMin.LdSt32.rD = rD; in ARMInstr_LdSt32()
1143 i->ARMin.LdSt32.amode = amode; in ARMInstr_LdSt32()
1152 i->ARMin.LdSt16.cc = cc; in ARMInstr_LdSt16()
1153 i->ARMin.LdSt16.isLoad = isLoad; in ARMInstr_LdSt16()
1154 i->ARMin.LdSt16.signedLoad = signedLoad; in ARMInstr_LdSt16()
1155 i->ARMin.LdSt16.rD = rD; in ARMInstr_LdSt16()
1156 i->ARMin.LdSt16.amode = amode; in ARMInstr_LdSt16()
1164 i->ARMin.LdSt8U.cc = cc; in ARMInstr_LdSt8U()
1165 i->ARMin.LdSt8U.isLoad = isLoad; in ARMInstr_LdSt8U()
1166 i->ARMin.LdSt8U.rD = rD; in ARMInstr_LdSt8U()
1167 i->ARMin.LdSt8U.amode = amode; in ARMInstr_LdSt8U()
1174 i->ARMin.Ld8S.cc = cc; in ARMInstr_Ld8S()
1175 i->ARMin.Ld8S.rD = rD; in ARMInstr_Ld8S()
1176 i->ARMin.Ld8S.amode = amode; in ARMInstr_Ld8S()
1184 i->ARMin.XDirect.dstGA = dstGA; in ARMInstr_XDirect()
1185 i->ARMin.XDirect.amR15T = amR15T; in ARMInstr_XDirect()
1186 i->ARMin.XDirect.cond = cond; in ARMInstr_XDirect()
1187 i->ARMin.XDirect.toFastEP = toFastEP; in ARMInstr_XDirect()
1194 i->ARMin.XIndir.dstGA = dstGA; in ARMInstr_XIndir()
1195 i->ARMin.XIndir.amR15T = amR15T; in ARMInstr_XIndir()
1196 i->ARMin.XIndir.cond = cond; in ARMInstr_XIndir()
1203 i->ARMin.XAssisted.dstGA = dstGA; in ARMInstr_XAssisted()
1204 i->ARMin.XAssisted.amR15T = amR15T; in ARMInstr_XAssisted()
1205 i->ARMin.XAssisted.cond = cond; in ARMInstr_XAssisted()
1206 i->ARMin.XAssisted.jk = jk; in ARMInstr_XAssisted()
1212 i->ARMin.CMov.cond = cond; in ARMInstr_CMov()
1213 i->ARMin.CMov.dst = dst; in ARMInstr_CMov()
1214 i->ARMin.CMov.src = src; in ARMInstr_CMov()
1222 i->ARMin.Call.cond = cond; in ARMInstr_Call()
1223 i->ARMin.Call.target = target; in ARMInstr_Call()
1224 i->ARMin.Call.nArgRegs = nArgRegs; in ARMInstr_Call()
1225 i->ARMin.Call.rloc = rloc; in ARMInstr_Call()
1232 i->ARMin.Mul.op = op; in ARMInstr_Mul()
1238 i->ARMin.LdrEX.szB = szB; in ARMInstr_LdrEX()
1245 i->ARMin.StrEX.szB = szB; in ARMInstr_StrEX()
1252 i->ARMin.VLdStD.isLoad = isLoad; in ARMInstr_VLdStD()
1253 i->ARMin.VLdStD.dD = dD; in ARMInstr_VLdStD()
1254 i->ARMin.VLdStD.amode = am; in ARMInstr_VLdStD()
1260 i->ARMin.VLdStS.isLoad = isLoad; in ARMInstr_VLdStS()
1261 i->ARMin.VLdStS.fD = fD; in ARMInstr_VLdStS()
1262 i->ARMin.VLdStS.amode = am; in ARMInstr_VLdStS()
1268 i->ARMin.VAluD.op = op; in ARMInstr_VAluD()
1269 i->ARMin.VAluD.dst = dst; in ARMInstr_VAluD()
1270 i->ARMin.VAluD.argL = argL; in ARMInstr_VAluD()
1271 i->ARMin.VAluD.argR = argR; in ARMInstr_VAluD()
1277 i->ARMin.VAluS.op = op; in ARMInstr_VAluS()
1278 i->ARMin.VAluS.dst = dst; in ARMInstr_VAluS()
1279 i->ARMin.VAluS.argL = argL; in ARMInstr_VAluS()
1280 i->ARMin.VAluS.argR = argR; in ARMInstr_VAluS()
1286 i->ARMin.VUnaryD.op = op; in ARMInstr_VUnaryD()
1287 i->ARMin.VUnaryD.dst = dst; in ARMInstr_VUnaryD()
1288 i->ARMin.VUnaryD.src = src; in ARMInstr_VUnaryD()
1294 i->ARMin.VUnaryS.op = op; in ARMInstr_VUnaryS()
1295 i->ARMin.VUnaryS.dst = dst; in ARMInstr_VUnaryS()
1296 i->ARMin.VUnaryS.src = src; in ARMInstr_VUnaryS()
1302 i->ARMin.VCmpD.argL = argL; in ARMInstr_VCmpD()
1303 i->ARMin.VCmpD.argR = argR; in ARMInstr_VCmpD()
1309 i->ARMin.VCMovD.cond = cond; in ARMInstr_VCMovD()
1310 i->ARMin.VCMovD.dst = dst; in ARMInstr_VCMovD()
1311 i->ARMin.VCMovD.src = src; in ARMInstr_VCMovD()
1318 i->ARMin.VCMovS.cond = cond; in ARMInstr_VCMovS()
1319 i->ARMin.VCMovS.dst = dst; in ARMInstr_VCMovS()
1320 i->ARMin.VCMovS.src = src; in ARMInstr_VCMovS()
1327 i->ARMin.VCvtSD.sToD = sToD; in ARMInstr_VCvtSD()
1328 i->ARMin.VCvtSD.dst = dst; in ARMInstr_VCvtSD()
1329 i->ARMin.VCvtSD.src = src; in ARMInstr_VCvtSD()
1335 i->ARMin.VXferQ.toQ = toQ; in ARMInstr_VXferQ()
1336 i->ARMin.VXferQ.qD = qD; in ARMInstr_VXferQ()
1337 i->ARMin.VXferQ.dHi = dHi; in ARMInstr_VXferQ()
1338 i->ARMin.VXferQ.dLo = dLo; in ARMInstr_VXferQ()
1344 i->ARMin.VXferD.toD = toD; in ARMInstr_VXferD()
1345 i->ARMin.VXferD.dD = dD; in ARMInstr_VXferD()
1346 i->ARMin.VXferD.rHi = rHi; in ARMInstr_VXferD()
1347 i->ARMin.VXferD.rLo = rLo; in ARMInstr_VXferD()
1353 i->ARMin.VXferS.toS = toS; in ARMInstr_VXferS()
1354 i->ARMin.VXferS.fD = fD; in ARMInstr_VXferS()
1355 i->ARMin.VXferS.rLo = rLo; in ARMInstr_VXferS()
1362 i->ARMin.VCvtID.iToD = iToD; in ARMInstr_VCvtID()
1363 i->ARMin.VCvtID.syned = syned; in ARMInstr_VCvtID()
1364 i->ARMin.VCvtID.dst = dst; in ARMInstr_VCvtID()
1365 i->ARMin.VCvtID.src = src; in ARMInstr_VCvtID()
1372 i->ARMin.VRIntR.isF64 = isF64; in ARMInstr_VRIntR()
1373 i->ARMin.VRIntR.dst = dst ; in ARMInstr_VRIntR()
1374 i->ARMin.VRIntR.src = src; in ARMInstr_VRIntR()
1382 i->ARMin.VMinMaxNum.isF64 = isF64; in ARMInstr_VMinMaxNum()
1383 i->ARMin.VMinMaxNum.isMax = isMax; in ARMInstr_VMinMaxNum()
1384 i->ARMin.VMinMaxNum.dst = dst ; in ARMInstr_VMinMaxNum()
1385 i->ARMin.VMinMaxNum.srcL = srcL; in ARMInstr_VMinMaxNum()
1386 i->ARMin.VMinMaxNum.srcR = srcR; in ARMInstr_VMinMaxNum()
1392 i->ARMin.FPSCR.toFPSCR = toFPSCR; in ARMInstr_FPSCR()
1393 i->ARMin.FPSCR.iReg = iReg; in ARMInstr_FPSCR()
1410 i->ARMin.NLdStQ.isLoad = isLoad; in ARMInstr_NLdStQ()
1411 i->ARMin.NLdStQ.dQ = dQ; in ARMInstr_NLdStQ()
1412 i->ARMin.NLdStQ.amode = amode; in ARMInstr_NLdStQ()
1419 i->ARMin.NLdStD.isLoad = isLoad; in ARMInstr_NLdStD()
1420 i->ARMin.NLdStD.dD = dD; in ARMInstr_NLdStD()
1421 i->ARMin.NLdStD.amode = amode; in ARMInstr_NLdStD()
1429 i->ARMin.NUnary.op = op; in ARMInstr_NUnary()
1430 i->ARMin.NUnary.src = nQ; in ARMInstr_NUnary()
1431 i->ARMin.NUnary.dst = dQ; in ARMInstr_NUnary()
1432 i->ARMin.NUnary.size = size; in ARMInstr_NUnary()
1433 i->ARMin.NUnary.Q = Q; in ARMInstr_NUnary()
1441 i->ARMin.NUnaryS.op = op; in ARMInstr_NUnaryS()
1442 i->ARMin.NUnaryS.src = src; in ARMInstr_NUnaryS()
1443 i->ARMin.NUnaryS.dst = dst; in ARMInstr_NUnaryS()
1444 i->ARMin.NUnaryS.size = size; in ARMInstr_NUnaryS()
1445 i->ARMin.NUnaryS.Q = Q; in ARMInstr_NUnaryS()
1453 i->ARMin.NDual.op = op; in ARMInstr_NDual()
1454 i->ARMin.NDual.arg1 = nQ; in ARMInstr_NDual()
1455 i->ARMin.NDual.arg2 = mQ; in ARMInstr_NDual()
1456 i->ARMin.NDual.size = size; in ARMInstr_NDual()
1457 i->ARMin.NDual.Q = Q; in ARMInstr_NDual()
1466 i->ARMin.NBinary.op = op; in ARMInstr_NBinary()
1467 i->ARMin.NBinary.argL = argL; in ARMInstr_NBinary()
1468 i->ARMin.NBinary.argR = argR; in ARMInstr_NBinary()
1469 i->ARMin.NBinary.dst = dst; in ARMInstr_NBinary()
1470 i->ARMin.NBinary.size = size; in ARMInstr_NBinary()
1471 i->ARMin.NBinary.Q = Q; in ARMInstr_NBinary()
1478 i->ARMin.NeonImm.dst = dst; in ARMInstr_NeonImm()
1479 i->ARMin.NeonImm.imm = imm; in ARMInstr_NeonImm()
1486 i->ARMin.NCMovQ.cond = cond; in ARMInstr_NCMovQ()
1487 i->ARMin.NCMovQ.dst = dst; in ARMInstr_NCMovQ()
1488 i->ARMin.NCMovQ.src = src; in ARMInstr_NCMovQ()
1498 i->ARMin.NShift.op = op; in ARMInstr_NShift()
1499 i->ARMin.NShift.argL = argL; in ARMInstr_NShift()
1500 i->ARMin.NShift.argR = argR; in ARMInstr_NShift()
1501 i->ARMin.NShift.dst = dst; in ARMInstr_NShift()
1502 i->ARMin.NShift.size = size; in ARMInstr_NShift()
1503 i->ARMin.NShift.Q = Q; in ARMInstr_NShift()
1511 i->ARMin.NShl64.dst = dst; in ARMInstr_NShl64()
1512 i->ARMin.NShl64.src = src; in ARMInstr_NShl64()
1513 i->ARMin.NShl64.amt = amt; in ARMInstr_NShl64()
1540 i->ARMin.Alu.op = ARMalu_ADD; in ARMInstr_Add32()
1541 i->ARMin.Alu.dst = rD; in ARMInstr_Add32()
1542 i->ARMin.Alu.argL = rN; in ARMInstr_Add32()
1543 i->ARMin.Alu.argR = ARMRI84_I84(u8, u4); in ARMInstr_Add32()
1546 i->ARMin.Add32.rD = rD; in ARMInstr_Add32()
1547 i->ARMin.Add32.rN = rN; in ARMInstr_Add32()
1548 i->ARMin.Add32.imm32 = imm32; in ARMInstr_Add32()
1557 i->ARMin.EvCheck.amCounter = amCounter; in ARMInstr_EvCheck()
1558 i->ARMin.EvCheck.amFailAddr = amFailAddr; in ARMInstr_EvCheck()
1573 vex_printf("%-4s ", showARMAluOp(i->ARMin.Alu.op)); in ppARMInstr()
1574 ppHRegARM(i->ARMin.Alu.dst); in ppARMInstr()
1576 ppHRegARM(i->ARMin.Alu.argL); in ppARMInstr()
1578 ppARMRI84(i->ARMin.Alu.argR); in ppARMInstr()
1581 vex_printf("%s ", showARMShiftOp(i->ARMin.Shift.op)); in ppARMInstr()
1582 ppHRegARM(i->ARMin.Shift.dst); in ppARMInstr()
1584 ppHRegARM(i->ARMin.Shift.argL); in ppARMInstr()
1586 ppARMRI5(i->ARMin.Shift.argR); in ppARMInstr()
1589 vex_printf("%s ", showARMUnaryOp(i->ARMin.Unary.op)); in ppARMInstr()
1590 ppHRegARM(i->ARMin.Unary.dst); in ppARMInstr()
1592 ppHRegARM(i->ARMin.Unary.src); in ppARMInstr()
1595 vex_printf("%s ", i->ARMin.CmpOrTst.isCmp ? "cmp" : "tst"); in ppARMInstr()
1596 ppHRegARM(i->ARMin.CmpOrTst.argL); in ppARMInstr()
1598 ppARMRI84(i->ARMin.CmpOrTst.argR); in ppARMInstr()
1602 ppHRegARM(i->ARMin.Mov.dst); in ppARMInstr()
1604 ppARMRI84(i->ARMin.Mov.src); in ppARMInstr()
1608 ppHRegARM(i->ARMin.Imm32.dst); in ppARMInstr()
1609 vex_printf(", 0x%x", i->ARMin.Imm32.imm32); in ppARMInstr()
1612 if (i->ARMin.LdSt32.isLoad) { in ppARMInstr()
1613 vex_printf("ldr%s ", i->ARMin.LdSt32.cc == ARMcc_AL ? " " in ppARMInstr()
1614 : showARMCondCode(i->ARMin.LdSt32.cc)); in ppARMInstr()
1615 ppHRegARM(i->ARMin.LdSt32.rD); in ppARMInstr()
1617 ppARMAMode1(i->ARMin.LdSt32.amode); in ppARMInstr()
1619 vex_printf("str%s ", i->ARMin.LdSt32.cc == ARMcc_AL ? " " in ppARMInstr()
1620 : showARMCondCode(i->ARMin.LdSt32.cc)); in ppARMInstr()
1621 ppARMAMode1(i->ARMin.LdSt32.amode); in ppARMInstr()
1623 ppHRegARM(i->ARMin.LdSt32.rD); in ppARMInstr()
1627 if (i->ARMin.LdSt16.isLoad) { in ppARMInstr()
1629 i->ARMin.LdSt16.signedLoad ? "ldrsh" : "ldrh", in ppARMInstr()
1630 i->ARMin.LdSt16.cc == ARMcc_AL ? " " in ppARMInstr()
1631 : showARMCondCode(i->ARMin.LdSt16.cc), in ppARMInstr()
1632 i->ARMin.LdSt16.signedLoad ? " " : " "); in ppARMInstr()
1633 ppHRegARM(i->ARMin.LdSt16.rD); in ppARMInstr()
1635 ppARMAMode2(i->ARMin.LdSt16.amode); in ppARMInstr()
1638 i->ARMin.LdSt16.cc == ARMcc_AL ? " " in ppARMInstr()
1639 : showARMCondCode(i->ARMin.LdSt16.cc)); in ppARMInstr()
1640 ppARMAMode2(i->ARMin.LdSt16.amode); in ppARMInstr()
1642 ppHRegARM(i->ARMin.LdSt16.rD); in ppARMInstr()
1646 if (i->ARMin.LdSt8U.isLoad) { in ppARMInstr()
1647 vex_printf("ldrb%s ", i->ARMin.LdSt8U.cc == ARMcc_AL ? " " in ppARMInstr()
1648 : showARMCondCode(i->ARMin.LdSt8U.cc)); in ppARMInstr()
1649 ppHRegARM(i->ARMin.LdSt8U.rD); in ppARMInstr()
1651 ppARMAMode1(i->ARMin.LdSt8U.amode); in ppARMInstr()
1653 vex_printf("strb%s ", i->ARMin.LdSt8U.cc == ARMcc_AL ? " " in ppARMInstr()
1654 : showARMCondCode(i->ARMin.LdSt8U.cc)); in ppARMInstr()
1655 ppARMAMode1(i->ARMin.LdSt8U.amode); in ppARMInstr()
1657 ppHRegARM(i->ARMin.LdSt8U.rD); in ppARMInstr()
1661 vex_printf("ldrsb%s ", i->ARMin.Ld8S.cc == ARMcc_AL ? " " in ppARMInstr()
1662 : showARMCondCode(i->ARMin.Ld8S.cc)); in ppARMInstr()
1663 ppARMAMode2(i->ARMin.Ld8S.amode); in ppARMInstr()
1665 ppHRegARM(i->ARMin.Ld8S.rD); in ppARMInstr()
1670 showARMCondCode(i->ARMin.XDirect.cond)); in ppARMInstr()
1672 (UInt)(i->ARMin.XDirect.dstGA & 0xFFFF)); in ppARMInstr()
1674 (UInt)((i->ARMin.XDirect.dstGA >> 16) & 0xFFFF)); in ppARMInstr()
1676 ppARMAMode1(i->ARMin.XDirect.amR15T); in ppARMInstr()
1678 i->ARMin.XDirect.toFastEP ? "fast" : "slow"); in ppARMInstr()
1680 i->ARMin.XDirect.toFastEP ? "fast" : "slow"); in ppARMInstr()
1686 showARMCondCode(i->ARMin.XIndir.cond)); in ppARMInstr()
1688 ppHRegARM(i->ARMin.XIndir.dstGA); in ppARMInstr()
1690 ppARMAMode1(i->ARMin.XIndir.amR15T); in ppARMInstr()
1698 showARMCondCode(i->ARMin.XAssisted.cond)); in ppARMInstr()
1700 ppHRegARM(i->ARMin.XAssisted.dstGA); in ppARMInstr()
1702 ppARMAMode1(i->ARMin.XAssisted.amR15T); in ppARMInstr()
1704 (Int)i->ARMin.XAssisted.jk); in ppARMInstr()
1710 vex_printf("mov%s ", showARMCondCode(i->ARMin.CMov.cond)); in ppARMInstr()
1711 ppHRegARM(i->ARMin.CMov.dst); in ppARMInstr()
1713 ppARMRI84(i->ARMin.CMov.src); in ppARMInstr()
1717 i->ARMin.Call.cond==ARMcc_AL in ppARMInstr()
1718 ? "" : showARMCondCode(i->ARMin.Call.cond)); in ppARMInstr()
1720 i->ARMin.Call.target, i->ARMin.Call.nArgRegs); in ppARMInstr()
1721 ppRetLoc(i->ARMin.Call.rloc); in ppARMInstr()
1725 vex_printf("%-5s ", showARMMulOp(i->ARMin.Mul.op)); in ppARMInstr()
1726 if (i->ARMin.Mul.op == ARMmul_PLAIN) { in ppARMInstr()
1734 switch (i->ARMin.LdrEX.szB) { in ppARMInstr()
1740 sz, i->ARMin.LdrEX.szB == 8 ? "r3:" : ""); in ppARMInstr()
1745 switch (i->ARMin.StrEX.szB) { in ppARMInstr()
1751 sz, i->ARMin.StrEX.szB == 8 ? "r3:" : ""); in ppARMInstr()
1755 if (i->ARMin.VLdStD.isLoad) { in ppARMInstr()
1757 ppHRegARM(i->ARMin.VLdStD.dD); in ppARMInstr()
1759 ppARMAModeV(i->ARMin.VLdStD.amode); in ppARMInstr()
1762 ppARMAModeV(i->ARMin.VLdStD.amode); in ppARMInstr()
1764 ppHRegARM(i->ARMin.VLdStD.dD); in ppARMInstr()
1768 if (i->ARMin.VLdStS.isLoad) { in ppARMInstr()
1770 ppHRegARM(i->ARMin.VLdStS.fD); in ppARMInstr()
1772 ppARMAModeV(i->ARMin.VLdStS.amode); in ppARMInstr()
1775 ppARMAModeV(i->ARMin.VLdStS.amode); in ppARMInstr()
1777 ppHRegARM(i->ARMin.VLdStS.fD); in ppARMInstr()
1781 vex_printf("f%-3sd ", showARMVfpOp(i->ARMin.VAluD.op)); in ppARMInstr()
1782 ppHRegARM(i->ARMin.VAluD.dst); in ppARMInstr()
1784 ppHRegARM(i->ARMin.VAluD.argL); in ppARMInstr()
1786 ppHRegARM(i->ARMin.VAluD.argR); in ppARMInstr()
1789 vex_printf("f%-3ss ", showARMVfpOp(i->ARMin.VAluS.op)); in ppARMInstr()
1790 ppHRegARM(i->ARMin.VAluS.dst); in ppARMInstr()
1792 ppHRegARM(i->ARMin.VAluS.argL); in ppARMInstr()
1794 ppHRegARM(i->ARMin.VAluS.argR); in ppARMInstr()
1797 vex_printf("f%-3sd ", showARMVfpUnaryOp(i->ARMin.VUnaryD.op)); in ppARMInstr()
1798 ppHRegARM(i->ARMin.VUnaryD.dst); in ppARMInstr()
1800 ppHRegARM(i->ARMin.VUnaryD.src); in ppARMInstr()
1803 vex_printf("f%-3ss ", showARMVfpUnaryOp(i->ARMin.VUnaryS.op)); in ppARMInstr()
1804 ppHRegARM(i->ARMin.VUnaryS.dst); in ppARMInstr()
1806 ppHRegARM(i->ARMin.VUnaryS.src); in ppARMInstr()
1810 ppHRegARM(i->ARMin.VCmpD.argL); in ppARMInstr()
1812 ppHRegARM(i->ARMin.VCmpD.argR); in ppARMInstr()
1816 vex_printf("fcpyd%s ", showARMCondCode(i->ARMin.VCMovD.cond)); in ppARMInstr()
1817 ppHRegARM(i->ARMin.VCMovD.dst); in ppARMInstr()
1819 ppHRegARM(i->ARMin.VCMovD.src); in ppARMInstr()
1822 vex_printf("fcpys%s ", showARMCondCode(i->ARMin.VCMovS.cond)); in ppARMInstr()
1823 ppHRegARM(i->ARMin.VCMovS.dst); in ppARMInstr()
1825 ppHRegARM(i->ARMin.VCMovS.src); in ppARMInstr()
1828 vex_printf("fcvt%s ", i->ARMin.VCvtSD.sToD ? "ds" : "sd"); in ppARMInstr()
1829 ppHRegARM(i->ARMin.VCvtSD.dst); in ppARMInstr()
1831 ppHRegARM(i->ARMin.VCvtSD.src); in ppARMInstr()
1834 if (i->ARMin.VXferQ.toQ) { in ppARMInstr()
1836 ppHRegARM(i->ARMin.VXferQ.qD); in ppARMInstr()
1838 ppHRegARM(i->ARMin.VXferQ.dLo); in ppARMInstr()
1840 ppHRegARM(i->ARMin.VXferQ.qD); in ppARMInstr()
1842 ppHRegARM(i->ARMin.VXferQ.dHi); in ppARMInstr()
1845 ppHRegARM(i->ARMin.VXferQ.dLo); in ppARMInstr()
1847 ppHRegARM(i->ARMin.VXferQ.qD); in ppARMInstr()
1850 ppHRegARM(i->ARMin.VXferQ.dHi); in ppARMInstr()
1852 ppHRegARM(i->ARMin.VXferQ.qD); in ppARMInstr()
1858 if (i->ARMin.VXferD.toD) { in ppARMInstr()
1859 ppHRegARM(i->ARMin.VXferD.dD); in ppARMInstr()
1861 ppHRegARM(i->ARMin.VXferD.rLo); in ppARMInstr()
1863 ppHRegARM(i->ARMin.VXferD.rHi); in ppARMInstr()
1865 ppHRegARM(i->ARMin.VXferD.rLo); in ppARMInstr()
1867 ppHRegARM(i->ARMin.VXferD.rHi); in ppARMInstr()
1869 ppHRegARM(i->ARMin.VXferD.dD); in ppARMInstr()
1874 if (i->ARMin.VXferS.toS) { in ppARMInstr()
1875 ppHRegARM(i->ARMin.VXferS.fD); in ppARMInstr()
1877 ppHRegARM(i->ARMin.VXferS.rLo); in ppARMInstr()
1879 ppHRegARM(i->ARMin.VXferS.rLo); in ppARMInstr()
1881 ppHRegARM(i->ARMin.VXferS.fD); in ppARMInstr()
1886 if (i->ARMin.VCvtID.iToD) { in ppARMInstr()
1887 nm = i->ARMin.VCvtID.syned ? "fsitod" : "fuitod"; in ppARMInstr()
1889 nm = i->ARMin.VCvtID.syned ? "ftosid" : "ftouid"; in ppARMInstr()
1892 ppHRegARM(i->ARMin.VCvtID.dst); in ppARMInstr()
1894 ppHRegARM(i->ARMin.VCvtID.src); in ppARMInstr()
1898 const HChar* sz = i->ARMin.VRIntR.isF64 ? "f64" : "f32"; in ppARMInstr()
1900 ppHRegARM(i->ARMin.VRIntR.dst); in ppARMInstr()
1902 ppHRegARM(i->ARMin.VRIntR.src); in ppARMInstr()
1906 const HChar* sz = i->ARMin.VMinMaxNum.isF64 ? "f64" : "f32"; in ppARMInstr()
1907 const HChar* nm = i->ARMin.VMinMaxNum.isMax ? "vmaxnm" : "vminnm"; in ppARMInstr()
1909 ppHRegARM(i->ARMin.VMinMaxNum.dst); in ppARMInstr()
1911 ppHRegARM(i->ARMin.VMinMaxNum.srcL); in ppARMInstr()
1913 ppHRegARM(i->ARMin.VMinMaxNum.srcR); in ppARMInstr()
1917 if (i->ARMin.FPSCR.toFPSCR) { in ppARMInstr()
1919 ppHRegARM(i->ARMin.FPSCR.iReg); in ppARMInstr()
1922 ppHRegARM(i->ARMin.FPSCR.iReg); in ppARMInstr()
1933 if (i->ARMin.NLdStQ.isLoad) in ppARMInstr()
1937 ppHRegARM(i->ARMin.NLdStQ.dQ); in ppARMInstr()
1939 ppARMAModeN(i->ARMin.NLdStQ.amode); in ppARMInstr()
1942 if (i->ARMin.NLdStD.isLoad) in ppARMInstr()
1946 ppHRegARM(i->ARMin.NLdStD.dD); in ppARMInstr()
1948 ppARMAModeN(i->ARMin.NLdStD.amode); in ppARMInstr()
1952 showARMNeonUnOp(i->ARMin.NUnary.op), in ppARMInstr()
1953 showARMNeonUnOpDataType(i->ARMin.NUnary.op), in ppARMInstr()
1955 ppHRegARM(i->ARMin.NUnary.dst); in ppARMInstr()
1957 ppHRegARM(i->ARMin.NUnary.src); in ppARMInstr()
1958 if (i->ARMin.NUnary.op == ARMneon_EQZ) in ppARMInstr()
1960 if (i->ARMin.NUnary.op == ARMneon_VCVTFtoFixedS || in ppARMInstr()
1961 i->ARMin.NUnary.op == ARMneon_VCVTFtoFixedU || in ppARMInstr()
1962 i->ARMin.NUnary.op == ARMneon_VCVTFixedStoF || in ppARMInstr()
1963 i->ARMin.NUnary.op == ARMneon_VCVTFixedUtoF) { in ppARMInstr()
1964 vex_printf(", #%u", i->ARMin.NUnary.size); in ppARMInstr()
1966 if (i->ARMin.NUnary.op == ARMneon_VQSHLNSS || in ppARMInstr()
1967 i->ARMin.NUnary.op == ARMneon_VQSHLNUU || in ppARMInstr()
1968 i->ARMin.NUnary.op == ARMneon_VQSHLNUS) { in ppARMInstr()
1970 size = i->ARMin.NUnary.size; in ppARMInstr()
1984 showARMNeonUnOpS(i->ARMin.NUnaryS.op), in ppARMInstr()
1985 showARMNeonUnOpSDataType(i->ARMin.NUnaryS.op), in ppARMInstr()
1987 ppARMNRS(i->ARMin.NUnaryS.dst); in ppARMInstr()
1989 ppARMNRS(i->ARMin.NUnaryS.src); in ppARMInstr()
1993 showARMNeonShiftOp(i->ARMin.NShift.op), in ppARMInstr()
1994 showARMNeonShiftOpDataType(i->ARMin.NShift.op), in ppARMInstr()
1996 ppHRegARM(i->ARMin.NShift.dst); in ppARMInstr()
1998 ppHRegARM(i->ARMin.NShift.argL); in ppARMInstr()
2000 ppHRegARM(i->ARMin.NShift.argR); in ppARMInstr()
2004 ppHRegARM(i->ARMin.NShl64.dst); in ppARMInstr()
2006 ppHRegARM(i->ARMin.NShl64.src); in ppARMInstr()
2007 vex_printf(", #%u", i->ARMin.NShl64.amt); in ppARMInstr()
2011 showARMNeonDualOp(i->ARMin.NDual.op), in ppARMInstr()
2012 showARMNeonDualOpDataType(i->ARMin.NDual.op), in ppARMInstr()
2014 ppHRegARM(i->ARMin.NDual.arg1); in ppARMInstr()
2016 ppHRegARM(i->ARMin.NDual.arg2); in ppARMInstr()
2020 showARMNeonBinOp(i->ARMin.NBinary.op), in ppARMInstr()
2021 showARMNeonBinOpDataType(i->ARMin.NBinary.op), in ppARMInstr()
2024 ppHRegARM(i->ARMin.NBinary.dst); in ppARMInstr()
2026 ppHRegARM(i->ARMin.NBinary.argL); in ppARMInstr()
2028 ppHRegARM(i->ARMin.NBinary.argR); in ppARMInstr()
2032 ppHRegARM(i->ARMin.NeonImm.dst); in ppARMInstr()
2034 ppARMNImm(i->ARMin.NeonImm.imm); in ppARMInstr()
2037 vex_printf("vmov%s ", showARMCondCode(i->ARMin.NCMovQ.cond)); in ppARMInstr()
2038 ppHRegARM(i->ARMin.NCMovQ.dst); in ppARMInstr()
2040 ppHRegARM(i->ARMin.NCMovQ.src); in ppARMInstr()
2044 ppHRegARM(i->ARMin.Add32.rD); in ppARMInstr()
2046 ppHRegARM(i->ARMin.Add32.rN); in ppARMInstr()
2048 vex_printf("%u", i->ARMin.Add32.imm32); in ppARMInstr()
2052 ppARMAMode1(i->ARMin.EvCheck.amCounter); in ppARMInstr()
2054 ppARMAMode1(i->ARMin.EvCheck.amCounter); in ppARMInstr()
2056 ppARMAMode1(i->ARMin.EvCheck.amFailAddr); in ppARMInstr()
2085 addHRegUse(u, HRmWrite, i->ARMin.Alu.dst); in getRegUsage_ARMInstr()
2086 addHRegUse(u, HRmRead, i->ARMin.Alu.argL); in getRegUsage_ARMInstr()
2087 addRegUsage_ARMRI84(u, i->ARMin.Alu.argR); in getRegUsage_ARMInstr()
2090 addHRegUse(u, HRmWrite, i->ARMin.Shift.dst); in getRegUsage_ARMInstr()
2091 addHRegUse(u, HRmRead, i->ARMin.Shift.argL); in getRegUsage_ARMInstr()
2092 addRegUsage_ARMRI5(u, i->ARMin.Shift.argR); in getRegUsage_ARMInstr()
2095 addHRegUse(u, HRmWrite, i->ARMin.Unary.dst); in getRegUsage_ARMInstr()
2096 addHRegUse(u, HRmRead, i->ARMin.Unary.src); in getRegUsage_ARMInstr()
2099 addHRegUse(u, HRmRead, i->ARMin.CmpOrTst.argL); in getRegUsage_ARMInstr()
2100 addRegUsage_ARMRI84(u, i->ARMin.CmpOrTst.argR); in getRegUsage_ARMInstr()
2103 addHRegUse(u, HRmWrite, i->ARMin.Mov.dst); in getRegUsage_ARMInstr()
2104 addRegUsage_ARMRI84(u, i->ARMin.Mov.src); in getRegUsage_ARMInstr()
2107 addHRegUse(u, HRmWrite, i->ARMin.Imm32.dst); in getRegUsage_ARMInstr()
2110 addRegUsage_ARMAMode1(u, i->ARMin.LdSt32.amode); in getRegUsage_ARMInstr()
2111 if (i->ARMin.LdSt32.isLoad) { in getRegUsage_ARMInstr()
2112 addHRegUse(u, HRmWrite, i->ARMin.LdSt32.rD); in getRegUsage_ARMInstr()
2113 if (i->ARMin.LdSt32.cc != ARMcc_AL) in getRegUsage_ARMInstr()
2114 addHRegUse(u, HRmRead, i->ARMin.LdSt32.rD); in getRegUsage_ARMInstr()
2116 addHRegUse(u, HRmRead, i->ARMin.LdSt32.rD); in getRegUsage_ARMInstr()
2120 addRegUsage_ARMAMode2(u, i->ARMin.LdSt16.amode); in getRegUsage_ARMInstr()
2121 if (i->ARMin.LdSt16.isLoad) { in getRegUsage_ARMInstr()
2122 addHRegUse(u, HRmWrite, i->ARMin.LdSt16.rD); in getRegUsage_ARMInstr()
2123 if (i->ARMin.LdSt16.cc != ARMcc_AL) in getRegUsage_ARMInstr()
2124 addHRegUse(u, HRmRead, i->ARMin.LdSt16.rD); in getRegUsage_ARMInstr()
2126 addHRegUse(u, HRmRead, i->ARMin.LdSt16.rD); in getRegUsage_ARMInstr()
2130 addRegUsage_ARMAMode1(u, i->ARMin.LdSt8U.amode); in getRegUsage_ARMInstr()
2131 if (i->ARMin.LdSt8U.isLoad) { in getRegUsage_ARMInstr()
2132 addHRegUse(u, HRmWrite, i->ARMin.LdSt8U.rD); in getRegUsage_ARMInstr()
2133 if (i->ARMin.LdSt8U.cc != ARMcc_AL) in getRegUsage_ARMInstr()
2134 addHRegUse(u, HRmRead, i->ARMin.LdSt8U.rD); in getRegUsage_ARMInstr()
2136 addHRegUse(u, HRmRead, i->ARMin.LdSt8U.rD); in getRegUsage_ARMInstr()
2140 addRegUsage_ARMAMode2(u, i->ARMin.Ld8S.amode); in getRegUsage_ARMInstr()
2141 addHRegUse(u, HRmWrite, i->ARMin.Ld8S.rD); in getRegUsage_ARMInstr()
2142 if (i->ARMin.Ld8S.cc != ARMcc_AL) in getRegUsage_ARMInstr()
2143 addHRegUse(u, HRmRead, i->ARMin.Ld8S.rD); in getRegUsage_ARMInstr()
2151 addRegUsage_ARMAMode1(u, i->ARMin.XDirect.amR15T); in getRegUsage_ARMInstr()
2154 addHRegUse(u, HRmRead, i->ARMin.XIndir.dstGA); in getRegUsage_ARMInstr()
2155 addRegUsage_ARMAMode1(u, i->ARMin.XIndir.amR15T); in getRegUsage_ARMInstr()
2158 addHRegUse(u, HRmRead, i->ARMin.XAssisted.dstGA); in getRegUsage_ARMInstr()
2159 addRegUsage_ARMAMode1(u, i->ARMin.XAssisted.amR15T); in getRegUsage_ARMInstr()
2162 addHRegUse(u, HRmWrite, i->ARMin.CMov.dst); in getRegUsage_ARMInstr()
2163 addHRegUse(u, HRmRead, i->ARMin.CMov.dst); in getRegUsage_ARMInstr()
2164 addRegUsage_ARMRI84(u, i->ARMin.CMov.src); in getRegUsage_ARMInstr()
2180 switch (i->ARMin.Call.nArgRegs) { in getRegUsage_ARMInstr()
2197 if (i->ARMin.Call.nArgRegs == 4) in getRegUsage_ARMInstr()
2208 if (i->ARMin.Mul.op != ARMmul_PLAIN) in getRegUsage_ARMInstr()
2214 if (i->ARMin.LdrEX.szB == 8) in getRegUsage_ARMInstr()
2221 if (i->ARMin.StrEX.szB == 8) in getRegUsage_ARMInstr()
2225 addRegUsage_ARMAModeV(u, i->ARMin.VLdStD.amode); in getRegUsage_ARMInstr()
2226 if (i->ARMin.VLdStD.isLoad) { in getRegUsage_ARMInstr()
2227 addHRegUse(u, HRmWrite, i->ARMin.VLdStD.dD); in getRegUsage_ARMInstr()
2229 addHRegUse(u, HRmRead, i->ARMin.VLdStD.dD); in getRegUsage_ARMInstr()
2233 addRegUsage_ARMAModeV(u, i->ARMin.VLdStS.amode); in getRegUsage_ARMInstr()
2234 if (i->ARMin.VLdStS.isLoad) { in getRegUsage_ARMInstr()
2235 addHRegUse(u, HRmWrite, i->ARMin.VLdStS.fD); in getRegUsage_ARMInstr()
2237 addHRegUse(u, HRmRead, i->ARMin.VLdStS.fD); in getRegUsage_ARMInstr()
2241 addHRegUse(u, HRmWrite, i->ARMin.VAluD.dst); in getRegUsage_ARMInstr()
2242 addHRegUse(u, HRmRead, i->ARMin.VAluD.argL); in getRegUsage_ARMInstr()
2243 addHRegUse(u, HRmRead, i->ARMin.VAluD.argR); in getRegUsage_ARMInstr()
2246 addHRegUse(u, HRmWrite, i->ARMin.VAluS.dst); in getRegUsage_ARMInstr()
2247 addHRegUse(u, HRmRead, i->ARMin.VAluS.argL); in getRegUsage_ARMInstr()
2248 addHRegUse(u, HRmRead, i->ARMin.VAluS.argR); in getRegUsage_ARMInstr()
2251 addHRegUse(u, HRmWrite, i->ARMin.VUnaryD.dst); in getRegUsage_ARMInstr()
2252 addHRegUse(u, HRmRead, i->ARMin.VUnaryD.src); in getRegUsage_ARMInstr()
2255 addHRegUse(u, HRmWrite, i->ARMin.VUnaryS.dst); in getRegUsage_ARMInstr()
2256 addHRegUse(u, HRmRead, i->ARMin.VUnaryS.src); in getRegUsage_ARMInstr()
2259 addHRegUse(u, HRmRead, i->ARMin.VCmpD.argL); in getRegUsage_ARMInstr()
2260 addHRegUse(u, HRmRead, i->ARMin.VCmpD.argR); in getRegUsage_ARMInstr()
2263 addHRegUse(u, HRmWrite, i->ARMin.VCMovD.dst); in getRegUsage_ARMInstr()
2264 addHRegUse(u, HRmRead, i->ARMin.VCMovD.dst); in getRegUsage_ARMInstr()
2265 addHRegUse(u, HRmRead, i->ARMin.VCMovD.src); in getRegUsage_ARMInstr()
2268 addHRegUse(u, HRmWrite, i->ARMin.VCMovS.dst); in getRegUsage_ARMInstr()
2269 addHRegUse(u, HRmRead, i->ARMin.VCMovS.dst); in getRegUsage_ARMInstr()
2270 addHRegUse(u, HRmRead, i->ARMin.VCMovS.src); in getRegUsage_ARMInstr()
2273 addHRegUse(u, HRmWrite, i->ARMin.VCvtSD.dst); in getRegUsage_ARMInstr()
2274 addHRegUse(u, HRmRead, i->ARMin.VCvtSD.src); in getRegUsage_ARMInstr()
2277 if (i->ARMin.VXferQ.toQ) { in getRegUsage_ARMInstr()
2278 addHRegUse(u, HRmWrite, i->ARMin.VXferQ.qD); in getRegUsage_ARMInstr()
2279 addHRegUse(u, HRmRead, i->ARMin.VXferQ.dHi); in getRegUsage_ARMInstr()
2280 addHRegUse(u, HRmRead, i->ARMin.VXferQ.dLo); in getRegUsage_ARMInstr()
2282 addHRegUse(u, HRmRead, i->ARMin.VXferQ.qD); in getRegUsage_ARMInstr()
2283 addHRegUse(u, HRmWrite, i->ARMin.VXferQ.dHi); in getRegUsage_ARMInstr()
2284 addHRegUse(u, HRmWrite, i->ARMin.VXferQ.dLo); in getRegUsage_ARMInstr()
2288 if (i->ARMin.VXferD.toD) { in getRegUsage_ARMInstr()
2289 addHRegUse(u, HRmWrite, i->ARMin.VXferD.dD); in getRegUsage_ARMInstr()
2290 addHRegUse(u, HRmRead, i->ARMin.VXferD.rHi); in getRegUsage_ARMInstr()
2291 addHRegUse(u, HRmRead, i->ARMin.VXferD.rLo); in getRegUsage_ARMInstr()
2293 addHRegUse(u, HRmRead, i->ARMin.VXferD.dD); in getRegUsage_ARMInstr()
2294 addHRegUse(u, HRmWrite, i->ARMin.VXferD.rHi); in getRegUsage_ARMInstr()
2295 addHRegUse(u, HRmWrite, i->ARMin.VXferD.rLo); in getRegUsage_ARMInstr()
2299 if (i->ARMin.VXferS.toS) { in getRegUsage_ARMInstr()
2300 addHRegUse(u, HRmWrite, i->ARMin.VXferS.fD); in getRegUsage_ARMInstr()
2301 addHRegUse(u, HRmRead, i->ARMin.VXferS.rLo); in getRegUsage_ARMInstr()
2303 addHRegUse(u, HRmRead, i->ARMin.VXferS.fD); in getRegUsage_ARMInstr()
2304 addHRegUse(u, HRmWrite, i->ARMin.VXferS.rLo); in getRegUsage_ARMInstr()
2308 addHRegUse(u, HRmWrite, i->ARMin.VCvtID.dst); in getRegUsage_ARMInstr()
2309 addHRegUse(u, HRmRead, i->ARMin.VCvtID.src); in getRegUsage_ARMInstr()
2312 addHRegUse(u, HRmWrite, i->ARMin.VRIntR.dst); in getRegUsage_ARMInstr()
2313 addHRegUse(u, HRmRead, i->ARMin.VRIntR.src); in getRegUsage_ARMInstr()
2316 addHRegUse(u, HRmWrite, i->ARMin.VMinMaxNum.dst); in getRegUsage_ARMInstr()
2317 addHRegUse(u, HRmRead, i->ARMin.VMinMaxNum.srcL); in getRegUsage_ARMInstr()
2318 addHRegUse(u, HRmRead, i->ARMin.VMinMaxNum.srcR); in getRegUsage_ARMInstr()
2321 if (i->ARMin.FPSCR.toFPSCR) in getRegUsage_ARMInstr()
2322 addHRegUse(u, HRmRead, i->ARMin.FPSCR.iReg); in getRegUsage_ARMInstr()
2324 addHRegUse(u, HRmWrite, i->ARMin.FPSCR.iReg); in getRegUsage_ARMInstr()
2331 if (i->ARMin.NLdStQ.isLoad) in getRegUsage_ARMInstr()
2332 addHRegUse(u, HRmWrite, i->ARMin.NLdStQ.dQ); in getRegUsage_ARMInstr()
2334 addHRegUse(u, HRmRead, i->ARMin.NLdStQ.dQ); in getRegUsage_ARMInstr()
2335 addRegUsage_ARMAModeN(u, i->ARMin.NLdStQ.amode); in getRegUsage_ARMInstr()
2338 if (i->ARMin.NLdStD.isLoad) in getRegUsage_ARMInstr()
2339 addHRegUse(u, HRmWrite, i->ARMin.NLdStD.dD); in getRegUsage_ARMInstr()
2341 addHRegUse(u, HRmRead, i->ARMin.NLdStD.dD); in getRegUsage_ARMInstr()
2342 addRegUsage_ARMAModeN(u, i->ARMin.NLdStD.amode); in getRegUsage_ARMInstr()
2345 addHRegUse(u, HRmWrite, i->ARMin.NUnary.dst); in getRegUsage_ARMInstr()
2346 addHRegUse(u, HRmRead, i->ARMin.NUnary.src); in getRegUsage_ARMInstr()
2349 addHRegUse(u, HRmWrite, i->ARMin.NUnaryS.dst->reg); in getRegUsage_ARMInstr()
2350 addHRegUse(u, HRmRead, i->ARMin.NUnaryS.src->reg); in getRegUsage_ARMInstr()
2353 addHRegUse(u, HRmWrite, i->ARMin.NShift.dst); in getRegUsage_ARMInstr()
2354 addHRegUse(u, HRmRead, i->ARMin.NShift.argL); in getRegUsage_ARMInstr()
2355 addHRegUse(u, HRmRead, i->ARMin.NShift.argR); in getRegUsage_ARMInstr()
2358 addHRegUse(u, HRmWrite, i->ARMin.NShl64.dst); in getRegUsage_ARMInstr()
2359 addHRegUse(u, HRmRead, i->ARMin.NShl64.src); in getRegUsage_ARMInstr()
2362 addHRegUse(u, HRmWrite, i->ARMin.NDual.arg1); in getRegUsage_ARMInstr()
2363 addHRegUse(u, HRmWrite, i->ARMin.NDual.arg2); in getRegUsage_ARMInstr()
2364 addHRegUse(u, HRmRead, i->ARMin.NDual.arg1); in getRegUsage_ARMInstr()
2365 addHRegUse(u, HRmRead, i->ARMin.NDual.arg2); in getRegUsage_ARMInstr()
2368 addHRegUse(u, HRmWrite, i->ARMin.NBinary.dst); in getRegUsage_ARMInstr()
2371 addHRegUse(u, HRmRead, i->ARMin.NBinary.argL); in getRegUsage_ARMInstr()
2372 addHRegUse(u, HRmRead, i->ARMin.NBinary.argR); in getRegUsage_ARMInstr()
2375 addHRegUse(u, HRmWrite, i->ARMin.NeonImm.dst); in getRegUsage_ARMInstr()
2378 addHRegUse(u, HRmWrite, i->ARMin.NCMovQ.dst); in getRegUsage_ARMInstr()
2379 addHRegUse(u, HRmRead, i->ARMin.NCMovQ.dst); in getRegUsage_ARMInstr()
2380 addHRegUse(u, HRmRead, i->ARMin.NCMovQ.src); in getRegUsage_ARMInstr()
2383 addHRegUse(u, HRmWrite, i->ARMin.Add32.rD); in getRegUsage_ARMInstr()
2384 addHRegUse(u, HRmRead, i->ARMin.Add32.rN); in getRegUsage_ARMInstr()
2390 addRegUsage_ARMAMode1(u, i->ARMin.EvCheck.amCounter); in getRegUsage_ARMInstr()
2391 addRegUsage_ARMAMode1(u, i->ARMin.EvCheck.amFailAddr); in getRegUsage_ARMInstr()
2410 i->ARMin.Alu.dst = lookupHRegRemap(m, i->ARMin.Alu.dst); in mapRegs_ARMInstr()
2411 i->ARMin.Alu.argL = lookupHRegRemap(m, i->ARMin.Alu.argL); in mapRegs_ARMInstr()
2412 mapRegs_ARMRI84(m, i->ARMin.Alu.argR); in mapRegs_ARMInstr()
2415 i->ARMin.Shift.dst = lookupHRegRemap(m, i->ARMin.Shift.dst); in mapRegs_ARMInstr()
2416 i->ARMin.Shift.argL = lookupHRegRemap(m, i->ARMin.Shift.argL); in mapRegs_ARMInstr()
2417 mapRegs_ARMRI5(m, i->ARMin.Shift.argR); in mapRegs_ARMInstr()
2420 i->ARMin.Unary.dst = lookupHRegRemap(m, i->ARMin.Unary.dst); in mapRegs_ARMInstr()
2421 i->ARMin.Unary.src = lookupHRegRemap(m, i->ARMin.Unary.src); in mapRegs_ARMInstr()
2424 i->ARMin.CmpOrTst.argL = lookupHRegRemap(m, i->ARMin.CmpOrTst.argL); in mapRegs_ARMInstr()
2425 mapRegs_ARMRI84(m, i->ARMin.CmpOrTst.argR); in mapRegs_ARMInstr()
2428 i->ARMin.Mov.dst = lookupHRegRemap(m, i->ARMin.Mov.dst); in mapRegs_ARMInstr()
2429 mapRegs_ARMRI84(m, i->ARMin.Mov.src); in mapRegs_ARMInstr()
2432 i->ARMin.Imm32.dst = lookupHRegRemap(m, i->ARMin.Imm32.dst); in mapRegs_ARMInstr()
2435 i->ARMin.LdSt32.rD = lookupHRegRemap(m, i->ARMin.LdSt32.rD); in mapRegs_ARMInstr()
2436 mapRegs_ARMAMode1(m, i->ARMin.LdSt32.amode); in mapRegs_ARMInstr()
2439 i->ARMin.LdSt16.rD = lookupHRegRemap(m, i->ARMin.LdSt16.rD); in mapRegs_ARMInstr()
2440 mapRegs_ARMAMode2(m, i->ARMin.LdSt16.amode); in mapRegs_ARMInstr()
2443 i->ARMin.LdSt8U.rD = lookupHRegRemap(m, i->ARMin.LdSt8U.rD); in mapRegs_ARMInstr()
2444 mapRegs_ARMAMode1(m, i->ARMin.LdSt8U.amode); in mapRegs_ARMInstr()
2447 i->ARMin.Ld8S.rD = lookupHRegRemap(m, i->ARMin.Ld8S.rD); in mapRegs_ARMInstr()
2448 mapRegs_ARMAMode2(m, i->ARMin.Ld8S.amode); in mapRegs_ARMInstr()
2451 mapRegs_ARMAMode1(m, i->ARMin.XDirect.amR15T); in mapRegs_ARMInstr()
2454 i->ARMin.XIndir.dstGA in mapRegs_ARMInstr()
2455 = lookupHRegRemap(m, i->ARMin.XIndir.dstGA); in mapRegs_ARMInstr()
2456 mapRegs_ARMAMode1(m, i->ARMin.XIndir.amR15T); in mapRegs_ARMInstr()
2459 i->ARMin.XAssisted.dstGA in mapRegs_ARMInstr()
2460 = lookupHRegRemap(m, i->ARMin.XAssisted.dstGA); in mapRegs_ARMInstr()
2461 mapRegs_ARMAMode1(m, i->ARMin.XAssisted.amR15T); in mapRegs_ARMInstr()
2464 i->ARMin.CMov.dst = lookupHRegRemap(m, i->ARMin.CMov.dst); in mapRegs_ARMInstr()
2465 mapRegs_ARMRI84(m, i->ARMin.CMov.src); in mapRegs_ARMInstr()
2476 i->ARMin.VLdStD.dD = lookupHRegRemap(m, i->ARMin.VLdStD.dD); in mapRegs_ARMInstr()
2477 mapRegs_ARMAModeV(m, i->ARMin.VLdStD.amode); in mapRegs_ARMInstr()
2480 i->ARMin.VLdStS.fD = lookupHRegRemap(m, i->ARMin.VLdStS.fD); in mapRegs_ARMInstr()
2481 mapRegs_ARMAModeV(m, i->ARMin.VLdStS.amode); in mapRegs_ARMInstr()
2484 i->ARMin.VAluD.dst = lookupHRegRemap(m, i->ARMin.VAluD.dst); in mapRegs_ARMInstr()
2485 i->ARMin.VAluD.argL = lookupHRegRemap(m, i->ARMin.VAluD.argL); in mapRegs_ARMInstr()
2486 i->ARMin.VAluD.argR = lookupHRegRemap(m, i->ARMin.VAluD.argR); in mapRegs_ARMInstr()
2489 i->ARMin.VAluS.dst = lookupHRegRemap(m, i->ARMin.VAluS.dst); in mapRegs_ARMInstr()
2490 i->ARMin.VAluS.argL = lookupHRegRemap(m, i->ARMin.VAluS.argL); in mapRegs_ARMInstr()
2491 i->ARMin.VAluS.argR = lookupHRegRemap(m, i->ARMin.VAluS.argR); in mapRegs_ARMInstr()
2494 i->ARMin.VUnaryD.dst = lookupHRegRemap(m, i->ARMin.VUnaryD.dst); in mapRegs_ARMInstr()
2495 i->ARMin.VUnaryD.src = lookupHRegRemap(m, i->ARMin.VUnaryD.src); in mapRegs_ARMInstr()
2498 i->ARMin.VUnaryS.dst = lookupHRegRemap(m, i->ARMin.VUnaryS.dst); in mapRegs_ARMInstr()
2499 i->ARMin.VUnaryS.src = lookupHRegRemap(m, i->ARMin.VUnaryS.src); in mapRegs_ARMInstr()
2502 i->ARMin.VCmpD.argL = lookupHRegRemap(m, i->ARMin.VCmpD.argL); in mapRegs_ARMInstr()
2503 i->ARMin.VCmpD.argR = lookupHRegRemap(m, i->ARMin.VCmpD.argR); in mapRegs_ARMInstr()
2506 i->ARMin.VCMovD.dst = lookupHRegRemap(m, i->ARMin.VCMovD.dst); in mapRegs_ARMInstr()
2507 i->ARMin.VCMovD.src = lookupHRegRemap(m, i->ARMin.VCMovD.src); in mapRegs_ARMInstr()
2510 i->ARMin.VCMovS.dst = lookupHRegRemap(m, i->ARMin.VCMovS.dst); in mapRegs_ARMInstr()
2511 i->ARMin.VCMovS.src = lookupHRegRemap(m, i->ARMin.VCMovS.src); in mapRegs_ARMInstr()
2514 i->ARMin.VCvtSD.dst = lookupHRegRemap(m, i->ARMin.VCvtSD.dst); in mapRegs_ARMInstr()
2515 i->ARMin.VCvtSD.src = lookupHRegRemap(m, i->ARMin.VCvtSD.src); in mapRegs_ARMInstr()
2518 i->ARMin.VXferQ.qD = lookupHRegRemap(m, i->ARMin.VXferQ.qD); in mapRegs_ARMInstr()
2519 i->ARMin.VXferQ.dHi = lookupHRegRemap(m, i->ARMin.VXferQ.dHi); in mapRegs_ARMInstr()
2520 i->ARMin.VXferQ.dLo = lookupHRegRemap(m, i->ARMin.VXferQ.dLo); in mapRegs_ARMInstr()
2523 i->ARMin.VXferD.dD = lookupHRegRemap(m, i->ARMin.VXferD.dD); in mapRegs_ARMInstr()
2524 i->ARMin.VXferD.rHi = lookupHRegRemap(m, i->ARMin.VXferD.rHi); in mapRegs_ARMInstr()
2525 i->ARMin.VXferD.rLo = lookupHRegRemap(m, i->ARMin.VXferD.rLo); in mapRegs_ARMInstr()
2528 i->ARMin.VXferS.fD = lookupHRegRemap(m, i->ARMin.VXferS.fD); in mapRegs_ARMInstr()
2529 i->ARMin.VXferS.rLo = lookupHRegRemap(m, i->ARMin.VXferS.rLo); in mapRegs_ARMInstr()
2532 i->ARMin.VCvtID.dst = lookupHRegRemap(m, i->ARMin.VCvtID.dst); in mapRegs_ARMInstr()
2533 i->ARMin.VCvtID.src = lookupHRegRemap(m, i->ARMin.VCvtID.src); in mapRegs_ARMInstr()
2536 i->ARMin.VRIntR.dst = lookupHRegRemap(m, i->ARMin.VRIntR.dst); in mapRegs_ARMInstr()
2537 i->ARMin.VRIntR.src = lookupHRegRemap(m, i->ARMin.VRIntR.src); in mapRegs_ARMInstr()
2540 i->ARMin.VMinMaxNum.dst in mapRegs_ARMInstr()
2541 = lookupHRegRemap(m, i->ARMin.VMinMaxNum.dst); in mapRegs_ARMInstr()
2542 i->ARMin.VMinMaxNum.srcL in mapRegs_ARMInstr()
2543 = lookupHRegRemap(m, i->ARMin.VMinMaxNum.srcL); in mapRegs_ARMInstr()
2544 i->ARMin.VMinMaxNum.srcR in mapRegs_ARMInstr()
2545 = lookupHRegRemap(m, i->ARMin.VMinMaxNum.srcR); in mapRegs_ARMInstr()
2548 i->ARMin.FPSCR.iReg = lookupHRegRemap(m, i->ARMin.FPSCR.iReg); in mapRegs_ARMInstr()
2555 i->ARMin.NLdStQ.dQ = lookupHRegRemap(m, i->ARMin.NLdStQ.dQ); in mapRegs_ARMInstr()
2556 mapRegs_ARMAModeN(m, i->ARMin.NLdStQ.amode); in mapRegs_ARMInstr()
2559 i->ARMin.NLdStD.dD = lookupHRegRemap(m, i->ARMin.NLdStD.dD); in mapRegs_ARMInstr()
2560 mapRegs_ARMAModeN(m, i->ARMin.NLdStD.amode); in mapRegs_ARMInstr()
2563 i->ARMin.NUnary.src = lookupHRegRemap(m, i->ARMin.NUnary.src); in mapRegs_ARMInstr()
2564 i->ARMin.NUnary.dst = lookupHRegRemap(m, i->ARMin.NUnary.dst); in mapRegs_ARMInstr()
2567 i->ARMin.NUnaryS.src->reg in mapRegs_ARMInstr()
2568 = lookupHRegRemap(m, i->ARMin.NUnaryS.src->reg); in mapRegs_ARMInstr()
2569 i->ARMin.NUnaryS.dst->reg in mapRegs_ARMInstr()
2570 = lookupHRegRemap(m, i->ARMin.NUnaryS.dst->reg); in mapRegs_ARMInstr()
2573 i->ARMin.NShift.dst = lookupHRegRemap(m, i->ARMin.NShift.dst); in mapRegs_ARMInstr()
2574 i->ARMin.NShift.argL = lookupHRegRemap(m, i->ARMin.NShift.argL); in mapRegs_ARMInstr()
2575 i->ARMin.NShift.argR = lookupHRegRemap(m, i->ARMin.NShift.argR); in mapRegs_ARMInstr()
2578 i->ARMin.NShl64.dst = lookupHRegRemap(m, i->ARMin.NShl64.dst); in mapRegs_ARMInstr()
2579 i->ARMin.NShl64.src = lookupHRegRemap(m, i->ARMin.NShl64.src); in mapRegs_ARMInstr()
2582 i->ARMin.NDual.arg1 = lookupHRegRemap(m, i->ARMin.NDual.arg1); in mapRegs_ARMInstr()
2583 i->ARMin.NDual.arg2 = lookupHRegRemap(m, i->ARMin.NDual.arg2); in mapRegs_ARMInstr()
2586 i->ARMin.NBinary.argL = lookupHRegRemap(m, i->ARMin.NBinary.argL); in mapRegs_ARMInstr()
2587 i->ARMin.NBinary.argR = lookupHRegRemap(m, i->ARMin.NBinary.argR); in mapRegs_ARMInstr()
2588 i->ARMin.NBinary.dst = lookupHRegRemap(m, i->ARMin.NBinary.dst); in mapRegs_ARMInstr()
2591 i->ARMin.NeonImm.dst = lookupHRegRemap(m, i->ARMin.NeonImm.dst); in mapRegs_ARMInstr()
2594 i->ARMin.NCMovQ.dst = lookupHRegRemap(m, i->ARMin.NCMovQ.dst); in mapRegs_ARMInstr()
2595 i->ARMin.NCMovQ.src = lookupHRegRemap(m, i->ARMin.NCMovQ.src); in mapRegs_ARMInstr()
2598 i->ARMin.Add32.rD = lookupHRegRemap(m, i->ARMin.Add32.rD); in mapRegs_ARMInstr()
2599 i->ARMin.Add32.rN = lookupHRegRemap(m, i->ARMin.Add32.rN); in mapRegs_ARMInstr()
2605 mapRegs_ARMAMode1(m, i->ARMin.EvCheck.amCounter); in mapRegs_ARMInstr()
2606 mapRegs_ARMAMode1(m, i->ARMin.EvCheck.amFailAddr); in mapRegs_ARMInstr()
2626 if (i->ARMin.Mov.src->tag == ARMri84_R) { in isMove_ARMInstr()
2627 *src = i->ARMin.Mov.src->ARMri84.R.reg; in isMove_ARMInstr()
2628 *dst = i->ARMin.Mov.dst; in isMove_ARMInstr()
2633 if (i->ARMin.VUnaryD.op == ARMvfpu_COPY) { in isMove_ARMInstr()
2634 *src = i->ARMin.VUnaryD.src; in isMove_ARMInstr()
2635 *dst = i->ARMin.VUnaryD.dst; in isMove_ARMInstr()
2640 if (i->ARMin.VUnaryS.op == ARMvfpu_COPY) { in isMove_ARMInstr()
2641 *src = i->ARMin.VUnaryS.src; in isMove_ARMInstr()
2642 *dst = i->ARMin.VUnaryS.dst; in isMove_ARMInstr()
2647 if (i->ARMin.NUnary.op == ARMneon_COPY) { in isMove_ARMInstr()
2648 *src = i->ARMin.NUnary.src; in isMove_ARMInstr()
2649 *dst = i->ARMin.NUnary.dst; in isMove_ARMInstr()
3086 UInt rD = iregEnc(i->ARMin.Alu.dst); in emit_ARMInstr()
3087 UInt rN = iregEnc(i->ARMin.Alu.argL); in emit_ARMInstr()
3088 ARMRI84* argR = i->ARMin.Alu.argR; in emit_ARMInstr()
3089 switch (i->ARMin.Alu.op) { in emit_ARMInstr()
3105 if (i->ARMin.Alu.op == ARMalu_ADDS in emit_ARMInstr()
3106 || i->ARMin.Alu.op == ARMalu_SUBS) { in emit_ARMInstr()
3114 UInt rD = iregEnc(i->ARMin.Shift.dst); in emit_ARMInstr()
3115 UInt rM = iregEnc(i->ARMin.Shift.argL); in emit_ARMInstr()
3116 ARMRI5* argR = i->ARMin.Shift.argR; in emit_ARMInstr()
3117 switch (i->ARMin.Shift.op) { in emit_ARMInstr()
3131 UInt rDst = iregEnc(i->ARMin.Unary.dst); in emit_ARMInstr()
3132 UInt rSrc = iregEnc(i->ARMin.Unary.src); in emit_ARMInstr()
3133 switch (i->ARMin.Unary.op) { in emit_ARMInstr()
3157 UInt instr = skeletal_RI84(i->ARMin.CmpOrTst.argR); in emit_ARMInstr()
3158 UInt subopc = i->ARMin.CmpOrTst.isCmp ? X1010 : X1000; in emit_ARMInstr()
3162 iregEnc(i->ARMin.CmpOrTst.argL), SBZ ); in emit_ARMInstr()
3167 UInt instr = skeletal_RI84(i->ARMin.Mov.src); in emit_ARMInstr()
3172 iregEnc(i->ARMin.Mov.dst)); in emit_ARMInstr()
3177 p = imm32_to_ireg( (UInt*)p, iregEnc(i->ARMin.Imm32.dst), in emit_ARMInstr()
3178 i->ARMin.Imm32.imm32 ); in emit_ARMInstr()
3189 bL = i->ARMin.LdSt32.isLoad ? 1 : 0; in emit_ARMInstr()
3190 am = i->ARMin.LdSt32.amode; in emit_ARMInstr()
3191 rD = i->ARMin.LdSt32.rD; in emit_ARMInstr()
3192 cc = i->ARMin.LdSt32.cc; in emit_ARMInstr()
3195 bL = i->ARMin.LdSt8U.isLoad ? 1 : 0; in emit_ARMInstr()
3196 am = i->ARMin.LdSt8U.amode; in emit_ARMInstr()
3197 rD = i->ARMin.LdSt8U.rD; in emit_ARMInstr()
3198 cc = i->ARMin.LdSt8U.cc; in emit_ARMInstr()
3224 HReg rD = i->ARMin.LdSt16.rD; in emit_ARMInstr()
3225 UInt bS = i->ARMin.LdSt16.signedLoad ? 1 : 0; in emit_ARMInstr()
3226 UInt bL = i->ARMin.LdSt16.isLoad ? 1 : 0; in emit_ARMInstr()
3227 ARMAMode2* am = i->ARMin.LdSt16.amode; in emit_ARMInstr()
3228 ARMCondCode cc = i->ARMin.LdSt16.cc; in emit_ARMInstr()
3273 HReg rD = i->ARMin.Ld8S.rD; in emit_ARMInstr()
3274 ARMAMode2* am = i->ARMin.Ld8S.amode; in emit_ARMInstr()
3275 ARMCondCode cc = i->ARMin.Ld8S.cc; in emit_ARMInstr()
3317 if (i->ARMin.XDirect.cond != ARMcc_AL) { in emit_ARMInstr()
3318 vassert(i->ARMin.XDirect.cond != ARMcc_NV); in emit_ARMInstr()
3327 p = imm32_to_ireg(p, /*r*/12, i->ARMin.XDirect.dstGA); in emit_ARMInstr()
3329 /*r*/12, i->ARMin.XDirect.amR15T); in emit_ARMInstr()
3340 = i->ARMin.XDirect.toFastEP ? disp_cp_chain_me_to_fastEP in emit_ARMInstr()
3348 if (i->ARMin.XDirect.cond != ARMcc_AL) { in emit_ARMInstr()
3352 UInt notCond = 1 ^ (UInt)i->ARMin.XDirect.cond; in emit_ARMInstr()
3375 if (i->ARMin.XIndir.cond != ARMcc_AL) { in emit_ARMInstr()
3376 vassert(i->ARMin.XIndir.cond != ARMcc_NV); in emit_ARMInstr()
3384 iregEnc(i->ARMin.XIndir.dstGA), in emit_ARMInstr()
3385 i->ARMin.XIndir.amR15T); in emit_ARMInstr()
3394 if (i->ARMin.XIndir.cond != ARMcc_AL) { in emit_ARMInstr()
3398 UInt notCond = 1 ^ (UInt)i->ARMin.XIndir.cond; in emit_ARMInstr()
3413 if (i->ARMin.XAssisted.cond != ARMcc_AL) { in emit_ARMInstr()
3414 vassert(i->ARMin.XAssisted.cond != ARMcc_NV); in emit_ARMInstr()
3422 iregEnc(i->ARMin.XAssisted.dstGA), in emit_ARMInstr()
3423 i->ARMin.XAssisted.amR15T); in emit_ARMInstr()
3427 switch (i->ARMin.XAssisted.jk) { in emit_ARMInstr()
3445 ppIRJumpKind(i->ARMin.XAssisted.jk); in emit_ARMInstr()
3458 if (i->ARMin.XAssisted.cond != ARMcc_AL) { in emit_ARMInstr()
3462 UInt notCond = 1 ^ (UInt)i->ARMin.XAssisted.cond; in emit_ARMInstr()
3471 UInt instr = skeletal_RI84(i->ARMin.CMov.src); in emit_ARMInstr()
3474 instr |= XXXXX___(i->ARMin.CMov.cond, (1 & (subopc >> 3)), in emit_ARMInstr()
3476 iregEnc(i->ARMin.CMov.dst)); in emit_ARMInstr()
3486 switch (i->ARMin.Call.nArgRegs) { in emit_ARMInstr()
3497 if (i->ARMin.Call.cond == ARMcc_AL/*call always happens*/ in emit_ARMInstr()
3498 || i->ARMin.Call.rloc.pri == RLPri_None/*no fixup action*/) { in emit_ARMInstr()
3501 scratchNo, (UInt)i->ARMin.Call.target ); in emit_ARMInstr()
3503 instr = XXX___XX(i->ARMin.Call.cond, X0001, X0010, /*___*/ in emit_ARMInstr()
3530 scratchNo, (UInt)i->ARMin.Call.target ); in emit_ARMInstr()
3548 = XX______(1 ^ i->ARMin.Call.cond, X1010) | (delta & 0xFFFFFF); in emit_ARMInstr()
3551 switch (i->ARMin.Call.rloc.pri) { in emit_ARMInstr()
3579 switch (i->ARMin.Mul.op) { in emit_ARMInstr()
3593 switch (i->ARMin.LdrEX.szB) { in emit_ARMInstr()
3608 switch (i->ARMin.StrEX.szB) { in emit_ARMInstr()
3618 UInt dD = dregEnc(i->ARMin.VLdStD.dD); in emit_ARMInstr()
3619 UInt rN = iregEnc(i->ARMin.VLdStD.amode->reg); in emit_ARMInstr()
3620 Int simm11 = i->ARMin.VLdStD.amode->simm11; in emit_ARMInstr()
3623 UInt bL = i->ARMin.VLdStD.isLoad ? 1 : 0; in emit_ARMInstr()
3634 UInt fD = fregEnc(i->ARMin.VLdStS.fD); in emit_ARMInstr()
3635 UInt rN = iregEnc(i->ARMin.VLdStS.amode->reg); in emit_ARMInstr()
3636 Int simm11 = i->ARMin.VLdStS.amode->simm11; in emit_ARMInstr()
3639 UInt bL = i->ARMin.VLdStS.isLoad ? 1 : 0; in emit_ARMInstr()
3651 UInt dN = dregEnc(i->ARMin.VAluD.argL); in emit_ARMInstr()
3652 UInt dD = dregEnc(i->ARMin.VAluD.dst); in emit_ARMInstr()
3653 UInt dM = dregEnc(i->ARMin.VAluD.argR); in emit_ARMInstr()
3655 switch (i->ARMin.VAluD.op) { in emit_ARMInstr()
3673 UInt dN = fregEnc(i->ARMin.VAluS.argL); in emit_ARMInstr()
3674 UInt dD = fregEnc(i->ARMin.VAluS.dst); in emit_ARMInstr()
3675 UInt dM = fregEnc(i->ARMin.VAluS.argR); in emit_ARMInstr()
3680 switch (i->ARMin.VAluS.op) { in emit_ARMInstr()
3699 UInt dD = dregEnc(i->ARMin.VUnaryD.dst); in emit_ARMInstr()
3700 UInt dM = dregEnc(i->ARMin.VUnaryD.src); in emit_ARMInstr()
3702 switch (i->ARMin.VUnaryD.op) { in emit_ARMInstr()
3722 UInt fD = fregEnc(i->ARMin.VUnaryS.dst); in emit_ARMInstr()
3723 UInt fM = fregEnc(i->ARMin.VUnaryS.src); in emit_ARMInstr()
3725 switch (i->ARMin.VUnaryS.op) { in emit_ARMInstr()
3753 UInt dD = dregEnc(i->ARMin.VCmpD.argL); in emit_ARMInstr()
3754 UInt dM = dregEnc(i->ARMin.VCmpD.argR); in emit_ARMInstr()
3761 UInt cc = (UInt)i->ARMin.VCMovD.cond; in emit_ARMInstr()
3762 UInt dD = dregEnc(i->ARMin.VCMovD.dst); in emit_ARMInstr()
3763 UInt dM = dregEnc(i->ARMin.VCMovD.src); in emit_ARMInstr()
3770 UInt cc = (UInt)i->ARMin.VCMovS.cond; in emit_ARMInstr()
3771 UInt fD = fregEnc(i->ARMin.VCMovS.dst); in emit_ARMInstr()
3772 UInt fM = fregEnc(i->ARMin.VCMovS.src); in emit_ARMInstr()
3781 if (i->ARMin.VCvtSD.sToD) { in emit_ARMInstr()
3782 UInt dD = dregEnc(i->ARMin.VCvtSD.dst); in emit_ARMInstr()
3783 UInt fM = fregEnc(i->ARMin.VCvtSD.src); in emit_ARMInstr()
3790 UInt fD = fregEnc(i->ARMin.VCvtSD.dst); in emit_ARMInstr()
3791 UInt dM = dregEnc(i->ARMin.VCvtSD.src); in emit_ARMInstr()
3801 UInt qD = qregEnc(i->ARMin.VXferQ.qD); in emit_ARMInstr()
3802 UInt dHi = dregEnc(i->ARMin.VXferQ.dHi); in emit_ARMInstr()
3803 UInt dLo = dregEnc(i->ARMin.VXferQ.dLo); in emit_ARMInstr()
3829 if (i->ARMin.VXferQ.toQ) { in emit_ARMInstr()
3840 UInt dD = dregEnc(i->ARMin.VXferD.dD); in emit_ARMInstr()
3841 UInt rHi = iregEnc(i->ARMin.VXferD.rHi); in emit_ARMInstr()
3842 UInt rLo = iregEnc(i->ARMin.VXferD.rLo); in emit_ARMInstr()
3849 = XXXXXXXX(0xE, 0xC, i->ARMin.VXferD.toD ? 4 : 5, in emit_ARMInstr()
3856 UInt fD = fregEnc(i->ARMin.VXferS.fD); in emit_ARMInstr()
3857 UInt rLo = iregEnc(i->ARMin.VXferS.rLo); in emit_ARMInstr()
3864 = XXXXXXXX(0xE, 0xE, i->ARMin.VXferS.toS ? 0 : 1, in emit_ARMInstr()
3871 Bool iToD = i->ARMin.VCvtID.iToD; in emit_ARMInstr()
3872 Bool syned = i->ARMin.VCvtID.syned; in emit_ARMInstr()
3875 UInt regF = fregEnc(i->ARMin.VCvtID.src); in emit_ARMInstr()
3876 UInt regD = dregEnc(i->ARMin.VCvtID.dst); in emit_ARMInstr()
3885 UInt regF = fregEnc(i->ARMin.VCvtID.src); in emit_ARMInstr()
3886 UInt regD = dregEnc(i->ARMin.VCvtID.dst); in emit_ARMInstr()
3895 UInt regD = dregEnc(i->ARMin.VCvtID.src); in emit_ARMInstr()
3896 UInt regF = fregEnc(i->ARMin.VCvtID.dst); in emit_ARMInstr()
3905 UInt regD = dregEnc(i->ARMin.VCvtID.src); in emit_ARMInstr()
3906 UInt regF = fregEnc(i->ARMin.VCvtID.dst); in emit_ARMInstr()
3917 Bool isF64 = i->ARMin.VRIntR.isF64; in emit_ARMInstr()
3918 UInt rDst = (isF64 ? dregEnc : fregEnc)(i->ARMin.VRIntR.dst); in emit_ARMInstr()
3919 UInt rSrc = (isF64 ? dregEnc : fregEnc)(i->ARMin.VRIntR.src); in emit_ARMInstr()
3940 Bool isF64 = i->ARMin.VMinMaxNum.isF64; in emit_ARMInstr()
3941 Bool isMax = i->ARMin.VMinMaxNum.isMax; in emit_ARMInstr()
3942 UInt rDst = (isF64 ? dregEnc : fregEnc)(i->ARMin.VMinMaxNum.dst); in emit_ARMInstr()
3943 UInt rSrcL = (isF64 ? dregEnc : fregEnc)(i->ARMin.VMinMaxNum.srcL); in emit_ARMInstr()
3944 UInt rSrcR = (isF64 ? dregEnc : fregEnc)(i->ARMin.VMinMaxNum.srcR); in emit_ARMInstr()
3972 Bool toFPSCR = i->ARMin.FPSCR.toFPSCR; in emit_ARMInstr()
3973 UInt iReg = iregEnc(i->ARMin.FPSCR.iReg); in emit_ARMInstr()
3999 UInt regD = qregEnc(i->ARMin.NLdStQ.dQ) << 1; in emit_ARMInstr()
4002 UInt bL = i->ARMin.NLdStQ.isLoad ? 1 : 0; in emit_ARMInstr()
4004 vassert(hregClass(i->ARMin.NLdStQ.dQ) == HRcVec128); in emit_ARMInstr()
4006 if (i->ARMin.NLdStQ.amode->tag == ARMamN_RR) { in emit_ARMInstr()
4007 regN = iregEnc(i->ARMin.NLdStQ.amode->ARMamN.RR.rN); in emit_ARMInstr()
4008 regM = iregEnc(i->ARMin.NLdStQ.amode->ARMamN.RR.rM); in emit_ARMInstr()
4010 regN = iregEnc(i->ARMin.NLdStQ.amode->ARMamN.R.rN); in emit_ARMInstr()
4019 UInt regD = dregEnc(i->ARMin.NLdStD.dD); in emit_ARMInstr()
4022 UInt bL = i->ARMin.NLdStD.isLoad ? 1 : 0; in emit_ARMInstr()
4024 vassert(hregClass(i->ARMin.NLdStD.dD) == HRcFlt64); in emit_ARMInstr()
4026 if (i->ARMin.NLdStD.amode->tag == ARMamN_RR) { in emit_ARMInstr()
4027 regN = iregEnc(i->ARMin.NLdStD.amode->ARMamN.RR.rN); in emit_ARMInstr()
4028 regM = iregEnc(i->ARMin.NLdStD.amode->ARMamN.RR.rM); in emit_ARMInstr()
4030 regN = iregEnc(i->ARMin.NLdStD.amode->ARMamN.R.rN); in emit_ARMInstr()
4039 UInt Q = i->ARMin.NUnaryS.Q ? 1 : 0; in emit_ARMInstr()
4042 UInt size = i->ARMin.NUnaryS.size; in emit_ARMInstr()
4045 switch (i->ARMin.NUnaryS.op) { in emit_ARMInstr()
4047 if (i->ARMin.NUnaryS.size >= 16) in emit_ARMInstr()
4049 if (i->ARMin.NUnaryS.dst->tag != ARMNRS_Reg) in emit_ARMInstr()
4051 if (i->ARMin.NUnaryS.src->tag != ARMNRS_Scalar) in emit_ARMInstr()
4053 regD = (hregClass(i->ARMin.NUnaryS.dst->reg) == HRcVec128) in emit_ARMInstr()
4054 ? (qregEnc(i->ARMin.NUnaryS.dst->reg) << 1) in emit_ARMInstr()
4055 : dregEnc(i->ARMin.NUnaryS.dst->reg); in emit_ARMInstr()
4056 regM = (hregClass(i->ARMin.NUnaryS.src->reg) == HRcVec128) in emit_ARMInstr()
4057 ? (qregEnc(i->ARMin.NUnaryS.src->reg) << 1) in emit_ARMInstr()
4058 : dregEnc(i->ARMin.NUnaryS.src->reg); in emit_ARMInstr()
4064 (i->ARMin.NUnaryS.size & 0xf), regD, in emit_ARMInstr()
4069 regD = Q ? (qregEnc(i->ARMin.NUnaryS.dst->reg) << 1) : in emit_ARMInstr()
4070 dregEnc(i->ARMin.NUnaryS.dst->reg); in emit_ARMInstr()
4071 regM = iregEnc(i->ARMin.NUnaryS.src->reg); in emit_ARMInstr()
4076 if (i->ARMin.NUnaryS.dst->tag != ARMNRS_Scalar) in emit_ARMInstr()
4080 if (i->ARMin.NUnaryS.dst->index > 7) in emit_ARMInstr()
4082 opc = X1000 | i->ARMin.NUnaryS.dst->index; in emit_ARMInstr()
4085 if (i->ARMin.NUnaryS.dst->index > 3) in emit_ARMInstr()
4087 opc = X0001 | (i->ARMin.NUnaryS.dst->index << 1); in emit_ARMInstr()
4090 if (i->ARMin.NUnaryS.dst->index > 1) in emit_ARMInstr()
4092 opc = X0000 | (i->ARMin.NUnaryS.dst->index << 2); in emit_ARMInstr()
4105 regM = Q ? (qregEnc(i->ARMin.NUnaryS.src->reg) << 1) : in emit_ARMInstr()
4106 dregEnc(i->ARMin.NUnaryS.src->reg); in emit_ARMInstr()
4107 regD = iregEnc(i->ARMin.NUnaryS.dst->reg); in emit_ARMInstr()
4112 if (i->ARMin.NUnaryS.src->tag != ARMNRS_Scalar) in emit_ARMInstr()
4116 if (Q && i->ARMin.NUnaryS.src->index > 7) { in emit_ARMInstr()
4118 i->ARMin.NUnaryS.src->index -= 8; in emit_ARMInstr()
4120 if (i->ARMin.NUnaryS.src->index > 7) in emit_ARMInstr()
4122 opc = X1000 | i->ARMin.NUnaryS.src->index; in emit_ARMInstr()
4125 if (Q && i->ARMin.NUnaryS.src->index > 3) { in emit_ARMInstr()
4127 i->ARMin.NUnaryS.src->index -= 4; in emit_ARMInstr()
4129 if (i->ARMin.NUnaryS.src->index > 3) in emit_ARMInstr()
4131 opc = X0001 | (i->ARMin.NUnaryS.src->index << 1); in emit_ARMInstr()
4146 regM = Q ? (qregEnc(i->ARMin.NUnaryS.src->reg) << 1) : in emit_ARMInstr()
4147 dregEnc(i->ARMin.NUnaryS.src->reg); in emit_ARMInstr()
4148 regD = iregEnc(i->ARMin.NUnaryS.dst->reg); in emit_ARMInstr()
4153 if (i->ARMin.NUnaryS.src->tag != ARMNRS_Scalar) in emit_ARMInstr()
4157 if (Q && i->ARMin.NUnaryS.src->index > 7) { in emit_ARMInstr()
4159 i->ARMin.NUnaryS.src->index -= 8; in emit_ARMInstr()
4161 if (i->ARMin.NUnaryS.src->index > 7) in emit_ARMInstr()
4163 opc = X1000 | i->ARMin.NUnaryS.src->index; in emit_ARMInstr()
4166 if (Q && i->ARMin.NUnaryS.src->index > 3) { in emit_ARMInstr()
4168 i->ARMin.NUnaryS.src->index -= 4; in emit_ARMInstr()
4170 if (i->ARMin.NUnaryS.src->index > 3) in emit_ARMInstr()
4172 opc = X0001 | (i->ARMin.NUnaryS.src->index << 1); in emit_ARMInstr()
4175 if (Q && i->ARMin.NUnaryS.src->index > 1) { in emit_ARMInstr()
4177 i->ARMin.NUnaryS.src->index -= 2; in emit_ARMInstr()
4179 if (i->ARMin.NUnaryS.src->index > 1) in emit_ARMInstr()
4181 opc = X0000 | (i->ARMin.NUnaryS.src->index << 2); in emit_ARMInstr()
4198 UInt Q = i->ARMin.NUnary.Q ? 1 : 0; in emit_ARMInstr()
4199 UInt regD = (hregClass(i->ARMin.NUnary.dst) == HRcVec128) in emit_ARMInstr()
4200 ? (qregEnc(i->ARMin.NUnary.dst) << 1) in emit_ARMInstr()
4201 : dregEnc(i->ARMin.NUnary.dst); in emit_ARMInstr()
4204 UInt sz1 = i->ARMin.NUnary.size >> 1; in emit_ARMInstr()
4205 UInt sz2 = i->ARMin.NUnary.size & 1; in emit_ARMInstr()
4206 UInt sz = i->ARMin.NUnary.size; in emit_ARMInstr()
4209 if (i->ARMin.NUnary.op != ARMneon_DUP) { in emit_ARMInstr()
4210 regM = (hregClass(i->ARMin.NUnary.src) == HRcVec128) in emit_ARMInstr()
4211 ? (qregEnc(i->ARMin.NUnary.src) << 1) in emit_ARMInstr()
4212 : dregEnc(i->ARMin.NUnary.src); in emit_ARMInstr()
4215 regM = iregEnc(i->ARMin.NUnary.src); in emit_ARMInstr()
4220 switch (i->ARMin.NUnary.op) { in emit_ARMInstr()
4282 sz1 = i->ARMin.NUnary.size == 0 ? 1 : 0; in emit_ARMInstr()
4283 sz2 = i->ARMin.NUnary.size == 1 ? 1 : 0; in emit_ARMInstr()
4414 UInt Q = i->ARMin.NDual.Q ? 1 : 0; in emit_ARMInstr()
4415 UInt regD = (hregClass(i->ARMin.NDual.arg1) == HRcVec128) in emit_ARMInstr()
4416 ? (qregEnc(i->ARMin.NDual.arg1) << 1) in emit_ARMInstr()
4417 : dregEnc(i->ARMin.NDual.arg1); in emit_ARMInstr()
4418 UInt regM = (hregClass(i->ARMin.NDual.arg2) == HRcVec128) in emit_ARMInstr()
4419 ? (qregEnc(i->ARMin.NDual.arg2) << 1) in emit_ARMInstr()
4420 : dregEnc(i->ARMin.NDual.arg2); in emit_ARMInstr()
4423 UInt sz1 = i->ARMin.NDual.size >> 1; in emit_ARMInstr()
4424 UInt sz2 = i->ARMin.NDual.size & 1; in emit_ARMInstr()
4428 switch (i->ARMin.NDual.op) { in emit_ARMInstr()
4448 UInt Q = i->ARMin.NBinary.Q ? 1 : 0; in emit_ARMInstr()
4449 UInt regD = (hregClass(i->ARMin.NBinary.dst) == HRcVec128) in emit_ARMInstr()
4450 ? (qregEnc(i->ARMin.NBinary.dst) << 1) in emit_ARMInstr()
4451 : dregEnc(i->ARMin.NBinary.dst); in emit_ARMInstr()
4452 UInt regN = (hregClass(i->ARMin.NBinary.argL) == HRcVec128) in emit_ARMInstr()
4453 ? (qregEnc(i->ARMin.NBinary.argL) << 1) in emit_ARMInstr()
4454 : dregEnc(i->ARMin.NBinary.argL); in emit_ARMInstr()
4455 UInt regM = (hregClass(i->ARMin.NBinary.argR) == HRcVec128) in emit_ARMInstr()
4456 ? (qregEnc(i->ARMin.NBinary.argR) << 1) in emit_ARMInstr()
4457 : dregEnc(i->ARMin.NBinary.argR); in emit_ARMInstr()
4458 UInt sz1 = i->ARMin.NBinary.size >> 1; in emit_ARMInstr()
4459 UInt sz2 = i->ARMin.NBinary.size & 1; in emit_ARMInstr()
4467 switch (i->ARMin.NBinary.op) { in emit_ARMInstr()
4549 if (i->ARMin.NBinary.size >= 16) in emit_ARMInstr()
4552 i->ARMin.NBinary.size & 0xf, BITS4(N,Q,M,0), in emit_ARMInstr()
4674 UInt Q = i->ARMin.NShift.Q ? 1 : 0; in emit_ARMInstr()
4675 UInt regD = (hregClass(i->ARMin.NShift.dst) == HRcVec128) in emit_ARMInstr()
4676 ? (qregEnc(i->ARMin.NShift.dst) << 1) in emit_ARMInstr()
4677 : dregEnc(i->ARMin.NShift.dst); in emit_ARMInstr()
4678 UInt regM = (hregClass(i->ARMin.NShift.argL) == HRcVec128) in emit_ARMInstr()
4679 ? (qregEnc(i->ARMin.NShift.argL) << 1) in emit_ARMInstr()
4680 : dregEnc(i->ARMin.NShift.argL); in emit_ARMInstr()
4681 UInt regN = (hregClass(i->ARMin.NShift.argR) == HRcVec128) in emit_ARMInstr()
4682 ? (qregEnc(i->ARMin.NShift.argR) << 1) in emit_ARMInstr()
4683 : dregEnc(i->ARMin.NShift.argR); in emit_ARMInstr()
4684 UInt sz1 = i->ARMin.NShift.size >> 1; in emit_ARMInstr()
4685 UInt sz2 = i->ARMin.NShift.size & 1; in emit_ARMInstr()
4693 switch (i->ARMin.NShift.op) { in emit_ARMInstr()
4717 HReg regDreg = i->ARMin.NShl64.dst; in emit_ARMInstr()
4718 HReg regMreg = i->ARMin.NShl64.src; in emit_ARMInstr()
4719 UInt amt = i->ARMin.NShl64.amt; in emit_ARMInstr()
4737 UInt Q = (hregClass(i->ARMin.NeonImm.dst) == HRcVec128) ? 1 : 0; in emit_ARMInstr()
4738 UInt regD = Q ? (qregEnc(i->ARMin.NeonImm.dst) << 1) : in emit_ARMInstr()
4739 dregEnc(i->ARMin.NeonImm.dst); in emit_ARMInstr()
4741 UInt imm = i->ARMin.NeonImm.imm->imm8; in emit_ARMInstr()
4742 UInt tp = i->ARMin.NeonImm.imm->type; in emit_ARMInstr()
4785 UInt cc = (UInt)i->ARMin.NCMovQ.cond; in emit_ARMInstr()
4786 UInt qM = qregEnc(i->ARMin.NCMovQ.src) << 1; in emit_ARMInstr()
4787 UInt qD = qregEnc(i->ARMin.NCMovQ.dst) << 1; in emit_ARMInstr()
4803 UInt regD = iregEnc(i->ARMin.Add32.rD); in emit_ARMInstr()
4804 UInt regN = iregEnc(i->ARMin.Add32.rN); in emit_ARMInstr()
4805 UInt imm32 = i->ARMin.Add32.imm32; in emit_ARMInstr()
4827 i->ARMin.EvCheck.amCounter); in emit_ARMInstr()
4830 i->ARMin.EvCheck.amCounter); in emit_ARMInstr()
4833 i->ARMin.EvCheck.amFailAddr); in emit_ARMInstr()