summaryrefslogtreecommitdiff
path: root/cheri
diff options
context:
space:
mode:
authorRobert Norton2017-07-20 12:02:13 +0100
committerRobert Norton2017-07-20 12:02:13 +0100
commit2e1ca2e6b77b285168223263e747396ad01cb993 (patch)
treeb39c500fba5033307d4fc9e66f64d5d7c9733d00 /cheri
parent632b10c0d4b01dc1af8593b8ae1f088fbfd9e342 (diff)
add new CNEXEQ instruction.
Diffstat (limited to 'cheri')
-rw-r--r--cheri/cheri_insts.sail2
-rw-r--r--cheri/cheri_prelude_common.sail1
2 files changed, 3 insertions, 0 deletions
diff --git a/cheri/cheri_insts.sail b/cheri/cheri_insts.sail
index e6228217..8b5d9dd0 100644
--- a/cheri/cheri_insts.sail
+++ b/cheri/cheri_insts.sail
@@ -292,6 +292,7 @@ function clause decode (0b010010 : 0b01110 : (regno) rd : (regno) cb : (regno) c
function clause decode (0b010010 : 0b01110 : (regno) rd : (regno) cb : (regno) ct : 0b000 : 0b100) = Some(CPtrCmp(rd, cb, ct, CLTU))
function clause decode (0b010010 : 0b01110 : (regno) rd : (regno) cb : (regno) ct : 0b000 : 0b101) = Some(CPtrCmp(rd, cb, ct, CLEU))
function clause decode (0b010010 : 0b01110 : (regno) rd : (regno) cb : (regno) ct : 0b000 : 0b110) = Some(CPtrCmp(rd, cb, ct, CEXEQ))
+function clause decode (0b010010 : 0b01110 : (regno) rd : (regno) cb : (regno) ct : 0b000 : 0b111) = Some(CPtrCmp(rd, cb, ct, CNEXEQ))
function clause execute(CPtrCmp(rd, cb, ct, op)) =
{
@@ -332,6 +333,7 @@ function clause execute(CPtrCmp(rd, cb, ct, op)) =
case CLTU -> [ltu]
case CLEU -> [ltu | equal]
case CEXEQ -> [cb_val == ct_val]
+ case CNEXEQ -> [cb_val != ct_val]
})
}
(* END_CPtrCmp *)
diff --git a/cheri/cheri_prelude_common.sail b/cheri/cheri_prelude_common.sail
index 13b18ac1..dcb56d01 100644
--- a/cheri/cheri_prelude_common.sail
+++ b/cheri/cheri_prelude_common.sail
@@ -115,6 +115,7 @@ typedef CPtrCmpOp = enumerate {
CLTU;
CLEU;
CEXEQ;
+ CNEXEQ;
}
typedef ClearRegSet = enumerate {