aboutsummaryrefslogtreecommitdiff
path: root/prescheme-nim-local/simde.c
diff options
context:
space:
mode:
authorPjotr Prins2025-02-11 02:24:30 -0600
committerPjotr Prins2025-02-11 02:24:30 -0600
commitfd714598394a36d94846a5c2cfa1dc6a7e4bcced (patch)
tree9b89ad45f6e357de32bb0219e7b534053484675d /prescheme-nim-local/simde.c
parent83d5d1535754016500af6854aab26c1fbdde73d0 (diff)
downloadpresentations-fd714598394a36d94846a5c2cfa1dc6a7e4bcced.tar.gz
Add FOSDEM 2025 talk
Diffstat (limited to 'prescheme-nim-local/simde.c')
-rw-r--r--prescheme-nim-local/simde.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/prescheme-nim-local/simde.c b/prescheme-nim-local/simde.c
new file mode 100644
index 0000000..e34f7c7
--- /dev/null
+++ b/prescheme-nim-local/simde.c
@@ -0,0 +1,85 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "prescheme.h"
+#include "ps-init.h"
+#include <simde/x86/avx512.h>
+
+
+
+long main(void);
+static long *Qvec_a;
+
+long main(void)
+{
+ long arg0K0;
+ long i_9X;
+ long val_8X;
+ simde__m256d avx_7X;
+ simde__m256d odds_6X;
+ simde__m256d evens_5X;
+ double *b_4X;
+ double *a_3X;
+ char *target_2X;
+ long i_1X;
+ FILE * out_0X;
+ { out_0X = stdout;
+ ps_write_string("SIMDE: Print vec-a with vector-for-each:\n", out_0X);
+ arg0K0 = 0;
+ goto L208;}
+ L208: {
+ i_1X = arg0K0;
+ if ((5 == i_1X)) {
+ { long ignoreXX;
+ PS_WRITE_CHAR(10, out_0X, ignoreXX) }
+ target_2X = (char *)calloc( 1, 1 + 20);
+ a_3X = (double*)malloc(sizeof(double) * 10);
+ b_4X = (double*)malloc(sizeof(double) * 10);
+ gcvt(1.2, 4, target_2X);
+ ps_write_string(target_2X, out_0X);
+ { long ignoreXX;
+ PS_WRITE_CHAR(10, out_0X, ignoreXX) }
+ *(a_3X + 0) = 2.2;
+ *(a_3X + 1) = 2.2;
+ *(a_3X + 2) = 4.2;
+ *(a_3X + 3) = 5.2;
+ *(b_4X + 0) = 1.1;
+ *(b_4X + 1) = 2.1;
+ *(b_4X + 2) = 3.1;
+ *(b_4X + 3) = 4.1;
+ evens_5X = simde_mm256_loadu_pd(a_3X);
+ odds_6X = simde_mm256_loadu_pd(b_4X);
+ avx_7X = simde_mm256_sub_pd(evens_5X, odds_6X);simde_mm256_storeu_pd(a_3X, avx_7X);
+ arg0K0 = 0;
+ goto L253;}
+ else {
+ val_8X = *(Qvec_a + i_1X);
+ ps_write_string(" vec-a[", out_0X);
+ ps_write_integer(i_1X, out_0X);
+ ps_write_string("] = ", out_0X);
+ ps_write_integer(val_8X, out_0X);
+ ps_write_string(", ", out_0X);
+ arg0K0 = (1 + i_1X);
+ goto L208;}}
+ L253: {
+ i_9X = arg0K0;
+ if ((4 == i_9X)) {
+ { long ignoreXX;
+ PS_WRITE_CHAR(10, out_0X, ignoreXX) }
+ return 0;}
+ else {gcvt((*(a_3X + i_9X)), 4, target_2X);
+ ps_write_string(target_2X, out_0X);
+ { long ignoreXX;
+ PS_WRITE_CHAR(10, out_0X, ignoreXX) }
+ arg0K0 = (1 + i_9X);
+ goto L253;}}
+}void
+ps_init(void)
+{
+Qvec_a = malloc(5 * sizeof(long));
+Qvec_a[0] = 0;
+Qvec_a[1] = 1;
+Qvec_a[2] = 4;
+Qvec_a[3] = 9;
+Qvec_a[4] = 16;
+}