* (c) 2015 Straylight/Edgeware
*/
+/*----- Licensing notice --------------------------------------------------*
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
/*----- Header files ------------------------------------------------------*/
#include "config.h"
* the feedforward step.
*/
-CPU_DISPATCH(static, (void),
- void, core, (unsigned r, const salsa20_matrix src,
- salsa20_matrix dest),
- (r, src, dest),
- pick_core, simple_core);
+CPU_DISPATCH(static, (void), void, core,
+ (unsigned r, const salsa20_matrix src, salsa20_matrix dest),
+ (r, src, dest), pick_core, simple_core);
static void simple_core(unsigned r, const salsa20_matrix src,
salsa20_matrix dest)
extern core__functype salsa20_core_x86ish_sse2;
#endif
+#if CPUFAM_ARMEL
+extern core__functype salsa20_core_arm_neon;
+#endif
+
static core__functype *pick_core(void)
{
#if CPUFAM_X86 || CPUFAM_AMD64
DISPATCH_PICK_COND(salsa20_core, salsa20_core_x86ish_sse2,
cpu_feature_p(CPUFEAT_X86_SSE2));
#endif
+#if CPUFAM_ARMEL
+ DISPATCH_PICK_COND(salsa20_core, salsa20_core_arm_neon,
+ cpu_feature_p(CPUFEAT_ARM_NEON));
+#endif
DISPATCH_PICK_FALLBACK(salsa20_core, simple_core);
}
grand *SALSA20_DECOR(salsa20, rr, _rand) \
(const void *k, size_t ksz, const void *n) \
{ \
- grctx *g = S_CREATE(g); \
+ grctx *g = S_CREATE(grctx); \
g->r.r.ops = &grops_rand_##rr; \
g->r.ops = &grops_##rr; \
salsa20_init(&g->ctx, k, ksz, n); \
grand *SALSA20_DECOR(xsalsa20, rr, _rand) \
(const void *k, size_t ksz, const void *n) \
{ \
- grxctx_##rr *g = S_CREATE(g); \
+ grxctx_##rr *g = S_CREATE(grxctx_##rr); \
g->r.r.ops = &grxops_rand_##rr; \
g->r.ops = &grxops_##rr; \
XSALSA20_INIT(rr, &g->ctx, k, ksz, n); \