aboutsummaryrefslogtreecommitdiffstats
path: root/test/monniaux/volatile
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-03 08:17:40 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-03 08:17:40 +0100
commit1ab7b51c30e1b10ac45b0bd64cefdc01da0f7f68 (patch)
tree210ffc156c83f04fb0c61a40b4f9037d7ba8a7e1 /test/monniaux/volatile
parent222c9047d61961db9c6b19fed5ca49829223fd33 (diff)
parent12be46d59a2483a10d77fa8ee67f7e0ca1bd702f (diff)
downloadcompcert-kvx-1ab7b51c30e1b10ac45b0bd64cefdc01da0f7f68.tar.gz
compcert-kvx-1ab7b51c30e1b10ac45b0bd64cefdc01da0f7f68.zip
Merge branch 'mppa-cse2' of gricad-gitlab.univ-grenoble-alpes.fr:sixcy/CompCert into mppa-work
Diffstat (limited to 'test/monniaux/volatile')
-rw-r--r--test/monniaux/volatile/slow_volatile.c14
-rw-r--r--test/monniaux/volatile/volatile_test.c33
2 files changed, 47 insertions, 0 deletions
diff --git a/test/monniaux/volatile/slow_volatile.c b/test/monniaux/volatile/slow_volatile.c
new file mode 100644
index 00000000..bbbc6ddf
--- /dev/null
+++ b/test/monniaux/volatile/slow_volatile.c
@@ -0,0 +1,14 @@
+#include "../clock.h"
+
+volatile int output;
+
+int main() {
+ clock_prepare();
+ clock_start();
+ for(int i=0; i<1000; i++) {
+ output = 0;
+ }
+ clock_stop();
+ print_total_clock();
+ return 0;
+}
diff --git a/test/monniaux/volatile/volatile_test.c b/test/monniaux/volatile/volatile_test.c
new file mode 100644
index 00000000..687544ec
--- /dev/null
+++ b/test/monniaux/volatile/volatile_test.c
@@ -0,0 +1,33 @@
+#include <stdint.h>
+#include <float.h>
+#include <stdio.h>
+
+#define TEST_TYPE(type, min, max) \
+ { \
+ volatile type var; \
+ var = min; \
+ if (var != min) { \
+ printf("%s: wrong min\n", #type); \
+ } \
+ var = max; \
+ if (var != max) { \
+ printf("%s: wrong max\n", #type); \
+ } \
+ }
+
+#define TEST_INT_TYPE(type, min, max) TEST_TYPE(type##_t, min, max)
+
+int main() {
+ TEST_INT_TYPE(uint8, 0, UINT8_MAX);
+ TEST_INT_TYPE(int8, INT8_MIN, INT8_MAX);
+ TEST_INT_TYPE(uint16, 0, UINT16_MAX);
+ TEST_INT_TYPE(int16, INT16_MIN, INT16_MAX);
+ TEST_INT_TYPE(uint32, 0, UINT32_MAX);
+ TEST_INT_TYPE(int32, INT32_MIN, INT32_MAX);
+ TEST_INT_TYPE(uint64, 0, UINT64_MAX);
+ TEST_INT_TYPE(int64, INT64_MIN, INT64_MAX);
+
+ TEST_TYPE(float, FLT_MIN, FLT_MAX);
+ TEST_TYPE(double, DBL_MIN, DBL_MAX);
+ return 0;
+}