pqc/crypto_kem/ntruhrss701/avx2/sample_iid.c
2020-08-24 09:47:30 -04:00

22 lines
743 B
C

#include <immintrin.h>
#include "sample.h"
extern void PQCLEAN_NTRUHRSS701_AVX2_vec32_sample_iid(poly *r, const unsigned char uniformbytes[PAD32(NTRU_SAMPLE_IID_BYTES)]);
void PQCLEAN_NTRUHRSS701_AVX2_sample_iid(poly *r, const unsigned char uniformbytes[NTRU_SAMPLE_IID_BYTES]) {
int i;
union { /* align to 32 byte boundary for vmovdqa */
unsigned char b[PAD32(NTRU_SAMPLE_IID_BYTES)];
__m256i b_x32[PAD32(NTRU_SAMPLE_IID_BYTES) / 32];
} buffer;
for (i = 0; i < NTRU_SAMPLE_IID_BYTES; i++) {
buffer.b[i] = uniformbytes[i];
}
for (i = NTRU_SAMPLE_IID_BYTES; i < PAD32(NTRU_SAMPLE_IID_BYTES); i++) {
buffer.b[i] = 0;
}
PQCLEAN_NTRUHRSS701_AVX2_vec32_sample_iid(r, buffer.b);
}