aboutsummaryrefslogtreecommitdiffstats
path: root/test/monniaux/bitsliced-aes
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-27 06:39:48 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-03-27 06:39:48 +0100
commit0a42ed2c85b0d46333633dd12bbdbe559d2531c2 (patch)
tree03cceb71e27db92cf44b17a9eacfee045ce86aff /test/monniaux/bitsliced-aes
parent3750a2ad965b4959f6535aeeb9075dbd1a7c0527 (diff)
downloadcompcert-kvx-0a42ed2c85b0d46333633dd12bbdbe559d2531c2.tar.gz
compcert-kvx-0a42ed2c85b0d46333633dd12bbdbe559d2531c2.zip
essai du cmove
Diffstat (limited to 'test/monniaux/bitsliced-aes')
-rw-r--r--test/monniaux/bitsliced-aes/bs.c16
-rw-r--r--test/monniaux/bitsliced-aes/notes.txt13
2 files changed, 26 insertions, 3 deletions
diff --git a/test/monniaux/bitsliced-aes/bs.c b/test/monniaux/bitsliced-aes/bs.c
index 3fc2ff8f..949d2a8a 100644
--- a/test/monniaux/bitsliced-aes/bs.c
+++ b/test/monniaux/bitsliced-aes/bs.c
@@ -2,15 +2,25 @@
#include <string.h>
#include "bs.h"
-word_t compcert_ternary(word_t x, word_t v0, word_t v1) {
- return (((-(x==0)) & v0) | ((-(x!=0)) & v1));
+
+static inline long compcert_ternary_signedl(long x, long v0, long v1) {
+ return ((-(x==0)) & v0) | ((-(x!=0)) & v1);
+}
+
+static inline word_t compcert_ternary(word_t x, word_t v0, word_t v1) {
+ return compcert_ternary_signedl(x, v0, v1);
}
/* Original
#define TERNARY0(cmp,v1) ((cmp) ? (v1) : 0) */
+/* with bitmask
#define TERNARY0(cmp,v1) (-(cmp != 0) & (v1))
-/*
+*/
+/* with function call to ternary */
#define TERNARY0(cmp,v1) compcert_ternary(cmp, 0, v1)
+
+/*
+#define TERNARY0(x, v1) ((unsigned long) (((-(((long) (x))==0)) & (0)) | ((-(((long) (x))!=0)) & (v1))))
*/
#if (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) ||\
diff --git a/test/monniaux/bitsliced-aes/notes.txt b/test/monniaux/bitsliced-aes/notes.txt
index 954809cc..e9be8b42 100644
--- a/test/monniaux/bitsliced-aes/notes.txt
+++ b/test/monniaux/bitsliced-aes/notes.txt
@@ -23,3 +23,16 @@ cycles: 1858263
==> test.gcc.k1c.out <==
cycles: 5255763
+
+* cmove mais mauvais scheduling de registres
+==> test.ccomp.host.out <==
+cycles: 4363682
+
+==> test.ccomp.k1c.out <==
+cycles: 7208629
+
+==> test.gcc.host.out <==
+cycles: 2916854
+
+==> test.gcc.k1c.out <==
+cycles: 5646730