summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/insts/logical.py
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-06-14 20:52:22 +0000
committerGabe Black <gblack@eecs.umich.edu>2007-06-14 20:52:22 +0000
commit866cc8214ba1642c2af56ed14e9ca2cf8b1928cf (patch)
tree5de3396fae004a17052103b437858e1d1275854b /src/arch/x86/isa/insts/logical.py
parenta8f65b18bc55fdb8ca888abfd0d991d12602fbf4 (diff)
downloadgem5-866cc8214ba1642c2af56ed14e9ca2cf8b1928cf.tar.xz
Implement a handful more instructions and differentiate macroops based on the operand types they expect.
--HG-- extra : convert_revision : f9c8e694a8c0eb33b988657dca03ab495b65bee8
Diffstat (limited to 'src/arch/x86/isa/insts/logical.py')
-rw-r--r--src/arch/x86/isa/insts/logical.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/arch/x86/isa/insts/logical.py b/src/arch/x86/isa/insts/logical.py
index fee631da7..ec0ed97b2 100644
--- a/src/arch/x86/isa/insts/logical.py
+++ b/src/arch/x86/isa/insts/logical.py
@@ -54,10 +54,43 @@
# Authors: Gabe Black
microcode = '''
-def macroop XOR
+def macroop XOR_R_R
{
xor "env.reg", "env.reg", "env.regm"
};
+
+def macroop XOR_R_I
+{
+ limm "NUM_INTREGS", "env.immediate"
+ xor "env.reg", "env.reg", "NUM_INTREGS"
+};
+
+def macroop XOR_M_R
+{
+ #Do a load to get one of the sources
+ xor "NUM_INTREGS", "NUM_INTREGS", "env.reg"
+ #Do a store to write the destination
+};
+
+def macroop XOR_R_M
+{
+ #Do a load to get one of the sources
+ xor "env.reg", "env.reg", "NUM_INTREGS"
+};
+
+def macroop AND_R_I
+{
+ limm "NUM_INTREGS", "env.immediate"
+ and "env.reg", "env.reg", "NUM_INTREGS"
+};
+
+def macroop AND_M_I
+{
+ #Do a load to get one of the sources
+ limm "NUM_INTREGS", "env.immediate"
+ and "NUM_INTREGS", "NUM_INTREGS", "NUM_INTREGS+1"
+ #Do a store to write the destination
+};
'''
#let {{
#microcodeString = '''