x87.isa revision 10044
14825Sgblack@eecs.umich.edu// Copyright (c) 2007 The Hewlett-Packard Development Company
29582Snilay@cs.wisc.edu// Copyright (c) 2012-13 Mark D. Hill and David A. Wood
34825Sgblack@eecs.umich.edu// All rights reserved.
44825Sgblack@eecs.umich.edu//
57087Snate@binkert.org// The license below extends only to copyright in the software and shall
67087Snate@binkert.org// not be construed as granting a license to any other intellectual
77087Snate@binkert.org// property including but not limited to intellectual property relating
87087Snate@binkert.org// to a hardware implementation of the functionality of the software
97087Snate@binkert.org// licensed hereunder.  You may use the software subject to the license
107087Snate@binkert.org// terms below provided that you ensure that this notice is replicated
117087Snate@binkert.org// unmodified and in its entirety in all distributions of the software,
127087Snate@binkert.org// modified or unmodified, in source code or in binary form.
134825Sgblack@eecs.umich.edu//
147087Snate@binkert.org// Redistribution and use in source and binary forms, with or without
157087Snate@binkert.org// modification, are permitted provided that the following conditions are
167087Snate@binkert.org// met: redistributions of source code must retain the above copyright
177087Snate@binkert.org// notice, this list of conditions and the following disclaimer;
187087Snate@binkert.org// redistributions in binary form must reproduce the above copyright
197087Snate@binkert.org// notice, this list of conditions and the following disclaimer in the
207087Snate@binkert.org// documentation and/or other materials provided with the distribution;
217087Snate@binkert.org// neither the name of the copyright holders nor the names of its
224825Sgblack@eecs.umich.edu// contributors may be used to endorse or promote products derived from
237087Snate@binkert.org// this software without specific prior written permission.
244825Sgblack@eecs.umich.edu//
254825Sgblack@eecs.umich.edu// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
264825Sgblack@eecs.umich.edu// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
274825Sgblack@eecs.umich.edu// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
284825Sgblack@eecs.umich.edu// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
294825Sgblack@eecs.umich.edu// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
304825Sgblack@eecs.umich.edu// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
314825Sgblack@eecs.umich.edu// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
324825Sgblack@eecs.umich.edu// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
334825Sgblack@eecs.umich.edu// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
344825Sgblack@eecs.umich.edu// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
354825Sgblack@eecs.umich.edu// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
364825Sgblack@eecs.umich.edu//
374825Sgblack@eecs.umich.edu// Authors: Gabe Black
389582Snilay@cs.wisc.edu//          Nilay Vaish
394825Sgblack@eecs.umich.edu
405162Sgblack@eecs.umich.eduformat WarnUnimpl {
415162Sgblack@eecs.umich.edu    0x1B: decode OPCODE_OP_BOTTOM3 {
425162Sgblack@eecs.umich.edu        0x0: decode MODRM_REG {
4310044Snilay@cs.wisc.edu            0x0: decode MODRM_MOD {
4410044Snilay@cs.wisc.edu                0x3: Inst::FADD1(Eq);
4510044Snilay@cs.wisc.edu                // 32-bit memory operand
4610044Snilay@cs.wisc.edu                default: Inst::FADD1(Md);
4710044Snilay@cs.wisc.edu            }
485162Sgblack@eecs.umich.edu            0x1: fmul();
495162Sgblack@eecs.umich.edu            0x2: fcom();
505162Sgblack@eecs.umich.edu            0x3: fcomp();
5110044Snilay@cs.wisc.edu            0x4: decode MODRM_MOD {
5210044Snilay@cs.wisc.edu                0x3: Inst::FSUB1(Eq);
5310044Snilay@cs.wisc.edu                default: Inst::FSUB1(Md);
5410044Snilay@cs.wisc.edu            }
555162Sgblack@eecs.umich.edu            0x5: fsubr();
565162Sgblack@eecs.umich.edu            0x6: fdiv();
575162Sgblack@eecs.umich.edu            0x7: fdivr();
584825Sgblack@eecs.umich.edu        }
595162Sgblack@eecs.umich.edu        0x1: decode MODRM_REG {
609582Snilay@cs.wisc.edu            0x0: decode MODRM_MOD {
619582Snilay@cs.wisc.edu                0x3: Inst::FLD(Eq);
629582Snilay@cs.wisc.edu                // 32-bit load
639582Snilay@cs.wisc.edu                default: Inst::FLD(Md);
649582Snilay@cs.wisc.edu            }
655162Sgblack@eecs.umich.edu            0x1: decode MODRM_MOD {
6610043Snilay@cs.wisc.edu                0x3: Inst::FXCH(Eq);
674825Sgblack@eecs.umich.edu                default: Inst::UD2();
684825Sgblack@eecs.umich.edu            }
695162Sgblack@eecs.umich.edu            0x2: decode MODRM_MOD {
705162Sgblack@eecs.umich.edu                0x3: decode MODRM_RM {
715162Sgblack@eecs.umich.edu                    0x0: fnop();
725162Sgblack@eecs.umich.edu                    default: Inst::UD2();
735162Sgblack@eecs.umich.edu                }
749894Sandreas@sandberg.pp.se                default: Inst::FST(Ed);
755162Sgblack@eecs.umich.edu            }
765162Sgblack@eecs.umich.edu            0x3: decode MODRM_MOD {
775162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
789894Sandreas@sandberg.pp.se                default: Inst::FSTP(Ed);
795162Sgblack@eecs.umich.edu            }
805162Sgblack@eecs.umich.edu            0x4: decode MODRM_MOD {
815162Sgblack@eecs.umich.edu                0x3: decode MODRM_RM {
829470Snilay@cs.wisc.edu                    0x0: Inst::FCHS();
839470Snilay@cs.wisc.edu                    0x1: Inst::FABS();
845162Sgblack@eecs.umich.edu                    0x4: ftst();
855162Sgblack@eecs.umich.edu                    0x5: fxam();
865162Sgblack@eecs.umich.edu                    default: Inst::UD2();
875162Sgblack@eecs.umich.edu                }
889895Sandreas@sandberg.pp.se                default: Inst::FLDENV(M);
895162Sgblack@eecs.umich.edu            }
905162Sgblack@eecs.umich.edu            0x5: decode MODRM_MOD {
915162Sgblack@eecs.umich.edu                0x3: decode MODRM_RM {
929582Snilay@cs.wisc.edu                    0x0: Inst::FLD1();
939582Snilay@cs.wisc.edu                    0x1: Inst::FLDL2T();
949582Snilay@cs.wisc.edu                    0x2: Inst::FLDL2E();
959582Snilay@cs.wisc.edu                    0x3: Inst::FLDPI();
969582Snilay@cs.wisc.edu                    0x4: Inst::FLDLG2();
979582Snilay@cs.wisc.edu                    0x5: Inst::FLDLN2();
989582Snilay@cs.wisc.edu                    0x6: Inst::FLDZ();
995162Sgblack@eecs.umich.edu                }
1009582Snilay@cs.wisc.edu                default: Inst::FLDCW(Mw);
1015162Sgblack@eecs.umich.edu            }
1025162Sgblack@eecs.umich.edu            0x6: decode MODRM_MOD {
1035162Sgblack@eecs.umich.edu                0x3: decode MODRM_RM {
1045162Sgblack@eecs.umich.edu                    0x0: f2xm1();
1059582Snilay@cs.wisc.edu                    0x1: Inst::FYL2X();
1069582Snilay@cs.wisc.edu                    0x2: Inst::FPTAN();
1075162Sgblack@eecs.umich.edu                    0x3: fpatan();
1085162Sgblack@eecs.umich.edu                    0x4: fxtract();
1099582Snilay@cs.wisc.edu                    0x5: Inst::FPREM1();
1105162Sgblack@eecs.umich.edu                    0x6: fdecstp();
1115162Sgblack@eecs.umich.edu                    0x7: fincstp();
1125162Sgblack@eecs.umich.edu                }
1139895Sandreas@sandberg.pp.se                default: Inst::FNSTENV(M);
1145162Sgblack@eecs.umich.edu            }
1155162Sgblack@eecs.umich.edu            0x7: decode MODRM_MOD {
1165162Sgblack@eecs.umich.edu                0x3: decode MODRM_RM {
1179582Snilay@cs.wisc.edu                    0x0: Inst::FPREM();
1185162Sgblack@eecs.umich.edu                    0x1: fyl2xp1();
1195162Sgblack@eecs.umich.edu                    0x2: fsqrt();
1209371Snilay@cs.wisc.edu                    0x3: Inst::FSINCOS();
1215162Sgblack@eecs.umich.edu                    0x4: frndint();
1225162Sgblack@eecs.umich.edu                    0x5: fscale();
1239472Snilay@cs.wisc.edu                    0x6: Inst::FSIN();
1249472Snilay@cs.wisc.edu                    0x7: Inst::FCOS();
1255162Sgblack@eecs.umich.edu                }
1269372Snilay@cs.wisc.edu                default: Inst::FNSTCW(Mw);
1275162Sgblack@eecs.umich.edu            }
1284825Sgblack@eecs.umich.edu        }
1295162Sgblack@eecs.umich.edu        //0x2: esc2();
1305162Sgblack@eecs.umich.edu        0x2: decode MODRM_REG {
1315162Sgblack@eecs.umich.edu            0x0: decode MODRM_MOD {
1325162Sgblack@eecs.umich.edu                0x3: fcmovb();
1335162Sgblack@eecs.umich.edu                default: fiadd();
1345162Sgblack@eecs.umich.edu            }
1355162Sgblack@eecs.umich.edu            0x1: decode MODRM_MOD {
1365162Sgblack@eecs.umich.edu                0x3: fcmove();
1375162Sgblack@eecs.umich.edu                default: fimul();
1385162Sgblack@eecs.umich.edu            }
1395162Sgblack@eecs.umich.edu            0x2: decode MODRM_MOD {
1405162Sgblack@eecs.umich.edu                0x3: fcmovbe();
1415162Sgblack@eecs.umich.edu                default: ficom();
1425162Sgblack@eecs.umich.edu            }
1435162Sgblack@eecs.umich.edu            0x3: decode MODRM_MOD {
1445162Sgblack@eecs.umich.edu                0x3: fcmovu();
1455162Sgblack@eecs.umich.edu                default: ficomp();
1465162Sgblack@eecs.umich.edu            }
1475162Sgblack@eecs.umich.edu            0x4: decode MODRM_MOD {
1485162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
1495162Sgblack@eecs.umich.edu                default: fisub();
1505162Sgblack@eecs.umich.edu            }
1515162Sgblack@eecs.umich.edu            0x5: decode MODRM_MOD {
1525162Sgblack@eecs.umich.edu                0x3: decode MODRM_RM {
1535162Sgblack@eecs.umich.edu                    0x1: fucompp();
1545162Sgblack@eecs.umich.edu                    default: Inst::UD2();
1555162Sgblack@eecs.umich.edu                }
1565162Sgblack@eecs.umich.edu                default: fisubr();
1575162Sgblack@eecs.umich.edu            }
1585162Sgblack@eecs.umich.edu            0x6: decode MODRM_MOD {
1595162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
1605162Sgblack@eecs.umich.edu                default: fidiv();
1615162Sgblack@eecs.umich.edu            }
1625162Sgblack@eecs.umich.edu            0x7: decode MODRM_MOD {
1635162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
1645162Sgblack@eecs.umich.edu                default: fidivr();
1655162Sgblack@eecs.umich.edu            }
1664825Sgblack@eecs.umich.edu        }
1675162Sgblack@eecs.umich.edu        //0x3: esc3();
1685162Sgblack@eecs.umich.edu        0x3: decode MODRM_REG {
1695162Sgblack@eecs.umich.edu            0x0: decode MODRM_MOD {
1705162Sgblack@eecs.umich.edu                0x3: fcmovnb();
1715162Sgblack@eecs.umich.edu                default: fild();
1725162Sgblack@eecs.umich.edu            }
1735162Sgblack@eecs.umich.edu            0x1: decode MODRM_MOD {
1745162Sgblack@eecs.umich.edu                0x3: fcmovne();
1755162Sgblack@eecs.umich.edu                default: fisttp();
1765162Sgblack@eecs.umich.edu            }
1775162Sgblack@eecs.umich.edu            0x2: decode MODRM_MOD {
1785162Sgblack@eecs.umich.edu                0x3: fcmovnbe();
1795162Sgblack@eecs.umich.edu                default: fist();
1805162Sgblack@eecs.umich.edu            }
1815162Sgblack@eecs.umich.edu            0x3: decode MODRM_MOD {
1825162Sgblack@eecs.umich.edu                0x3: fcmovnu();
1835162Sgblack@eecs.umich.edu                default: fistp();
1845162Sgblack@eecs.umich.edu            }
1855162Sgblack@eecs.umich.edu            0x4: decode MODRM_MOD {
1865162Sgblack@eecs.umich.edu                0x3: decode MODRM_RM {
1875162Sgblack@eecs.umich.edu                    0x2: fnclex();
1885162Sgblack@eecs.umich.edu                    0x3: fninit();
1895162Sgblack@eecs.umich.edu                    default: Inst::UD2();
1905162Sgblack@eecs.umich.edu                }
1914825Sgblack@eecs.umich.edu                default: Inst::UD2();
1924825Sgblack@eecs.umich.edu            }
1935162Sgblack@eecs.umich.edu            0x5: decode MODRM_MOD {
1945162Sgblack@eecs.umich.edu                0x3: fucomi();
1959582Snilay@cs.wisc.edu                // 80-bit load
1969894Sandreas@sandberg.pp.se                default: Inst::FLD80(M);
1974825Sgblack@eecs.umich.edu            }
1985162Sgblack@eecs.umich.edu            0x6: decode MODRM_MOD {
1995162Sgblack@eecs.umich.edu                0x3: fcomi();
2004825Sgblack@eecs.umich.edu                default: Inst::UD2();
2014825Sgblack@eecs.umich.edu            }
2025162Sgblack@eecs.umich.edu            0x7: decode MODRM_MOD {
2035162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
2049894Sandreas@sandberg.pp.se                default: Inst::FST80P(M);
2055162Sgblack@eecs.umich.edu            }
2064825Sgblack@eecs.umich.edu        }
2075162Sgblack@eecs.umich.edu        //0x4: esc4();
2085162Sgblack@eecs.umich.edu        0x4: decode MODRM_REG {
20910044Snilay@cs.wisc.edu            0x0: decode MODRM_MOD {
21010044Snilay@cs.wisc.edu                0x3: Inst::FADD2(Eq);
21110044Snilay@cs.wisc.edu                default: Inst::FADD2(Mq);
21210044Snilay@cs.wisc.edu            }
2135162Sgblack@eecs.umich.edu            0x1: fmul();
2145162Sgblack@eecs.umich.edu            0x2: decode MODRM_MOD {
2155162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
2165162Sgblack@eecs.umich.edu                default: fcom();
2175162Sgblack@eecs.umich.edu            }
2185162Sgblack@eecs.umich.edu            0x3: decode MODRM_MOD {
2195162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
2205162Sgblack@eecs.umich.edu                default: fcomp();
2215162Sgblack@eecs.umich.edu            }
2225162Sgblack@eecs.umich.edu            0x4: decode MODRM_MOD {
2235162Sgblack@eecs.umich.edu                0x3: fsubr();
22410044Snilay@cs.wisc.edu                default: Inst::FSUB2(Mq);
2255162Sgblack@eecs.umich.edu            }
2265162Sgblack@eecs.umich.edu            0x5: decode MODRM_MOD {
22710044Snilay@cs.wisc.edu                0x3: Inst::FSUB2(Eq);
2285162Sgblack@eecs.umich.edu                default: fsubr();
2295162Sgblack@eecs.umich.edu            }
2305162Sgblack@eecs.umich.edu            0x6: decode MODRM_MOD {
2315162Sgblack@eecs.umich.edu                0x3: fdivr();
2325162Sgblack@eecs.umich.edu                default: fdiv();
2335162Sgblack@eecs.umich.edu            }
2345162Sgblack@eecs.umich.edu            0x7: decode MODRM_MOD {
2355162Sgblack@eecs.umich.edu                0x3: fdiv();
2365162Sgblack@eecs.umich.edu                default: fdivr();
2375162Sgblack@eecs.umich.edu            }
2384825Sgblack@eecs.umich.edu        }
2395162Sgblack@eecs.umich.edu        //0x5: esc5();
2405162Sgblack@eecs.umich.edu        0x5: decode MODRM_REG {
2415162Sgblack@eecs.umich.edu            0x0: decode MODRM_MOD {
2425162Sgblack@eecs.umich.edu                0x3: ffree();
2439582Snilay@cs.wisc.edu                // 64-bit load
2445162Sgblack@eecs.umich.edu                default: Inst::FLD(Mq);
2455162Sgblack@eecs.umich.edu            }
2465162Sgblack@eecs.umich.edu            0x1: decode MODRM_MOD {
2475162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
2485162Sgblack@eecs.umich.edu                default: fisttp();
2495162Sgblack@eecs.umich.edu            }
25010043Snilay@cs.wisc.edu            0x2: decode MODRM_MOD {
25110043Snilay@cs.wisc.edu                0x3: Inst::FST(Eq);
25210043Snilay@cs.wisc.edu                default: Inst::FST(Mq);
25310043Snilay@cs.wisc.edu            }
25410043Snilay@cs.wisc.edu            0x3: decode MODRM_MOD {
25510043Snilay@cs.wisc.edu                0x3: Inst::FSTP(Eq);
25610043Snilay@cs.wisc.edu                default: Inst::FSTP(Mq);
25710043Snilay@cs.wisc.edu            }
2585162Sgblack@eecs.umich.edu            0x4: decode MODRM_MOD {
2595162Sgblack@eecs.umich.edu                0x3: fucom();
2605162Sgblack@eecs.umich.edu                default: frstor();
2615162Sgblack@eecs.umich.edu            }
2625162Sgblack@eecs.umich.edu            0x5: decode MODRM_MOD {
2635162Sgblack@eecs.umich.edu                0x3: fucomp();
2644825Sgblack@eecs.umich.edu                default: Inst::UD2();
2654825Sgblack@eecs.umich.edu            }
2665162Sgblack@eecs.umich.edu            0x6: decode MODRM_MOD {
2675162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
2685162Sgblack@eecs.umich.edu                default: fnsave();
2695162Sgblack@eecs.umich.edu            }
2705162Sgblack@eecs.umich.edu            0x7: decode MODRM_MOD {
2715162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
2729372Snilay@cs.wisc.edu                default: Inst::FNSTSW(Mw);
2735162Sgblack@eecs.umich.edu            }
2744825Sgblack@eecs.umich.edu        }
2755162Sgblack@eecs.umich.edu        //0x6: esc6();
2765162Sgblack@eecs.umich.edu        0x6: decode MODRM_REG {
2775162Sgblack@eecs.umich.edu            0x0: decode MODRM_MOD {
27810044Snilay@cs.wisc.edu                0x3: decode MODRM_RM {
27910044Snilay@cs.wisc.edu                    0x1: Inst::FADDP();
28010044Snilay@cs.wisc.edu                    default: Inst::FADDP(Eq);
28110044Snilay@cs.wisc.edu                }
2825162Sgblack@eecs.umich.edu                default: fiadd();
2835162Sgblack@eecs.umich.edu            }
2845162Sgblack@eecs.umich.edu            0x1: decode MODRM_MOD {
2855162Sgblack@eecs.umich.edu                0x3: fmulp();
2865162Sgblack@eecs.umich.edu                default: fimul();
2875162Sgblack@eecs.umich.edu            }
2885162Sgblack@eecs.umich.edu            0x2: decode MODRM_MOD {
2895162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
2905162Sgblack@eecs.umich.edu                default: ficom();
2915162Sgblack@eecs.umich.edu            }
2925162Sgblack@eecs.umich.edu            0x3: decode MODRM_MOD {
2935162Sgblack@eecs.umich.edu                0x3: decode MODRM_RM {
2945162Sgblack@eecs.umich.edu                    0x1: fcompp();
2955162Sgblack@eecs.umich.edu                    default: Inst::UD2();
2965162Sgblack@eecs.umich.edu                }
2975162Sgblack@eecs.umich.edu                default: ficomp();
2985162Sgblack@eecs.umich.edu            }
2995162Sgblack@eecs.umich.edu            0x4: decode MODRM_MOD {
3005162Sgblack@eecs.umich.edu                0x3: fsubrp();
3015162Sgblack@eecs.umich.edu                default: fisub();
3025162Sgblack@eecs.umich.edu            }
3035162Sgblack@eecs.umich.edu            0x5: decode MODRM_MOD {
30410044Snilay@cs.wisc.edu                0x3: decode MODRM_RM {
30510044Snilay@cs.wisc.edu                    0x1: Inst::FSUBP();
30610044Snilay@cs.wisc.edu                    default: Inst::FSUBP(Eq);
30710044Snilay@cs.wisc.edu                }
3085162Sgblack@eecs.umich.edu                default: fisubr();
3095162Sgblack@eecs.umich.edu            }
3105162Sgblack@eecs.umich.edu            0x6: decode MODRM_MOD {
3115162Sgblack@eecs.umich.edu                0x3: fdivrp();
3125162Sgblack@eecs.umich.edu                default: fidiv();
3135162Sgblack@eecs.umich.edu            }
3145162Sgblack@eecs.umich.edu            0x7: decode MODRM_MOD {
3155162Sgblack@eecs.umich.edu                0x3: fdivp();
3165162Sgblack@eecs.umich.edu                default: fidivr();
3175162Sgblack@eecs.umich.edu            }
3184825Sgblack@eecs.umich.edu        }
3195162Sgblack@eecs.umich.edu        //0x7: esc7();
3205162Sgblack@eecs.umich.edu        0x7: decode MODRM_REG {
3215162Sgblack@eecs.umich.edu            0x0: decode MODRM_MOD {
3228106Sgblack@eecs.umich.edu                // The ffreep instruction isn't entirely real. It should work
3238106Sgblack@eecs.umich.edu                // the same as ffree but then also pop the register stack.
3248106Sgblack@eecs.umich.edu                0x3: ffreep();
3255162Sgblack@eecs.umich.edu                default: fild();
3264825Sgblack@eecs.umich.edu            }
3275162Sgblack@eecs.umich.edu            0x1: decode MODRM_MOD {
3285162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
3295162Sgblack@eecs.umich.edu                default: fisttp();
3304825Sgblack@eecs.umich.edu            }
3315162Sgblack@eecs.umich.edu            0x2: decode MODRM_MOD {
3325162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
3335162Sgblack@eecs.umich.edu                default: fist();
3345162Sgblack@eecs.umich.edu            }
3355162Sgblack@eecs.umich.edu            0x3: decode MODRM_MOD {
3365162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
3375162Sgblack@eecs.umich.edu                default: fistp();
3385162Sgblack@eecs.umich.edu            }
3395162Sgblack@eecs.umich.edu            0x4: decode MODRM_MOD {
3405162Sgblack@eecs.umich.edu                0x3: decode MODRM_RM {
3419372Snilay@cs.wisc.edu                    0x0: Inst::FNSTSW(rAw);
3425162Sgblack@eecs.umich.edu                    default: Inst::UD2();
3435162Sgblack@eecs.umich.edu                }
3445162Sgblack@eecs.umich.edu                default: fbld();
3455162Sgblack@eecs.umich.edu            }
3465162Sgblack@eecs.umich.edu            0x5: decode MODRM_MOD {
3475162Sgblack@eecs.umich.edu                0x3: fucomip();
3485162Sgblack@eecs.umich.edu                default: fild();
3495162Sgblack@eecs.umich.edu            }
3505162Sgblack@eecs.umich.edu            0x6: decode MODRM_MOD {
3515162Sgblack@eecs.umich.edu                0x3: fcomip();
3525162Sgblack@eecs.umich.edu                default: fbstp();
3535162Sgblack@eecs.umich.edu            }
3545162Sgblack@eecs.umich.edu            0x7: decode MODRM_MOD {
3555162Sgblack@eecs.umich.edu                0x3: Inst::UD2();
3565162Sgblack@eecs.umich.edu                default: fistp();
3575162Sgblack@eecs.umich.edu            }
3584825Sgblack@eecs.umich.edu        }
3594825Sgblack@eecs.umich.edu    }
3604825Sgblack@eecs.umich.edu}
361