summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/insts/control_transfer/jump.py
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-07-20 17:02:39 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-07-20 17:02:39 -0700
commitc3669b892548ed3e1e8f4016f1e18202c5e7f484 (patch)
treeedd13ce8500df1846dbc179b7d3d4fd36a8a6e0c /src/arch/x86/isa/insts/control_transfer/jump.py
parent231cc3effb193c27ae10009444c5ee7cf2509a06 (diff)
downloadgem5-c3669b892548ed3e1e8f4016f1e18202c5e7f484.tar.xz
Implement the rest of the conditional jump instructions and hook them into the decoder.
--HG-- extra : convert_revision : 8d1d6abce29371def560e1c3f31dabb4de01366f
Diffstat (limited to 'src/arch/x86/isa/insts/control_transfer/jump.py')
-rw-r--r--src/arch/x86/isa/insts/control_transfer/jump.py100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/arch/x86/isa/insts/control_transfer/jump.py b/src/arch/x86/isa/insts/control_transfer/jump.py
index 3d69643ae..489eb9e39 100644
--- a/src/arch/x86/isa/insts/control_transfer/jump.py
+++ b/src/arch/x86/isa/insts/control_transfer/jump.py
@@ -74,6 +74,16 @@ def macroop JNZ_I
wrip t1, t2, flags=(nCZF,)
};
+def macroop JB_I
+{
+ # Make the default data size of jumps 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ rdip t1
+ limm t2, imm
+ wrip t1, t2, flags=(CCF,)
+};
+
def macroop JNB_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
@@ -104,6 +114,76 @@ def macroop JNBE_I
wrip t1, t2, flags=(nCCvZF,)
};
+def macroop JS_I
+{
+ # Make the default data size of jumps 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ rdip t1
+ limm t2, imm
+ wrip t1, t2, flags=(CSF,)
+};
+
+def macroop JNS_I
+{
+ # Make the default data size of jumps 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ rdip t1
+ limm t2, imm
+ wrip t1, t2, flags=(nCSF,)
+};
+
+def macroop JP_I
+{
+ # Make the default data size of jumps 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ rdip t1
+ limm t2, imm
+ wrip t1, t2, flags=(CPF,)
+};
+
+def macroop JNP_I
+{
+ # Make the default data size of jumps 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ rdip t1
+ limm t2, imm
+ wrip t1, t2, flags=(nCPF,)
+};
+
+def macroop JL_I
+{
+ # Make the default data size of jumps 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ rdip t1
+ limm t2, imm
+ wrip t1, t2, flags=(CSxOF,)
+};
+
+def macroop JNL_I
+{
+ # Make the default data size of jumps 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ rdip t1
+ limm t2, imm
+ wrip t1, t2, flags=(nCSxOF,)
+};
+
+def macroop JLE_I
+{
+ # Make the default data size of jumps 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ rdip t1
+ limm t2, imm
+ wrip t1, t2, flags=(CSxOvZF,)
+};
+
def macroop JNLE_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
@@ -114,6 +194,26 @@ def macroop JNLE_I
wrip t1, t2, flags=(nCSxOvZF,)
};
+def macroop JO_I
+{
+ # Make the default data size of jumps 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ rdip t1
+ limm t2, imm
+ wrip t1, t2, flags=(COF,)
+};
+
+def macroop JNO_I
+{
+ # Make the default data size of jumps 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ rdip t1
+ limm t2, imm
+ wrip t1, t2, flags=(nCOF,)
+};
+
def macroop JMP_I
{
# Make the default data size of jumps 64 bits in 64 bit mode