aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/Asmblock.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-18 11:01:43 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-18 11:01:43 +0100
commit4bd693ddb0f1489c301927fd0eb521cf3505ac2b (patch)
tree7ffd9d04ba8dd43c578ff3d30330f381b928e35f /mppa_k1c/Asmblock.v
parent6ecca2e4797af8effde673b8f188d562fdfc89a6 (diff)
downloadcompcert-kvx-4bd693ddb0f1489c301927fd0eb521cf3505ac2b.tar.gz
compcert-kvx-4bd693ddb0f1489c301927fd0eb521cf3505ac2b.zip
orn / andn in asm
Diffstat (limited to 'mppa_k1c/Asmblock.v')
-rw-r--r--mppa_k1c/Asmblock.v16
1 files changed, 16 insertions, 0 deletions
diff --git a/mppa_k1c/Asmblock.v b/mppa_k1c/Asmblock.v
index 5279bd29..cdbe4eb3 100644
--- a/mppa_k1c/Asmblock.v
+++ b/mppa_k1c/Asmblock.v
@@ -343,6 +343,8 @@ Inductive arith_name_rrr : Type :=
| Pnorw (**r nor word *)
| Pxorw (**r xor word *)
| Pnxorw (**r nxor word *)
+ | Pandnw (**r andn word *)
+ | Pornw (**r orn word *)
| Psraw (**r shift right arithmetic word *)
| Psrlw (**r shift right logical word *)
| Psllw (**r shift left logical word *)
@@ -355,6 +357,8 @@ Inductive arith_name_rrr : Type :=
| Pnorl (**r nor long *)
| Pxorl (**r xor long *)
| Pnxorl (**r nxor long *)
+ | Pandnl (**r andn long *)
+ | Pornl (**r orn long *)
| Pmull (**r mul long (low part) *)
| Pslll (**r shift left logical long *)
| Psrll (**r shift right logical long *)
@@ -378,6 +382,8 @@ Inductive arith_name_rri32 : Type :=
| Pnoriw (**r nor imm word *)
| Pxoriw (**r xor imm word *)
| Pnxoriw (**r nxor imm word *)
+ | Pandniw (**r andn word *)
+ | Porniw (**r orn word *)
| Psraiw (**r shift right arithmetic imm word *)
| Psrliw (**r shift right logical imm word *)
| Pslliw (**r shift left logical imm word *)
@@ -396,6 +402,8 @@ Inductive arith_name_rri64 : Type :=
| Pnoril (**r nor immediate long *)
| Pxoril (**r xor immediate long *)
| Pnxoril (**r nxor immediate long *)
+ | Pandnil (**r andn immediate long *)
+ | Pornil (**r orn immediate long *)
.
Inductive ar_instruction : Type :=
@@ -1108,6 +1116,8 @@ Definition arith_eval_rrr n v1 v2 :=
| Pnorw => Val.notint (Val.or v1 v2)
| Pxorw => Val.xor v1 v2
| Pnxorw => Val.notint (Val.xor v1 v2)
+ | Pandnw => Val.and (Val.notint v1) v2
+ | Pornw => Val.or (Val.notint v1) v2
| Psrlw => Val.shru v1 v2
| Psraw => Val.shr v1 v2
| Psllw => Val.shl v1 v2
@@ -1120,6 +1130,8 @@ Definition arith_eval_rrr n v1 v2 :=
| Pnorl => Val.notl (Val.orl v1 v2)
| Pxorl => Val.xorl v1 v2
| Pnxorl => Val.notl (Val.xorl v1 v2)
+ | Pandnl => Val.andl (Val.notl v1) v2
+ | Pornl => Val.orl (Val.notl v1) v2
| Pmull => Val.mull v1 v2
| Pslll => Val.shll v1 v2
| Psrll => Val.shrlu v1 v2
@@ -1143,6 +1155,8 @@ Definition arith_eval_rri32 n v i :=
| Pnoriw => Val.notint (Val.or v (Vint i))
| Pxoriw => Val.xor v (Vint i)
| Pnxoriw => Val.notint (Val.xor v (Vint i))
+ | Pandniw => Val.and (Val.notint v) (Vint i)
+ | Porniw => Val.or (Val.notint v) (Vint i)
| Psraiw => Val.shr v (Vint i)
| Psrliw => Val.shru v (Vint i)
| Pslliw => Val.shl v (Vint i)
@@ -1162,6 +1176,8 @@ Definition arith_eval_rri64 n v i :=
| Pnoril => Val.notl (Val.orl v (Vlong i))
| Pxoril => Val.xorl v (Vlong i)
| Pnxoril => Val.notl (Val.xorl v (Vlong i))
+ | Pandnil => Val.andl (Val.notl v) (Vlong i)
+ | Pornil => Val.orl (Val.notl v) (Vlong i)
end.
Definition exec_arith_instr (ai: ar_instruction) (rs: regset): regset :=