OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <assert.h> | 5 #include <assert.h> |
6 #include <stdarg.h> | 6 #include <stdarg.h> |
7 #include <stdio.h> | 7 #include <stdio.h> |
8 | 8 |
9 #include "src/v8.h" | 9 #include "src/v8.h" |
10 | 10 |
(...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 case 0x59: | 819 case 0x59: |
820 AppendToBuffer("vmulsd %s,%s,", NameOfXMMRegister(regop), | 820 AppendToBuffer("vmulsd %s,%s,", NameOfXMMRegister(regop), |
821 NameOfXMMRegister(vvvv)); | 821 NameOfXMMRegister(vvvv)); |
822 current += PrintRightXMMOperand(current); | 822 current += PrintRightXMMOperand(current); |
823 break; | 823 break; |
824 case 0x5c: | 824 case 0x5c: |
825 AppendToBuffer("vsubsd %s,%s,", NameOfXMMRegister(regop), | 825 AppendToBuffer("vsubsd %s,%s,", NameOfXMMRegister(regop), |
826 NameOfXMMRegister(vvvv)); | 826 NameOfXMMRegister(vvvv)); |
827 current += PrintRightXMMOperand(current); | 827 current += PrintRightXMMOperand(current); |
828 break; | 828 break; |
| 829 case 0x5d: |
| 830 AppendToBuffer("vminsd %s,%s,", NameOfXMMRegister(regop), |
| 831 NameOfXMMRegister(vvvv)); |
| 832 current += PrintRightXMMOperand(current); |
| 833 break; |
829 case 0x5e: | 834 case 0x5e: |
830 AppendToBuffer("vdivsd %s,%s,", NameOfXMMRegister(regop), | 835 AppendToBuffer("vdivsd %s,%s,", NameOfXMMRegister(regop), |
831 NameOfXMMRegister(vvvv)); | 836 NameOfXMMRegister(vvvv)); |
832 current += PrintRightXMMOperand(current); | 837 current += PrintRightXMMOperand(current); |
833 break; | 838 break; |
| 839 case 0x5f: |
| 840 AppendToBuffer("vmaxsd %s,%s,", NameOfXMMRegister(regop), |
| 841 NameOfXMMRegister(vvvv)); |
| 842 current += PrintRightXMMOperand(current); |
| 843 break; |
834 default: | 844 default: |
835 UnimplementedInstruction(); | 845 UnimplementedInstruction(); |
836 } | 846 } |
837 } else { | 847 } else { |
838 UnimplementedInstruction(); | 848 UnimplementedInstruction(); |
839 } | 849 } |
840 | 850 |
841 return static_cast<int>(current - data); | 851 return static_cast<int>(current - data); |
842 } | 852 } |
843 | 853 |
(...skipping 907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1751 } else { | 1761 } else { |
1752 const char* mnem = "?"; | 1762 const char* mnem = "?"; |
1753 switch (b2) { | 1763 switch (b2) { |
1754 case 0x2A: mnem = "cvtsi2sd"; break; | 1764 case 0x2A: mnem = "cvtsi2sd"; break; |
1755 case 0x2C: mnem = "cvttsd2si"; break; | 1765 case 0x2C: mnem = "cvttsd2si"; break; |
1756 case 0x2D: mnem = "cvtsd2si"; break; | 1766 case 0x2D: mnem = "cvtsd2si"; break; |
1757 case 0x51: mnem = "sqrtsd"; break; | 1767 case 0x51: mnem = "sqrtsd"; break; |
1758 case 0x58: mnem = "addsd"; break; | 1768 case 0x58: mnem = "addsd"; break; |
1759 case 0x59: mnem = "mulsd"; break; | 1769 case 0x59: mnem = "mulsd"; break; |
1760 case 0x5C: mnem = "subsd"; break; | 1770 case 0x5C: mnem = "subsd"; break; |
| 1771 case 0x5D: |
| 1772 mnem = "minsd"; |
| 1773 break; |
1761 case 0x5E: mnem = "divsd"; break; | 1774 case 0x5E: mnem = "divsd"; break; |
| 1775 case 0x5F: |
| 1776 mnem = "maxsd"; |
| 1777 break; |
1762 } | 1778 } |
1763 data += 3; | 1779 data += 3; |
1764 int mod, regop, rm; | 1780 int mod, regop, rm; |
1765 get_modrm(*data, &mod, ®op, &rm); | 1781 get_modrm(*data, &mod, ®op, &rm); |
1766 if (b2 == 0x2A) { | 1782 if (b2 == 0x2A) { |
1767 AppendToBuffer("%s %s,", mnem, NameOfXMMRegister(regop)); | 1783 AppendToBuffer("%s %s,", mnem, NameOfXMMRegister(regop)); |
1768 data += PrintRightOperand(data); | 1784 data += PrintRightOperand(data); |
1769 } else if (b2 == 0x2C || b2 == 0x2D) { | 1785 } else if (b2 == 0x2C || b2 == 0x2D) { |
1770 AppendToBuffer("%s %s,", mnem, NameOfCPURegister(regop)); | 1786 AppendToBuffer("%s %s,", mnem, NameOfCPURegister(regop)); |
1771 data += PrintRightXMMOperand(data); | 1787 data += PrintRightXMMOperand(data); |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2004 fprintf(f, " "); | 2020 fprintf(f, " "); |
2005 } | 2021 } |
2006 fprintf(f, " %s\n", buffer.start()); | 2022 fprintf(f, " %s\n", buffer.start()); |
2007 } | 2023 } |
2008 } | 2024 } |
2009 | 2025 |
2010 | 2026 |
2011 } // namespace disasm | 2027 } // namespace disasm |
2012 | 2028 |
2013 #endif // V8_TARGET_ARCH_IA32 | 2029 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |