aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-03 21:01:17 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-03 21:01:17 +0200
commit104681e5db184659a36762e0776cef133d70455b (patch)
treed0ad556679cde1526bb947ca15ee0bf740c2fc34 /test
parentfd2c2a0bdf723dce559567324711a3127ce0582e (diff)
parent4032ed3192424a23dbb0a4f3bd2a539b22625168 (diff)
downloadcompcert-kvx-104681e5db184659a36762e0776cef133d70455b.tar.gz
compcert-kvx-104681e5db184659a36762e0776cef133d70455b.zip
Merge branch 'mppa-ternary' of gricad-gitlab.univ-grenoble-alpes.fr:sixcy/CompCert into mppa-ternary
Diffstat (limited to 'test')
-rw-r--r--test/monniaux/bitsliced-aes/bs.c11
-rw-r--r--test/monniaux/ternary_builtin/ternary_builtin.c15
2 files changed, 10 insertions, 16 deletions
diff --git a/test/monniaux/bitsliced-aes/bs.c b/test/monniaux/bitsliced-aes/bs.c
index 063f36f5..9a24643c 100644
--- a/test/monniaux/bitsliced-aes/bs.c
+++ b/test/monniaux/bitsliced-aes/bs.c
@@ -2,17 +2,8 @@
#include <string.h>
#include "bs.h"
-
-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);
-}
-
#if defined(__K1C__)
-#define TERNARY(x, v0, v1) compcert_ternary((x), (v0), (v1))
+#define TERNARY(x, v0, v1) __builtin_ternary_ulong((x), (v1), (v0))
#else
#define TERNARY(x, v0, v1) ((x) ? (v1) : (v0))
#endif
diff --git a/test/monniaux/ternary_builtin/ternary_builtin.c b/test/monniaux/ternary_builtin/ternary_builtin.c
index caa1c4c7..1295581c 100644
--- a/test/monniaux/ternary_builtin/ternary_builtin.c
+++ b/test/monniaux/ternary_builtin/ternary_builtin.c
@@ -1,11 +1,14 @@
-int ternary_signed(int x, int v0, int v1) {
- return ((-(x==0)) & v0) | ((-(x!=0)) & v1);
+#include <stdio.h>
+
+unsigned essai(int x, unsigned y, unsigned z) {
+ return __builtin_ternary_uint(x, y, z);
}
-int ternary_unsigned(unsigned x, int v0, int v1) {
- return ((-(x==0)) & v0) | ((-(x!=0)) & v1);
+unsigned long essai2(int x, unsigned long y, unsigned long z) {
+ return __builtin_ternary_ulong(x, y, z);
}
-long ternary_signedl(long x, long v0, long v1) {
- return ((-(x==0)) & v0) | ((-(x!=0)) & v1);
+int main() {
+ printf("%ld\n", essai2(0, 42, 69));
+ return 0;
}