diff options
| author | Robert Norton | 2017-07-20 12:02:13 +0100 |
|---|---|---|
| committer | Robert Norton | 2017-07-20 12:02:13 +0100 |
| commit | 2e1ca2e6b77b285168223263e747396ad01cb993 (patch) | |
| tree | b39c500fba5033307d4fc9e66f64d5d7c9733d00 /cheri | |
| parent | 632b10c0d4b01dc1af8593b8ae1f088fbfd9e342 (diff) | |
add new CNEXEQ instruction.
Diffstat (limited to 'cheri')
| -rw-r--r-- | cheri/cheri_insts.sail | 2 | ||||
| -rw-r--r-- | cheri/cheri_prelude_common.sail | 1 |
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 { |
