x87.isa (6619:de112a8ac3d8) x87.isa (7087:fb8d5786ff30)
1// Copyright (c) 2007 The Hewlett-Packard Development Company
2// All rights reserved.
3//
1// Copyright (c) 2007 The Hewlett-Packard Development Company
2// All rights reserved.
3//
4// Redistribution and use of this software in source and binary forms,
5// with or without modification, are permitted provided that the
6// following conditions are met:
4// The license below extends only to copyright in the software and shall
5// not be construed as granting a license to any other intellectual
6// property including but not limited to intellectual property relating
7// to a hardware implementation of the functionality of the software
8// licensed hereunder. You may use the software subject to the license
9// terms below provided that you ensure that this notice is replicated
10// unmodified and in its entirety in all distributions of the software,
11// modified or unmodified, in source code or in binary form.
7//
12//
8// The software must be used only for Non-Commercial Use which means any
9// use which is NOT directed to receiving any direct monetary
10// compensation for, or commercial advantage from such use. Illustrative
11// examples of non-commercial use are academic research, personal study,
12// teaching, education and corporate research & development.
13// Illustrative examples of commercial use are distributing products for
14// commercial advantage and providing services using the software for
15// commercial advantage.
16//
17// If you wish to use this software or functionality therein that may be
18// covered by patents for commercial use, please contact:
19// Director of Intellectual Property Licensing
20// Office of Strategy and Technology
21// Hewlett-Packard Company
22// 1501 Page Mill Road
23// Palo Alto, California 94304
24//
25// Redistributions of source code must retain the above copyright notice,
26// this list of conditions and the following disclaimer. Redistributions
27// in binary form must reproduce the above copyright notice, this list of
28// conditions and the following disclaimer in the documentation and/or
29// other materials provided with the distribution. Neither the name of
30// the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its
13// Redistribution and use in source and binary forms, with or without
14// modification, are permitted provided that the following conditions are
15// met: redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer;
17// redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution;
20// neither the name of the copyright holders nor the names of its
31// contributors may be used to endorse or promote products derived from
21// contributors may be used to endorse or promote products derived from
32// this software without specific prior written permission. No right of
33// sublicense is granted herewith. Derivatives of the software and
34// output created using the software may be prepared, but only for
35// Non-Commercial Uses. Derivatives of the software may be shared with
36// others provided: (i) the others agree to abide by the list of
37// conditions herein which includes the Non-Commercial Use restrictions;
38// and (ii) such Derivatives of the software include the above copyright
39// notice to acknowledge the contribution from this software where
40// applicable, this list of conditions and the disclaimer below.
22// this software without specific prior written permission.
41//
42// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
43// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
44// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
45// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
46// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
47// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
48// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
49// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
50// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
51// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
52// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
53//
54// Authors: Gabe Black
55
56format WarnUnimpl {
57 0x1B: decode OPCODE_OP_BOTTOM3 {
58 //0x0: esc0();
59 0x0: decode MODRM_REG {
60 0x0: fadd();
61 0x1: fmul();
62 0x2: fcom();
63 0x3: fcomp();
64 0x4: fsub();
65 0x5: fsubr();
66 0x6: fdiv();
67 0x7: fdivr();
68 }
69 //0x1: esc1();
70 0x1: decode MODRM_REG {
71 0x0: fld();
72 0x1: decode MODRM_MOD {
73 0x3: fxch();
74 default: Inst::UD2();
75 }
76 0x2: decode MODRM_MOD {
77 0x3: decode MODRM_RM {
78 0x0: fnop();
79 default: Inst::UD2();
80 }
81 default: fst();
82 }
83 0x3: decode MODRM_MOD {
84 0x3: Inst::UD2();
85 default: fstp();
86 }
87 0x4: decode MODRM_MOD {
88 0x3: decode MODRM_RM {
89 0x0: fchs();
90 0x1: fabs();
91 0x4: ftst();
92 0x5: fxam();
93 default: Inst::UD2();
94 }
95 default: fldenv();
96 }
97 0x5: decode MODRM_MOD {
98 0x3: decode MODRM_RM {
99 0x0: fld1();
100 0x1: fldl2t();
101 0x2: fldl2e();
102 0x3: fldpi();
103 0x4: fldlg2();
104 0x5: fldln2();
105 0x6: fldz();
106 }
107 default: fldcw_Mw();
108 }
109 0x6: decode MODRM_MOD {
110 0x3: decode MODRM_RM {
111 0x0: f2xm1();
112 0x1: fyl2x();
113 0x2: fptan();
114 0x3: fpatan();
115 0x4: fxtract();
116 0x5: fprem1();
117 0x6: fdecstp();
118 0x7: fincstp();
119 }
120 default: fnstenv();
121 }
122 0x7: decode MODRM_MOD {
123 0x3: decode MODRM_RM {
124 0x0: fprem();
125 0x1: fyl2xp1();
126 0x2: fsqrt();
127 0x3: fsincos();
128 0x4: frndint();
129 0x5: fscale();
130 0x6: fsin();
131 0x7: fcos();
132 }
133 default: fnstcw_Mw();
134 }
135 }
136 //0x2: esc2();
137 0x2: decode MODRM_REG {
138 0x0: decode MODRM_MOD {
139 0x3: fcmovb();
140 default: fiadd();
141 }
142 0x1: decode MODRM_MOD {
143 0x3: fcmove();
144 default: fimul();
145 }
146 0x2: decode MODRM_MOD {
147 0x3: fcmovbe();
148 default: ficom();
149 }
150 0x3: decode MODRM_MOD {
151 0x3: fcmovu();
152 default: ficomp();
153 }
154 0x4: decode MODRM_MOD {
155 0x3: Inst::UD2();
156 default: fisub();
157 }
158 0x5: decode MODRM_MOD {
159 0x3: decode MODRM_RM {
160 0x1: fucompp();
161 default: Inst::UD2();
162 }
163 default: fisubr();
164 }
165 0x6: decode MODRM_MOD {
166 0x3: Inst::UD2();
167 default: fidiv();
168 }
169 0x7: decode MODRM_MOD {
170 0x3: Inst::UD2();
171 default: fidivr();
172 }
173 }
174 //0x3: esc3();
175 0x3: decode MODRM_REG {
176 0x0: decode MODRM_MOD {
177 0x3: fcmovnb();
178 default: fild();
179 }
180 0x1: decode MODRM_MOD {
181 0x3: fcmovne();
182 default: fisttp();
183 }
184 0x2: decode MODRM_MOD {
185 0x3: fcmovnbe();
186 default: fist();
187 }
188 0x3: decode MODRM_MOD {
189 0x3: fcmovnu();
190 default: fistp();
191 }
192 0x4: decode MODRM_MOD {
193 0x3: decode MODRM_RM {
194 0x2: fnclex();
195 0x3: fninit();
196 default: Inst::UD2();
197 }
198 default: Inst::UD2();
199 }
200 0x5: decode MODRM_MOD {
201 0x3: fucomi();
202 default: fld();
203 }
204 0x6: decode MODRM_MOD {
205 0x3: fcomi();
206 default: Inst::UD2();
207 }
208 0x7: decode MODRM_MOD {
209 0x3: Inst::UD2();
210 default: fstp();
211 }
212 }
213 //0x4: esc4();
214 0x4: decode MODRM_REG {
215 0x0: fadd();
216 0x1: fmul();
217 0x2: decode MODRM_MOD {
218 0x3: Inst::UD2();
219 default: fcom();
220 }
221 0x3: decode MODRM_MOD {
222 0x3: Inst::UD2();
223 default: fcomp();
224 }
225 0x4: decode MODRM_MOD {
226 0x3: fsubr();
227 default: fsub();
228 }
229 0x5: decode MODRM_MOD {
230 0x3: fsub();
231 default: fsubr();
232 }
233 0x6: decode MODRM_MOD {
234 0x3: fdivr();
235 default: fdiv();
236 }
237 0x7: decode MODRM_MOD {
238 0x3: fdiv();
239 default: fdivr();
240 }
241 }
242 //0x5: esc5();
243 0x5: decode MODRM_REG {
244 0x0: decode MODRM_MOD {
245 0x3: ffree();
246 default: Inst::FLD(Mq);
247 }
248 0x1: decode MODRM_MOD {
249 0x3: Inst::UD2();
250 default: fisttp();
251 }
252 0x2: Inst::FST(Eq);
253 0x3: Inst::FSTP(Eq);
254 0x4: decode MODRM_MOD {
255 0x3: fucom();
256 default: frstor();
257 }
258 0x5: decode MODRM_MOD {
259 0x3: fucomp();
260 default: Inst::UD2();
261 }
262 0x6: decode MODRM_MOD {
263 0x3: Inst::UD2();
264 default: fnsave();
265 }
266 0x7: decode MODRM_MOD {
267 0x3: Inst::UD2();
268 default: fnstsw();
269 }
270 }
271 //0x6: esc6();
272 0x6: decode MODRM_REG {
273 0x0: decode MODRM_MOD {
274 0x3: faddp();
275 default: fiadd();
276 }
277 0x1: decode MODRM_MOD {
278 0x3: fmulp();
279 default: fimul();
280 }
281 0x2: decode MODRM_MOD {
282 0x3: Inst::UD2();
283 default: ficom();
284 }
285 0x3: decode MODRM_MOD {
286 0x3: decode MODRM_RM {
287 0x1: fcompp();
288 default: Inst::UD2();
289 }
290 default: ficomp();
291 }
292 0x4: decode MODRM_MOD {
293 0x3: fsubrp();
294 default: fisub();
295 }
296 0x5: decode MODRM_MOD {
297 0x3: fsubp();
298 default: fisubr();
299 }
300 0x6: decode MODRM_MOD {
301 0x3: fdivrp();
302 default: fidiv();
303 }
304 0x7: decode MODRM_MOD {
305 0x3: fdivp();
306 default: fidivr();
307 }
308 }
309 //0x7: esc7();
310 0x7: decode MODRM_REG {
311 0x0: decode MODRM_MOD {
312 0x3: Inst::UD2();
313 default: fild();
314 }
315 0x1: decode MODRM_MOD {
316 0x3: Inst::UD2();
317 default: fisttp();
318 }
319 0x2: decode MODRM_MOD {
320 0x3: Inst::UD2();
321 default: fist();
322 }
323 0x3: decode MODRM_MOD {
324 0x3: Inst::UD2();
325 default: fistp();
326 }
327 0x4: decode MODRM_MOD {
328 0x3: decode MODRM_RM {
329 0x0: fnstsw();
330 default: Inst::UD2();
331 }
332 default: fbld();
333 }
334 0x5: decode MODRM_MOD {
335 0x3: fucomip();
336 default: fild();
337 }
338 0x6: decode MODRM_MOD {
339 0x3: fcomip();
340 default: fbstp();
341 }
342 0x7: decode MODRM_MOD {
343 0x3: Inst::UD2();
344 default: fistp();
345 }
346 }
347 }
348}
23//
24// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35//
36// Authors: Gabe Black
37
38format WarnUnimpl {
39 0x1B: decode OPCODE_OP_BOTTOM3 {
40 //0x0: esc0();
41 0x0: decode MODRM_REG {
42 0x0: fadd();
43 0x1: fmul();
44 0x2: fcom();
45 0x3: fcomp();
46 0x4: fsub();
47 0x5: fsubr();
48 0x6: fdiv();
49 0x7: fdivr();
50 }
51 //0x1: esc1();
52 0x1: decode MODRM_REG {
53 0x0: fld();
54 0x1: decode MODRM_MOD {
55 0x3: fxch();
56 default: Inst::UD2();
57 }
58 0x2: decode MODRM_MOD {
59 0x3: decode MODRM_RM {
60 0x0: fnop();
61 default: Inst::UD2();
62 }
63 default: fst();
64 }
65 0x3: decode MODRM_MOD {
66 0x3: Inst::UD2();
67 default: fstp();
68 }
69 0x4: decode MODRM_MOD {
70 0x3: decode MODRM_RM {
71 0x0: fchs();
72 0x1: fabs();
73 0x4: ftst();
74 0x5: fxam();
75 default: Inst::UD2();
76 }
77 default: fldenv();
78 }
79 0x5: decode MODRM_MOD {
80 0x3: decode MODRM_RM {
81 0x0: fld1();
82 0x1: fldl2t();
83 0x2: fldl2e();
84 0x3: fldpi();
85 0x4: fldlg2();
86 0x5: fldln2();
87 0x6: fldz();
88 }
89 default: fldcw_Mw();
90 }
91 0x6: decode MODRM_MOD {
92 0x3: decode MODRM_RM {
93 0x0: f2xm1();
94 0x1: fyl2x();
95 0x2: fptan();
96 0x3: fpatan();
97 0x4: fxtract();
98 0x5: fprem1();
99 0x6: fdecstp();
100 0x7: fincstp();
101 }
102 default: fnstenv();
103 }
104 0x7: decode MODRM_MOD {
105 0x3: decode MODRM_RM {
106 0x0: fprem();
107 0x1: fyl2xp1();
108 0x2: fsqrt();
109 0x3: fsincos();
110 0x4: frndint();
111 0x5: fscale();
112 0x6: fsin();
113 0x7: fcos();
114 }
115 default: fnstcw_Mw();
116 }
117 }
118 //0x2: esc2();
119 0x2: decode MODRM_REG {
120 0x0: decode MODRM_MOD {
121 0x3: fcmovb();
122 default: fiadd();
123 }
124 0x1: decode MODRM_MOD {
125 0x3: fcmove();
126 default: fimul();
127 }
128 0x2: decode MODRM_MOD {
129 0x3: fcmovbe();
130 default: ficom();
131 }
132 0x3: decode MODRM_MOD {
133 0x3: fcmovu();
134 default: ficomp();
135 }
136 0x4: decode MODRM_MOD {
137 0x3: Inst::UD2();
138 default: fisub();
139 }
140 0x5: decode MODRM_MOD {
141 0x3: decode MODRM_RM {
142 0x1: fucompp();
143 default: Inst::UD2();
144 }
145 default: fisubr();
146 }
147 0x6: decode MODRM_MOD {
148 0x3: Inst::UD2();
149 default: fidiv();
150 }
151 0x7: decode MODRM_MOD {
152 0x3: Inst::UD2();
153 default: fidivr();
154 }
155 }
156 //0x3: esc3();
157 0x3: decode MODRM_REG {
158 0x0: decode MODRM_MOD {
159 0x3: fcmovnb();
160 default: fild();
161 }
162 0x1: decode MODRM_MOD {
163 0x3: fcmovne();
164 default: fisttp();
165 }
166 0x2: decode MODRM_MOD {
167 0x3: fcmovnbe();
168 default: fist();
169 }
170 0x3: decode MODRM_MOD {
171 0x3: fcmovnu();
172 default: fistp();
173 }
174 0x4: decode MODRM_MOD {
175 0x3: decode MODRM_RM {
176 0x2: fnclex();
177 0x3: fninit();
178 default: Inst::UD2();
179 }
180 default: Inst::UD2();
181 }
182 0x5: decode MODRM_MOD {
183 0x3: fucomi();
184 default: fld();
185 }
186 0x6: decode MODRM_MOD {
187 0x3: fcomi();
188 default: Inst::UD2();
189 }
190 0x7: decode MODRM_MOD {
191 0x3: Inst::UD2();
192 default: fstp();
193 }
194 }
195 //0x4: esc4();
196 0x4: decode MODRM_REG {
197 0x0: fadd();
198 0x1: fmul();
199 0x2: decode MODRM_MOD {
200 0x3: Inst::UD2();
201 default: fcom();
202 }
203 0x3: decode MODRM_MOD {
204 0x3: Inst::UD2();
205 default: fcomp();
206 }
207 0x4: decode MODRM_MOD {
208 0x3: fsubr();
209 default: fsub();
210 }
211 0x5: decode MODRM_MOD {
212 0x3: fsub();
213 default: fsubr();
214 }
215 0x6: decode MODRM_MOD {
216 0x3: fdivr();
217 default: fdiv();
218 }
219 0x7: decode MODRM_MOD {
220 0x3: fdiv();
221 default: fdivr();
222 }
223 }
224 //0x5: esc5();
225 0x5: decode MODRM_REG {
226 0x0: decode MODRM_MOD {
227 0x3: ffree();
228 default: Inst::FLD(Mq);
229 }
230 0x1: decode MODRM_MOD {
231 0x3: Inst::UD2();
232 default: fisttp();
233 }
234 0x2: Inst::FST(Eq);
235 0x3: Inst::FSTP(Eq);
236 0x4: decode MODRM_MOD {
237 0x3: fucom();
238 default: frstor();
239 }
240 0x5: decode MODRM_MOD {
241 0x3: fucomp();
242 default: Inst::UD2();
243 }
244 0x6: decode MODRM_MOD {
245 0x3: Inst::UD2();
246 default: fnsave();
247 }
248 0x7: decode MODRM_MOD {
249 0x3: Inst::UD2();
250 default: fnstsw();
251 }
252 }
253 //0x6: esc6();
254 0x6: decode MODRM_REG {
255 0x0: decode MODRM_MOD {
256 0x3: faddp();
257 default: fiadd();
258 }
259 0x1: decode MODRM_MOD {
260 0x3: fmulp();
261 default: fimul();
262 }
263 0x2: decode MODRM_MOD {
264 0x3: Inst::UD2();
265 default: ficom();
266 }
267 0x3: decode MODRM_MOD {
268 0x3: decode MODRM_RM {
269 0x1: fcompp();
270 default: Inst::UD2();
271 }
272 default: ficomp();
273 }
274 0x4: decode MODRM_MOD {
275 0x3: fsubrp();
276 default: fisub();
277 }
278 0x5: decode MODRM_MOD {
279 0x3: fsubp();
280 default: fisubr();
281 }
282 0x6: decode MODRM_MOD {
283 0x3: fdivrp();
284 default: fidiv();
285 }
286 0x7: decode MODRM_MOD {
287 0x3: fdivp();
288 default: fidivr();
289 }
290 }
291 //0x7: esc7();
292 0x7: decode MODRM_REG {
293 0x0: decode MODRM_MOD {
294 0x3: Inst::UD2();
295 default: fild();
296 }
297 0x1: decode MODRM_MOD {
298 0x3: Inst::UD2();
299 default: fisttp();
300 }
301 0x2: decode MODRM_MOD {
302 0x3: Inst::UD2();
303 default: fist();
304 }
305 0x3: decode MODRM_MOD {
306 0x3: Inst::UD2();
307 default: fistp();
308 }
309 0x4: decode MODRM_MOD {
310 0x3: decode MODRM_RM {
311 0x0: fnstsw();
312 default: Inst::UD2();
313 }
314 default: fbld();
315 }
316 0x5: decode MODRM_MOD {
317 0x3: fucomip();
318 default: fild();
319 }
320 0x6: decode MODRM_MOD {
321 0x3: fcomip();
322 default: fbstp();
323 }
324 0x7: decode MODRM_MOD {
325 0x3: Inst::UD2();
326 default: fistp();
327 }
328 }
329 }
330}