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.VXferD.toD = toD; in ARMInstr_VXferD()
1336 i->ARMin.VXferD.dD = dD; in ARMInstr_VXferD()
1337 i->ARMin.VXferD.rHi = rHi; in ARMInstr_VXferD()
1338 i->ARMin.VXferD.rLo = rLo; in ARMInstr_VXferD()
1344 i->ARMin.VXferS.toS = toS; in ARMInstr_VXferS()
1345 i->ARMin.VXferS.fD = fD; in ARMInstr_VXferS()
1346 i->ARMin.VXferS.rLo = rLo; in ARMInstr_VXferS()
1353 i->ARMin.VCvtID.iToD = iToD; in ARMInstr_VCvtID()
1354 i->ARMin.VCvtID.syned = syned; in ARMInstr_VCvtID()
1355 i->ARMin.VCvtID.dst = dst; in ARMInstr_VCvtID()
1356 i->ARMin.VCvtID.src = src; in ARMInstr_VCvtID()
1362 i->ARMin.FPSCR.toFPSCR = toFPSCR; in ARMInstr_FPSCR()
1363 i->ARMin.FPSCR.iReg = iReg; in ARMInstr_FPSCR()
1380 i->ARMin.NLdStQ.isLoad = isLoad; in ARMInstr_NLdStQ()
1381 i->ARMin.NLdStQ.dQ = dQ; in ARMInstr_NLdStQ()
1382 i->ARMin.NLdStQ.amode = amode; in ARMInstr_NLdStQ()
1389 i->ARMin.NLdStD.isLoad = isLoad; in ARMInstr_NLdStD()
1390 i->ARMin.NLdStD.dD = dD; in ARMInstr_NLdStD()
1391 i->ARMin.NLdStD.amode = amode; in ARMInstr_NLdStD()
1399 i->ARMin.NUnary.op = op; in ARMInstr_NUnary()
1400 i->ARMin.NUnary.src = nQ; in ARMInstr_NUnary()
1401 i->ARMin.NUnary.dst = dQ; in ARMInstr_NUnary()
1402 i->ARMin.NUnary.size = size; in ARMInstr_NUnary()
1403 i->ARMin.NUnary.Q = Q; in ARMInstr_NUnary()
1411 i->ARMin.NUnaryS.op = op; in ARMInstr_NUnaryS()
1412 i->ARMin.NUnaryS.src = src; in ARMInstr_NUnaryS()
1413 i->ARMin.NUnaryS.dst = dst; in ARMInstr_NUnaryS()
1414 i->ARMin.NUnaryS.size = size; in ARMInstr_NUnaryS()
1415 i->ARMin.NUnaryS.Q = Q; in ARMInstr_NUnaryS()
1423 i->ARMin.NDual.op = op; in ARMInstr_NDual()
1424 i->ARMin.NDual.arg1 = nQ; in ARMInstr_NDual()
1425 i->ARMin.NDual.arg2 = mQ; in ARMInstr_NDual()
1426 i->ARMin.NDual.size = size; in ARMInstr_NDual()
1427 i->ARMin.NDual.Q = Q; in ARMInstr_NDual()
1436 i->ARMin.NBinary.op = op; in ARMInstr_NBinary()
1437 i->ARMin.NBinary.argL = argL; in ARMInstr_NBinary()
1438 i->ARMin.NBinary.argR = argR; in ARMInstr_NBinary()
1439 i->ARMin.NBinary.dst = dst; in ARMInstr_NBinary()
1440 i->ARMin.NBinary.size = size; in ARMInstr_NBinary()
1441 i->ARMin.NBinary.Q = Q; in ARMInstr_NBinary()
1448 i->ARMin.NeonImm.dst = dst; in ARMInstr_NeonImm()
1449 i->ARMin.NeonImm.imm = imm; in ARMInstr_NeonImm()
1456 i->ARMin.NCMovQ.cond = cond; in ARMInstr_NCMovQ()
1457 i->ARMin.NCMovQ.dst = dst; in ARMInstr_NCMovQ()
1458 i->ARMin.NCMovQ.src = src; in ARMInstr_NCMovQ()
1468 i->ARMin.NShift.op = op; in ARMInstr_NShift()
1469 i->ARMin.NShift.argL = argL; in ARMInstr_NShift()
1470 i->ARMin.NShift.argR = argR; in ARMInstr_NShift()
1471 i->ARMin.NShift.dst = dst; in ARMInstr_NShift()
1472 i->ARMin.NShift.size = size; in ARMInstr_NShift()
1473 i->ARMin.NShift.Q = Q; in ARMInstr_NShift()
1481 i->ARMin.NShl64.dst = dst; in ARMInstr_NShl64()
1482 i->ARMin.NShl64.src = src; in ARMInstr_NShl64()
1483 i->ARMin.NShl64.amt = amt; in ARMInstr_NShl64()
1510 i->ARMin.Alu.op = ARMalu_ADD; in ARMInstr_Add32()
1511 i->ARMin.Alu.dst = rD; in ARMInstr_Add32()
1512 i->ARMin.Alu.argL = rN; in ARMInstr_Add32()
1513 i->ARMin.Alu.argR = ARMRI84_I84(u8, u4); in ARMInstr_Add32()
1516 i->ARMin.Add32.rD = rD; in ARMInstr_Add32()
1517 i->ARMin.Add32.rN = rN; in ARMInstr_Add32()
1518 i->ARMin.Add32.imm32 = imm32; in ARMInstr_Add32()
1527 i->ARMin.EvCheck.amCounter = amCounter; in ARMInstr_EvCheck()
1528 i->ARMin.EvCheck.amFailAddr = amFailAddr; in ARMInstr_EvCheck()
1543 vex_printf("%-4s ", showARMAluOp(i->ARMin.Alu.op)); in ppARMInstr()
1544 ppHRegARM(i->ARMin.Alu.dst); in ppARMInstr()
1546 ppHRegARM(i->ARMin.Alu.argL); in ppARMInstr()
1548 ppARMRI84(i->ARMin.Alu.argR); in ppARMInstr()
1551 vex_printf("%s ", showARMShiftOp(i->ARMin.Shift.op)); in ppARMInstr()
1552 ppHRegARM(i->ARMin.Shift.dst); in ppARMInstr()
1554 ppHRegARM(i->ARMin.Shift.argL); in ppARMInstr()
1556 ppARMRI5(i->ARMin.Shift.argR); in ppARMInstr()
1559 vex_printf("%s ", showARMUnaryOp(i->ARMin.Unary.op)); in ppARMInstr()
1560 ppHRegARM(i->ARMin.Unary.dst); in ppARMInstr()
1562 ppHRegARM(i->ARMin.Unary.src); in ppARMInstr()
1565 vex_printf("%s ", i->ARMin.CmpOrTst.isCmp ? "cmp" : "tst"); in ppARMInstr()
1566 ppHRegARM(i->ARMin.CmpOrTst.argL); in ppARMInstr()
1568 ppARMRI84(i->ARMin.CmpOrTst.argR); in ppARMInstr()
1572 ppHRegARM(i->ARMin.Mov.dst); in ppARMInstr()
1574 ppARMRI84(i->ARMin.Mov.src); in ppARMInstr()
1578 ppHRegARM(i->ARMin.Imm32.dst); in ppARMInstr()
1579 vex_printf(", 0x%x", i->ARMin.Imm32.imm32); in ppARMInstr()
1582 if (i->ARMin.LdSt32.isLoad) { in ppARMInstr()
1583 vex_printf("ldr%s ", i->ARMin.LdSt32.cc == ARMcc_AL ? " " in ppARMInstr()
1584 : showARMCondCode(i->ARMin.LdSt32.cc)); in ppARMInstr()
1585 ppHRegARM(i->ARMin.LdSt32.rD); in ppARMInstr()
1587 ppARMAMode1(i->ARMin.LdSt32.amode); in ppARMInstr()
1589 vex_printf("str%s ", i->ARMin.LdSt32.cc == ARMcc_AL ? " " in ppARMInstr()
1590 : showARMCondCode(i->ARMin.LdSt32.cc)); in ppARMInstr()
1591 ppARMAMode1(i->ARMin.LdSt32.amode); in ppARMInstr()
1593 ppHRegARM(i->ARMin.LdSt32.rD); in ppARMInstr()
1597 if (i->ARMin.LdSt16.isLoad) { in ppARMInstr()
1599 i->ARMin.LdSt16.signedLoad ? "ldrsh" : "ldrh", in ppARMInstr()
1600 i->ARMin.LdSt16.cc == ARMcc_AL ? " " in ppARMInstr()
1601 : showARMCondCode(i->ARMin.LdSt16.cc), in ppARMInstr()
1602 i->ARMin.LdSt16.signedLoad ? " " : " "); in ppARMInstr()
1603 ppHRegARM(i->ARMin.LdSt16.rD); in ppARMInstr()
1605 ppARMAMode2(i->ARMin.LdSt16.amode); in ppARMInstr()
1608 i->ARMin.LdSt16.cc == ARMcc_AL ? " " in ppARMInstr()
1609 : showARMCondCode(i->ARMin.LdSt16.cc)); in ppARMInstr()
1610 ppARMAMode2(i->ARMin.LdSt16.amode); in ppARMInstr()
1612 ppHRegARM(i->ARMin.LdSt16.rD); in ppARMInstr()
1616 if (i->ARMin.LdSt8U.isLoad) { in ppARMInstr()
1617 vex_printf("ldrb%s ", i->ARMin.LdSt8U.cc == ARMcc_AL ? " " in ppARMInstr()
1618 : showARMCondCode(i->ARMin.LdSt8U.cc)); in ppARMInstr()
1619 ppHRegARM(i->ARMin.LdSt8U.rD); in ppARMInstr()
1621 ppARMAMode1(i->ARMin.LdSt8U.amode); in ppARMInstr()
1623 vex_printf("strb%s ", i->ARMin.LdSt8U.cc == ARMcc_AL ? " " in ppARMInstr()
1624 : showARMCondCode(i->ARMin.LdSt8U.cc)); in ppARMInstr()
1625 ppARMAMode1(i->ARMin.LdSt8U.amode); in ppARMInstr()
1627 ppHRegARM(i->ARMin.LdSt8U.rD); in ppARMInstr()
1631 vex_printf("ldrsb%s ", i->ARMin.Ld8S.cc == ARMcc_AL ? " " in ppARMInstr()
1632 : showARMCondCode(i->ARMin.Ld8S.cc)); in ppARMInstr()
1633 ppARMAMode2(i->ARMin.Ld8S.amode); in ppARMInstr()
1635 ppHRegARM(i->ARMin.Ld8S.rD); in ppARMInstr()
1640 showARMCondCode(i->ARMin.XDirect.cond)); in ppARMInstr()
1642 (UInt)(i->ARMin.XDirect.dstGA & 0xFFFF)); in ppARMInstr()
1644 (UInt)((i->ARMin.XDirect.dstGA >> 16) & 0xFFFF)); in ppARMInstr()
1646 ppARMAMode1(i->ARMin.XDirect.amR15T); in ppARMInstr()
1648 i->ARMin.XDirect.toFastEP ? "fast" : "slow"); in ppARMInstr()
1650 i->ARMin.XDirect.toFastEP ? "fast" : "slow"); in ppARMInstr()
1656 showARMCondCode(i->ARMin.XIndir.cond)); in ppARMInstr()
1658 ppHRegARM(i->ARMin.XIndir.dstGA); in ppARMInstr()
1660 ppARMAMode1(i->ARMin.XIndir.amR15T); in ppARMInstr()
1668 showARMCondCode(i->ARMin.XAssisted.cond)); in ppARMInstr()
1670 ppHRegARM(i->ARMin.XAssisted.dstGA); in ppARMInstr()
1672 ppARMAMode1(i->ARMin.XAssisted.amR15T); in ppARMInstr()
1674 (Int)i->ARMin.XAssisted.jk); in ppARMInstr()
1680 vex_printf("mov%s ", showARMCondCode(i->ARMin.CMov.cond)); in ppARMInstr()
1681 ppHRegARM(i->ARMin.CMov.dst); in ppARMInstr()
1683 ppARMRI84(i->ARMin.CMov.src); in ppARMInstr()
1687 i->ARMin.Call.cond==ARMcc_AL in ppARMInstr()
1688 ? "" : showARMCondCode(i->ARMin.Call.cond)); in ppARMInstr()
1690 i->ARMin.Call.target, i->ARMin.Call.nArgRegs); in ppARMInstr()
1691 ppRetLoc(i->ARMin.Call.rloc); in ppARMInstr()
1695 vex_printf("%-5s ", showARMMulOp(i->ARMin.Mul.op)); in ppARMInstr()
1696 if (i->ARMin.Mul.op == ARMmul_PLAIN) { in ppARMInstr()
1704 switch (i->ARMin.LdrEX.szB) { in ppARMInstr()
1710 sz, i->ARMin.LdrEX.szB == 8 ? "r3:" : ""); in ppARMInstr()
1715 switch (i->ARMin.StrEX.szB) { in ppARMInstr()
1721 sz, i->ARMin.StrEX.szB == 8 ? "r3:" : ""); in ppARMInstr()
1725 if (i->ARMin.VLdStD.isLoad) { in ppARMInstr()
1727 ppHRegARM(i->ARMin.VLdStD.dD); in ppARMInstr()
1729 ppARMAModeV(i->ARMin.VLdStD.amode); in ppARMInstr()
1732 ppARMAModeV(i->ARMin.VLdStD.amode); in ppARMInstr()
1734 ppHRegARM(i->ARMin.VLdStD.dD); in ppARMInstr()
1738 if (i->ARMin.VLdStS.isLoad) { in ppARMInstr()
1740 ppHRegARM(i->ARMin.VLdStS.fD); in ppARMInstr()
1742 ppARMAModeV(i->ARMin.VLdStS.amode); in ppARMInstr()
1745 ppARMAModeV(i->ARMin.VLdStS.amode); in ppARMInstr()
1747 ppHRegARM(i->ARMin.VLdStS.fD); in ppARMInstr()
1751 vex_printf("f%-3sd ", showARMVfpOp(i->ARMin.VAluD.op)); in ppARMInstr()
1752 ppHRegARM(i->ARMin.VAluD.dst); in ppARMInstr()
1754 ppHRegARM(i->ARMin.VAluD.argL); in ppARMInstr()
1756 ppHRegARM(i->ARMin.VAluD.argR); in ppARMInstr()
1759 vex_printf("f%-3ss ", showARMVfpOp(i->ARMin.VAluS.op)); in ppARMInstr()
1760 ppHRegARM(i->ARMin.VAluS.dst); in ppARMInstr()
1762 ppHRegARM(i->ARMin.VAluS.argL); in ppARMInstr()
1764 ppHRegARM(i->ARMin.VAluS.argR); in ppARMInstr()
1767 vex_printf("f%-3sd ", showARMVfpUnaryOp(i->ARMin.VUnaryD.op)); in ppARMInstr()
1768 ppHRegARM(i->ARMin.VUnaryD.dst); in ppARMInstr()
1770 ppHRegARM(i->ARMin.VUnaryD.src); in ppARMInstr()
1773 vex_printf("f%-3ss ", showARMVfpUnaryOp(i->ARMin.VUnaryS.op)); in ppARMInstr()
1774 ppHRegARM(i->ARMin.VUnaryS.dst); in ppARMInstr()
1776 ppHRegARM(i->ARMin.VUnaryS.src); in ppARMInstr()
1780 ppHRegARM(i->ARMin.VCmpD.argL); in ppARMInstr()
1782 ppHRegARM(i->ARMin.VCmpD.argR); in ppARMInstr()
1786 vex_printf("fcpyd%s ", showARMCondCode(i->ARMin.VCMovD.cond)); in ppARMInstr()
1787 ppHRegARM(i->ARMin.VCMovD.dst); in ppARMInstr()
1789 ppHRegARM(i->ARMin.VCMovD.src); in ppARMInstr()
1792 vex_printf("fcpys%s ", showARMCondCode(i->ARMin.VCMovS.cond)); in ppARMInstr()
1793 ppHRegARM(i->ARMin.VCMovS.dst); in ppARMInstr()
1795 ppHRegARM(i->ARMin.VCMovS.src); in ppARMInstr()
1798 vex_printf("fcvt%s ", i->ARMin.VCvtSD.sToD ? "ds" : "sd"); in ppARMInstr()
1799 ppHRegARM(i->ARMin.VCvtSD.dst); in ppARMInstr()
1801 ppHRegARM(i->ARMin.VCvtSD.src); in ppARMInstr()
1805 if (i->ARMin.VXferD.toD) { in ppARMInstr()
1806 ppHRegARM(i->ARMin.VXferD.dD); in ppARMInstr()
1808 ppHRegARM(i->ARMin.VXferD.rLo); in ppARMInstr()
1810 ppHRegARM(i->ARMin.VXferD.rHi); in ppARMInstr()
1812 ppHRegARM(i->ARMin.VXferD.rLo); in ppARMInstr()
1814 ppHRegARM(i->ARMin.VXferD.rHi); in ppARMInstr()
1816 ppHRegARM(i->ARMin.VXferD.dD); in ppARMInstr()
1821 if (i->ARMin.VXferS.toS) { in ppARMInstr()
1822 ppHRegARM(i->ARMin.VXferS.fD); in ppARMInstr()
1824 ppHRegARM(i->ARMin.VXferS.rLo); in ppARMInstr()
1826 ppHRegARM(i->ARMin.VXferS.rLo); in ppARMInstr()
1828 ppHRegARM(i->ARMin.VXferS.fD); in ppARMInstr()
1833 if (i->ARMin.VCvtID.iToD) { in ppARMInstr()
1834 nm = i->ARMin.VCvtID.syned ? "fsitod" : "fuitod"; in ppARMInstr()
1836 nm = i->ARMin.VCvtID.syned ? "ftosid" : "ftouid"; in ppARMInstr()
1839 ppHRegARM(i->ARMin.VCvtID.dst); in ppARMInstr()
1841 ppHRegARM(i->ARMin.VCvtID.src); in ppARMInstr()
1845 if (i->ARMin.FPSCR.toFPSCR) { in ppARMInstr()
1847 ppHRegARM(i->ARMin.FPSCR.iReg); in ppARMInstr()
1850 ppHRegARM(i->ARMin.FPSCR.iReg); in ppARMInstr()
1861 if (i->ARMin.NLdStQ.isLoad) in ppARMInstr()
1865 ppHRegARM(i->ARMin.NLdStQ.dQ); in ppARMInstr()
1867 ppARMAModeN(i->ARMin.NLdStQ.amode); in ppARMInstr()
1870 if (i->ARMin.NLdStD.isLoad) in ppARMInstr()
1874 ppHRegARM(i->ARMin.NLdStD.dD); in ppARMInstr()
1876 ppARMAModeN(i->ARMin.NLdStD.amode); in ppARMInstr()
1880 showARMNeonUnOp(i->ARMin.NUnary.op), in ppARMInstr()
1881 showARMNeonUnOpDataType(i->ARMin.NUnary.op), in ppARMInstr()
1883 ppHRegARM(i->ARMin.NUnary.dst); in ppARMInstr()
1885 ppHRegARM(i->ARMin.NUnary.src); in ppARMInstr()
1886 if (i->ARMin.NUnary.op == ARMneon_EQZ) in ppARMInstr()
1888 if (i->ARMin.NUnary.op == ARMneon_VCVTFtoFixedS || in ppARMInstr()
1889 i->ARMin.NUnary.op == ARMneon_VCVTFtoFixedU || in ppARMInstr()
1890 i->ARMin.NUnary.op == ARMneon_VCVTFixedStoF || in ppARMInstr()
1891 i->ARMin.NUnary.op == ARMneon_VCVTFixedUtoF) { in ppARMInstr()
1892 vex_printf(", #%u", i->ARMin.NUnary.size); in ppARMInstr()
1894 if (i->ARMin.NUnary.op == ARMneon_VQSHLNSS || in ppARMInstr()
1895 i->ARMin.NUnary.op == ARMneon_VQSHLNUU || in ppARMInstr()
1896 i->ARMin.NUnary.op == ARMneon_VQSHLNUS) { in ppARMInstr()
1898 size = i->ARMin.NUnary.size; in ppARMInstr()
1912 showARMNeonUnOpS(i->ARMin.NUnaryS.op), in ppARMInstr()
1913 showARMNeonUnOpSDataType(i->ARMin.NUnaryS.op), in ppARMInstr()
1915 ppARMNRS(i->ARMin.NUnaryS.dst); in ppARMInstr()
1917 ppARMNRS(i->ARMin.NUnaryS.src); in ppARMInstr()
1921 showARMNeonShiftOp(i->ARMin.NShift.op), in ppARMInstr()
1922 showARMNeonShiftOpDataType(i->ARMin.NShift.op), in ppARMInstr()
1924 ppHRegARM(i->ARMin.NShift.dst); in ppARMInstr()
1926 ppHRegARM(i->ARMin.NShift.argL); in ppARMInstr()
1928 ppHRegARM(i->ARMin.NShift.argR); in ppARMInstr()
1932 ppHRegARM(i->ARMin.NShl64.dst); in ppARMInstr()
1934 ppHRegARM(i->ARMin.NShl64.src); in ppARMInstr()
1935 vex_printf(", #%u", i->ARMin.NShl64.amt); in ppARMInstr()
1939 showARMNeonDualOp(i->ARMin.NDual.op), in ppARMInstr()
1940 showARMNeonDualOpDataType(i->ARMin.NDual.op), in ppARMInstr()
1942 ppHRegARM(i->ARMin.NDual.arg1); in ppARMInstr()
1944 ppHRegARM(i->ARMin.NDual.arg2); in ppARMInstr()
1948 showARMNeonBinOp(i->ARMin.NBinary.op), in ppARMInstr()
1949 showARMNeonBinOpDataType(i->ARMin.NBinary.op), in ppARMInstr()
1952 ppHRegARM(i->ARMin.NBinary.dst); in ppARMInstr()
1954 ppHRegARM(i->ARMin.NBinary.argL); in ppARMInstr()
1956 ppHRegARM(i->ARMin.NBinary.argR); in ppARMInstr()
1960 ppHRegARM(i->ARMin.NeonImm.dst); in ppARMInstr()
1962 ppARMNImm(i->ARMin.NeonImm.imm); in ppARMInstr()
1965 vex_printf("vmov%s ", showARMCondCode(i->ARMin.NCMovQ.cond)); in ppARMInstr()
1966 ppHRegARM(i->ARMin.NCMovQ.dst); in ppARMInstr()
1968 ppHRegARM(i->ARMin.NCMovQ.src); in ppARMInstr()
1972 ppHRegARM(i->ARMin.Add32.rD); in ppARMInstr()
1974 ppHRegARM(i->ARMin.Add32.rN); in ppARMInstr()
1976 vex_printf("%u", i->ARMin.Add32.imm32); in ppARMInstr()
1980 ppARMAMode1(i->ARMin.EvCheck.amCounter); in ppARMInstr()
1982 ppARMAMode1(i->ARMin.EvCheck.amCounter); in ppARMInstr()
1984 ppARMAMode1(i->ARMin.EvCheck.amFailAddr); in ppARMInstr()
2013 addHRegUse(u, HRmWrite, i->ARMin.Alu.dst); in getRegUsage_ARMInstr()
2014 addHRegUse(u, HRmRead, i->ARMin.Alu.argL); in getRegUsage_ARMInstr()
2015 addRegUsage_ARMRI84(u, i->ARMin.Alu.argR); in getRegUsage_ARMInstr()
2018 addHRegUse(u, HRmWrite, i->ARMin.Shift.dst); in getRegUsage_ARMInstr()
2019 addHRegUse(u, HRmRead, i->ARMin.Shift.argL); in getRegUsage_ARMInstr()
2020 addRegUsage_ARMRI5(u, i->ARMin.Shift.argR); in getRegUsage_ARMInstr()
2023 addHRegUse(u, HRmWrite, i->ARMin.Unary.dst); in getRegUsage_ARMInstr()
2024 addHRegUse(u, HRmRead, i->ARMin.Unary.src); in getRegUsage_ARMInstr()
2027 addHRegUse(u, HRmRead, i->ARMin.CmpOrTst.argL); in getRegUsage_ARMInstr()
2028 addRegUsage_ARMRI84(u, i->ARMin.CmpOrTst.argR); in getRegUsage_ARMInstr()
2031 addHRegUse(u, HRmWrite, i->ARMin.Mov.dst); in getRegUsage_ARMInstr()
2032 addRegUsage_ARMRI84(u, i->ARMin.Mov.src); in getRegUsage_ARMInstr()
2035 addHRegUse(u, HRmWrite, i->ARMin.Imm32.dst); in getRegUsage_ARMInstr()
2038 addRegUsage_ARMAMode1(u, i->ARMin.LdSt32.amode); in getRegUsage_ARMInstr()
2039 if (i->ARMin.LdSt32.isLoad) { in getRegUsage_ARMInstr()
2040 addHRegUse(u, HRmWrite, i->ARMin.LdSt32.rD); in getRegUsage_ARMInstr()
2041 if (i->ARMin.LdSt32.cc != ARMcc_AL) in getRegUsage_ARMInstr()
2042 addHRegUse(u, HRmRead, i->ARMin.LdSt32.rD); in getRegUsage_ARMInstr()
2044 addHRegUse(u, HRmRead, i->ARMin.LdSt32.rD); in getRegUsage_ARMInstr()
2048 addRegUsage_ARMAMode2(u, i->ARMin.LdSt16.amode); in getRegUsage_ARMInstr()
2049 if (i->ARMin.LdSt16.isLoad) { in getRegUsage_ARMInstr()
2050 addHRegUse(u, HRmWrite, i->ARMin.LdSt16.rD); in getRegUsage_ARMInstr()
2051 if (i->ARMin.LdSt16.cc != ARMcc_AL) in getRegUsage_ARMInstr()
2052 addHRegUse(u, HRmRead, i->ARMin.LdSt16.rD); in getRegUsage_ARMInstr()
2054 addHRegUse(u, HRmRead, i->ARMin.LdSt16.rD); in getRegUsage_ARMInstr()
2058 addRegUsage_ARMAMode1(u, i->ARMin.LdSt8U.amode); in getRegUsage_ARMInstr()
2059 if (i->ARMin.LdSt8U.isLoad) { in getRegUsage_ARMInstr()
2060 addHRegUse(u, HRmWrite, i->ARMin.LdSt8U.rD); in getRegUsage_ARMInstr()
2061 if (i->ARMin.LdSt8U.cc != ARMcc_AL) in getRegUsage_ARMInstr()
2062 addHRegUse(u, HRmRead, i->ARMin.LdSt8U.rD); in getRegUsage_ARMInstr()
2064 addHRegUse(u, HRmRead, i->ARMin.LdSt8U.rD); in getRegUsage_ARMInstr()
2068 addRegUsage_ARMAMode2(u, i->ARMin.Ld8S.amode); in getRegUsage_ARMInstr()
2069 addHRegUse(u, HRmWrite, i->ARMin.Ld8S.rD); in getRegUsage_ARMInstr()
2070 if (i->ARMin.Ld8S.cc != ARMcc_AL) in getRegUsage_ARMInstr()
2071 addHRegUse(u, HRmRead, i->ARMin.Ld8S.rD); in getRegUsage_ARMInstr()
2079 addRegUsage_ARMAMode1(u, i->ARMin.XDirect.amR15T); in getRegUsage_ARMInstr()
2082 addHRegUse(u, HRmRead, i->ARMin.XIndir.dstGA); in getRegUsage_ARMInstr()
2083 addRegUsage_ARMAMode1(u, i->ARMin.XIndir.amR15T); in getRegUsage_ARMInstr()
2086 addHRegUse(u, HRmRead, i->ARMin.XAssisted.dstGA); in getRegUsage_ARMInstr()
2087 addRegUsage_ARMAMode1(u, i->ARMin.XAssisted.amR15T); in getRegUsage_ARMInstr()
2090 addHRegUse(u, HRmWrite, i->ARMin.CMov.dst); in getRegUsage_ARMInstr()
2091 addHRegUse(u, HRmRead, i->ARMin.CMov.dst); in getRegUsage_ARMInstr()
2092 addRegUsage_ARMRI84(u, i->ARMin.CMov.src); in getRegUsage_ARMInstr()
2108 switch (i->ARMin.Call.nArgRegs) { in getRegUsage_ARMInstr()
2125 if (i->ARMin.Call.nArgRegs == 4) in getRegUsage_ARMInstr()
2136 if (i->ARMin.Mul.op != ARMmul_PLAIN) in getRegUsage_ARMInstr()
2142 if (i->ARMin.LdrEX.szB == 8) in getRegUsage_ARMInstr()
2149 if (i->ARMin.StrEX.szB == 8) in getRegUsage_ARMInstr()
2153 addRegUsage_ARMAModeV(u, i->ARMin.VLdStD.amode); in getRegUsage_ARMInstr()
2154 if (i->ARMin.VLdStD.isLoad) { in getRegUsage_ARMInstr()
2155 addHRegUse(u, HRmWrite, i->ARMin.VLdStD.dD); in getRegUsage_ARMInstr()
2157 addHRegUse(u, HRmRead, i->ARMin.VLdStD.dD); in getRegUsage_ARMInstr()
2161 addRegUsage_ARMAModeV(u, i->ARMin.VLdStS.amode); in getRegUsage_ARMInstr()
2162 if (i->ARMin.VLdStS.isLoad) { in getRegUsage_ARMInstr()
2163 addHRegUse(u, HRmWrite, i->ARMin.VLdStS.fD); in getRegUsage_ARMInstr()
2165 addHRegUse(u, HRmRead, i->ARMin.VLdStS.fD); in getRegUsage_ARMInstr()
2169 addHRegUse(u, HRmWrite, i->ARMin.VAluD.dst); in getRegUsage_ARMInstr()
2170 addHRegUse(u, HRmRead, i->ARMin.VAluD.argL); in getRegUsage_ARMInstr()
2171 addHRegUse(u, HRmRead, i->ARMin.VAluD.argR); in getRegUsage_ARMInstr()
2174 addHRegUse(u, HRmWrite, i->ARMin.VAluS.dst); in getRegUsage_ARMInstr()
2175 addHRegUse(u, HRmRead, i->ARMin.VAluS.argL); in getRegUsage_ARMInstr()
2176 addHRegUse(u, HRmRead, i->ARMin.VAluS.argR); in getRegUsage_ARMInstr()
2179 addHRegUse(u, HRmWrite, i->ARMin.VUnaryD.dst); in getRegUsage_ARMInstr()
2180 addHRegUse(u, HRmRead, i->ARMin.VUnaryD.src); in getRegUsage_ARMInstr()
2183 addHRegUse(u, HRmWrite, i->ARMin.VUnaryS.dst); in getRegUsage_ARMInstr()
2184 addHRegUse(u, HRmRead, i->ARMin.VUnaryS.src); in getRegUsage_ARMInstr()
2187 addHRegUse(u, HRmRead, i->ARMin.VCmpD.argL); in getRegUsage_ARMInstr()
2188 addHRegUse(u, HRmRead, i->ARMin.VCmpD.argR); in getRegUsage_ARMInstr()
2191 addHRegUse(u, HRmWrite, i->ARMin.VCMovD.dst); in getRegUsage_ARMInstr()
2192 addHRegUse(u, HRmRead, i->ARMin.VCMovD.dst); in getRegUsage_ARMInstr()
2193 addHRegUse(u, HRmRead, i->ARMin.VCMovD.src); in getRegUsage_ARMInstr()
2196 addHRegUse(u, HRmWrite, i->ARMin.VCMovS.dst); in getRegUsage_ARMInstr()
2197 addHRegUse(u, HRmRead, i->ARMin.VCMovS.dst); in getRegUsage_ARMInstr()
2198 addHRegUse(u, HRmRead, i->ARMin.VCMovS.src); in getRegUsage_ARMInstr()
2201 addHRegUse(u, HRmWrite, i->ARMin.VCvtSD.dst); in getRegUsage_ARMInstr()
2202 addHRegUse(u, HRmRead, i->ARMin.VCvtSD.src); in getRegUsage_ARMInstr()
2205 if (i->ARMin.VXferD.toD) { in getRegUsage_ARMInstr()
2206 addHRegUse(u, HRmWrite, i->ARMin.VXferD.dD); in getRegUsage_ARMInstr()
2207 addHRegUse(u, HRmRead, i->ARMin.VXferD.rHi); in getRegUsage_ARMInstr()
2208 addHRegUse(u, HRmRead, i->ARMin.VXferD.rLo); in getRegUsage_ARMInstr()
2210 addHRegUse(u, HRmRead, i->ARMin.VXferD.dD); in getRegUsage_ARMInstr()
2211 addHRegUse(u, HRmWrite, i->ARMin.VXferD.rHi); in getRegUsage_ARMInstr()
2212 addHRegUse(u, HRmWrite, i->ARMin.VXferD.rLo); in getRegUsage_ARMInstr()
2216 if (i->ARMin.VXferS.toS) { in getRegUsage_ARMInstr()
2217 addHRegUse(u, HRmWrite, i->ARMin.VXferS.fD); in getRegUsage_ARMInstr()
2218 addHRegUse(u, HRmRead, i->ARMin.VXferS.rLo); in getRegUsage_ARMInstr()
2220 addHRegUse(u, HRmRead, i->ARMin.VXferS.fD); in getRegUsage_ARMInstr()
2221 addHRegUse(u, HRmWrite, i->ARMin.VXferS.rLo); in getRegUsage_ARMInstr()
2225 addHRegUse(u, HRmWrite, i->ARMin.VCvtID.dst); in getRegUsage_ARMInstr()
2226 addHRegUse(u, HRmRead, i->ARMin.VCvtID.src); in getRegUsage_ARMInstr()
2229 if (i->ARMin.FPSCR.toFPSCR) in getRegUsage_ARMInstr()
2230 addHRegUse(u, HRmRead, i->ARMin.FPSCR.iReg); in getRegUsage_ARMInstr()
2232 addHRegUse(u, HRmWrite, i->ARMin.FPSCR.iReg); in getRegUsage_ARMInstr()
2239 if (i->ARMin.NLdStQ.isLoad) in getRegUsage_ARMInstr()
2240 addHRegUse(u, HRmWrite, i->ARMin.NLdStQ.dQ); in getRegUsage_ARMInstr()
2242 addHRegUse(u, HRmRead, i->ARMin.NLdStQ.dQ); in getRegUsage_ARMInstr()
2243 addRegUsage_ARMAModeN(u, i->ARMin.NLdStQ.amode); in getRegUsage_ARMInstr()
2246 if (i->ARMin.NLdStD.isLoad) in getRegUsage_ARMInstr()
2247 addHRegUse(u, HRmWrite, i->ARMin.NLdStD.dD); in getRegUsage_ARMInstr()
2249 addHRegUse(u, HRmRead, i->ARMin.NLdStD.dD); in getRegUsage_ARMInstr()
2250 addRegUsage_ARMAModeN(u, i->ARMin.NLdStD.amode); in getRegUsage_ARMInstr()
2253 addHRegUse(u, HRmWrite, i->ARMin.NUnary.dst); in getRegUsage_ARMInstr()
2254 addHRegUse(u, HRmRead, i->ARMin.NUnary.src); in getRegUsage_ARMInstr()
2257 addHRegUse(u, HRmWrite, i->ARMin.NUnaryS.dst->reg); in getRegUsage_ARMInstr()
2258 addHRegUse(u, HRmRead, i->ARMin.NUnaryS.src->reg); in getRegUsage_ARMInstr()
2261 addHRegUse(u, HRmWrite, i->ARMin.NShift.dst); in getRegUsage_ARMInstr()
2262 addHRegUse(u, HRmRead, i->ARMin.NShift.argL); in getRegUsage_ARMInstr()
2263 addHRegUse(u, HRmRead, i->ARMin.NShift.argR); in getRegUsage_ARMInstr()
2266 addHRegUse(u, HRmWrite, i->ARMin.NShl64.dst); in getRegUsage_ARMInstr()
2267 addHRegUse(u, HRmRead, i->ARMin.NShl64.src); in getRegUsage_ARMInstr()
2270 addHRegUse(u, HRmWrite, i->ARMin.NDual.arg1); in getRegUsage_ARMInstr()
2271 addHRegUse(u, HRmWrite, i->ARMin.NDual.arg2); in getRegUsage_ARMInstr()
2272 addHRegUse(u, HRmRead, i->ARMin.NDual.arg1); in getRegUsage_ARMInstr()
2273 addHRegUse(u, HRmRead, i->ARMin.NDual.arg2); in getRegUsage_ARMInstr()
2276 addHRegUse(u, HRmWrite, i->ARMin.NBinary.dst); in getRegUsage_ARMInstr()
2279 addHRegUse(u, HRmRead, i->ARMin.NBinary.argL); in getRegUsage_ARMInstr()
2280 addHRegUse(u, HRmRead, i->ARMin.NBinary.argR); in getRegUsage_ARMInstr()
2283 addHRegUse(u, HRmWrite, i->ARMin.NeonImm.dst); in getRegUsage_ARMInstr()
2286 addHRegUse(u, HRmWrite, i->ARMin.NCMovQ.dst); in getRegUsage_ARMInstr()
2287 addHRegUse(u, HRmRead, i->ARMin.NCMovQ.dst); in getRegUsage_ARMInstr()
2288 addHRegUse(u, HRmRead, i->ARMin.NCMovQ.src); in getRegUsage_ARMInstr()
2291 addHRegUse(u, HRmWrite, i->ARMin.Add32.rD); in getRegUsage_ARMInstr()
2292 addHRegUse(u, HRmRead, i->ARMin.Add32.rN); in getRegUsage_ARMInstr()
2298 addRegUsage_ARMAMode1(u, i->ARMin.EvCheck.amCounter); in getRegUsage_ARMInstr()
2299 addRegUsage_ARMAMode1(u, i->ARMin.EvCheck.amFailAddr); in getRegUsage_ARMInstr()
2318 i->ARMin.Alu.dst = lookupHRegRemap(m, i->ARMin.Alu.dst); in mapRegs_ARMInstr()
2319 i->ARMin.Alu.argL = lookupHRegRemap(m, i->ARMin.Alu.argL); in mapRegs_ARMInstr()
2320 mapRegs_ARMRI84(m, i->ARMin.Alu.argR); in mapRegs_ARMInstr()
2323 i->ARMin.Shift.dst = lookupHRegRemap(m, i->ARMin.Shift.dst); in mapRegs_ARMInstr()
2324 i->ARMin.Shift.argL = lookupHRegRemap(m, i->ARMin.Shift.argL); in mapRegs_ARMInstr()
2325 mapRegs_ARMRI5(m, i->ARMin.Shift.argR); in mapRegs_ARMInstr()
2328 i->ARMin.Unary.dst = lookupHRegRemap(m, i->ARMin.Unary.dst); in mapRegs_ARMInstr()
2329 i->ARMin.Unary.src = lookupHRegRemap(m, i->ARMin.Unary.src); in mapRegs_ARMInstr()
2332 i->ARMin.CmpOrTst.argL = lookupHRegRemap(m, i->ARMin.CmpOrTst.argL); in mapRegs_ARMInstr()
2333 mapRegs_ARMRI84(m, i->ARMin.CmpOrTst.argR); in mapRegs_ARMInstr()
2336 i->ARMin.Mov.dst = lookupHRegRemap(m, i->ARMin.Mov.dst); in mapRegs_ARMInstr()
2337 mapRegs_ARMRI84(m, i->ARMin.Mov.src); in mapRegs_ARMInstr()
2340 i->ARMin.Imm32.dst = lookupHRegRemap(m, i->ARMin.Imm32.dst); in mapRegs_ARMInstr()
2343 i->ARMin.LdSt32.rD = lookupHRegRemap(m, i->ARMin.LdSt32.rD); in mapRegs_ARMInstr()
2344 mapRegs_ARMAMode1(m, i->ARMin.LdSt32.amode); in mapRegs_ARMInstr()
2347 i->ARMin.LdSt16.rD = lookupHRegRemap(m, i->ARMin.LdSt16.rD); in mapRegs_ARMInstr()
2348 mapRegs_ARMAMode2(m, i->ARMin.LdSt16.amode); in mapRegs_ARMInstr()
2351 i->ARMin.LdSt8U.rD = lookupHRegRemap(m, i->ARMin.LdSt8U.rD); in mapRegs_ARMInstr()
2352 mapRegs_ARMAMode1(m, i->ARMin.LdSt8U.amode); in mapRegs_ARMInstr()
2355 i->ARMin.Ld8S.rD = lookupHRegRemap(m, i->ARMin.Ld8S.rD); in mapRegs_ARMInstr()
2356 mapRegs_ARMAMode2(m, i->ARMin.Ld8S.amode); in mapRegs_ARMInstr()
2359 mapRegs_ARMAMode1(m, i->ARMin.XDirect.amR15T); in mapRegs_ARMInstr()
2362 i->ARMin.XIndir.dstGA in mapRegs_ARMInstr()
2363 = lookupHRegRemap(m, i->ARMin.XIndir.dstGA); in mapRegs_ARMInstr()
2364 mapRegs_ARMAMode1(m, i->ARMin.XIndir.amR15T); in mapRegs_ARMInstr()
2367 i->ARMin.XAssisted.dstGA in mapRegs_ARMInstr()
2368 = lookupHRegRemap(m, i->ARMin.XAssisted.dstGA); in mapRegs_ARMInstr()
2369 mapRegs_ARMAMode1(m, i->ARMin.XAssisted.amR15T); in mapRegs_ARMInstr()
2372 i->ARMin.CMov.dst = lookupHRegRemap(m, i->ARMin.CMov.dst); in mapRegs_ARMInstr()
2373 mapRegs_ARMRI84(m, i->ARMin.CMov.src); in mapRegs_ARMInstr()
2384 i->ARMin.VLdStD.dD = lookupHRegRemap(m, i->ARMin.VLdStD.dD); in mapRegs_ARMInstr()
2385 mapRegs_ARMAModeV(m, i->ARMin.VLdStD.amode); in mapRegs_ARMInstr()
2388 i->ARMin.VLdStS.fD = lookupHRegRemap(m, i->ARMin.VLdStS.fD); in mapRegs_ARMInstr()
2389 mapRegs_ARMAModeV(m, i->ARMin.VLdStS.amode); in mapRegs_ARMInstr()
2392 i->ARMin.VAluD.dst = lookupHRegRemap(m, i->ARMin.VAluD.dst); in mapRegs_ARMInstr()
2393 i->ARMin.VAluD.argL = lookupHRegRemap(m, i->ARMin.VAluD.argL); in mapRegs_ARMInstr()
2394 i->ARMin.VAluD.argR = lookupHRegRemap(m, i->ARMin.VAluD.argR); in mapRegs_ARMInstr()
2397 i->ARMin.VAluS.dst = lookupHRegRemap(m, i->ARMin.VAluS.dst); in mapRegs_ARMInstr()
2398 i->ARMin.VAluS.argL = lookupHRegRemap(m, i->ARMin.VAluS.argL); in mapRegs_ARMInstr()
2399 i->ARMin.VAluS.argR = lookupHRegRemap(m, i->ARMin.VAluS.argR); in mapRegs_ARMInstr()
2402 i->ARMin.VUnaryD.dst = lookupHRegRemap(m, i->ARMin.VUnaryD.dst); in mapRegs_ARMInstr()
2403 i->ARMin.VUnaryD.src = lookupHRegRemap(m, i->ARMin.VUnaryD.src); in mapRegs_ARMInstr()
2406 i->ARMin.VUnaryS.dst = lookupHRegRemap(m, i->ARMin.VUnaryS.dst); in mapRegs_ARMInstr()
2407 i->ARMin.VUnaryS.src = lookupHRegRemap(m, i->ARMin.VUnaryS.src); in mapRegs_ARMInstr()
2410 i->ARMin.VCmpD.argL = lookupHRegRemap(m, i->ARMin.VCmpD.argL); in mapRegs_ARMInstr()
2411 i->ARMin.VCmpD.argR = lookupHRegRemap(m, i->ARMin.VCmpD.argR); in mapRegs_ARMInstr()
2414 i->ARMin.VCMovD.dst = lookupHRegRemap(m, i->ARMin.VCMovD.dst); in mapRegs_ARMInstr()
2415 i->ARMin.VCMovD.src = lookupHRegRemap(m, i->ARMin.VCMovD.src); in mapRegs_ARMInstr()
2418 i->ARMin.VCMovS.dst = lookupHRegRemap(m, i->ARMin.VCMovS.dst); in mapRegs_ARMInstr()
2419 i->ARMin.VCMovS.src = lookupHRegRemap(m, i->ARMin.VCMovS.src); in mapRegs_ARMInstr()
2422 i->ARMin.VCvtSD.dst = lookupHRegRemap(m, i->ARMin.VCvtSD.dst); in mapRegs_ARMInstr()
2423 i->ARMin.VCvtSD.src = lookupHRegRemap(m, i->ARMin.VCvtSD.src); in mapRegs_ARMInstr()
2426 i->ARMin.VXferD.dD = lookupHRegRemap(m, i->ARMin.VXferD.dD); in mapRegs_ARMInstr()
2427 i->ARMin.VXferD.rHi = lookupHRegRemap(m, i->ARMin.VXferD.rHi); in mapRegs_ARMInstr()
2428 i->ARMin.VXferD.rLo = lookupHRegRemap(m, i->ARMin.VXferD.rLo); in mapRegs_ARMInstr()
2431 i->ARMin.VXferS.fD = lookupHRegRemap(m, i->ARMin.VXferS.fD); in mapRegs_ARMInstr()
2432 i->ARMin.VXferS.rLo = lookupHRegRemap(m, i->ARMin.VXferS.rLo); in mapRegs_ARMInstr()
2435 i->ARMin.VCvtID.dst = lookupHRegRemap(m, i->ARMin.VCvtID.dst); in mapRegs_ARMInstr()
2436 i->ARMin.VCvtID.src = lookupHRegRemap(m, i->ARMin.VCvtID.src); in mapRegs_ARMInstr()
2439 i->ARMin.FPSCR.iReg = lookupHRegRemap(m, i->ARMin.FPSCR.iReg); in mapRegs_ARMInstr()
2446 i->ARMin.NLdStQ.dQ = lookupHRegRemap(m, i->ARMin.NLdStQ.dQ); in mapRegs_ARMInstr()
2447 mapRegs_ARMAModeN(m, i->ARMin.NLdStQ.amode); in mapRegs_ARMInstr()
2450 i->ARMin.NLdStD.dD = lookupHRegRemap(m, i->ARMin.NLdStD.dD); in mapRegs_ARMInstr()
2451 mapRegs_ARMAModeN(m, i->ARMin.NLdStD.amode); in mapRegs_ARMInstr()
2454 i->ARMin.NUnary.src = lookupHRegRemap(m, i->ARMin.NUnary.src); in mapRegs_ARMInstr()
2455 i->ARMin.NUnary.dst = lookupHRegRemap(m, i->ARMin.NUnary.dst); in mapRegs_ARMInstr()
2458 i->ARMin.NUnaryS.src->reg in mapRegs_ARMInstr()
2459 = lookupHRegRemap(m, i->ARMin.NUnaryS.src->reg); in mapRegs_ARMInstr()
2460 i->ARMin.NUnaryS.dst->reg in mapRegs_ARMInstr()
2461 = lookupHRegRemap(m, i->ARMin.NUnaryS.dst->reg); in mapRegs_ARMInstr()
2464 i->ARMin.NShift.dst = lookupHRegRemap(m, i->ARMin.NShift.dst); in mapRegs_ARMInstr()
2465 i->ARMin.NShift.argL = lookupHRegRemap(m, i->ARMin.NShift.argL); in mapRegs_ARMInstr()
2466 i->ARMin.NShift.argR = lookupHRegRemap(m, i->ARMin.NShift.argR); in mapRegs_ARMInstr()
2469 i->ARMin.NShl64.dst = lookupHRegRemap(m, i->ARMin.NShl64.dst); in mapRegs_ARMInstr()
2470 i->ARMin.NShl64.src = lookupHRegRemap(m, i->ARMin.NShl64.src); in mapRegs_ARMInstr()
2473 i->ARMin.NDual.arg1 = lookupHRegRemap(m, i->ARMin.NDual.arg1); in mapRegs_ARMInstr()
2474 i->ARMin.NDual.arg2 = lookupHRegRemap(m, i->ARMin.NDual.arg2); in mapRegs_ARMInstr()
2477 i->ARMin.NBinary.argL = lookupHRegRemap(m, i->ARMin.NBinary.argL); in mapRegs_ARMInstr()
2478 i->ARMin.NBinary.argR = lookupHRegRemap(m, i->ARMin.NBinary.argR); in mapRegs_ARMInstr()
2479 i->ARMin.NBinary.dst = lookupHRegRemap(m, i->ARMin.NBinary.dst); in mapRegs_ARMInstr()
2482 i->ARMin.NeonImm.dst = lookupHRegRemap(m, i->ARMin.NeonImm.dst); in mapRegs_ARMInstr()
2485 i->ARMin.NCMovQ.dst = lookupHRegRemap(m, i->ARMin.NCMovQ.dst); in mapRegs_ARMInstr()
2486 i->ARMin.NCMovQ.src = lookupHRegRemap(m, i->ARMin.NCMovQ.src); in mapRegs_ARMInstr()
2489 i->ARMin.Add32.rD = lookupHRegRemap(m, i->ARMin.Add32.rD); in mapRegs_ARMInstr()
2490 i->ARMin.Add32.rN = lookupHRegRemap(m, i->ARMin.Add32.rN); in mapRegs_ARMInstr()
2496 mapRegs_ARMAMode1(m, i->ARMin.EvCheck.amCounter); in mapRegs_ARMInstr()
2497 mapRegs_ARMAMode1(m, i->ARMin.EvCheck.amFailAddr); in mapRegs_ARMInstr()
2517 if (i->ARMin.Mov.src->tag == ARMri84_R) { in isMove_ARMInstr()
2518 *src = i->ARMin.Mov.src->ARMri84.R.reg; in isMove_ARMInstr()
2519 *dst = i->ARMin.Mov.dst; in isMove_ARMInstr()
2524 if (i->ARMin.VUnaryD.op == ARMvfpu_COPY) { in isMove_ARMInstr()
2525 *src = i->ARMin.VUnaryD.src; in isMove_ARMInstr()
2526 *dst = i->ARMin.VUnaryD.dst; in isMove_ARMInstr()
2531 if (i->ARMin.VUnaryS.op == ARMvfpu_COPY) { in isMove_ARMInstr()
2532 *src = i->ARMin.VUnaryS.src; in isMove_ARMInstr()
2533 *dst = i->ARMin.VUnaryS.dst; in isMove_ARMInstr()
2538 if (i->ARMin.NUnary.op == ARMneon_COPY) { in isMove_ARMInstr()
2539 *src = i->ARMin.NUnary.src; in isMove_ARMInstr()
2540 *dst = i->ARMin.NUnary.dst; in isMove_ARMInstr()
2972 UInt rD = iregEnc(i->ARMin.Alu.dst); in emit_ARMInstr()
2973 UInt rN = iregEnc(i->ARMin.Alu.argL); in emit_ARMInstr()
2974 ARMRI84* argR = i->ARMin.Alu.argR; in emit_ARMInstr()
2975 switch (i->ARMin.Alu.op) { in emit_ARMInstr()
2991 if (i->ARMin.Alu.op == ARMalu_ADDS in emit_ARMInstr()
2992 || i->ARMin.Alu.op == ARMalu_SUBS) { in emit_ARMInstr()
3000 UInt rD = iregEnc(i->ARMin.Shift.dst); in emit_ARMInstr()
3001 UInt rM = iregEnc(i->ARMin.Shift.argL); in emit_ARMInstr()
3002 ARMRI5* argR = i->ARMin.Shift.argR; in emit_ARMInstr()
3003 switch (i->ARMin.Shift.op) { in emit_ARMInstr()
3017 UInt rDst = iregEnc(i->ARMin.Unary.dst); in emit_ARMInstr()
3018 UInt rSrc = iregEnc(i->ARMin.Unary.src); in emit_ARMInstr()
3019 switch (i->ARMin.Unary.op) { in emit_ARMInstr()
3043 UInt instr = skeletal_RI84(i->ARMin.CmpOrTst.argR); in emit_ARMInstr()
3044 UInt subopc = i->ARMin.CmpOrTst.isCmp ? X1010 : X1000; in emit_ARMInstr()
3048 iregEnc(i->ARMin.CmpOrTst.argL), SBZ ); in emit_ARMInstr()
3053 UInt instr = skeletal_RI84(i->ARMin.Mov.src); in emit_ARMInstr()
3058 iregEnc(i->ARMin.Mov.dst)); in emit_ARMInstr()
3063 p = imm32_to_ireg( (UInt*)p, iregEnc(i->ARMin.Imm32.dst), in emit_ARMInstr()
3064 i->ARMin.Imm32.imm32 ); in emit_ARMInstr()
3075 bL = i->ARMin.LdSt32.isLoad ? 1 : 0; in emit_ARMInstr()
3076 am = i->ARMin.LdSt32.amode; in emit_ARMInstr()
3077 rD = i->ARMin.LdSt32.rD; in emit_ARMInstr()
3078 cc = i->ARMin.LdSt32.cc; in emit_ARMInstr()
3081 bL = i->ARMin.LdSt8U.isLoad ? 1 : 0; in emit_ARMInstr()
3082 am = i->ARMin.LdSt8U.amode; in emit_ARMInstr()
3083 rD = i->ARMin.LdSt8U.rD; in emit_ARMInstr()
3084 cc = i->ARMin.LdSt8U.cc; in emit_ARMInstr()
3110 HReg rD = i->ARMin.LdSt16.rD; in emit_ARMInstr()
3111 UInt bS = i->ARMin.LdSt16.signedLoad ? 1 : 0; in emit_ARMInstr()
3112 UInt bL = i->ARMin.LdSt16.isLoad ? 1 : 0; in emit_ARMInstr()
3113 ARMAMode2* am = i->ARMin.LdSt16.amode; in emit_ARMInstr()
3114 ARMCondCode cc = i->ARMin.LdSt16.cc; in emit_ARMInstr()
3159 HReg rD = i->ARMin.Ld8S.rD; in emit_ARMInstr()
3160 ARMAMode2* am = i->ARMin.Ld8S.amode; in emit_ARMInstr()
3161 ARMCondCode cc = i->ARMin.Ld8S.cc; in emit_ARMInstr()
3203 if (i->ARMin.XDirect.cond != ARMcc_AL) { in emit_ARMInstr()
3204 vassert(i->ARMin.XDirect.cond != ARMcc_NV); in emit_ARMInstr()
3213 p = imm32_to_ireg(p, /*r*/12, i->ARMin.XDirect.dstGA); in emit_ARMInstr()
3215 /*r*/12, i->ARMin.XDirect.amR15T); in emit_ARMInstr()
3226 = i->ARMin.XDirect.toFastEP ? disp_cp_chain_me_to_fastEP in emit_ARMInstr()
3234 if (i->ARMin.XDirect.cond != ARMcc_AL) { in emit_ARMInstr()
3238 UInt notCond = 1 ^ (UInt)i->ARMin.XDirect.cond; in emit_ARMInstr()
3261 if (i->ARMin.XIndir.cond != ARMcc_AL) { in emit_ARMInstr()
3262 vassert(i->ARMin.XIndir.cond != ARMcc_NV); in emit_ARMInstr()
3270 iregEnc(i->ARMin.XIndir.dstGA), in emit_ARMInstr()
3271 i->ARMin.XIndir.amR15T); in emit_ARMInstr()
3280 if (i->ARMin.XIndir.cond != ARMcc_AL) { in emit_ARMInstr()
3284 UInt notCond = 1 ^ (UInt)i->ARMin.XIndir.cond; in emit_ARMInstr()
3299 if (i->ARMin.XAssisted.cond != ARMcc_AL) { in emit_ARMInstr()
3300 vassert(i->ARMin.XAssisted.cond != ARMcc_NV); in emit_ARMInstr()
3308 iregEnc(i->ARMin.XAssisted.dstGA), in emit_ARMInstr()
3309 i->ARMin.XAssisted.amR15T); in emit_ARMInstr()
3313 switch (i->ARMin.XAssisted.jk) { in emit_ARMInstr()
3331 ppIRJumpKind(i->ARMin.XAssisted.jk); in emit_ARMInstr()
3344 if (i->ARMin.XAssisted.cond != ARMcc_AL) { in emit_ARMInstr()
3348 UInt notCond = 1 ^ (UInt)i->ARMin.XAssisted.cond; in emit_ARMInstr()
3357 UInt instr = skeletal_RI84(i->ARMin.CMov.src); in emit_ARMInstr()
3360 instr |= XXXXX___(i->ARMin.CMov.cond, (1 & (subopc >> 3)), in emit_ARMInstr()
3362 iregEnc(i->ARMin.CMov.dst)); in emit_ARMInstr()
3372 switch (i->ARMin.Call.nArgRegs) { in emit_ARMInstr()
3383 if (i->ARMin.Call.cond == ARMcc_AL/*call always happens*/ in emit_ARMInstr()
3384 || i->ARMin.Call.rloc.pri == RLPri_None/*no fixup action*/) { in emit_ARMInstr()
3387 scratchNo, (UInt)i->ARMin.Call.target ); in emit_ARMInstr()
3389 instr = XXX___XX(i->ARMin.Call.cond, X0001, X0010, /*___*/ in emit_ARMInstr()
3416 scratchNo, (UInt)i->ARMin.Call.target ); in emit_ARMInstr()
3434 = XX______(1 ^ i->ARMin.Call.cond, X1010) | (delta & 0xFFFFFF); in emit_ARMInstr()
3437 switch (i->ARMin.Call.rloc.pri) { in emit_ARMInstr()
3465 switch (i->ARMin.Mul.op) { in emit_ARMInstr()
3479 switch (i->ARMin.LdrEX.szB) { in emit_ARMInstr()
3494 switch (i->ARMin.StrEX.szB) { in emit_ARMInstr()
3504 UInt dD = dregEnc(i->ARMin.VLdStD.dD); in emit_ARMInstr()
3505 UInt rN = iregEnc(i->ARMin.VLdStD.amode->reg); in emit_ARMInstr()
3506 Int simm11 = i->ARMin.VLdStD.amode->simm11; in emit_ARMInstr()
3509 UInt bL = i->ARMin.VLdStD.isLoad ? 1 : 0; in emit_ARMInstr()
3520 UInt fD = fregEnc(i->ARMin.VLdStS.fD); in emit_ARMInstr()
3521 UInt rN = iregEnc(i->ARMin.VLdStS.amode->reg); in emit_ARMInstr()
3522 Int simm11 = i->ARMin.VLdStS.amode->simm11; in emit_ARMInstr()
3525 UInt bL = i->ARMin.VLdStS.isLoad ? 1 : 0; in emit_ARMInstr()
3537 UInt dN = dregEnc(i->ARMin.VAluD.argL); in emit_ARMInstr()
3538 UInt dD = dregEnc(i->ARMin.VAluD.dst); in emit_ARMInstr()
3539 UInt dM = dregEnc(i->ARMin.VAluD.argR); in emit_ARMInstr()
3541 switch (i->ARMin.VAluD.op) { in emit_ARMInstr()
3559 UInt dN = fregEnc(i->ARMin.VAluS.argL); in emit_ARMInstr()
3560 UInt dD = fregEnc(i->ARMin.VAluS.dst); in emit_ARMInstr()
3561 UInt dM = fregEnc(i->ARMin.VAluS.argR); in emit_ARMInstr()
3566 switch (i->ARMin.VAluS.op) { in emit_ARMInstr()
3585 UInt dD = dregEnc(i->ARMin.VUnaryD.dst); in emit_ARMInstr()
3586 UInt dM = dregEnc(i->ARMin.VUnaryD.src); in emit_ARMInstr()
3588 switch (i->ARMin.VUnaryD.op) { in emit_ARMInstr()
3608 UInt fD = fregEnc(i->ARMin.VUnaryS.dst); in emit_ARMInstr()
3609 UInt fM = fregEnc(i->ARMin.VUnaryS.src); in emit_ARMInstr()
3611 switch (i->ARMin.VUnaryS.op) { in emit_ARMInstr()
3639 UInt dD = dregEnc(i->ARMin.VCmpD.argL); in emit_ARMInstr()
3640 UInt dM = dregEnc(i->ARMin.VCmpD.argR); in emit_ARMInstr()
3647 UInt cc = (UInt)i->ARMin.VCMovD.cond; in emit_ARMInstr()
3648 UInt dD = dregEnc(i->ARMin.VCMovD.dst); in emit_ARMInstr()
3649 UInt dM = dregEnc(i->ARMin.VCMovD.src); in emit_ARMInstr()
3656 UInt cc = (UInt)i->ARMin.VCMovS.cond; in emit_ARMInstr()
3657 UInt fD = fregEnc(i->ARMin.VCMovS.dst); in emit_ARMInstr()
3658 UInt fM = fregEnc(i->ARMin.VCMovS.src); in emit_ARMInstr()
3667 if (i->ARMin.VCvtSD.sToD) { in emit_ARMInstr()
3668 UInt dD = dregEnc(i->ARMin.VCvtSD.dst); in emit_ARMInstr()
3669 UInt fM = fregEnc(i->ARMin.VCvtSD.src); in emit_ARMInstr()
3676 UInt fD = fregEnc(i->ARMin.VCvtSD.dst); in emit_ARMInstr()
3677 UInt dM = dregEnc(i->ARMin.VCvtSD.src); in emit_ARMInstr()
3686 UInt dD = dregEnc(i->ARMin.VXferD.dD); in emit_ARMInstr()
3687 UInt rHi = iregEnc(i->ARMin.VXferD.rHi); in emit_ARMInstr()
3688 UInt rLo = iregEnc(i->ARMin.VXferD.rLo); in emit_ARMInstr()
3695 = XXXXXXXX(0xE, 0xC, i->ARMin.VXferD.toD ? 4 : 5, in emit_ARMInstr()
3702 UInt fD = fregEnc(i->ARMin.VXferS.fD); in emit_ARMInstr()
3703 UInt rLo = iregEnc(i->ARMin.VXferS.rLo); in emit_ARMInstr()
3710 = XXXXXXXX(0xE, 0xE, i->ARMin.VXferS.toS ? 0 : 1, in emit_ARMInstr()
3717 Bool iToD = i->ARMin.VCvtID.iToD; in emit_ARMInstr()
3718 Bool syned = i->ARMin.VCvtID.syned; in emit_ARMInstr()
3721 UInt regF = fregEnc(i->ARMin.VCvtID.src); in emit_ARMInstr()
3722 UInt regD = dregEnc(i->ARMin.VCvtID.dst); in emit_ARMInstr()
3731 UInt regF = fregEnc(i->ARMin.VCvtID.src); in emit_ARMInstr()
3732 UInt regD = dregEnc(i->ARMin.VCvtID.dst); in emit_ARMInstr()
3741 UInt regD = dregEnc(i->ARMin.VCvtID.src); in emit_ARMInstr()
3742 UInt regF = fregEnc(i->ARMin.VCvtID.dst); in emit_ARMInstr()
3751 UInt regD = dregEnc(i->ARMin.VCvtID.src); in emit_ARMInstr()
3752 UInt regF = fregEnc(i->ARMin.VCvtID.dst); in emit_ARMInstr()
3763 Bool toFPSCR = i->ARMin.FPSCR.toFPSCR; in emit_ARMInstr()
3764 UInt iReg = iregEnc(i->ARMin.FPSCR.iReg); in emit_ARMInstr()
3790 UInt regD = qregEnc(i->ARMin.NLdStQ.dQ) << 1; in emit_ARMInstr()
3793 UInt bL = i->ARMin.NLdStQ.isLoad ? 1 : 0; in emit_ARMInstr()
3795 vassert(hregClass(i->ARMin.NLdStQ.dQ) == HRcVec128); in emit_ARMInstr()
3797 if (i->ARMin.NLdStQ.amode->tag == ARMamN_RR) { in emit_ARMInstr()
3798 regN = iregEnc(i->ARMin.NLdStQ.amode->ARMamN.RR.rN); in emit_ARMInstr()
3799 regM = iregEnc(i->ARMin.NLdStQ.amode->ARMamN.RR.rM); in emit_ARMInstr()
3801 regN = iregEnc(i->ARMin.NLdStQ.amode->ARMamN.R.rN); in emit_ARMInstr()
3810 UInt regD = dregEnc(i->ARMin.NLdStD.dD); in emit_ARMInstr()
3813 UInt bL = i->ARMin.NLdStD.isLoad ? 1 : 0; in emit_ARMInstr()
3815 vassert(hregClass(i->ARMin.NLdStD.dD) == HRcFlt64); in emit_ARMInstr()
3817 if (i->ARMin.NLdStD.amode->tag == ARMamN_RR) { in emit_ARMInstr()
3818 regN = iregEnc(i->ARMin.NLdStD.amode->ARMamN.RR.rN); in emit_ARMInstr()
3819 regM = iregEnc(i->ARMin.NLdStD.amode->ARMamN.RR.rM); in emit_ARMInstr()
3821 regN = iregEnc(i->ARMin.NLdStD.amode->ARMamN.R.rN); in emit_ARMInstr()
3830 UInt Q = i->ARMin.NUnaryS.Q ? 1 : 0; in emit_ARMInstr()
3833 UInt size = i->ARMin.NUnaryS.size; in emit_ARMInstr()
3836 switch (i->ARMin.NUnaryS.op) { in emit_ARMInstr()
3838 if (i->ARMin.NUnaryS.size >= 16) in emit_ARMInstr()
3840 if (i->ARMin.NUnaryS.dst->tag != ARMNRS_Reg) in emit_ARMInstr()
3842 if (i->ARMin.NUnaryS.src->tag != ARMNRS_Scalar) in emit_ARMInstr()
3844 regD = (hregClass(i->ARMin.NUnaryS.dst->reg) == HRcVec128) in emit_ARMInstr()
3845 ? (qregEnc(i->ARMin.NUnaryS.dst->reg) << 1) in emit_ARMInstr()
3846 : dregEnc(i->ARMin.NUnaryS.dst->reg); in emit_ARMInstr()
3847 regM = (hregClass(i->ARMin.NUnaryS.src->reg) == HRcVec128) in emit_ARMInstr()
3848 ? (qregEnc(i->ARMin.NUnaryS.src->reg) << 1) in emit_ARMInstr()
3849 : dregEnc(i->ARMin.NUnaryS.src->reg); in emit_ARMInstr()
3855 (i->ARMin.NUnaryS.size & 0xf), regD, in emit_ARMInstr()
3860 regD = Q ? (qregEnc(i->ARMin.NUnaryS.dst->reg) << 1) : in emit_ARMInstr()
3861 dregEnc(i->ARMin.NUnaryS.dst->reg); in emit_ARMInstr()
3862 regM = iregEnc(i->ARMin.NUnaryS.src->reg); in emit_ARMInstr()
3867 if (i->ARMin.NUnaryS.dst->tag != ARMNRS_Scalar) in emit_ARMInstr()
3871 if (i->ARMin.NUnaryS.dst->index > 7) in emit_ARMInstr()
3873 opc = X1000 | i->ARMin.NUnaryS.dst->index; in emit_ARMInstr()
3876 if (i->ARMin.NUnaryS.dst->index > 3) in emit_ARMInstr()
3878 opc = X0001 | (i->ARMin.NUnaryS.dst->index << 1); in emit_ARMInstr()
3881 if (i->ARMin.NUnaryS.dst->index > 1) in emit_ARMInstr()
3883 opc = X0000 | (i->ARMin.NUnaryS.dst->index << 2); in emit_ARMInstr()
3896 regM = Q ? (qregEnc(i->ARMin.NUnaryS.src->reg) << 1) : in emit_ARMInstr()
3897 dregEnc(i->ARMin.NUnaryS.src->reg); in emit_ARMInstr()
3898 regD = iregEnc(i->ARMin.NUnaryS.dst->reg); in emit_ARMInstr()
3903 if (i->ARMin.NUnaryS.src->tag != ARMNRS_Scalar) in emit_ARMInstr()
3907 if (Q && i->ARMin.NUnaryS.src->index > 7) { in emit_ARMInstr()
3909 i->ARMin.NUnaryS.src->index -= 8; in emit_ARMInstr()
3911 if (i->ARMin.NUnaryS.src->index > 7) in emit_ARMInstr()
3913 opc = X1000 | i->ARMin.NUnaryS.src->index; in emit_ARMInstr()
3916 if (Q && i->ARMin.NUnaryS.src->index > 3) { in emit_ARMInstr()
3918 i->ARMin.NUnaryS.src->index -= 4; in emit_ARMInstr()
3920 if (i->ARMin.NUnaryS.src->index > 3) in emit_ARMInstr()
3922 opc = X0001 | (i->ARMin.NUnaryS.src->index << 1); in emit_ARMInstr()
3937 regM = Q ? (qregEnc(i->ARMin.NUnaryS.src->reg) << 1) : in emit_ARMInstr()
3938 dregEnc(i->ARMin.NUnaryS.src->reg); in emit_ARMInstr()
3939 regD = iregEnc(i->ARMin.NUnaryS.dst->reg); in emit_ARMInstr()
3944 if (i->ARMin.NUnaryS.src->tag != ARMNRS_Scalar) in emit_ARMInstr()
3948 if (Q && i->ARMin.NUnaryS.src->index > 7) { in emit_ARMInstr()
3950 i->ARMin.NUnaryS.src->index -= 8; in emit_ARMInstr()
3952 if (i->ARMin.NUnaryS.src->index > 7) in emit_ARMInstr()
3954 opc = X1000 | i->ARMin.NUnaryS.src->index; in emit_ARMInstr()
3957 if (Q && i->ARMin.NUnaryS.src->index > 3) { in emit_ARMInstr()
3959 i->ARMin.NUnaryS.src->index -= 4; in emit_ARMInstr()
3961 if (i->ARMin.NUnaryS.src->index > 3) in emit_ARMInstr()
3963 opc = X0001 | (i->ARMin.NUnaryS.src->index << 1); in emit_ARMInstr()
3966 if (Q && i->ARMin.NUnaryS.src->index > 1) { in emit_ARMInstr()
3968 i->ARMin.NUnaryS.src->index -= 2; in emit_ARMInstr()
3970 if (i->ARMin.NUnaryS.src->index > 1) in emit_ARMInstr()
3972 opc = X0000 | (i->ARMin.NUnaryS.src->index << 2); in emit_ARMInstr()
3989 UInt Q = i->ARMin.NUnary.Q ? 1 : 0; in emit_ARMInstr()
3990 UInt regD = (hregClass(i->ARMin.NUnary.dst) == HRcVec128) in emit_ARMInstr()
3991 ? (qregEnc(i->ARMin.NUnary.dst) << 1) in emit_ARMInstr()
3992 : dregEnc(i->ARMin.NUnary.dst); in emit_ARMInstr()
3995 UInt sz1 = i->ARMin.NUnary.size >> 1; in emit_ARMInstr()
3996 UInt sz2 = i->ARMin.NUnary.size & 1; in emit_ARMInstr()
3997 UInt sz = i->ARMin.NUnary.size; in emit_ARMInstr()
4000 if (i->ARMin.NUnary.op != ARMneon_DUP) { in emit_ARMInstr()
4001 regM = (hregClass(i->ARMin.NUnary.src) == HRcVec128) in emit_ARMInstr()
4002 ? (qregEnc(i->ARMin.NUnary.src) << 1) in emit_ARMInstr()
4003 : dregEnc(i->ARMin.NUnary.src); in emit_ARMInstr()
4006 regM = iregEnc(i->ARMin.NUnary.src); in emit_ARMInstr()
4011 switch (i->ARMin.NUnary.op) { in emit_ARMInstr()
4073 sz1 = i->ARMin.NUnary.size == 0 ? 1 : 0; in emit_ARMInstr()
4074 sz2 = i->ARMin.NUnary.size == 1 ? 1 : 0; in emit_ARMInstr()
4205 UInt Q = i->ARMin.NDual.Q ? 1 : 0; in emit_ARMInstr()
4206 UInt regD = (hregClass(i->ARMin.NDual.arg1) == HRcVec128) in emit_ARMInstr()
4207 ? (qregEnc(i->ARMin.NDual.arg1) << 1) in emit_ARMInstr()
4208 : dregEnc(i->ARMin.NDual.arg1); in emit_ARMInstr()
4209 UInt regM = (hregClass(i->ARMin.NDual.arg2) == HRcVec128) in emit_ARMInstr()
4210 ? (qregEnc(i->ARMin.NDual.arg2) << 1) in emit_ARMInstr()
4211 : dregEnc(i->ARMin.NDual.arg2); in emit_ARMInstr()
4214 UInt sz1 = i->ARMin.NDual.size >> 1; in emit_ARMInstr()
4215 UInt sz2 = i->ARMin.NDual.size & 1; in emit_ARMInstr()
4219 switch (i->ARMin.NDual.op) { in emit_ARMInstr()
4239 UInt Q = i->ARMin.NBinary.Q ? 1 : 0; in emit_ARMInstr()
4240 UInt regD = (hregClass(i->ARMin.NBinary.dst) == HRcVec128) in emit_ARMInstr()
4241 ? (qregEnc(i->ARMin.NBinary.dst) << 1) in emit_ARMInstr()
4242 : dregEnc(i->ARMin.NBinary.dst); in emit_ARMInstr()
4243 UInt regN = (hregClass(i->ARMin.NBinary.argL) == HRcVec128) in emit_ARMInstr()
4244 ? (qregEnc(i->ARMin.NBinary.argL) << 1) in emit_ARMInstr()
4245 : dregEnc(i->ARMin.NBinary.argL); in emit_ARMInstr()
4246 UInt regM = (hregClass(i->ARMin.NBinary.argR) == HRcVec128) in emit_ARMInstr()
4247 ? (qregEnc(i->ARMin.NBinary.argR) << 1) in emit_ARMInstr()
4248 : dregEnc(i->ARMin.NBinary.argR); in emit_ARMInstr()
4249 UInt sz1 = i->ARMin.NBinary.size >> 1; in emit_ARMInstr()
4250 UInt sz2 = i->ARMin.NBinary.size & 1; in emit_ARMInstr()
4258 switch (i->ARMin.NBinary.op) { in emit_ARMInstr()
4340 if (i->ARMin.NBinary.size >= 16) in emit_ARMInstr()
4343 i->ARMin.NBinary.size & 0xf, BITS4(N,Q,M,0), in emit_ARMInstr()
4465 UInt Q = i->ARMin.NShift.Q ? 1 : 0; in emit_ARMInstr()
4466 UInt regD = (hregClass(i->ARMin.NShift.dst) == HRcVec128) in emit_ARMInstr()
4467 ? (qregEnc(i->ARMin.NShift.dst) << 1) in emit_ARMInstr()
4468 : dregEnc(i->ARMin.NShift.dst); in emit_ARMInstr()
4469 UInt regM = (hregClass(i->ARMin.NShift.argL) == HRcVec128) in emit_ARMInstr()
4470 ? (qregEnc(i->ARMin.NShift.argL) << 1) in emit_ARMInstr()
4471 : dregEnc(i->ARMin.NShift.argL); in emit_ARMInstr()
4472 UInt regN = (hregClass(i->ARMin.NShift.argR) == HRcVec128) in emit_ARMInstr()
4473 ? (qregEnc(i->ARMin.NShift.argR) << 1) in emit_ARMInstr()
4474 : dregEnc(i->ARMin.NShift.argR); in emit_ARMInstr()
4475 UInt sz1 = i->ARMin.NShift.size >> 1; in emit_ARMInstr()
4476 UInt sz2 = i->ARMin.NShift.size & 1; in emit_ARMInstr()
4484 switch (i->ARMin.NShift.op) { in emit_ARMInstr()
4508 HReg regDreg = i->ARMin.NShl64.dst; in emit_ARMInstr()
4509 HReg regMreg = i->ARMin.NShl64.src; in emit_ARMInstr()
4510 UInt amt = i->ARMin.NShl64.amt; in emit_ARMInstr()
4528 UInt Q = (hregClass(i->ARMin.NeonImm.dst) == HRcVec128) ? 1 : 0; in emit_ARMInstr()
4529 UInt regD = Q ? (qregEnc(i->ARMin.NeonImm.dst) << 1) : in emit_ARMInstr()
4530 dregEnc(i->ARMin.NeonImm.dst); in emit_ARMInstr()
4532 UInt imm = i->ARMin.NeonImm.imm->imm8; in emit_ARMInstr()
4533 UInt tp = i->ARMin.NeonImm.imm->type; in emit_ARMInstr()
4576 UInt cc = (UInt)i->ARMin.NCMovQ.cond; in emit_ARMInstr()
4577 UInt qM = qregEnc(i->ARMin.NCMovQ.src) << 1; in emit_ARMInstr()
4578 UInt qD = qregEnc(i->ARMin.NCMovQ.dst) << 1; in emit_ARMInstr()
4594 UInt regD = iregEnc(i->ARMin.Add32.rD); in emit_ARMInstr()
4595 UInt regN = iregEnc(i->ARMin.Add32.rN); in emit_ARMInstr()
4596 UInt imm32 = i->ARMin.Add32.imm32; in emit_ARMInstr()
4618 i->ARMin.EvCheck.amCounter); in emit_ARMInstr()
4621 i->ARMin.EvCheck.amCounter); in emit_ARMInstr()
4624 i->ARMin.EvCheck.amFailAddr); in emit_ARMInstr()