trunk/src/emu/cpu/rsp/rspcp2d.c
| r241966 | r241967 | |
| 258 | 258 | // |
| 259 | 259 | // Load 1 byte to vector byte index |
| 260 | 260 | |
| 261 | | inline void rsp_cop2_drc::lbv() |
| 261 | void rsp_cop2_drc::lbv() |
| 262 | 262 | { |
| 263 | 263 | UINT32 op = m_op; |
| 264 | 264 | |
| r241966 | r241967 | |
| 291 | 291 | // |
| 292 | 292 | // Loads 2 bytes starting from vector byte index |
| 293 | 293 | |
| 294 | | inline void rsp_cop2_drc::lsv() |
| 294 | void rsp_cop2_drc::lsv() |
| 295 | 295 | { |
| 296 | 296 | UINT32 op = m_op; |
| 297 | 297 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 327 | 327 | // |
| 328 | 328 | // Loads 4 bytes starting from vector byte index |
| 329 | 329 | |
| 330 | | inline void rsp_cop2_drc::llv() |
| 330 | void rsp_cop2_drc::llv() |
| 331 | 331 | { |
| 332 | 332 | UINT32 op = m_op; |
| 333 | 333 | UINT32 ea = 0; |
| r241966 | r241967 | |
| 366 | 366 | // |
| 367 | 367 | // Loads 8 bytes starting from vector byte index |
| 368 | 368 | |
| 369 | | inline void rsp_cop2_drc::ldv() |
| 369 | void rsp_cop2_drc::ldv() |
| 370 | 370 | { |
| 371 | 371 | UINT32 op = m_op; |
| 372 | 372 | UINT32 ea = 0; |
| r241966 | r241967 | |
| 405 | 405 | // |
| 406 | 406 | // Loads up to 16 bytes starting from vector byte index |
| 407 | 407 | |
| 408 | | inline void rsp_cop2_drc::lqv() |
| 408 | void rsp_cop2_drc::lqv() |
| 409 | 409 | { |
| 410 | 410 | UINT32 op = m_op; |
| 411 | 411 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 443 | 443 | // |
| 444 | 444 | // Stores up to 16 bytes starting from right side until 16-byte boundary |
| 445 | 445 | |
| 446 | | inline void rsp_cop2_drc::lrv() |
| 446 | void rsp_cop2_drc::lrv() |
| 447 | 447 | { |
| 448 | 448 | UINT32 op = m_op; |
| 449 | 449 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 482 | 482 | // |
| 483 | 483 | // Loads a byte as the upper 8 bits of each element |
| 484 | 484 | |
| 485 | | inline void rsp_cop2_drc::lpv() |
| 485 | void rsp_cop2_drc::lpv() |
| 486 | 486 | { |
| 487 | 487 | UINT32 op = m_op; |
| 488 | 488 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 517 | 517 | // |
| 518 | 518 | // Loads a byte as the bits 14-7 of each element |
| 519 | 519 | |
| 520 | | inline void rsp_cop2_drc::luv() |
| 520 | void rsp_cop2_drc::luv() |
| 521 | 521 | { |
| 522 | 522 | UINT32 op = m_op; |
| 523 | 523 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 552 | 552 | // |
| 553 | 553 | // Loads a byte as the bits 14-7 of each element, with 2-byte stride |
| 554 | 554 | |
| 555 | | inline void rsp_cop2_drc::lhv() |
| 555 | void rsp_cop2_drc::lhv() |
| 556 | 556 | { |
| 557 | 557 | UINT32 op = m_op; |
| 558 | 558 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 586 | 586 | // |
| 587 | 587 | // Loads a byte as the bits 14-7 of upper or lower quad, with 4-byte stride |
| 588 | 588 | |
| 589 | | inline void rsp_cop2_drc::lfv() |
| 589 | void rsp_cop2_drc::lfv() |
| 590 | 590 | { |
| 591 | 591 | UINT32 op = m_op; |
| 592 | 592 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 627 | 627 | // Loads the full 128-bit vector starting from vector byte index and wrapping to index 0 |
| 628 | 628 | // after byte index 15 |
| 629 | 629 | |
| 630 | | inline void rsp_cop2_drc::lwv() |
| 630 | void rsp_cop2_drc::lwv() |
| 631 | 631 | { |
| 632 | 632 | UINT32 op = m_op; |
| 633 | 633 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 664 | 664 | // |
| 665 | 665 | // Loads one element to maximum of 8 vectors, while incrementing element index |
| 666 | 666 | |
| 667 | | inline void rsp_cop2_drc::ltv() |
| 667 | void rsp_cop2_drc::ltv() |
| 668 | 668 | { |
| 669 | 669 | UINT32 op = m_op; |
| 670 | 670 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 791 | 791 | // |
| 792 | 792 | // Stores 1 byte from vector byte index |
| 793 | 793 | |
| 794 | | inline void rsp_cop2_drc::sbv() |
| 794 | void rsp_cop2_drc::sbv() |
| 795 | 795 | { |
| 796 | 796 | UINT32 op = m_op; |
| 797 | 797 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 822 | 822 | // |
| 823 | 823 | // Stores 2 bytes starting from vector byte index |
| 824 | 824 | |
| 825 | | inline void rsp_cop2_drc::ssv() |
| 825 | void rsp_cop2_drc::ssv() |
| 826 | 826 | { |
| 827 | 827 | UINT32 op = m_op; |
| 828 | 828 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 859 | 859 | // |
| 860 | 860 | // Stores 4 bytes starting from vector byte index |
| 861 | 861 | |
| 862 | | inline void rsp_cop2_drc::slv() |
| 862 | void rsp_cop2_drc::slv() |
| 863 | 863 | { |
| 864 | 864 | UINT32 op = m_op; |
| 865 | 865 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 896 | 896 | // |
| 897 | 897 | // Stores 8 bytes starting from vector byte index |
| 898 | 898 | |
| 899 | | inline void rsp_cop2_drc::sdv() |
| 899 | void rsp_cop2_drc::sdv() |
| 900 | 900 | { |
| 901 | 901 | UINT32 op = m_op; |
| 902 | 902 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 932 | 932 | // |
| 933 | 933 | // Stores up to 16 bytes starting from vector byte index until 16-byte boundary |
| 934 | 934 | |
| 935 | | inline void rsp_cop2_drc::sqv() |
| 935 | void rsp_cop2_drc::sqv() |
| 936 | 936 | { |
| 937 | 937 | UINT32 op = m_op; |
| 938 | 938 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 968 | 968 | // |
| 969 | 969 | // Stores up to 16 bytes starting from right side until 16-byte boundary |
| 970 | 970 | |
| 971 | | inline void rsp_cop2_drc::srv() |
| 971 | void rsp_cop2_drc::srv() |
| 972 | 972 | { |
| 973 | 973 | UINT32 op = m_op; |
| 974 | 974 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 1008 | 1008 | // |
| 1009 | 1009 | // Stores upper 8 bits of each element |
| 1010 | 1010 | |
| 1011 | | inline void rsp_cop2_drc::spv() |
| 1011 | void rsp_cop2_drc::spv() |
| 1012 | 1012 | { |
| 1013 | 1013 | UINT32 op = m_op; |
| 1014 | 1014 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 1051 | 1051 | // |
| 1052 | 1052 | // Stores bits 14-7 of each element |
| 1053 | 1053 | |
| 1054 | | inline void rsp_cop2_drc::suv() |
| 1054 | void rsp_cop2_drc::suv() |
| 1055 | 1055 | { |
| 1056 | 1056 | UINT32 op = m_op; |
| 1057 | 1057 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 1094 | 1094 | // |
| 1095 | 1095 | // Stores bits 14-7 of each element, with 2-byte stride |
| 1096 | 1096 | |
| 1097 | | inline void rsp_cop2_drc::shv() |
| 1097 | void rsp_cop2_drc::shv() |
| 1098 | 1098 | { |
| 1099 | 1099 | UINT32 op = m_op; |
| 1100 | 1100 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 1132 | 1132 | // |
| 1133 | 1133 | // Stores bits 14-7 of upper or lower quad, with 4-byte stride |
| 1134 | 1134 | |
| 1135 | | inline void rsp_cop2_drc::sfv() |
| 1135 | void rsp_cop2_drc::sfv() |
| 1136 | 1136 | { |
| 1137 | 1137 | UINT32 op = m_op; |
| 1138 | 1138 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 1173 | 1173 | // Stores the full 128-bit vector starting from vector byte index and wrapping to index 0 |
| 1174 | 1174 | // after byte index 15 |
| 1175 | 1175 | |
| 1176 | | inline void rsp_cop2_drc::swv() |
| 1176 | void rsp_cop2_drc::swv() |
| 1177 | 1177 | { |
| 1178 | 1178 | UINT32 op = m_op; |
| 1179 | 1179 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 1212 | 1212 | // |
| 1213 | 1213 | // Stores one element from maximum of 8 vectors, while incrementing element index |
| 1214 | 1214 | |
| 1215 | | inline void rsp_cop2_drc::stv() |
| 1215 | void rsp_cop2_drc::stv() |
| 1216 | 1216 | { |
| 1217 | 1217 | UINT32 op = m_op; |
| 1218 | 1218 | int dest = (op >> 16) & 0x1f; |
| r241966 | r241967 | |
| 1344 | 1344 | // |
| 1345 | 1345 | // Multiplies signed integer by signed integer * 2 |
| 1346 | 1346 | |
| 1347 | | inline void rsp_cop2_drc::vmulf() |
| 1347 | void rsp_cop2_drc::vmulf() |
| 1348 | 1348 | { |
| 1349 | 1349 | int op = m_op; |
| 1350 | 1350 | |
| r241966 | r241967 | |
| 1391 | 1391 | // ------------------------------------------------------ |
| 1392 | 1392 | // |
| 1393 | 1393 | |
| 1394 | | inline void rsp_cop2_drc::vmulu() |
| 1394 | void rsp_cop2_drc::vmulu() |
| 1395 | 1395 | { |
| 1396 | 1396 | int op = m_op; |
| 1397 | 1397 | |
| r241966 | r241967 | |
| 1443 | 1443 | // The result is added into accumulator |
| 1444 | 1444 | // The middle slice of accumulator is stored into destination element |
| 1445 | 1445 | |
| 1446 | | inline void rsp_cop2_drc::vmudl() |
| 1446 | void rsp_cop2_drc::vmudl() |
| 1447 | 1447 | { |
| 1448 | 1448 | int op = m_op; |
| 1449 | 1449 | |
| r241966 | r241967 | |
| 1483 | 1483 | // The result is stored into accumulator |
| 1484 | 1484 | // The middle slice of accumulator is stored into destination element |
| 1485 | 1485 | |
| 1486 | | inline void rsp_cop2_drc::vmudm() |
| 1486 | void rsp_cop2_drc::vmudm() |
| 1487 | 1487 | { |
| 1488 | 1488 | int op = m_op; |
| 1489 | 1489 | |
| r241966 | r241967 | |
| 1523 | 1523 | // The result is stored into accumulator |
| 1524 | 1524 | // The low slice of accumulator is stored into destination element |
| 1525 | 1525 | |
| 1526 | | inline void rsp_cop2_drc::vmudn() |
| 1526 | void rsp_cop2_drc::vmudn() |
| 1527 | 1527 | { |
| 1528 | 1528 | int op = m_op; |
| 1529 | 1529 | |
| r241966 | r241967 | |
| 1563 | 1563 | // The result is stored into highest 32 bits of accumulator, the low slice is zero |
| 1564 | 1564 | // The highest 32 bits of accumulator is saturated into destination element |
| 1565 | 1565 | |
| 1566 | | inline void rsp_cop2_drc::vmudh() |
| 1566 | void rsp_cop2_drc::vmudh() |
| 1567 | 1567 | { |
| 1568 | 1568 | int op = m_op; |
| 1569 | 1569 | |
| r241966 | r241967 | |
| 1602 | 1602 | // ------------------------------------------------------ |
| 1603 | 1603 | // |
| 1604 | 1604 | |
| 1605 | | inline void rsp_cop2_drc::vmacf() |
| 1605 | void rsp_cop2_drc::vmacf() |
| 1606 | 1606 | { |
| 1607 | 1607 | int op = m_op; |
| 1608 | 1608 | |
| r241966 | r241967 | |
| 1646 | 1646 | // ------------------------------------------------------ |
| 1647 | 1647 | // |
| 1648 | 1648 | |
| 1649 | | inline void rsp_cop2_drc::vmacu() |
| 1649 | void rsp_cop2_drc::vmacu() |
| 1650 | 1650 | { |
| 1651 | 1651 | int op = m_op; |
| 1652 | 1652 | |
| r241966 | r241967 | |
| 1709 | 1709 | // Adds the higher 16 bits of the 32-bit result to accumulator |
| 1710 | 1710 | // The low slice of accumulator is stored into destination element |
| 1711 | 1711 | |
| 1712 | | inline void rsp_cop2_drc::vmadl() |
| 1712 | void rsp_cop2_drc::vmadl() |
| 1713 | 1713 | { |
| 1714 | 1714 | int op = m_op; |
| 1715 | 1715 | |
| r241966 | r241967 | |
| 1743 | 1743 | // VMADM |
| 1744 | 1744 | // |
| 1745 | 1745 | |
| 1746 | | inline void rsp_cop2_drc::vmadm() |
| 1746 | void rsp_cop2_drc::vmadm() |
| 1747 | 1747 | { |
| 1748 | 1748 | int op = m_op; |
| 1749 | 1749 | |
| r241966 | r241967 | |
| 1781 | 1781 | // VMADN |
| 1782 | 1782 | // |
| 1783 | 1783 | |
| 1784 | | inline void rsp_cop2_drc::vmadn() |
| 1784 | void rsp_cop2_drc::vmadn() |
| 1785 | 1785 | { |
| 1786 | 1786 | int op = m_op; |
| 1787 | 1787 | |
| r241966 | r241967 | |
| 1826 | 1826 | // The result is added into highest 32 bits of accumulator, the low slice is zero |
| 1827 | 1827 | // The highest 32 bits of accumulator is saturated into destination element |
| 1828 | 1828 | |
| 1829 | | inline void rsp_cop2_drc::vmadh() |
| 1829 | void rsp_cop2_drc::vmadh() |
| 1830 | 1830 | { |
| 1831 | 1831 | int op = m_op; |
| 1832 | 1832 | |
| r241966 | r241967 | |
| 1864 | 1864 | // |
| 1865 | 1865 | // Adds two vector registers and carry flag, the result is saturated to 32767 |
| 1866 | 1866 | |
| 1867 | | inline void rsp_cop2_drc::vadd() |
| 1867 | void rsp_cop2_drc::vadd() |
| 1868 | 1868 | { |
| 1869 | 1869 | int op = m_op; |
| 1870 | 1870 | |
| r241966 | r241967 | |
| 1904 | 1904 | // Subtracts two vector registers and carry flag, the result is saturated to -32768 |
| 1905 | 1905 | // TODO: check VS2REG == VDREG |
| 1906 | 1906 | |
| 1907 | | inline void rsp_cop2_drc::vsub() |
| 1907 | void rsp_cop2_drc::vsub() |
| 1908 | 1908 | { |
| 1909 | 1909 | int op = m_op; |
| 1910 | 1910 | |
| r241966 | r241967 | |
| 1944 | 1944 | // |
| 1945 | 1945 | // Changes the sign of source register 2 if source register 1 is negative and stores the result to destination register |
| 1946 | 1946 | |
| 1947 | | inline void rsp_cop2_drc::vabs() |
| 1947 | void rsp_cop2_drc::vabs() |
| 1948 | 1948 | { |
| 1949 | 1949 | int op = m_op; |
| 1950 | 1950 | |
| r241966 | r241967 | |
| 1995 | 1995 | // Adds two vector registers, the carry out is stored into carry register |
| 1996 | 1996 | // TODO: check VS2REG = VDREG |
| 1997 | 1997 | |
| 1998 | | inline void rsp_cop2_drc::vaddc() |
| 1998 | void rsp_cop2_drc::vaddc() |
| 1999 | 1999 | { |
| 2000 | 2000 | int op = m_op; |
| 2001 | 2001 | |
| r241966 | r241967 | |
| 2038 | 2038 | // Subtracts two vector registers, the carry out is stored into carry register |
| 2039 | 2039 | // TODO: check VS2REG = VDREG |
| 2040 | 2040 | |
| 2041 | | inline void rsp_cop2_drc::vsubc() |
| 2041 | void rsp_cop2_drc::vsubc() |
| 2042 | 2042 | { |
| 2043 | 2043 | int op = m_op; |
| 2044 | 2044 | |
| r241966 | r241967 | |
| 2084 | 2084 | // |
| 2085 | 2085 | // Adds two vector registers bytewise with rounding |
| 2086 | 2086 | |
| 2087 | | inline void rsp_cop2_drc::vaddb() |
| 2087 | void rsp_cop2_drc::vaddb() |
| 2088 | 2088 | { |
| 2089 | 2089 | const int op = m_op; |
| 2090 | 2090 | const int round = (EL == 0) ? 0 : (1 << (EL - 1)); |
| r241966 | r241967 | |
| 2138 | 2138 | // |
| 2139 | 2139 | // Stores high, middle or low slice of accumulator to destination vector |
| 2140 | 2140 | |
| 2141 | | inline void rsp_cop2_drc::vsaw() |
| 2141 | void rsp_cop2_drc::vsaw() |
| 2142 | 2142 | { |
| 2143 | 2143 | int op = m_op; |
| 2144 | 2144 | |
| r241966 | r241967 | |
| 2188 | 2188 | // Sets compare flags if elements in VS1 are less than VS2 |
| 2189 | 2189 | // Moves the element in VS2 to destination vector |
| 2190 | 2190 | |
| 2191 | | inline void rsp_cop2_drc::vlt() |
| 2191 | void rsp_cop2_drc::vlt() |
| 2192 | 2192 | { |
| 2193 | 2193 | int op = m_op; |
| 2194 | 2194 | |
| r241966 | r241967 | |
| 2246 | 2246 | // Sets compare flags if elements in VS1 are equal with VS2 |
| 2247 | 2247 | // Moves the element in VS2 to destination vector |
| 2248 | 2248 | |
| 2249 | | inline void rsp_cop2_drc::veq() |
| 2249 | void rsp_cop2_drc::veq() |
| 2250 | 2250 | { |
| 2251 | 2251 | int op = m_op; |
| 2252 | 2252 | |
| r241966 | r241967 | |
| 2293 | 2293 | // Sets compare flags if elements in VS1 are not equal with VS2 |
| 2294 | 2294 | // Moves the element in VS2 to destination vector |
| 2295 | 2295 | |
| 2296 | | inline void rsp_cop2_drc::vne() |
| 2296 | void rsp_cop2_drc::vne() |
| 2297 | 2297 | { |
| 2298 | 2298 | int op = m_op; |
| 2299 | 2299 | |
| r241966 | r241967 | |
| 2340 | 2340 | // Sets compare flags if elements in VS1 are greater or equal with VS2 |
| 2341 | 2341 | // Moves the element in VS2 to destination vector |
| 2342 | 2342 | |
| 2343 | | inline void rsp_cop2_drc::vge() |
| 2343 | void rsp_cop2_drc::vge() |
| 2344 | 2344 | { |
| 2345 | 2345 | int op = m_op; |
| 2346 | 2346 | |
| r241966 | r241967 | |
| 2385 | 2385 | // |
| 2386 | 2386 | // Vector clip low |
| 2387 | 2387 | |
| 2388 | | inline void rsp_cop2_drc::vcl() |
| 2388 | void rsp_cop2_drc::vcl() |
| 2389 | 2389 | { |
| 2390 | 2390 | int op = m_op; |
| 2391 | 2391 | |
| r241966 | r241967 | |
| 2488 | 2488 | // |
| 2489 | 2489 | // Vector clip high |
| 2490 | 2490 | |
| 2491 | | inline void rsp_cop2_drc::vch() |
| 2491 | void rsp_cop2_drc::vch() |
| 2492 | 2492 | { |
| 2493 | 2493 | int op = m_op; |
| 2494 | 2494 | |
| r241966 | r241967 | |
| 2575 | 2575 | // |
| 2576 | 2576 | // Vector clip reverse |
| 2577 | 2577 | |
| 2578 | | inline void rsp_cop2_drc::vcr() |
| 2578 | void rsp_cop2_drc::vcr() |
| 2579 | 2579 | { |
| 2580 | 2580 | int op = m_op; |
| 2581 | 2581 | |
| r241966 | r241967 | |
| 2644 | 2644 | // |
| 2645 | 2645 | // Merges two vectors according to compare flags |
| 2646 | 2646 | |
| 2647 | | inline void rsp_cop2_drc::vmrg() |
| 2647 | void rsp_cop2_drc::vmrg() |
| 2648 | 2648 | { |
| 2649 | 2649 | int op = m_op; |
| 2650 | 2650 | |
| r241966 | r241967 | |
| 2682 | 2682 | // |
| 2683 | 2683 | // Bitwise AND of two vector registers |
| 2684 | 2684 | |
| 2685 | | inline void rsp_cop2_drc::vand() |
| 2685 | void rsp_cop2_drc::vand() |
| 2686 | 2686 | { |
| 2687 | 2687 | int op = m_op; |
| 2688 | 2688 | |
| r241966 | r241967 | |
| 2712 | 2712 | // |
| 2713 | 2713 | // Bitwise NOT AND of two vector registers |
| 2714 | 2714 | |
| 2715 | | inline void rsp_cop2_drc::vnand() |
| 2715 | void rsp_cop2_drc::vnand() |
| 2716 | 2716 | { |
| 2717 | 2717 | int op = m_op; |
| 2718 | 2718 | |
| r241966 | r241967 | |
| 2742 | 2742 | // |
| 2743 | 2743 | // Bitwise OR of two vector registers |
| 2744 | 2744 | |
| 2745 | | inline void rsp_cop2_drc::vor() |
| 2745 | void rsp_cop2_drc::vor() |
| 2746 | 2746 | { |
| 2747 | 2747 | int op = m_op; |
| 2748 | 2748 | |
| r241966 | r241967 | |
| 2772 | 2772 | // |
| 2773 | 2773 | // Bitwise NOT OR of two vector registers |
| 2774 | 2774 | |
| 2775 | | inline void rsp_cop2_drc::vnor() |
| 2775 | void rsp_cop2_drc::vnor() |
| 2776 | 2776 | { |
| 2777 | 2777 | int op = m_op; |
| 2778 | 2778 | |
| r241966 | r241967 | |
| 2802 | 2802 | // |
| 2803 | 2803 | // Bitwise XOR of two vector registers |
| 2804 | 2804 | |
| 2805 | | inline void rsp_cop2_drc::vxor() |
| 2805 | void rsp_cop2_drc::vxor() |
| 2806 | 2806 | { |
| 2807 | 2807 | int op = m_op; |
| 2808 | 2808 | |
| r241966 | r241967 | |
| 2832 | 2832 | // |
| 2833 | 2833 | // Bitwise NOT XOR of two vector registers |
| 2834 | 2834 | |
| 2835 | | inline void rsp_cop2_drc::vnxor() |
| 2835 | void rsp_cop2_drc::vnxor() |
| 2836 | 2836 | { |
| 2837 | 2837 | int op = m_op; |
| 2838 | 2838 | |
| r241966 | r241967 | |
| 2862 | 2862 | // |
| 2863 | 2863 | // Calculates reciprocal |
| 2864 | 2864 | |
| 2865 | | inline void rsp_cop2_drc::vrcp() |
| 2865 | void rsp_cop2_drc::vrcp() |
| 2866 | 2866 | { |
| 2867 | 2867 | int op = m_op; |
| 2868 | 2868 | |
| r241966 | r241967 | |
| 2927 | 2927 | // |
| 2928 | 2928 | // Calculates reciprocal low part |
| 2929 | 2929 | |
| 2930 | | inline void rsp_cop2_drc::vrcpl() |
| 2930 | void rsp_cop2_drc::vrcpl() |
| 2931 | 2931 | { |
| 2932 | 2932 | int op = m_op; |
| 2933 | 2933 | |
| r241966 | r241967 | |
| 3012 | 3012 | // |
| 3013 | 3013 | // Calculates reciprocal high part |
| 3014 | 3014 | |
| 3015 | | inline void rsp_cop2_drc::vrcph() |
| 3015 | void rsp_cop2_drc::vrcph() |
| 3016 | 3016 | { |
| 3017 | 3017 | int op = m_op; |
| 3018 | 3018 | |
| r241966 | r241967 | |
| 3042 | 3042 | // |
| 3043 | 3043 | // Moves element from vector to destination vector |
| 3044 | 3044 | |
| 3045 | | inline void rsp_cop2_drc::vmov() |
| 3045 | void rsp_cop2_drc::vmov() |
| 3046 | 3046 | { |
| 3047 | 3047 | int op = m_op; |
| 3048 | 3048 | |
| r241966 | r241967 | |
| 3068 | 3068 | // |
| 3069 | 3069 | // Calculates reciprocal square-root |
| 3070 | 3070 | |
| 3071 | | inline void rsp_cop2_drc::vrsq() |
| 3071 | void rsp_cop2_drc::vrsq() |
| 3072 | 3072 | { |
| 3073 | 3073 | int op = m_op; |
| 3074 | 3074 | |
| r241966 | r241967 | |
| 3199 | 3199 | // |
| 3200 | 3200 | // Calculates reciprocal square-root low part |
| 3201 | 3201 | |
| 3202 | | inline void rsp_cop2_drc::vrsql() |
| 3202 | void rsp_cop2_drc::vrsql() |
| 3203 | 3203 | { |
| 3204 | 3204 | int op = m_op; |
| 3205 | 3205 | |
| r241966 | r241967 | |
| 3285 | 3285 | // |
| 3286 | 3286 | // Calculates reciprocal square-root high part |
| 3287 | 3287 | |
| 3288 | | inline void rsp_cop2_drc::vrsqh() |
| 3288 | void rsp_cop2_drc::vrsqh() |
| 3289 | 3289 | { |
| 3290 | 3290 | int op = m_op; |
| 3291 | 3291 | |
| r241966 | r241967 | |
| 3553 | 3553 | Vector Flag Reading/Writing |
| 3554 | 3554 | ***************************************************************************/ |
| 3555 | 3555 | |
| 3556 | | inline void rsp_cop2_drc::mfc2() |
| 3556 | void rsp_cop2_drc::mfc2() |
| 3557 | 3557 | { |
| 3558 | 3558 | UINT32 op = m_op; |
| 3559 | 3559 | int el = (op >> 7) & 0xf; |
| r241966 | r241967 | |
| 3568 | 3568 | ((rsp_cop2 *)param)->mfc2(); |
| 3569 | 3569 | } |
| 3570 | 3570 | |
| 3571 | | inline void rsp_cop2_drc::cfc2() |
| 3571 | void rsp_cop2_drc::cfc2() |
| 3572 | 3572 | { |
| 3573 | 3573 | UINT32 op = m_op; |
| 3574 | 3574 | if (RTREG) |
| r241966 | r241967 | |
| 3633 | 3633 | } |
| 3634 | 3634 | |
| 3635 | 3635 | |
| 3636 | | inline void rsp_cop2_drc::mtc2() |
| 3636 | void rsp_cop2_drc::mtc2() |
| 3637 | 3637 | { |
| 3638 | 3638 | UINT32 op = m_op; |
| 3639 | 3639 | int el = (op >> 7) & 0xf; |
| r241966 | r241967 | |
| 3647 | 3647 | } |
| 3648 | 3648 | |
| 3649 | 3649 | |
| 3650 | | inline void rsp_cop2_drc::ctc2() |
| 3650 | void rsp_cop2_drc::ctc2() |
| 3651 | 3651 | { |
| 3652 | 3652 | UINT32 op = m_op; |
| 3653 | 3653 | switch(RDREG) |