aboutsummaryrefslogtreecommitdiffstats
path: root/test/monniaux/k1_builtins/test_k1_builtins.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/monniaux/k1_builtins/test_k1_builtins.c')
-rw-r--r--test/monniaux/k1_builtins/test_k1_builtins.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/monniaux/k1_builtins/test_k1_builtins.c b/test/monniaux/k1_builtins/test_k1_builtins.c
new file mode 100644
index 00000000..29903bb6
--- /dev/null
+++ b/test/monniaux/k1_builtins/test_k1_builtins.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <mppa_bare_runtime/kvx/registers.h>
+
+void test_system_regs(void) {
+ __builtin_kvx_wfxl(K1_SFR_EV4, 0x1000ULL);
+ __builtin_kvx_wfxm(K1_SFR_EV4, 0x2000ULL);
+ __builtin_kvx_get(K1_SFR_EV4);
+ __builtin_kvx_set(K1_SFR_EV4, 0x4000ULL);
+}
+
+void test_loads(void *addr) {
+ __builtin_kvx_alclrd(addr);
+ __builtin_kvx_alclrw(addr);
+ __builtin_kvx_lbzu(addr);
+ __builtin_kvx_lhzu(addr);
+ __builtin_kvx_lwzu(addr);
+ __builtin_kvx_ldu(addr);
+ __builtin_kvx_dinvall(addr);
+ __builtin_kvx_dtouchl(addr);
+ __builtin_kvx_dzerol(addr);
+ __builtin_kvx_iinvals(addr);
+ /* __builtin_kvx_itouchl(addr); */
+ __builtin_kvx_dzerol(addr);
+}
+
+void test_stops(void) {
+ __builtin_kvx_await();
+ __builtin_kvx_sleep();
+ __builtin_kvx_stop();
+ __builtin_kvx_barrier();
+ __builtin_kvx_fence();
+ __builtin_kvx_dinval();
+ __builtin_kvx_iinval();
+}
+
+int main() {
+ unsigned long long data = 45;
+ unsigned long long res = __builtin_kvx_alclrd(&data);
+ printf("%llu %llu\n", res, data);
+}