From 6cd9c6faecaa830160fbca31924e29a5e791f499 Mon Sep 17 00:00:00 2001 From: David Monniaux Date: Mon, 18 Mar 2019 13:56:32 +0100 Subject: andn / orn long complete I think --- mppa_k1c/Asmblockgen.v | 3 +++ test/monniaux/nand/nand.c | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/mppa_k1c/Asmblockgen.v b/mppa_k1c/Asmblockgen.v index c3ac217b..87df237c 100644 --- a/mppa_k1c/Asmblockgen.v +++ b/mppa_k1c/Asmblockgen.v @@ -547,6 +547,9 @@ Definition transl_op | Odivlu, _ => Error (msg "Asmblockgen.transl_op: Odivlu") (* Géré par fonction externe *) | Omodl, _ => Error (msg "Asmblockgen.transl_op: Omodl") (* Géré par fonction externe *) | Omodlu, _ => Error (msg "Asmblockgen.transl_op: Omodlu") (* Géré par fonction externe *) + | Onotl, a1 :: nil => + do rd <- ireg_of res; do rs <- ireg_of a1; + OK (xorimm64 rd rs Int64.mone ::i k) | Oandl, a1 :: a2 :: nil => do rd <- ireg_of res; do rs1 <- ireg_of a1; do rs2 <- ireg_of a2; OK (Pandl rd rs1 rs2 ::i k) diff --git a/test/monniaux/nand/nand.c b/test/monniaux/nand/nand.c index 9c2d2298..379a1bad 100644 --- a/test/monniaux/nand/nand.c +++ b/test/monniaux/nand/nand.c @@ -18,6 +18,22 @@ scalar nxor(scalar x, scalar y) { return ~(x ^ y); } +scalar andn1(scalar x, scalar y) { + return ~x & y; +} + +scalar andn2(scalar x, scalar y) { + return x & ~y; +} + +scalar orn1(scalar x, scalar y) { + return ~x | y; +} + +scalar orn2(scalar x, scalar y) { + return x | ~y; +} + int main() { scalar x = 0xF4, y = 0x33; printf("%X\n", nxor(x, y)); -- cgit