summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/insts
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/isa/insts')
-rw-r--r--src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py35
1 files changed, 32 insertions, 3 deletions
diff --git a/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py b/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
index 3507347fe..37574da34 100644
--- a/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
+++ b/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
@@ -54,7 +54,36 @@
# Authors: Gabe Black
microcode = '''
-# FLD
-# FST
-# FSTP
+def macroop FLD_M {
+ ldfp ufp1, seg, sib, disp
+ movfp st(1), ufp1, spm=-1
+};
+
+def macroop FLD_P {
+ rdip t7
+ ldfp ufp1, seg, riprel, disp
+ movfp st(1), ufp1, spm=-1
+};
+
+def macroop FST_M {
+ movfp st(0), ufp1
+ stfp ufp1, seg, sib, disp
+};
+
+def macroop FST_P {
+ movfp st(0), ufp1
+ rdip t7
+ stfp ufp1, seg, riprel, disp
+};
+
+def macroop FSTP_M {
+ movfp st(0), ufp1, spm=1
+ stfp ufp1, seg, sib, disp
+};
+
+def macroop FSTP_P {
+ movfp st(0), ufp1, spm=1
+ rdip t7
+ stfp ufp1, seg, riprel, disp
+};
'''