summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/decoder/x87.isa
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/isa/decoder/x87.isa')
-rw-r--r--src/arch/x86/isa/decoder/x87.isa17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/arch/x86/isa/decoder/x87.isa b/src/arch/x86/isa/decoder/x87.isa
index b53c48e78..4283d8d91 100644
--- a/src/arch/x86/isa/decoder/x87.isa
+++ b/src/arch/x86/isa/decoder/x87.isa
@@ -1,5 +1,7 @@
// Copyright (c) 2007 The Hewlett-Packard Development Company
// Copyright (c) 2012-13 Mark D. Hill and David A. Wood
+// Copyright (c) 2015 Advanced Micro Devices, Inc.
+//
// All rights reserved.
//
// The license below extends only to copyright in the software and shall
@@ -36,6 +38,7 @@
//
// Authors: Gabe Black
// Nilay Vaish
+// Steve Reinhardt
format WarnUnimpl {
0x1B: decode OPCODE_OP_BOTTOM3 {
@@ -174,7 +177,7 @@ format WarnUnimpl {
0x3: decode MODRM_REG {
0x0: decode MODRM_MOD {
0x3: fcmovnb();
- default: fild();
+ default: Inst::FILD(Md); // 32-bit int
}
0x1: decode MODRM_MOD {
0x3: fcmovne();
@@ -197,7 +200,9 @@ format WarnUnimpl {
default: Inst::UD2();
}
0x5: decode MODRM_MOD {
- 0x3: fucomi();
+ // 'R' insists on having a size qualifier, so I picked 'q',
+ // but I don't think it has any effect
+ 0x3: Inst::FUCOMI(Rq);
// 80-bit load
default: Inst::FLD80(M);
}
@@ -331,7 +336,7 @@ format WarnUnimpl {
// The ffreep instruction isn't entirely real. It should work
// the same as ffree but then also pop the register stack.
0x3: ffreep();
- default: fild();
+ default: Inst::FILD(Mw); // 16-bit int
}
0x1: decode MODRM_MOD {
0x3: Inst::UD2();
@@ -353,8 +358,10 @@ format WarnUnimpl {
default: fbld();
}
0x5: decode MODRM_MOD {
- 0x3: fucomip();
- default: fild();
+ // 'R' insists on having a size qualifier, so I picked 'q',
+ // but I don't think it has any effect
+ 0x3: Inst::FUCOMIP(Rq);
+ default: Inst::FILD(Mq); // 64-bit int
}
0x6: decode MODRM_MOD {
0x3: fcomip();