summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/insts/logical.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/isa/insts/logical.py')
-rw-r--r--src/arch/x86/isa/insts/logical.py46
1 files changed, 40 insertions, 6 deletions
diff --git a/src/arch/x86/isa/insts/logical.py b/src/arch/x86/isa/insts/logical.py
index 0b7c41208..d02bfd586 100644
--- a/src/arch/x86/isa/insts/logical.py
+++ b/src/arch/x86/isa/insts/logical.py
@@ -67,14 +67,35 @@ def macroop XOR_R_I
def macroop XOR_M_R
{
- #Do a load to get one of the sources
+ ld "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
xor "NUM_INTREGS+1", "NUM_INTREGS+1", "env.reg"
- #Do a store to write the destination
+ st "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
+};
+
+def macroop XOR_P_R
+{
+ rdip "NUM_INTREGS+7"
+ ld "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
+ xor "NUM_INTREGS+1", "NUM_INTREGS+1", "env.reg"
+ st "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
};
def macroop XOR_R_M
{
- #Do a load to get one of the sources
+ ld "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
+ xor "env.reg", "env.reg", "NUM_INTREGS+1"
+};
+
+def macroop XOR_R_P
+{
+ rdip "NUM_INTREGS+7"
+ ld "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
xor "env.reg", "env.reg", "NUM_INTREGS+1"
};
@@ -86,10 +107,23 @@ def macroop AND_R_I
def macroop AND_M_I
{
- #Do a load to get one of the sources
+ ld "NUM_INTREGS+2", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
+ limm "NUM_INTREGS+1", "IMMEDIATE"
+ and "NUM_INTREGS+2", "NUM_INTREGS+2", "NUM_INTREGS+1"
+ st "NUM_INTREGS+2", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
+};
+
+def macroop AND_P_I
+{
+ rdip "NUM_INTREGS+7"
+ ld "NUM_INTREGS+2", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
limm "NUM_INTREGS+1", "IMMEDIATE"
- and "NUM_INTREGS+1", "NUM_INTREGS+1", "NUM_INTREGS+2"
- #Do a store to write the destination
+ and "NUM_INTREGS+2", "NUM_INTREGS+2", "NUM_INTREGS+1"
+ st "NUM_INTREGS+2", 3, ["env.scale", "env.index", "env.base"], \
+ "DISPLACEMENT"
};
'''
#let {{