aboutsummaryrefslogtreecommitdiffstats
path: root/test/monniaux/predicated
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-07 09:39:16 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-07 09:39:16 +0200
commitb75f59eeee0e8b73a7116fd49f08810e7d4382fe (patch)
tree917c5a385de1910d4faf49904a69b0531fb13ba2 /test/monniaux/predicated
parent5075fa97d74731c1b7d92b6f8c122805788e6b40 (diff)
downloadcompcert-kvx-b75f59eeee0e8b73a7116fd49f08810e7d4382fe.tar.gz
compcert-kvx-b75f59eeee0e8b73a7116fd49f08810e7d4382fe.zip
predicated experiments
Diffstat (limited to 'test/monniaux/predicated')
-rw-r--r--test/monniaux/predicated/predicated.s13
-rw-r--r--test/monniaux/predicated/predicated_run.c16
2 files changed, 29 insertions, 0 deletions
diff --git a/test/monniaux/predicated/predicated.s b/test/monniaux/predicated/predicated.s
new file mode 100644
index 00000000..f11606c2
--- /dev/null
+++ b/test/monniaux/predicated/predicated.s
@@ -0,0 +1,13 @@
+ .text
+
+ .globl predicated_write
+predicated_write:
+ sd.wnez $r0? 8[$r1] = $r2
+ ret
+ ;;
+
+ .globl predicated_read
+predicated_read:
+ ld.wnez $r1? $r0 = 8[$r2]
+ ret
+ ;;
diff --git a/test/monniaux/predicated/predicated_run.c b/test/monniaux/predicated/predicated_run.c
new file mode 100644
index 00000000..2a15318b
--- /dev/null
+++ b/test/monniaux/predicated/predicated_run.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+
+extern void predicated_write(int flag, long *buf, long data);
+extern long predicated_read(long defval, int flag, long *buf);
+
+int main() {
+ long buf[2] = {42, 69};
+ printf("%ld\n", buf[1]);
+ predicated_write(0, buf, 33);
+ printf("%ld\n", buf[1]);
+ predicated_write(1, buf, 45);
+ printf("%ld\n", buf[1]);
+ printf("%ld\n", predicated_read(1515, 0, buf));
+ printf("%ld\n", predicated_read(1789, 1, buf));
+ return 0;
+}