aboutsummaryrefslogtreecommitdiff
path: root/include/maths/simd.h
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-09-14 12:20:52 +0200
committerhachem <im@hachem.wtf>2026-09-14 12:20:52 +0200
commitee14ad272e68d9363202d7f668e0b20302827209 (patch)
tree88dd1012ad7f9d6ac7abeb7562dac2194794b823 /include/maths/simd.h
parentae07aab1442a45bbddb79e066f15eaf252a4254a (diff)
feat: simd + testing + formatting
Diffstat (limited to 'include/maths/simd.h')
-rw-r--r--include/maths/simd.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/include/maths/simd.h b/include/maths/simd.h
new file mode 100644
index 0000000..38d0171
--- /dev/null
+++ b/include/maths/simd.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include <stddef.h>
+
+#include "maths/complex.h"
+
+enum PsiSimdCapability
+{
+ PSI_SIMD_NONE,
+ PSI_SIMD_AVX2,
+ PSI_SIMD_AVX512,
+ PSI_SIMD_NEON,
+};
+
+enum PsiSimdCapability psi_detect_simd(void);
+const char* psi_simd_name(enum PsiSimdCapability cap);
+
+void psi_apply_single_qubit_gate_simd(struct PsiComplex* state, const struct PsiComplex gate[2][2],
+ size_t target, size_t num_qubits);
+void psi_apply_single_qubit_gate_simd_parallel(struct PsiComplex* state,
+ const struct PsiComplex gate[2][2], size_t target,
+ size_t num_qubits);