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..e02c7f2e
--- /dev/null
+++ b/test/monniaux/k1_builtins/test_k1_builtins.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <mppa_bare_runtime/k1c/registers.h>
+
+void test_system_regs(void) {
+ __builtin_k1_wfxl(K1_SFR_EV4, 0x1000ULL);
+ __builtin_k1_wfxm(K1_SFR_EV4, 0x2000ULL);
+ __builtin_k1_get(K1_SFR_EV4);
+ __builtin_k1_set(K1_SFR_EV4, 0x4000ULL);
+}
+
+void test_loads(void *addr) {
+ __builtin_k1_alclrd(addr);
+ __builtin_k1_alclrw(addr);
+ __builtin_k1_lbzu(addr);
+ __builtin_k1_lhzu(addr);
+ __builtin_k1_lwzu(addr);
+ __builtin_k1_ldu(addr);
+ __builtin_k1_dinvall(addr);
+ __builtin_k1_dtouchl(addr);
+ __builtin_k1_dzerol(addr);
+ __builtin_k1_iinvals(addr);
+ /* __builtin_k1_itouchl(addr); */
+ __builtin_k1_dzerol(addr);
+}
+
+void test_stops(void) {
+ __builtin_k1_await();
+ __builtin_k1_sleep();
+ __builtin_k1_stop();
+ __builtin_k1_barrier();
+ __builtin_k1_fence();
+ __builtin_k1_dinval();
+ __builtin_k1_iinval();
+}
+
+int main() {
+ unsigned long long data = 45;
+ unsigned long long res = __builtin_k1_alclrd(&data);
+ printf("%llu %llu\n", res, data);
+}