VirtualBox

source: vbox/trunk/src/VBox/VMM/VMMAll/IEMAllInst3DNow.cpp.h

Last change on this file was 100733, checked in by vboxsync, 10 months ago

VMM/IEM,ValKit: Shortened the IEMAllInstruction* file names to IEMAllInst*. This makes it easier to see the distinguishing bits of the name in the narrow buffer list widget here (this has been driving me nuts for months). Sorry for any conflicts this causes. bugref:10369

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.4 KB
Line 
1/* $Id: IEMAllInst3DNow.cpp.h 100733 2023-07-28 22:51:16Z vboxsync $ */
2/** @file
3 * IEM - Instruction Decoding and Emulation, 3DNow!.
4 */
5
6/*
7 * Copyright (C) 2011-2023 Oracle and/or its affiliates.
8 *
9 * This file is part of VirtualBox base platform packages, as
10 * available from https://www.virtualbox.org.
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation, in version 3 of the
15 * License.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, see <https://www.gnu.org/licenses>.
24 *
25 * SPDX-License-Identifier: GPL-3.0-only
26 */
27
28
29/** @name 3DNow! instructions (0x0f 0x0f)
30 *
31 * @{
32 */
33
34/** Opcode 0x0f 0x0f 0x0c. */
35FNIEMOP_STUB(iemOp_3Dnow_pi2fw_Pq_Qq);
36
37/** Opcode 0x0f 0x0f 0x0d. */
38FNIEMOP_STUB(iemOp_3Dnow_pi2fd_Pq_Qq);
39
40/** Opcode 0x0f 0x0f 0x1c. */
41FNIEMOP_STUB(iemOp_3Dnow_pf2fw_Pq_Qq);
42
43/** Opcode 0x0f 0x0f 0x1d. */
44FNIEMOP_STUB(iemOp_3Dnow_pf2fd_Pq_Qq);
45
46/** Opcode 0x0f 0x0f 0x8a. */
47FNIEMOP_STUB(iemOp_3Dnow_pfnacc_Pq_Qq);
48
49/** Opcode 0x0f 0x0f 0x8e. */
50FNIEMOP_STUB(iemOp_3Dnow_pfpnacc_Pq_Qq);
51
52/** Opcode 0x0f 0x0f 0x90. */
53FNIEMOP_STUB(iemOp_3Dnow_pfcmpge_Pq_Qq);
54
55/** Opcode 0x0f 0x0f 0x94. */
56FNIEMOP_STUB(iemOp_3Dnow_pfmin_Pq_Qq);
57
58/** Opcode 0x0f 0x0f 0x96. */
59FNIEMOP_STUB(iemOp_3Dnow_pfrcp_Pq_Qq);
60
61/** Opcode 0x0f 0x0f 0x97. */
62FNIEMOP_STUB(iemOp_3Dnow_pfrsqrt_Pq_Qq);
63
64/** Opcode 0x0f 0x0f 0x9a. */
65FNIEMOP_STUB(iemOp_3Dnow_pfsub_Pq_Qq);
66
67/** Opcode 0x0f 0x0f 0x9e. */
68FNIEMOP_STUB(iemOp_3Dnow_pfadd_PQ_Qq);
69
70/** Opcode 0x0f 0x0f 0xa0. */
71FNIEMOP_STUB(iemOp_3Dnow_pfcmpgt_Pq_Qq);
72
73/** Opcode 0x0f 0x0f 0xa4. */
74FNIEMOP_STUB(iemOp_3Dnow_pfmax_Pq_Qq);
75
76/** Opcode 0x0f 0x0f 0xa6. */
77FNIEMOP_STUB(iemOp_3Dnow_pfrcpit1_Pq_Qq);
78
79/** Opcode 0x0f 0x0f 0xa7. */
80FNIEMOP_STUB(iemOp_3Dnow_pfrsqit1_Pq_Qq);
81
82/** Opcode 0x0f 0x0f 0xaa. */
83FNIEMOP_STUB(iemOp_3Dnow_pfsubr_Pq_Qq);
84
85/** Opcode 0x0f 0x0f 0xae. */
86FNIEMOP_STUB(iemOp_3Dnow_pfacc_PQ_Qq);
87
88/** Opcode 0x0f 0x0f 0xb0. */
89FNIEMOP_STUB(iemOp_3Dnow_pfcmpeq_Pq_Qq);
90
91/** Opcode 0x0f 0x0f 0xb4. */
92FNIEMOP_STUB(iemOp_3Dnow_pfmul_Pq_Qq);
93
94/** Opcode 0x0f 0x0f 0xb6. */
95FNIEMOP_STUB(iemOp_3Dnow_pfrcpit2_Pq_Qq);
96
97/** Opcode 0x0f 0x0f 0xb7. */
98FNIEMOP_STUB(iemOp_3Dnow_pmulhrw_Pq_Qq);
99
100/** Opcode 0x0f 0x0f 0xbb. */
101FNIEMOP_STUB(iemOp_3Dnow_pswapd_Pq_Qq);
102
103/** Opcode 0x0f 0x0f 0xbf. */
104FNIEMOP_STUB(iemOp_3Dnow_pavgusb_PQ_Qq);
105
106
107/** Opcode 0x0f 0x0f. */
108FNIEMOP_DEF_1(iemOp_3DNowDispatcher, uint8_t, b)
109{
110 /* This is pretty sparse, use switch instead of table. */
111 switch (b)
112 {
113 case 0x0c: return FNIEMOP_CALL(iemOp_3Dnow_pi2fw_Pq_Qq);
114 case 0x0d: return FNIEMOP_CALL(iemOp_3Dnow_pi2fd_Pq_Qq);
115 case 0x1c: return FNIEMOP_CALL(iemOp_3Dnow_pf2fw_Pq_Qq);
116 case 0x1d: return FNIEMOP_CALL(iemOp_3Dnow_pf2fd_Pq_Qq);
117 case 0x8a: return FNIEMOP_CALL(iemOp_3Dnow_pfnacc_Pq_Qq);
118 case 0x8e: return FNIEMOP_CALL(iemOp_3Dnow_pfpnacc_Pq_Qq);
119 case 0x90: return FNIEMOP_CALL(iemOp_3Dnow_pfcmpge_Pq_Qq);
120 case 0x94: return FNIEMOP_CALL(iemOp_3Dnow_pfmin_Pq_Qq);
121 case 0x96: return FNIEMOP_CALL(iemOp_3Dnow_pfrcp_Pq_Qq);
122 case 0x97: return FNIEMOP_CALL(iemOp_3Dnow_pfrsqrt_Pq_Qq);
123 case 0x9a: return FNIEMOP_CALL(iemOp_3Dnow_pfsub_Pq_Qq);
124 case 0x9e: return FNIEMOP_CALL(iemOp_3Dnow_pfadd_PQ_Qq);
125 case 0xa0: return FNIEMOP_CALL(iemOp_3Dnow_pfcmpgt_Pq_Qq);
126 case 0xa4: return FNIEMOP_CALL(iemOp_3Dnow_pfmax_Pq_Qq);
127 case 0xa6: return FNIEMOP_CALL(iemOp_3Dnow_pfrcpit1_Pq_Qq);
128 case 0xa7: return FNIEMOP_CALL(iemOp_3Dnow_pfrsqit1_Pq_Qq);
129 case 0xaa: return FNIEMOP_CALL(iemOp_3Dnow_pfsubr_Pq_Qq);
130 case 0xae: return FNIEMOP_CALL(iemOp_3Dnow_pfacc_PQ_Qq);
131 case 0xb0: return FNIEMOP_CALL(iemOp_3Dnow_pfcmpeq_Pq_Qq);
132 case 0xb4: return FNIEMOP_CALL(iemOp_3Dnow_pfmul_Pq_Qq);
133 case 0xb6: return FNIEMOP_CALL(iemOp_3Dnow_pfrcpit2_Pq_Qq);
134 case 0xb7: return FNIEMOP_CALL(iemOp_3Dnow_pmulhrw_Pq_Qq);
135 case 0xbb: return FNIEMOP_CALL(iemOp_3Dnow_pswapd_Pq_Qq);
136 case 0xbf: return FNIEMOP_CALL(iemOp_3Dnow_pavgusb_PQ_Qq);
137 default:
138 IEMOP_RAISE_INVALID_OPCODE_RET();
139 }
140}
141
142/** @} */
143
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use