X86: Fix the decoding for and fill out FST and FSTP.
authorGabe Black <gblack@eecs.umich.edu>
Thu, 20 Aug 2009 07:42:14 +0000 (00:42 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Thu, 20 Aug 2009 07:42:14 +0000 (00:42 -0700)
src/arch/x86/isa/decoder/x87.isa
src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py

index 9a64731414cca4a0f814c86372e6b0d8dd8486b1..cfd69b3bae1d3ebe7ac849eb2ed454f98bdf7054 100644 (file)
@@ -249,8 +249,8 @@ format WarnUnimpl {
                 0x3: Inst::UD2();
                 default: fisttp();
             }
-            0x2: Inst::FST(Mq);
-            0x3: Inst::FSTP(Mq);
+            0x2: Inst::FST(Eq);
+            0x3: Inst::FSTP(Eq);
             0x4: decode MODRM_MOD {
                 0x3: fucom();
                 default: frstor();
index 2a4c3f0ede1119b6d54b02191762ba5863109f29..4837e1b4507bf386b403d820b90477d733387c24 100644 (file)
@@ -65,6 +65,10 @@ def macroop FLD_P {
     movfp st(-1), ufp1, spm=-1
 };
 
+def macroop FST_R {
+    movfp sti, st(0)
+};
+
 def macroop FST_M {
     stfp st(0), seg, sib, disp
 };
@@ -74,6 +78,10 @@ def macroop FST_P {
     stfp st(0), seg, riprel, disp
 };
 
+def macroop FSTP_R {
+    movfp sti, st(0), spm=1
+};
+
 def macroop FSTP_M {
     movfp ufp1, st(0), spm=1
     stfp ufp1, seg, sib, disp