diff options
author | Pjotr Prins | 2025-02-11 02:24:30 -0600 |
---|---|---|
committer | Pjotr Prins | 2025-02-11 02:24:30 -0600 |
commit | fd714598394a36d94846a5c2cfa1dc6a7e4bcced (patch) | |
tree | 9b89ad45f6e357de32bb0219e7b534053484675d /prescheme-nim-local/simde.c | |
parent | 83d5d1535754016500af6854aab26c1fbdde73d0 (diff) | |
download | presentations-fd714598394a36d94846a5c2cfa1dc6a7e4bcced.tar.gz |
Add FOSDEM 2025 talk
Diffstat (limited to 'prescheme-nim-local/simde.c')
-rw-r--r-- | prescheme-nim-local/simde.c | 85 |
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; +} |