aboutsummaryrefslogtreecommitdiff
path: root/include/maths/simd.h
blob: 55339135113a28b28fca844b0bd10923b1420a9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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);