aboutsummaryrefslogtreecommitdiff
path: root/include/maths/simd.h
diff options
context:
space:
mode:
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);