summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/insts/arithmetic/add_and_subtract.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/isa/insts/arithmetic/add_and_subtract.py')
-rw-r--r--src/arch/x86/isa/insts/arithmetic/add_and_subtract.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/arch/x86/isa/insts/arithmetic/add_and_subtract.py b/src/arch/x86/isa/insts/arithmetic/add_and_subtract.py
index 283152f30..de66f70f3 100644
--- a/src/arch/x86/isa/insts/arithmetic/add_and_subtract.py
+++ b/src/arch/x86/isa/insts/arithmetic/add_and_subtract.py
@@ -53,7 +53,31 @@
#
# Authors: Gabe Black
-microcode = ""
+microcode = '''
+def macroop SUB_R_I
+{
+ subi "env.reg", "env.reg", "IMMEDIATE"
+};
+
+def macroop SUB_M_I
+{
+ ld "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
+ subi "NUM_INTREGS+1", "NUM_INTREGS+1", "IMMEDIATE"
+ st "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
+};
+
+def macroop SUB_P_I
+{
+ rdip "NUM_INTREGS+7"
+ ld "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
+ subi "NUM_INTREGS+1", "NUM_INTREGS+1", "IMMEDIATE"
+ st "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
+};
+'''
#let {{
# class ADC(Inst):
# "Adc ^0 ^0 ^1"